Skip to content

Releases: dolthub/doltgresql

0.56.9

Choose a tag to compare

@github-actions github-actions released this 06 Jul 21:41

Merged PRs

doltgresql

  • 2899: Add regression test for preparing a join query with a bindvar on an indexed column
    New regression test for a customer-reported issue where preparing a join query with a bindvar comparing equality on an indexed column caused a panic. Root cause fix is in go-mysql-server, in the linked PR below.
    Depends on: dolthub/go-mysql-server#3612
  • 2896: Bump golang.org/x/net from 0.54.0 to 0.55.0
    Bumps golang.org/x/net from 0.54.0 to 0.55.0.
    Commits
    • 7770ec4 go.mod: update golang.org/x dependencies
    • 4ece7b6 html: escape greater-than symbol in doctype identifiers
    • 08be507 html: improve Noah's Ark clause performance
    • a8fb2fe html: properly render fostered elements in foreign content
    • 0dc5b7a html: properly check namespace in "in body" any other end tag
    • a452f3c html: ignore duplicate attributes during tokenization
    • f865199 quic: fix appendMaxDataFrame erroneously accumulating sentLimit
    • 210ed3c quic: establish a "happened-before" relationship between stream write and read
    • ad8140e quic: fix buffer slicing when handling overlapping stream data
    • 23ee2ef http2: avoid API changes when built with go1.27
    • See full diff in compare view

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/net&package-manager=go_modules&previous-version=0.54.0&new-version=0.55.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolthub/doltgresql/network/alerts).

Closed Issues

  • 2886: INSERT panic on composite UNIQUE(uuid, text) index — regression since 0.56.5 (store/val/tuple_compare.go:173)

0.56.8

Choose a tag to compare

@github-actions github-actions released this 30 Jun 22:00

Merged PRs

