Skip to content

Releases: dolthub/doltgresql

0.52.2

06 Oct 14:26

Choose a tag to compare

Merged PRs

doltgresql

  • 1904: Added some fixes for failing dumps
  • 1845: indexes for pg_attribute table
    Also contains a bunch of bug fixes for indexes as implemented so far.

Closed Issues

0.52.1

30 Sep 23:05

Choose a tag to compare

Merged PRs

doltgresql

  • 1882: Added files for import regression testing
    This adds a lot of publicly-available SQL files to our regression testing, to ensure that we're compatible with common import scripts. These were obtained using GitHub's API. Also included is the scraper program that was used, allowing us to obtain more imports in the future.
  • 1879: nested iter should be used for set returning functions as projections only
    Depends on: dolthub/go-mysql-server#3226
  • 1861: partial support language sql for functions (select statement with single return type)
    Partial support for CREATE FUNCTION ... LANGUAGE SQL with SELECT statements
    Note: this adds support for only SELECT statements with single return type.

Closed Issues

0.52.0

23 Sep 09:02

Choose a tag to compare

Merged PRs

doltgresql

  • 1858: Added SQL scrubber and scrubbed SQL file
    This adds a scrubber program that can take a SQL file and scrub all information from it, replacing it with random data (while still following referential data). Additionally, this adds a scrubbed SQL file, and creates a new GitHub action since these tests can take a bit longer (since SQL files can be megabytes in size).
  • 1848: Fixed numerous import issues
    This fixes numerous issues as seen from importing customer dumps. I'm currently scrubbing the dump of all sensitive or identifying information of any kind, which I'll include in a follow-up PR, alongside the tool built to allow us to scrub any future dumps so that we may keep them within our test suite. As a result, I didn't include any direct tests in this PR since the dump will fulfill the requirements.
    Requires:
  • 1833: Fixed INDEX reservation
    Some dumps include columns that are named "index", which is forbidden in CockroachDB. Our parser was initially based on an open-licensed version of CockroachDB's parser (#19 (comment)), and we therefore inherited some of the restrictions that CockroachDB has. We want our customers to be able to use standard Postgres dumps, so this removes the CockroachDB extensions and restores the functionality expected of Postgres users. We didn't implement functionality for the extensions anyway, so this should be a harmless removal.
    For reference, this is the page discussing the extensions:
    https://www.cockroachlabs.com/docs/stable/order-by
  • 1830: Zachmu/pg indexes
  • 1826: support datestyle parameter use
    Depends on dolthub/go-mysql-server#3203
  • 1818: .github/workflows: Add ICU4C to places where we build and test doltgresql.
  • 1811: add make_timestamptz functions
  • 1809: Added SQL import testing framework
    One thing that we'll be adding is tests to ensure that imports from all over not only work in Doltgres, but continue to work. To achieve this, this PR adds a new framework that allows us to specify files that will be imported, as well as allowing for any needed setup that an import may need (such as user creation). Additionally, as import files may be very, very large, we needed a good way to attach errors to their origin queries. This framework gives an experience that is as close to standard Go debugging as we can get, considering imports must be done through PSQL (or pg_restore, which isn't supported yet, but would function very similarly to the PSQL path).
    To reiterate, this gives us:
    • Focus capability on specific dumps
    • Error reporting for associating errors with queries
    • Breakpoint triggers for specific queries
    • Repeatable testing to ensure import compatibility doesn't regress
  • 1806: In-memory indexes for pg_class
    See dolthub/go-mysql-server#3190
    This is a proof of concept for pg_class. Other pg_catalog tables are next.
  • 1795: /servercfg/config.go: update config to have mcp methods
  • 1793: .github: New releases are no longer prerelease
  • 1792: ALTER TABLE changes for migration scripts
    This adds support for some sequence-related statements from a customer-provided dump for the purposes of testing imports.
  • 1757: add more date and time functions

Closed Issues

  • 1056: dolt_history_$tablename sometimes returns wrong rows for tables with same name in different schemas

0.51.2

26 Aug 19:51

Choose a tag to compare

Merged PRs

