Releases: dolthub/doltgresql
Releases · dolthub/doltgresql
0.52.2
0.52.1
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
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 (orpg_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_$tablenamesometimes returns wrong rows for tables with same name in different schemas
0.51.2
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 withTODOs). 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)forbytea,int2,int4,int8anduuidtypes for prepared statement. We default totext (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
0.51.1
Merged PRs
doltgresql
- 1731: Fixed sequences breaking some statements
When sequences were added, some commands failed to run (reportingtable not founderrors). 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 theRETURNINGclause inDELETEstatements.
Example:Depends on dolthub/go-mysql-server#3142DELETE FROM myTable WHERE startDate IS NULL RETURNING id;
- 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_summaryanddolt_preview_merge_conflictstable 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 thedolt_conflicts_TABLENAMEstructure, which includes the ability to delete conflicts and update the root objects by inserting into theour_valuecolumn: https://docs.dolthub.com/sql-reference/version-control/dolt-system-tables#dolt_conflicts_usdtablename
Requires:
Closed Issues
0.51.0
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 fixingtimestamp, I also found thatdateandboolneeded 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:

After:

- 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
SETqueries to expectOKResult
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 sincedoltgresharness does not create remote dir withh.UseLocalFileSystem() - 1562: support set returning function
- 1555: Added partial support for CREATE EXTENSION
Relies on:- dolthub/pg_extension#4
This implements support forCREATE EXTENSION, in that onlyuuid-osspis tested. This doesn't handle everything else that's needed forDROP 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.
- dolthub/pg_extension#4
- 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 usingUPDATE ... FROMstatements 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 forplan.GetUpdatable()and needs to return implementations ofsql.DatabaseSchemaTablein order for Doltgres triggers to work withUPDATE ... FROMstatements.
Depends on: dolthub/go-mysql-server#3016 - 1534: support char type with length for string input
- 1522: Add support for
SELECTstatements with no expressions
Resolves #1470 - 1520: Add support for
IS NULLexpression on records
Postgres semantics forIS NULLandIS NOT NULLdiffer slightly from the the MySQL semantics implemented in GMS. For records and composites,IS NULLreturns true if the record/composite itself isNULLor if all values in the record/composite areNULL.IS NOT NULLreturns true only if all values in the record/composite are notNULL. Note that this means, for records and composites in Postgres,IS NOT NULLis not equivalent toNOT(IS NULL).
This change adds custom implementations ofIS NULLandIS NOT NULLto 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: theORDER BYclause in the function, e.g.:Relies on dolthub/go-mysql-server#2992array_agg ( anyarray ORDER BY input_sort_columns ) - 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:I'm worried this is something pretty nasty in session / context management in doltgres.error running query: dangling ref: found dangling references to HashSet { a084r0i9e18t0gq6m3s6qmp86pfq4hos dq8tbqfe39u1hah2bs0ilg63rfk3vok2 } - 1451: Add
ROW()record constructor support
Initial support for theROW()constructor expression, which creates anonymous records.
This PR adds support for basic uses of theROW()constructor, such as creating records from groups of expressions, selecting records, comparing records, and using records inWHEREclauses. There are still severalrecordfeatures that don't work yet, such as using a table alias with theROW()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
INSERTusing prepared statement with timestamp column - [1430](https://github.co...
0.50.1
Merged PRs
doltgresql
- 1439: Added WHEN support for triggers
This adds support forWHENon 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 anexpression.Literalis 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 ofUPDATEwith aRETURNINGclause.
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
- Does not support
- 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.
- dolthub/go-mysql-server#2949
- 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 DEFAULTforeign 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...RETURNINGnot yet supported - 759:
TSVECTORsupport - 797: Allow
TEXTcolumns in keys (without prefix length) - 32: Event errors in log
- 1063: Weird behavior with
WHEREclause - 1043: using column in function when creating view panics
- 1402: Unable to create FK on
TEXTcolumn to a non-pkTEXTcolumn - 1405: Limit on dolt_branches table returns
plan is not resolved because of node '*plan.Limit'error - 1410:
undefined: reservedKeywordserror during Android cross-compilation on Termux - 798: Support for
ON UPDATE/DELETE SET DEFAULT - 1142: Panic on converting regclass to string
- 1394:
INSERTwithRETURNINGdoesn't work with referenced schema in column name
0.50.0
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 setdefault_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 anANALYZE;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 toTEXTcolumns 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 thearray(select ...)syntax.
Relies on dolthub/go-mysql-server#2931
- Support for the
- 1373: Add skipped tests for bugs hit from testing js frameworks, fix
current_setting
For #1366 - 1370:
CREATE TABLEformatter support
This letsdolt_mergecorrectly handle tables with column default values, constraints, etc. As part of the merge, Dolt generates and then parses theCREATE TABLEstatement 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 ourstartandstopexpressions, 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 ofQuickFunctionwhere 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 IDENTITYinCREATE TABLEstatement
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 makeLockSubsystemwork 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 .. OWNERstatements, 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 COLUMNto 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 COLUMNto assert that column default expressions are resolved
Altering a column with an existing column default expression was triggering a panic in Doltgres, because Doltgres'TypeSanitizerwas finding anUnresolvedColumnDefaultinstance in theplan.ModifyColumninstances'scolumnfield.
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
ENCODINGinCREATE 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
0.18.0
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_constaintsincorrectly 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 TABLEdoesn'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
RAISEin PL/pgSQL
Adds initial support forRAISEstatements in PL/pgSQL functions. There are still a few edge case TODOs (e.g. using theclient_min_messagesconfig 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 ... WHENin 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 forDROP 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 thepg_catalogschema. - 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:for now, this just gets doltgresql compiling and always disables auto_gc.behavior: auto_gc_behavior: enable: true - 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:- 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
ValueStoreinterface that can store and retrieve variable-length bytestrings by their content hash.NodeStoreis the only implementation of this interface, but decoupling the interface from the implementation allows us to not depend onNodeStore's internals when passing it to lower-level code. - Tuple comparison operations can now end up doing disk IO, which means they need a context parameter.
- 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
- 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
0.17.1
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 usingOperationSizeForStatements, which will properly calculate offsets for theGotooperations, 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:
NULLsupport in PL/pgSQL
We get support forNULLstatements frompg_query_gosince it automatically filters them out. This change adds a test of their usage. - 1197:
WHILEstatements in PL/pgSQL
Adds basic support forWHILEstatements 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 returnedRowIter, 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:- Swap out the validateCreateTable analyzer rule
- 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
- 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).