doltgresql

  • 2888: Add tests for composite unique indexes with extended types and adaptive encoding types
    Fixes: #2886
    Depends on: dolthub/dolt#11266
  • 2882: Remove unnecessary case for apd.Decimal
    Follow up to #2881 to remove some unneeded code
  • 2864: Changing doltgres sql logic test harness to run tests in parallel
    Depends on: dolthub/sqllogictest#21
  • 2858: Bump golang.org/x/crypto from 0.17.0 to 0.45.0 in /integration-tests/go-sql-server-driver
    Bumps golang.org/x/crypto from 0.17.0 to 0.45.0.
    Commits
    • 4e0068c go.mod: update golang.org/x dependencies
    • e79546e ssh: curb GSSAPI DoS risk by limiting number of specified OIDs
    • f91f7a7 ssh/agent: prevent panic on malformed constraint
    • 2df4153 acme/autocert: let automatic renewal work with short lifetime certs
    • bcf6a84 acme: pass context to request
    • b4f2b62 ssh: fix error message on unsupported cipher
    • 79ec3a5 ssh: allow to bind to a hostname in remote forwarding
    • 122a78f go.mod: update golang.org/x dependencies
    • c0531f9 all: eliminate vet diagnostics
    • 0997000 all: fix some comments
    • Additional commits viewable in compare view

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/crypto&package-manager=go_modules&previous-version=0.17.0&new-version=0.45.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolthub/doltgresql/network/alerts).
  • 2857: Bump github.com/jackc/pgx/v5 from 5.6.1-0.20240826124046-97d20ccfadaa to 5.9.2 in /integration-tests/go-sql-server-driver
    Bumps github.com/jackc/pgx/v5 from 5.6.1-0.20240826124046-97d20ccfadaa to 5.9.2.
    Changelog

    Sourced from github.com/jackc/pgx/v5's changelog.

    5.9.2 (April 18, 2026)

    Fix SQL Injection via placeholder confusion with dollar quoted string literals (GHSA-j88v-2chj-qfwx)

    SQL injection can occur when:

    1. The non-default simple protocol is used.
    2. A dollar quoted string literal is used in the SQL query.
    3. That query contains text that would be would be interpreted outside as a placeholder outside of a string literal.
    4. The value of that placeholder is controllable by the attacker.

    e.g.

    attackValue := `$tag$; drop table canary; --`
    _, err = tx.Exec(ctx, `select $tag$ $1 $tag$, $1`, pgx.QueryExecModeSimpleProtocol, attackValue)

    This is unlikely to occur outside of a contrived scenario.

    5.9.1 (March 22, 2026)

    • Fix: batch result format corruption when using cached prepared statements (reported by Dirkjan Bussink)

    5.9.0 (March 21, 2026)

    This release includes a number of new features such as SCRAM-SHA-256-PLUS support, OAuth authentication support, and PostgreSQL protocol 3.2 support.

    It significantly reduces the amount of network traffic when using prepared statements (which are used automatically by default) by avoiding unnecessary Describe Portal messages. This also reduces local memory usage.

    It also includes multiple fixes for potential DoS due to panic or OOM if connected to a malicious server that sends deliberately malformed messages.

    • Require Go 1.25+
    • Add SCRAM-SHA-256-PLUS support (Adam Brightwell)
    • Add OAuth authentication support for PostgreSQL 18 (David Schneider)
    • Add PostgreSQL protocol 3.2 support (Dirkjan Bussink)
    • Add tsvector type support (Adam Brightwell)
    • Skip Describe Portal for cached prepared statements reducing network round trips
    • Make LoadTypes query easier to support on "postgres-like" servers (Jelte Fennema-Nio)
    • Default empty user to current OS user matching libpq behavior (ShivangSrivastava)
    • Optimize LRU statement cache with custom linked list and node pooling (Mathias Bogaert)
    • Optimize date scanning by replacing regex with manual parsing (Mathias Bogaert)
    • Optimize pgio append/set functions with direct byte shifts (Mathias Bogaert)
    • Make RowsAffected faster (Abhishek Chanda)
    • Fix: Pipeline.Close panic when server sends multiple FATAL errors (Varun Chawla)
    • Fix: ContextWatcher goroutine leak (Hank Donnay)
    • Fix: stdlib discard connections with open transactions in ResetSession (Jeremy Schneider)

    ... (truncated)

    Commits

  • 2855: allow querying column or sql value with star expr and add client tests

Closed Issues

  • 2886: INSERT panic on composite UNIQUE(uuid, text) index — regression since 0.56.5 (store/val/tuple_compare.go:173)

0.56.7

Choose a tag to compare

@github-actions github-actions released this 26 Jun 21:44

Merged PRs

doltgresql

  • 2881: Bug fixes: JSONB serialization/deserialization
    Fixes a customer reported issue where tables created with JSON columns before the introduction of adaptive encoding (e.g. Doltgres-0.56) use a different encoding format and don't serialize/deserialize correctly in versions of Doltgres that include the adaptive encoding feature.

Closed Issues

0.56.6

0.56.6 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Jun 23:05

Merged PRs

doltgresql

  • 2876: Bug fixes for round tripping JSONB values with legacy ExtendedEnc format
    Schemas created before support for adaptive encoding use the EncodingExt format and persist that in their schema. When reading JSONB values from this encoding, there were bugs when serializing JSON number values.

Closed Issues

0.56.5

Choose a tag to compare

@github-actions github-actions released this 24 Jun 23:47

Merged PRs