doltgresql

  • 1779: Add simple tests for dolt_conflicts_resolve
    Dolt PR: dolthub/dolt#9730
  • 1763: Added many tests for Dolt functions
    This adds a lot of testing for Dolt functions. Most of these tests involve different constructs (generated columns, triggers, functions, etc.), which have exhibited failure points even if they seem relatively unrelated to the function being called. Many of these errors have been fixed in this PR and the accompanying Dolt PR, but there are still quite a few outstanding (all labeled with TODOs). These are outside of the known deficiencies due to logic that we just haven't implemented yet.
    Requires:
  • 1746: fix generate_series function with negative step argument
  • 1735: Use AppendAndSliceString instead of AppendAndSliceBytes
  • 1729: fix nil binding parameter formatcode
    This PR fixes:
    • binding values without format codes supplied
    • format code expected to be binary (1) for bytea, int2, int4, int8 and uuid types for prepared statement. We default to text (0) for everything else.
    • extracting binding types returned types should be ordered as 'v1', 'v2', 'v3', etc.
    • add obj_description(oid) function
  • 1722: add to_timestamp and to_date functions

Closed Issues

  • 1283: Support UPDATE ... FROM
  • 1360: LIMIT $1 errors with unsupported type: EXPRESSION
  • 1372: exists subquery does not work with prepared statement
  • 1725: pq: runtime error: index out of range [0] with length 0
  • 1393: INSERT with RETURNING does not work with prepared statement

0.51.1

08 Aug 23:44

Choose a tag to compare

Merged PRs

doltgresql

  • 1731: Fixed sequences breaking some statements
    When sequences were added, some commands failed to run (reporting table not found errors). This was due to sequence names being returned in locations that Dolt expected only table names, so the returned error reflected that the table could not be found. The relevant fix is in Dolt, with this primarily adding testing.
    Relies on:
  • 1724: Fixed merge issues
    There was a merge bug that was preventing a few more tests from passing, which has been fixed on the Dolt side. Additionally, serialization of conflicts have been updated, and I didn't bump the version number since we don't have a release with conflict support, so it should be safe to do so. This also fixes a few additional bugs that were hidden behind the aforementioned merge bug.
    Relies on:
  • 1717: add current_setting(text,bool) function
  • 1712: Support for DELETE ... RETURNING
    Adds support for the RETURNING clause in DELETE statements.
    Example:
    DELETE FROM myTable WHERE startDate IS NULL RETURNING id;
    Depends on dolthub/go-mysql-server#3142
  • 1710: #1708 - Fix query converter crash on boolean literals
    Fixes #1708
    Query converter was panicking with "unhandled type: sqlparser.BoolVal" when encountering boolean literals like FALSE in CREATE TABLE statements. This was blocking UNION column mapping tests from dolthub/dolt#9628. Postgres CI docker container is also end of life, switched next LTS ver of Ubuntu 22.04.
  • 1706: comment out all dolt_docs tests
  • 1701: comment out dolt_docs testing
    comment out dolt_docs testing until AGENT.md compatibility can be implemented
  • 1679: Tests for dolt_preview_merge_conflicts_summary and dolt_preview_merge_conflicts table functions
    Dolt PR: dolthub/dolt#9574
  • 1672: add more array and date functions
  • 1671: add plus and minus functions for time, date types
    Used Claude
  • 1657: add missing syntax for date parsing and support srf used in table fun…
    …ction syntax
    Depends on: dolthub/go-mysql-server#3105
  • 1647: Root Object Conflicts & Merging
    This implements root object conflict resolution and merging capabilities. Root objects are only used by Doltgres, and they're the underlying type for sequences, triggers, interpreted functions, etc. Each root object defines its own diff and merge strategy, with Dolt handling all of the internal logic (such as ensuring conflicts are resolved, etc.). The same general approach was used to create root objects in the first place (where each defines its own handling logic, while Dolt manages their storage on the root value). As with Dolt, we make use of the dolt_conflicts_TABLENAME structure, which includes the ability to delete conflicts and update the root objects by inserting into the our_value column: https://docs.dolthub.com/sql-reference/version-control/dolt-system-tables#dolt_conflicts_usdtablename
    Requires:

