Releases: dolthub/doltgresql
Release list
0.56.9
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
7770ec4go.mod: update golang.org/x dependencies4ece7b6html: escape greater-than symbol in doctype identifiers08be507html: improve Noah's Ark clause performancea8fb2fehtml: properly render fostered elements in foreign content0dc5b7ahtml: properly check namespace in "in body" any other end taga452f3chtml: ignore duplicate attributes during tokenizationf865199quic: fix appendMaxDataFrame erroneously accumulating sentLimit210ed3cquic: establish a "happened-before" relationship between stream write and readad8140equic: fix buffer slicing when handling overlapping stream data23ee2efhttp2: avoid API changes when built with go1.27- See full diff in compare view
[](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
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
4e0068cgo.mod: update golang.org/x dependenciese79546essh: curb GSSAPI DoS risk by limiting number of specified OIDsf91f7a7ssh/agent: prevent panic on malformed constraint2df4153acme/autocert: let automatic renewal work with short lifetime certsbcf6a84acme: pass context to requestb4f2b62ssh: fix error message on unsupported cipher79ec3a5ssh: allow to bind to a hostname in remote forwarding122a78fgo.mod: update golang.org/x dependenciesc0531f9all: eliminate vet diagnostics0997000all: fix some comments- Additional commits viewable in compare view
[](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:
- The non-default simple protocol is used.
- A dollar quoted string literal is used in the SQL query.
- That query contains text that would be would be interpreted outside as a placeholder outside of a string literal.
- 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
- See full diff in compare view
- 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
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
Merged PRs
doltgresql
- 2876: Bug fixes for round tripping JSONB values with legacy ExtendedEnc format
Schemas created before support for adaptive encoding use theEncodingExtformat 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
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
coalescewith a Doltgres-specific implementation
Thecoalesceimplementation 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 usingdolt_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 tocreate_function_plpgsql_test.go. - 2825: Added CREATE CAST alongside general bug fixes
This implementsCREATE CASTandDROP 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
DISTINCTwith sort order inarray_aggfunction
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
JSONBuse withdolt_patch()
Depends on: dolthub/dolt#11153 - 2792: Implement
IndexNameGeneratorinterface
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
collectionswere 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 ofLoadAllCollections. - 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
- Prefer Homebrew openssl@4 and stop looking for openssl@1.1 by
@alexin rust-openssl/rust-openssl#2633 - Fix output buffer overflow in cipher_update_inplace for AES key-wrap-with-padding by
@alexin rust-openssl/rust-openssl#2638 - Release openssl 0.10.80 and openssl-sys 0.9.116 by
@alexin rust-openssl/rust-openssl#2639
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
- Prefer Homebrew openssl@4 and stop looking for openssl@1.1 by
0.56.4
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 thequick-sysbench.shconfig to using logging modeinfo.
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
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 addingctxto theArrayBaseType()method, but not all call sites could be updated, so unfortunately results in a newArrayBaseTypeCtx(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 topg_catalog.pg_attributeto match PostgreSQL behavior.
This requires parsing and analyzing the view, which may require caching if performance for queries onpg_attributebecomes 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
ReferenceErrorissue inlodashlodash-eslodash-amdandlodash.templatewhen using thetemplateandfromPairsfunctions from the modular builds. See lodash/lodash#6167These 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:
lodash: lodash/lodash@4.18.0-npm...4.18.1-npmlodash-es: lodash/lodash@4.18.0-es...4.18.1-eslodash-amd: lodash/lodash@4.18.0-amd...4.18.1-amdlodash.templatelodash/lodash@4.18.0-npm-packages...4.18.1-npm-packages
4.18.0
v4.18.0
Full Changelog: lodash/lodash@4.17.23...4.18.0
Security
_.unset/_.omit: Fixed prototype pollution viaconstructor/prototypepath 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. Nowconstructorandprototypeare blocked unconditionally as non-terminal path keys, matchingbaseSet. Calls that previously returnedtrueand deleted the property now returnfalseand leave the target untouched._.template: Fixed code injection viaimportskeys (GHSA-r5fr-rjxr-66jc, CVE-2026-4800, 879aaa9). Fixes an incomplete patch for CVE-2021-23337. Thevariableoption was validated againstreForbiddenIdentifierCharsbutimportsKeyswas left unguarded, allowing code injection via the sameFunction()constructor sink.importskeys containing forbidden identifier characters now throw"Invalid imports option passed into _.template".Docs
- Add security notice for
_.templatein threat model and API docs (#6099) - Document
lower > upperbehavior in_.random(#6115) - Fix quotes in
_.compactjsdoc (#6090)
lodash.*modular packagesWe 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:
0.56.2
Merged PRs
doltgresql
- 2601: Fixes 2462, 2574, 2579, 2604
This fixes: - 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_mergefails 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
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 validconcatfunction, 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 afloat32vsint32may 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.
- #2386
- 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_tablesset - 2386: Error when running parameterized
anyclause.
0.56.0
Merged PRs
doltgresql
- 2503: Fixed DST handling by moving to
timeofday
time.Timeserialization 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 fortimestamptz, as we internally process everything as UTC and use the client's timezone when returning values to the client. Fortimetz, 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 thetimetz.TimeTZtype, which is already used at most steps (by castingtime.Timetotimetz.TimeTZand vice-versa), and therefore the change propagates to all functions that take atimetzvalue.
In line with this, thetimetype was updated to usetimeofday.TimeOfDay, which is also already used internally in most functions. Although serialization is fine, this was changed to be more inline withtimetz(astimetz.TimeTZdirectly usestimeofday.TimeOfDay) and also due totime.Timecarrying implicit information that can cause direct value comparisons to be incorrect. For example,'01:00:00'::timeshould 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 thetime.Timevalue would be on the next day, and would cause the comparison to actually show'02:00:00'::timeappearing 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 usetime.Timeinstead of those anyway (asintervaluses the internal type rather than casting totime.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 thereceivecounterpart 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 thesendside as well, as there were a couple of small gaps in coverage.
- #2394
- 2478: remove
ValidateTagUniqueness
companion pr: dolthub/dolt#10707 - 2476: Misc Fixes for Prisma
3 things in this PR:- Makes version numbers consistent. I used 15.17 which is the latest version of postgresql 15.
- Make the
col_description,obj_description, andshobj_descriptionreturn 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 generate_subscriptsis 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 typesoidvectorandint2vector. I added a fix so thatgenerate_subscriptsrespects those two's unique indexing. More ongenerate_subscriptshere.oidvectorandint2vectordon'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 liketest-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
receivefunc - 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