Skip to content

0.50.0

Compare
Choose a tag to compare
@github-actions github-actions released this 16 Apr 00:25

Merged PRs

doltgresql

  • 1395: Slight README tweak
  • 1390: support for array subscript
    Only supports one-dimension subscripts and no slices
  • 1385: Support for ArrayFlatten and string_agg functions
    Also added stubs for a couple functions used by various psql commands
  • 1384: Add support for ALTER TABLE ... DROP CONSTRAINT IF EXISTS
    Depends on: dolthub/go-mysql-server#2936
    Depends on: dolthub/vitess#411
  • 1383: Add support for default_with_oids
    Postgres docs
    A few sample Postgres dumps set default_with_oids. This change allows them to set the parameter without triggering an error. Note that Doltgres does not support creating tables with OID columns, even if this parameter is set to true.
  • 1381: Add support for ANALYZE; without any tables specified
    When Postgres processes an ANALYZE; statement without any tables explicitly specified, it analyzes all tables.
    Postgres docs
  • 1378: Remove implicit prefix length now that we support adaptive inlining
    Removes the Doltgres custom analyzer rule that added an implicit prefix length to TEXT columns when they were used in a key.
  • 1375: Compatibility with psql commands
    This PR adds a couple compatibility features for commands issued by psql:
    • Support for the operator(...) syntax for built-in postgres operators
    • Support for collation expressions, currently ignored
      These two things get us to near 100% coverage for psql commands without special casing. The last piece is the array(select ...) syntax.
      Relies on dolthub/go-mysql-server#2931
  • 1373: Add skipped tests for bugs hit from testing js frameworks, fix current_setting
    For #1366
  • 1370: CREATE TABLE formatter support
    This lets dolt_merge correctly handle tables with column default values, constraints, etc. As part of the merge, Dolt generates and then parses the CREATE TABLE statement for the table being merged.
  • 1367: Upgrade pganalyze/pg_query_go to v6.1.0
    v6.1.0 includes a fix for building on MacOS 15.4
  • 1363: Fixed index performance regression
    I've left a fairly detailed comment for the future, but it doesn't quite explain the exact issue here. It's more so to prevent making a change that would lead to the issue again.
    In a nutshell, we were always adding boolean literal expressions in our start and stop expressions, which define the start and stop positions for the underlying tuple iterator. With the Dolt change to fix a case of incorrect results, we were met with even worse results in some circumstances. With the original logic, these literals were harmless to include in multi-expression ranges, but they fundamentally changed the behavior of the stop position with the new logic. They're required to be there though if there are no other expressions, hence it made sense to just always include them. The behavioral change isn't obvious at first glance, hence the need for the long comment (which should make it appear relatively obvious after reading).
    This also makes use of QuickFunction where possible, which should always be true for tuple-level filtering, and should provide a small speedup in those cases.
  • 1349: turn off stats by default for doltgres launch
  • 1347: Bug fix for multi-column indexes
    Fixes #1331
    Also fixes an encoding bug: limited length varchar columns were always being encoded out of band.
    Tests for the changes in dolthub/dolt#9061
    Also fixes a bug in parsing --prof args
  • 1344: Changing how a constraint addition is structured, to match what Dolt/GMS does
    We were previously modeling an inline constraint definition as a separate DDL command. This changes it to be consistent with how GMS and Dolt works, by using a single DDL command, and setting the constraint action.
  • 1336: Infer types when clients specify a bind argument with OID zero
    When specifying parameters for a prepared query, callers can specify OID zero to instruct the server to infer the type. Doltgres was error'ing out in this case, because it couldn't find a valid OID registered for zero. This changes Doltgres to infer types when the specified parameter OIDs contains a zero.
    Found while testing a basic Rails app with Doltgres.
  • 1333: More lenient handling of unsupported options in CREATE INDEX
  • 1332: Account for new server config interfaces. NoOp
  • 1329: GENERATED BY DEFAULT AS IDENTITY in CREATE TABLE statement
    Fixes #1328
  • 1326: Initial support for advisory lock functions
    Adds support for three Postgres advisory lock functions:
    • pg_try_advisory_lock()
    • pg_advisory_lock()
    • pg_advisory_unlock()
      A couple TODOs call out follow-ups to make LockSubsystem work better with Postgres' behavior, such as supporting reentrant locking.
      Fixes: #1262
  • 1325: Bug fix: parsing iso8601 date strings
    Fixes #1323
  • 1319: New tests and removed errors for various ALTER .. OWNER statements, which are no-ops
  • 1313: Add support for adaptive inline storage
  • 1312: Relaxed collation restrictions (reduced to warnings) in CREATE DATABASE
    Also improved the error message for certain type errors.
  • 1299: Allow ALTER TABLE ADD COLUMN to specify an inline FK constraint
    The regressions listed below are caused by us now honoring the inline check constraint definition, instead of ignoring them. GMS doesn't update the scope with the new column, so check constraints that use the column at the same time as adding it don't work properly. MySQL also supports this behavior, but we don't support it in GMS yet, so the fix for these regressions will be in GMS.
  • 1298: Fix spelling
  • 1295: Support for INSERT .. RETURNING
  • 1294: Add tests for ALTER COLUMN to assert that column default expressions are resolved
    Altering a column with an existing column default expression was triggering a panic in Doltgres, because Doltgres' TypeSanitizer was finding an UnresolvedColumnDefault instance in the plan.ModifyColumn instances's column field.
    This is not an issue from Dolt or GMS, because they don't support MySQL's syntax to alter a single component of an existing column, without requiring its full column definition to be respecified. (And also because they don't use Doltgres' TypeSanitizer.)
    Depends on dolthub/dolt#8994
    Depends on dolthub/go-mysql-server#2895
  • 1291: Log stack traces when panics are caught
  • 1289: Support ENCODING in CREATE DATABASE
    Fixes #1261
  • 1288: Unskip node test for INSERT INTO ... ON CONFLICT
  • 1285: Avoid name collisions for generated FK names
    Matches Postgres' behavior where default foreign key name collisions are resolved by adding an integer suffix to the name to make it unique.
    Also includes a bug fix for setting the target schema when dropping a primary key.
    Fixes a couple more issues with supporting DoltHub's schema in Doltgres.
  • 1277: Allow different but compatible types in foreign key constraints
    Relies on dolthub/go-mysql-server#2888
  • 1267: testing(sql): fix typo in code comment
  • 1265: Root Object Rework
    This reworks root objects so that they actually work, as they previously did not (outside of the session cache).

Closed Issues

  • 1366: current_setting('server_version_num') errors
  • 1377: Support ANALYZE with no tables specified
  • 1331: Django requires CREATE INDEX with what looks like a regex pattern
  • 1262: Standard Rails deployments require pg_try_advisory_lock() function
  • 1328: Django uses PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY in create table which parse but does not generate a default
  • 1323: Django migrations use ::timestamptz syntax on dates and Doltgres cannot parse
  • 39: as of syntax not supported yet
  • 28: Help message still from Dolt
  • 1259: Standard Django migrations use RETURNING syntax that is not supported
  • 1261: Standard Rails deployments require ENCODING syntax
  • 805: Support INSERT INTO...ON CONFLICT
  • 1272: DROP TABLE should sort tables by dependencies