Closed Issues

  • 1716: function current_setting(unknown, boolean) does not exist
  • 1708: Query converter crashes on boolean literals - blocking UNION column mapping test

0.51.0

18 Jul 14:05

Choose a tag to compare

Merged PRs

doltgresql

  • 1641: Fix binary encoded bind vars
    Bind vars can be specified in a string format or a binary format. The library Doltgres uses for decoding the bind vars (pgtype) errors out when converting some types in binary format to string format. The error looks like: cannot scan timestamp (OID 1114) in binary format into *string.
    As part of fixing timestamp, I also found that date and bool needed special handling, too, and I updated our prepared statement tests with more type coverage and to ensure we hit both the string format and binary format bind var code paths.
    Fixes: #1419
  • 1639: Perf improvement for oid_eq
    OID equality is found very commonly in expensive joins on pg_catalog tables, and was revealed to be a major bottleneck in SQLAlchemy performance via profiling.
  • 1638: Remove duplicate type definitions
    Removes two duplicate type definitions. Original customer report also mentioned unused tokens, although those have been left in, since they are valid Postgres tokens and many will likely be used as we continue extending Doltgres support.
    Related to: #1592
  • 1634: Named all anonymous callable funcs in binary func package
  • 1633: Removed wasteful engine instantiation
    This takes 30% or more off pg_catalog accesses. Before:
    image
    After:
    image
  • 1632: Remove error out for global parameters
    Erroring out is preventing gms from setting system variables when server starts (dolthub/go-mysql-server#3005) since AssignValues calls InitValue with global set to true.
  • 1630: Small bug fixes for SQLAlchemy compatibility
  • 1610: support for bool_and, bool_or
    Also unskipped a few formerly skipped tests for another aggregate function since it's now supported by the engine.
  • 1605: Added GCC and Clang building
    This extends the definitions build script to search for GCC and Clang too. These were all tested and confirmed to work locally.
  • 1604: Fix SET queries to expect OKResult
    companion pr: dolthub/dolt#9441
  • 1601: parse MM DD HH:MM:SS YYYY format for timestamp type
  • 1595: scripts/build_binaries.sh: Windows builds: statically link libssp so that doltgres.exe does not have a dependency on MinGW at runtime.
    Also picks up newer versions of our crosstools toolchain and sets the platform_version metadata in the MacOS builds so that they will be more compatible with App Store release in the future if the Workbench ever supports Doltgres.
  • 1593: support timezone input in time and timetz types
  • 1589: Support for set-returning functions
    Depends on dolthub/go-mysql-server#3054
  • 1573: Fix dolthub/dolt#483 - truncate expected err str due to auto-gen postfix
    Fixes dolthub/dolt#483
    Removed Doltgres over specific expected error string on constraint check test
  • 1570: Fix dolthub/dolt#483 - add skip for remote tracking branch and table same name test
    Fixes dolthub/dolt#483
    Add skip for test since doltgres harness does not create remote dir with h.UseLocalFileSystem()
  • 1562: support set returning function
  • 1555: Added partial support for CREATE EXTENSION
    Relies on:
    • dolthub/pg_extension#4
      This implements support for CREATE EXTENSION, in that only uuid-ossp is tested. This doesn't handle everything else that's needed for DROP EXTENSION, such as tracking the created artifacts. There are also some skipped tests where the results aren't quite what are expected, but besides that everything works assuming the environment requirements are satisfied.
  • 1544: Added generated system tables to pg_catalog tables
    Relies on dolthub/dolt#9339
    Also fixes a bug in NOT IN expressions
  • 1536: Add support for UPDATE ... FROM
    Adds support for using UPDATE ... FROM statements to update a table using data joined from other tables.
    The biggest gap I'm aware of is support for executing triggers on the updated table. GMS needs some additional changes to clean up the interface for plan.GetUpdatable() and needs to return implementations of sql.DatabaseSchemaTable in order for Doltgres triggers to work with UPDATE ... FROM statements.
    Depends on: dolthub/go-mysql-server#3016
  • 1534: support char type with length for string input
  • 1522: Add support for SELECT statements with no expressions
    Resolves #1470
  • 1520: Add support for IS NULL expression on records
    Postgres semantics for IS NULL and IS NOT NULL differ slightly from the the MySQL semantics implemented in GMS. For records and composites, IS NULL returns true if the record/composite itself is NULL or if all values in the record/composite are NULL. IS NOT NULL returns true only if all values in the record/composite are not NULL. Note that this means, for records and composites in Postgres, IS NOT NULL is not equivalent to NOT(IS NULL).
    This change adds custom implementations of IS NULL and IS NOT NULL to support Postgres' behavior with records and composites.
    Depends on: dolthub/go-mysql-server#3064
  • 1515: Support for ORDER BY in array_agg
    Depends on dolthub/go-mysql-server#3001
    This invalidates the previous approach, but I want feedback on this technique before I remove it.
  • 1504: Implemented pg_type_is_visible
    Also added user types to pg_types table
    Partial fix for #1465
  • 1497: array_agg support and general framework for postgres aggregate functions
    Other aggregate functions will require type overload resolution logic that this first function, array_agg, does not.
    Also not yet supported: the ORDER BY clause in the function, e.g.:
    array_agg ( anyarray ORDER BY input_sort_columns )
    Relies on dolthub/go-mysql-server#2992
  • 1495: fix displaying correct column name for dolt_ tables
    This behavior was introduced in #1408
  • 1489: set ReadyForQuery transaction indicator for in transaction query
    Depends on dolthub/go-mysql-server#2986
  • 1473: Bug fixes for EXISTS, prepared statement typing
  • 1471: new gms and fix compile errors
  • 1467: Bug fix for name resolution
    This fixes the failing query in #1464
  • 1458: Implemented support for various SHOW statements
    One of the new tests for SHOW SEQUENCES exposes a very bad bug:
    error running query: dangling ref: found dangling references to HashSet {
    a084r0i9e18t0gq6m3s6qmp86pfq4hos
    dq8tbqfe39u1hah2bs0ilg63rfk3vok2
    }
    
    I'm worried this is something pretty nasty in session / context management in doltgres.
  • 1451: Add ROW() record constructor support
    Initial support for the ROW() constructor expression, which creates anonymous records.
    This PR adds support for basic uses of the ROW() constructor, such as creating records from groups of expressions, selecting records, comparing records, and using records in WHERE clauses. There are still several record features that don't work yet, such as using a table alias with the ROW() constructor.
    Fixes: #1425
    Depends on: dolthub/go-mysql-server#2982
  • 1448: Added test for VALUES() select statements interacting with prepared statements
    Confirmed fix for #1424

Closed Issues

  • 1464: SQLAlchemy Demo no work with Doltgres
  • 1419: Error for INSERT using prepared statement with timestamp column
  • [1430](https://github.co...
Read more

0.50.1

02 May 00:44

Choose a tag to compare

Merged PRs

doltgresql

  • 1439: Added WHEN support for triggers
    This adds support for WHEN on triggers, which is probably the last major trigger addition that we'll need for now.
  • 1437: Fixes for prepared statements, removed custom literal type
    Removes doltgres's custom Literal type, uses the GMS version everywhere. This fixes various incompatibilities in GMS where an expression.Literal is expected.
    This is an alternate approach to the first attempt here:
    #1406
  • 1436: Added dropping triggers when dropping a table
  • 1433: Add skipped test for erroring prepared query with offset
  • 1432: Add support for UPDATE ... RETURNING
    Adds support for basic usage of UPDATE with a RETURNING clause.
    Limitations:
    • Does not support * as an expression yet – an additional analyzer change is needed to expand * into column names.
      Fixes: #1421
      Depends on: dolthub/go-mysql-server#2955
  • 1426: Added support for triggers
    This adds partial support for triggers. This should cover a decent chunk of the functionality that will be expected. Notably, this is still missing:
    • FOR EACH STATEMENT
    • TRUNCATE
    • INSTEAD OF timing
    • Deferring
    • Specific column triggers for UPDATE
    • CONSTRAINT TRIGGERS
    • Referenced tables (seemingly used for the internal foreign key implementation?)
    • Transition tables
    • String arguments
    • The rest of the variables available inside a trigger interpreted function
  • 1417: Unskipping tests
  • 1411: Fixed interpretation calls within DML
    This implements the changes necessitated by the following fix:
    • dolthub/go-mysql-server#2949
      We had a bug where calls to any DML statements that included an interpreted function would remove the DML's ability to actually affect the data. The GMS PR implements the core fix, and this PR implements the companion changes.
  • 1408: Bug fix for dolt_ tables with incompatible types
    Fixes #1405
    This works by placing a typecast on unconverted dolt_ table fields so that they work in any expression that requires a doltgresType.
  • 1403: Add support for SET DEFAULT foreign key referential action
    Fixes: #798
    Depends on: dolthub/go-mysql-server#2944
    Depends on: dolthub/dolt#9121
  • 1401: typo in README
  • 1400: Updated readme for beta
  • 1399: Add auto gc behavior interface to avoid breakage
  • 1392: Add skipped tests for insert...returning bugs, fix referenced schema in column name error
    Fixes #1394

Closed Issues

  • 1421: UPDATE...RETURNING not yet supported
  • 759: TSVECTOR support
  • 797: Allow TEXT columns in keys (without prefix length)
  • 32: Event errors in log
  • 1063: Weird behavior with WHERE clause
  • 1043: using column in function when creating view panics
  • 1402: Unable to create FK on TEXT column to a non-pk TEXT column
  • 1405: Limit on dolt_branches table returns plan is not resolved because of node '*plan.Limit' error
  • 1410: undefined: reservedKeywords error during Android cross-compilation on Termux
  • 798: Support for ON UPDATE/DELETE SET DEFAULT
  • 1142: Panic on converting regclass to string
  • 1394: INSERT with RETURNING doesn't work with referenced schema in column name

0.50.0

16 Apr 00:25

Choose a tag to compare

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 ...
Read more

0.18.0

12 Mar 21:33

Choose a tag to compare

Merged PRs

doltgresql

  • 1270: Bug fixes for primary and foreign key naming
    Addresses several issues around primary key and foreign key naming:
    • ability to drop a primary key using its default postgres name
    • declaring a foreign key reference inline in a column definition
    • default foreign key names now match postgres
    • fix for pg_constaints incorrectly listing non-unique and non-pk indexes
      Note that the regressions listed are all related to now honoring foreign key references inline in a column definition. Before, these statements were executing, but the FK reference was ignored. Now that we honor the FK reference, several tests broke for the following reasons:
    • DROP TABLE doesn't automatically sort multiple tables by FK dependencies
    • A required index didn't exist or wasn't automatically created
    • FKs aren't currently supported for temp tables
    • A new FK references a generated column, which we don't support yet, so FK checks failed on insert
  • 1255: Support for RAISE in PL/pgSQL
    Adds initial support for RAISE statements in PL/pgSQL functions. There are still a few edge case TODOs (e.g. using the client_min_messages config param to determine what level of notices to send to clients), and this initial pass does not include any exception handling.
    Notice messages are queued in the current session, then sent to the client from the connection handler, right before results are sent to the client. Support for setting notices in the DoltSession is added in dolthub/dolt#8974.
    PostgreSQL Docs
  • 1244: Support for text keys in ALTER TABLE statements
    Stacked on top of #1243, relies on dolthub/go-mysql-server#2871
  • 1243: Implemented a couple jsonb functions
  • 1239: Fixed bug with generated values not being properly quoted
    This wasn't due to a bug in GMS, but rather a bug in our CreateTable wrapper node. This wasn't caught earlier because column default values in postgres can't contain column references, only generated columns can.
    Fixing this bug exposed others, namely when using functions in check constraints.
  • 1233: Bug fix for generated columns when creating a primary key
    This PR implements the parser changes in dolthub/go-mysql-server#2861 and adds tests.
    There are still bugs around quoting in generated columns that need to be fixed in GMS, which will come in a follow-up PR.
  • 1230: go.mod: Bump go version to 1.24.0.
  • 1228: Add support for CASE ... WHEN in PL/pgSQL
  • 1226: Unskip a dataloader BATS test now that a unique index bug was fixed
  • 1224: Allow primary keys to contain address columns sorted by their resolved values, anf add always-disabled AutoGCConfig to get doltgresql compiling
    This is a merge of #1219 and #1214
    Due to concurrent changes in Dolt, these PRs need to be combined in order to get a clean CI.
  • 1222: Initial support for DROP FUNCTION
    Adds initial support for DROP FUNCTION. (PostgreSQL Docs)
    Two of the main features not supported yet are: cascading deletes of function dependencies, and restricting deletes when function dependencies are detected. The resolution of a type from its name also needs to fleshed out more to support types outside of the pg_catalog schema.
  • 1221: json_build_array and json_build_object functions
  • 1219: servercfg: Add always-disabled AutoGCConfig to get doltgresql compiling.
    Goes with dolthub/dolt#8849, which adds a config stanza like:
    behavior:
    auto_gc_behavior:
    enable: true
    
    for now, this just gets doltgresql compiling and always disables auto_gc.
  • 1214: Allow primary keys to contain address columns sorted by their resolved values.
    This is the Doltgres part of this change.
    GMS PR: dolthub/go-mysql-server#2854
    Dolt PR: dolthub/dolt#8870
    The goal of the change is to allow for indexes to use an out-of-line variable-length type (like TEXT or BLOB) as a primary key while still storing just the address in the index (instead of being forced to store a prefix of the value).
    As a result of this change, any tuple comparison operation may need to resolve a hash in the NodeStore. This poses two complications:
    1. The tuple logic exists at a much lower level than the node store and can't depend on it without creating a dependency cycle. We get around this with a new ValueStore interface that can store and retrieve variable-length bytestrings by their content hash. NodeStore is the only implementation of this interface, but decoupling the interface from the implementation allows us to not depend on NodeStore's internals when passing it to lower-level code.
    2. Tuple comparison operations can now end up doing disk IO, which means they need a context parameter.
  • 1213: Changed created functions to persist on the root
    This changes created functions such that they're now written to the root value, instead of being added to the global function list. This also supports overloading created functions.

Closed Issues

  • 734: Foreign Key references don't get committed properly for tables
  • 173: doltgres version prints inappropriate warning about being out of date and update instructions
  • 658: cannot insert into table with time type column default value
  • 755: CREATE DOMAIN support
  • 756: CREATE FUNCTION support

0.17.1

17 Feb 17:08

Choose a tag to compare

Merged PRs

doltgresql

  • 1206: Added loop structures and label support
    This adds the rest of the "non-FOR" loops, along with loop control flow and labels. I also noticed that we weren't using OperationSizeForStatements, which will properly calculate offsets for the Goto operations, so I fixed that. Just so happened that our tests weren't running into the issue.
  • 1200: Fix backup restore auth for super user
    Dolt PR: dolthub/dolt#8860
  • 1199: NULL support in PL/pgSQL
    We get support for NULL statements from pg_query_go since it automatically filters them out. This change adds a test of their usage.
  • 1197: WHILE statements in PL/pgSQL
    Adds basic support for WHILE statements in PL/pgSQL. No support for labels yet.
  • 1196: Fixed CREATE FUNCTION not executing some statements
    Simple bug, but was difficult to spot. Some statements work without needing to advance the returned RowIter, while others require advancing it. I changed it so that we're always advancing the iterator. I also unskipped the skipped tests, and removed the temporary one since the original now works.
  • 1193: Added SELECT ... INTO and PERFORM, plus bugfixes
    Hoped to get a few more statements in, but there's an issue where some statements that are ran from the interpreter are seemingly being discarded. It was a roadblock even for these two, hence the skipped tests. That's the next thing I'mma look into, as it's a pretty big issue (especially since there's no error, just no effect which is even worse).
  • 1171: Bug fixes for using various types in keys
    This PR allows various types to be used in keys that were not possible before. This comes down to two things:
    1. Swap out the validateCreateTable analyzer rule
    2. Change the determination for the max width of a type to be more accurate, which influences whether we choose standard extended encoding or extended address encoding
    3. Alter the way we determine the encoding type for extended columns in keys to more closely match the non-key case (dolthub/dolt#8817)
      This PR also has a couple small regressions in tests. I'm punting on these because we're about to completely overhaul how we store these types (to implement toast semantics).

Closed Issues