doltgresql

  • 2860: Decompose Filters with RecordExprs for index costing
    When there are Filters over RecordExprs, decompose them into a series of logically equivalent AND and OR expressions.
    Unskipped tests: dolthub/go-mysql-server#3599
    TODO: This rule should be more selective.
  • 2850: Override coalesce with a Doltgres-specific implementation
    The coalesce implementation in GMS does not properly handle Doltgres types. This PR adds a small Doltgres-specific implementation that properly handles Doltgres types.
    Fixes: #2332
  • 2849: add go and r tests in postgres client tests
  • 2847: Context collections accept a database
    In Dolt, we don't allow multiple databases to be modified in the same statement. Normally this isn't possible, but by accessing certain collections during database creation (such as the cast collection, even if it's not used), we would load those collections. This then caused us to try and persist those collections, even though they're empty. That empty state is still different than "no data present", so it was a valid database update, and could therefore cause multiple databases to be updated.
    This change makes it such that every collection is accessed by a database string. In the database creation case, we load a collection under an empty database string (as no database exists yet). This prevents that collection from being persisted (as we don't persist something attached to an empty database name), and works around the multi-database update issue. In addition, this paves the way for proper cross-database support of collection items, which are unsupported at the current moment.
  • 2845: Handle bool type conversion for "unknown" types
    It is possible for a bool (and probably other types) to be an "unknown" type. We blindly assumed they would all be strings, leading to panics.
    For fear of breaking other stuff, I didn't implement any other types.
    Depends on:
  • 2841: Fixes Issue #2549
    Fixes:
  • 2836: Add tests for backup/restore
    Adds tests for using dolt_backup() to backup and restore Doltgres databases. Also includes a fix for Doltgres specific objects, like sequences, to ensure they get included in backups.
  • 2833: Format missing operator error correctly (fixes #2160)
    This PR formats the internal function missing error into the standard Postgres 'operator does not exist' format when the function corresponds to an operator. This ensures that errors such as comparing a varchar to a boolean are surfaced with proper feedback rather than an internal function error. Fixes #2160.
  • 2832: Fix incorrect variable substitution for column references in PL/pgSQL
    Fixes #2354
    This PR addresses an issue where field names matching parameter or variable names inside a PL/pgSQL function were incorrectly substituted by the interpreter when used as part of a table alias or record (e.g. c.id).
    By checking if a token is preceded by a dot (.), we can accurately skip variable substitution for field identifiers. A regression test for this specific issue has been added to create_function_plpgsql_test.go.
  • 2825: Added CREATE CAST alongside general bug fixes
    This implements CREATE CAST and DROP CAST, as well as fixes a number of bug that were surfaced by the tests (some fixed through other PRs, such as full type initialization, while others such as nested composite types in created functions are fixed here).
  • 2824: sql driver tests
    Ported tests from dolt via agent, manually pruned down the ones that aren't applicable or we think are adequately tested by Dolt itself.
    Most skips are due to cluster replication not yet working.
  • 2823: unskipping a bunch of enginetests
    Some tests were passing on their own, and some are now passing with the help of additional query translation capability.
    This also removes all of the *Prepared test methods, which weren't doing anything useful.
  • 2819: fix tuple comparison logic and add more tests
  • 2808: Add support for DISTINCT with sort order in array_agg function
    Fixes: #2334
  • 2804: bug fix: unaliased string literal column names
    Fixes: #2576
  • 2800: New tests for rename table colliding with existing relation names
    Depends on: dolthub/go-mysql-server#3574
  • 2799: improve a few wire format conversions
  • 2797: support NOT VALID for foreign key and check constraints
    Depends on dolthub/vitess#471, dolthub/go-mysql-server#3573 and dolthub/dolt#11155
  • 2793: Add test for JSONB use with dolt_patch()
    Depends on: dolthub/dolt#11153
  • 2792: Implement IndexNameGenerator interface
    Extends PgDatabase with custom logic for generating index names in the same pattern as Postgres.
    Depends on:
  • 2787: Enable syntax support for CREATE TEMPORARY TABLE ... ON COMMIT
    Related to: #2786
  • 2778: Fully handle type initialization
    We deserialize types such that all related types (the array type, the base type, composite attributes, etc.) are IDs that are stored on the type, requiring a lookup when that related type is needed. This fails in cases where we either do not have a context available, or something in GMS causes incomplete type information to be created after the type resolution analyzer step.
    To work around these limitations, we now pass a context to the deserialization step, and allow the collection to cache types that are currently being deserialized to allow for recursive type references (such as the base type and array type referring to one another). All other changes are related to this core idea, being either interface/field changes or bug fixes.
  • 2774: cache collections
    collections were being reloaded twice for every query that involved looking up a table/view even if the RootValue hadn't changed. At the very least this PR should halve the number of LoadAllCollections.
  • 2771: update sysbench options to match dolt
  • 2769: Add DoltgresDatabaseProvider
    Adds DoltgresDatabaseProvider and PgDatabase that wrap types from Dolt and allow Doltgres to provide customized behavior.
    I've spot checked the failing regression tests and they all appear to show existing problems that we weren't detecting before.
    Depends on:
  • 2766: set search_path for create extension and copy data
    Depends on: dolthub/go-mysql-server#3562 and dolthub/dolt#11109
  • 2745: Bump openssl from 0.10.78 to 0.10.80 in /testing/postgres-client-tests/rust
    Bumps openssl from 0.10.78 to 0.10.80.
    Release notes

    Sourced from openssl's releases.

    openssl-v0.10.80

    What's Changed

    Full Changelog: rust-openssl/rust-openssl@openssl-v0.10.79...openssl-v0.10.80

    openssl-v0.10.79

    What's Changed

    • Bump actions/cache from 5.0.4 to 5.0.5 by
Read more

0.56.4

Choose a tag to compare

@github-actions github-actions released this 28 May 22:49

Merged PRs

doltgresql

  • 2763: Bug fix for null literals in records
  • 2760: properly flush results
    Instead of flushing RowDescription and every RowData right away, have the entire Result buffer in memory first.
  • 2759: more concurrency when spooling results
    This PR splits the convert to wire format and send to client steps into two threads.
    Copies optimization from gms: dolthub/go-mysql-server#3310
  • 2757: add all benchmarks, add perf scripts, remove debug logs
    This PR changes the quick-sysbench.sh config to using logging mode info.
    Debug logs can slow down benchmarks with all that additional IO, so they should be disabled while benchmarking.
    The list of quick benchmarks has also been updated to include every read and write benchmark; it should take around 15 minutes to complete now.
    Additionally, this PR adds some utility scripts to make it easier to profile and benchmark a single test.
  • 2743: support WHERE predicate in indexes

Closed Issues

0.56.3

Choose a tag to compare

@github-actions github-actions released this 26 May 10:30

Merged PRs

doltgresql

  • 2747: Add tests for DROP INDEX
    Depends on: dolthub/go-mysql-server#3555
  • 2740: Update docs URLs to new paths
    Migrate all docs.dolthub.com, docs.doltgres.com references to the new dolthub.com/docs, doltgres.com/docs URLs in the READMEs.
  • 2730: support array_to_json and row_to_json functions
    Depends on: dolthub/go-mysql-server#3551
  • 2729: bug fix: load non-built-in types when looking for an array type's element type
    Various bug fixes for regressions reported in PR #2642, primarily related to resolving arrays of non-built-in types. The major change is adding ctx to the ArrayBaseType() method, but not all call sites could be updated, so unfortunately results in a new ArrayBaseTypeCtx(ctx) method until we can find a way to always provide a sql context and completely remove the old method form.
  • 2720: Fix scripts/build.sh to work on RedHat-based distros
    On CentOS and other RH-based distros the output of "go version" contains the "(Red Hat 1.26.2-2.el10)" string, which confuses the parser.
  • 2694: fix: correct deserialization order of sequence/routine/membership in …
    …auth
    The serialize() function wrote fields in this order:
    tablePrivileges → sequencePrivileges → routinePrivileges → roleMembership
    But deserializeV1() read them in a different order:
    tablePrivileges → roleMembership → routinePrivileges → sequencePrivileges
    This mismatch went unnoticed because all three sections (sequencePrivileges, routinePrivileges, roleMembership) have the same zero-value byte representation (count=0) when no privileges exist. Once GRANT ALL PRIVILEGES ON ALL ROUTINES or GRANT ALL PRIVILEGES ON ALL FUNCTIONS is executed, routinePrivileges becomes non-empty, the reader offset shifts, and doltgres panics with an index out of range error on the next startup when attempting to read the persisted auth file.
    Fix deserializeV1() to match the order used by serialize().
    Fixes #2693
  • 2692: Bug fix: don't round JSON numeric values when outside of float64 range
    Fixes: #2686
  • 2688: Bug fix: include view columns in pg_catalog.pg_attribute
    Adds columns in views to pg_catalog.pg_attribute to match PostgreSQL behavior.
    This requires parsing and analyzing the view, which may require caching if performance for queries on pg_attribute becomes slow when many complex views are present.
    Fixes: #2682
  • 2687: Bug fix for out of bounds slice access
    Fixes: #2684
  • 2668: Bump lodash from 4.17.21 to 4.18.1 in /testing/postgres-client-tests/node
    Bumps lodash from 4.17.21 to 4.18.1.
    Release notes

    Sourced from lodash's releases.

    4.18.1

    Bugs

    Fixes a ReferenceError issue in lodash lodash-es lodash-amd and lodash.template when using the template and fromPairs functions from the modular builds. See lodash/lodash#6167

    These defects were related to how lodash distributions are built from the main branch using https://github.com/lodash-archive/lodash-cli. When internal dependencies change inside lodash functions, equivalent updates need to be made to a mapping in the lodash-cli. (hey, it was ahead of its time once upon a time!). We know this, but we missed it in the last release. It's the kind of thing that passes in CI, but fails bc the build is not the same thing you tested.

    There is no diff on main for this, but you can see the diffs for each of the npm packages on their respective branches:

    4.18.0

    v4.18.0

    Full Changelog: lodash/lodash@4.17.23...4.18.0

    Security

    _.unset / _.omit: Fixed prototype pollution via constructor/prototype path traversal (GHSA-f23m-r3pf-42rh, fe8d32e). Previously, array-wrapped path segments and primitive roots could bypass the existing guards, allowing deletion of properties from built-in prototypes. Now constructor and prototype are blocked unconditionally as non-terminal path keys, matching baseSet. Calls that previously returned true and deleted the property now return false and leave the target untouched.

    _.template: Fixed code injection via imports keys (GHSA-r5fr-rjxr-66jc, CVE-2026-4800, 879aaa9). Fixes an incomplete patch for CVE-2021-23337. The variable option was validated against reForbiddenIdentifierChars but importsKeys was left unguarded, allowing code injection via the same Function() constructor sink. imports keys containing forbidden identifier characters now throw "Invalid imports option passed into _.template".

    Docs

    • Add security notice for _.template in threat model and API docs (#6099)
    • Document lower > upper behavior in _.random (#6115)
    • Fix quotes in _.compact jsdoc (#6090)

    lodash.* modular packages

    Diff

    We have also regenerated and published a select number of the lodash.* modular packages.

    These modular packages had fallen out of sync significantly from the minor/patch updates to lodash. Specifically, we have brought the following packages up to parity w/ the latest lodash release because they have had CVEs on them in the past:

    Commits
Read more

0.56.2

Choose a tag to compare

@github-actions github-actions released this 18 Apr 01:20

Merged PRs

doltgresql

  • 2601: Fixes 2462, 2574, 2579, 2604
    This fixes:
    • #2462
    • #2574
    • #2579
    • #2604
      The array concatenation functions are tested independently in existing tests with the exception of array_prepend, which is new (hence the lack of new tests for those functions).
  • 2597: allow SELECT; and column name for cast result fix
  • 2596: Fixed user/pass issue for initialization scripts, added docs
    Fixes #2300
  • 2588: Add support for UTF8 chars in identifiers
    Enables use of UTF8 chars in identifiers, matching PostgreSQL behavior.
    Related to #2580
  • 2587: add a stack trace to recovered panic
  • 2583: DEALLOCATE ALL
    Fixes #2575
  • 2570: support nested block statements and call statement in plpgsql
  • 2562: Support using same parameter multiple times
    Right now we always don't allow a query to use the same parameter in multiple locations.
    Technically that should always be allowed and then we'll fail later down the line if you're trying to bind a parameter and compare it to something with an incompatible type.
    But the error messages we have if I just completely remove the check are a little ugly, so I added some code to our function that handles the types of parameters by breaking if you try to use a parameter as multiple incompatible types within the same query.
    So for instance the query: select * from table where column_int = $1 and column_float4 = $1 should be fine because integer/int4 is compatible with float4.
    But the query: select * from table where column_text = $1 and column_int = $1 will error because text and integer/int4 are not compatible.
  • 2558: fix type resolution in select of create view stmt

Closed Issues

  • 2604: dolt_merge fails with "at or near "<index_name>": syntax error" on 3-way merge when table has both UNIQUE INDEX and a column with DEFAULT clause
  • 2579: Array operator || not implemented
  • 2574: SELECT 'now'::timetz --> spurious error
  • 2462: PostgreSQL Compatibility: SET TIME ZONE '<offset>' fails with invalid value parameter error
  • 2578: Enums: reported column attribute is incorrect
  • 2573: Empty SELECT --> spurious error
  • 2146: pg_tables system table: tableowner column is incorrect
  • 2300: Docker entrypoint exec_sql hardcodes postgres/password credentials, ignoring DOLTGRES_USER/DOLTGRES_PASSWORD
  • 2580: UTF8 table names not supported
  • 2575: DEALLOCATE ALL --> spurious error
  • 2250: Feature request: Support indexing expressions on columns
  • 2546: SELECT 'foo' --> invalid OID 705
  • 2547: concat('', NULL, '') incorrectly returning null string
  • 2548: Timezone parser does not accept PostgreSQL-accepted formats (time zone offset)

0.56.1

Choose a tag to compare

@github-actions github-actions released this 08 Apr 23:15

Merged PRs

doltgresql

  • 2560: Fixed issues 2547 and 2557
    This fixes:
    • #2547
    • #2557
      This introduces a new function type which mirrors the C-language variadic function implementation. These functions differ from standard PostgreSQL variadic functions, as normally variadic functions require that all variadic parameters have the same type. This limitation is not true for C-language functions. This was required to implement a valid concat function, as we were previously relying on GMS' built-in version, which is not correct for Postgres. I also corrected some tests that enforced the incorrect behavior.
      This also fixes a bug in JSON parsing. It was already known that Go's JSON library converts escaped characters into their original forms, however we were attempting to preemptively handle the incorrect conversion. This has been changed, as we can cleanup the output since the unescaped forms are invalid JSON anyway, which fixes the behavior and makes our output more accurate.
  • 2554: Fixed issues 2546 and 2548
    This PR fixes:
  • 2529: Fixed ANY using bindings
    This fixes:
    • #2386
      In GMS/MySQL, we often can't determine the type of a bound parameter during the initial parse as the return type is subject to the input (binding a float32 vs int32 may result in an actual return type difference). This is not true for Postgres as type resolution is very well defined. This creates a mismatch where we defer the type resolution, but the client expects to be told what type the bindings should be.
      We should have a more general solution that covers bindings at the GMS layer for how MySQL and Postgres handle type resolution differently, but the scope of that project seemed too large for now, so this only implements a local fix specifically for the issue linked above.
  • 2501: allow running multiple statements in function

Closed Issues

  • 2546: SELECT 'foo' --> invalid OID 705
  • 2547: concat('', NULL, '') incorrectly returning null string
  • 2548: Timezone parser does not accept PostgreSQL-accepted formats (time zone offset)
  • 2545: Suggestion: include Doltgres brand in version string
  • 2557: unescaped newlines in JSON output
  • 2423: information_schema.columns cannot be queried with dolt_show_system_tables set
  • 2386: Error when running parameterized any clause.

0.56.0

Choose a tag to compare

@github-actions github-actions released this 01 Apr 12:32

Merged PRs

doltgresql

  • 2503: Fixed DST handling by moving to timeofday
    time.Time serialization and deserialization can cause information to be irreversibly lost due to daylight savings time changes. The location isn't directly serialized due to it being tied to the runtime system information (different operating systems may have different time zone information), and is therefore reconstructed on deserialization.
    This is fine for timestamptz, as we internally process everything as UTC and use the client's timezone when returning values to the client. For timetz, however, the timezone information is embedded in the value itself and is independent of the client, and this was causing information loss during serialization. This PR changes serialization to use the timetz.TimeTZ type, which is already used at most steps (by casting time.Time to timetz.TimeTZ and vice-versa), and therefore the change propagates to all functions that take a timetz value.
    In line with this, the time type was updated to use timeofday.TimeOfDay, which is also already used internally in most functions. Although serialization is fine, this was changed to be more inline with timetz (as timetz.TimeTZ directly uses timeofday.TimeOfDay) and also due to time.Time carrying implicit information that can cause direct value comparisons to be incorrect. For example, '01:00:00'::time should sort before '02:00:00'::time, however adding 24 hours to the first value will still result in the correct hour mark for display, but internally the time.Time value would be on the next day, and would cause the comparison to actually show '02:00:00'::time appearing first (assuming they started on the same day to begin with).
    All of these issues are fixed by using the correct types that are already in Doltgres, and already used by the internal functions. I'm not sure why we decided to use time.Time instead of those anyway (as interval uses the internal type rather than casting to time.Duration), but this fixes it. This does mean that the serialization is incompatible with existing databases, however since serialization was incorrect in the first place, it's a necessary change.
  • 2496: /.github/workflows: bump actions checkout
  • 2494: add is distinct and not distinct from exprs
  • 2490: resolve user defined type in drop routine
  • 2487: Added proper support for receiving binary formatted values
    This is the receive counterpart to the following PR:
    • #2394
      All new tests were validated against a live Postgres 15 server to ensure that we're processing client input properly. In addition, I've added a little more testing on the send side as well, as there were a couple of small gaps in coverage.
  • 2478: remove ValidateTagUniqueness
    companion pr: dolthub/dolt#10707
  • 2476: Misc Fixes for Prisma
    3 things in this PR:
    1. Makes version numbers consistent. I used 15.17 which is the latest version of postgresql 15.
    2. Make the col_description, obj_description, and shobj_description return the correct value for "no comments", rather than "empty comments". They are still no-op functions but now return NULL instead of empty strings. More detailed information on these functions can be found here
    3. generate_subscripts is a set returning function that returns the indices of the array you give it. So for instance the array [10, 40, 23] will return {1, 2, 3}. Most postgresql array types are 1-indexed, except for the types oidvector and int2vector. I added a fix so that generate_subscripts respects those two's unique indexing. More on generate_subscripts here. oidvector and int2vector don't seem to have standard docs pages but this site provides basic details.
  • 2472: add fors plpgsql statement
  • 2464: Support creating/dropping DB with hypens in name
    Adds functionality and testing for creating databases like test-db.
    Currently: create database "test-db" will create a database called "test-db" (with the escaped quotes).
    drop database "test-db" will try to look for a database called "test-db" to drop (with the escaped quotes).
  • 2458: Moved the binary wire format for receiving to the receive func
  • 2454: resolve type with database provided
  • 2447: support fori plpgsql statement

Closed Issues

  • 2333: UPDATE SET date_column = '2026-02-14' fails without explicit ::date cast via simple protocol