github.com/dolthub/doltgresql
v1.2.0
#1030 most downloaded on Go modules
dolthub/doltgresql
What this package is like to depend on
Last release 2 days ago
21 Aug 2026
Ships on a steady schedule
a new release about every 8 days
Rarely documented
notes for 10 of 73 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
919 releases · first in 2023
424 releases in the last 12 months
see the full history below
Release timeline
919 releases · Nov 2023 to Aug 2026Releases
latest 60 of 919-
v1.2.1-0.20260821194209-95a47cc0188021 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260821171142-02e9e3da61f021 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260821161233-bbfb09bae32121 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260820213916-1add6223fdec20 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260820212017-4a13aadf8dc620 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260820205505-3ac9309b903f20 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260820205212-2a88701d6b3c20 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260820204921-300c2505658520 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260820202652-1188b626691b20 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260820183230-5e798aa6aa7720 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260820183156-563eb1c46d2420 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260819200601-3d5d700d04fb19 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260819190543-6e2dfe9969a619 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260819181039-9bd462d96ab519 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260819180738-bf43cba9947e19 Aug 2026 pre-releaseNothing published for this version
-
v1.2.1-0.20260819180525-ff5c700183a519 Aug 2026 pre-releaseNothing published for this version
-
v1.2.018 Aug 2026Release notes
Open source →1.2.0 is a minor version release containing potentially breaking behavioral changes:
- Client error codes previous returned with the XX prefix are now more specific and match Postgres behavior, e.g. 44 prefix for write contention errors.
- The auth.db file, containing users and grants, is not replicated to a secondary during cluster replication. Previously replicas always had the default user and password (
postgres,password)
Clients relying on the old error codes may need to update application code. Replication customers should ensure that readers to replicas are configured with the correct user name and password.
Merged PRs
dolt
- 11534: go: remotesrv: http: Authenticate incoming requests against the correct remote peer address.
For authentication, this previously defaulted tolocalhost, while still applying authorization on the true remote peer address. - 11528:
branch: fix-dwhen the upstream does not resolve
Deleting a branch withdolt branch -dcould fail withbranch not foundwhen deleted from a remote. Dolt now compares against the local snapshot of the upstream, not the remote repository, and falls back to the current branch when its copy is gone.- Add
env.UpstreamRefto resolve a branch's upstream local ref fromBranchConfig. - Add
upstreamOrHeadto decide when to use the upstream branch or switch to current working branch. - Upstream is searched by the configured merge ref in the
BranchConfigto support different names. - Merged predicate reads the remote-tracking ref instead of the live remote state.
RemoteDbProviderparameter dropped because it goes unused.
Fix dolthub/dolt#11450
- Add
- 11486: Bug fixes for binlog replication with virtual columns
Adds support for correctly handling virtual columns and functional indexes in binlog replication, both when Dolt is acting as the replication primary and when Dolt is acting as a replica.
Fixes: dolthub/dolt#11475 - 11481: go: store/nbs,dprocedures_backup: Add dolt backup sync{,-url} --prune-with-grace-period.
Backups into a destination store land new table files there before they update the manifest of the destination store to refer to the files. If the backup fails partially through, it can leave behind temporary files and unreferenced table files.
--prune-with-grace-period is a new flag which can be used when callingbackup syncandbackup sync-url. It will cause all unreferenced table files in the destination store to be removed, before the sync starts, if no files in the destination store have an mtime more recent than the provided grace period.
In general, --prune-with-grace-period should be larger than the amount of time it takes to land the backup, but smaller than the period of time between backup attempts.
Fixes #11361 - 11448: refactored auth replication to support doltgres
This change generalizes auth persistence to allow doltgres to participate in it with its own file type. The GRPC methods are unchanged, since they already take an opaque blob payload.
Doltgres side: #3057
doltgresql
- 3132: {go.mod,go.sum,utils}: update builder to match method signature
- 3128: Fix
array_to_string()panic on int2vector/oidvector values
Caused by ArrayBaseType() returning the wrong element type.
Fixes: #3108 - 3127: Fix IN clause failing on schema-qualified dolt system tables
Dolt system tables without thedolt_prefix were not getting wrapped with GMSCast elements correctly, which caused incorrect execution.
Fixes: #3115 - 3104: new skipped test
- 3089: automatically translate hard-coded oids in the regression tests
Some regression tests use hard-coded OIDs for entities created during tests. Since doltgres assigns its own OIDs, these need to be translated for these tests to pass. - 3087: more function support
Functionality required to stop special-casing psql commands, which now all work natively.
In addition to some missing functions, this PR also implements a few other features / fixes required for full psql support:- Correctly report triggers from pg_class
- Correctly compare OIDs when one is NULL
- Support for WITH ORDINAL for table functions
- 3081: Handle
apd.Decimaltypes in limit clauses
Depends on: dolthub/go-mysql-server#3701 - 3073: audited error codes
This PR audits error code processing to ensure that all common error codes typically examined by clients are correctly returned by the server. In particular, some clients interpret an XX000 error code by terminating the connection to the server, so we need to be careful to only return that code on a catastrophic, unexpected error.
Also adds new client library tests that ensure clients behave as expected in response to these codes. - 3059: Added CREATE OPERATOR and CREATE AGGREGATE
This adds support for theCREATE OPERATORandCREATE AGGREGATEstatements, which we need to support additional emulated extensions. - 3057: replicate the auth.db file to secondaries
This closes a significant gap in replication.
See related changes in dolthub/dolt#11448 - 3055: bug fix for index miss on dolt_diff_* tables
go-mysql-server
- 3703: Fix panic for
LIKEexpression with emptyESCAPEcharacter
Despite what MySQL documentation says, emptyESCAPEcharacter actually escapes theNULcharacter (\0).
fixes: dolthub/dolt#11518 - 3702: fix panic in
format()
fixes: dolthub/dolt#11517 - 3700: fix panic on
rand(null)
fixes: dolthub/dolt#11494 - 3697: fix inet6 type assertions
fixes: dolthub/dolt#11493 - 3696: cap initial heapsize
This PR adds a cap to the initial heap size of themaxRowHeapwithinTopNRowsIter, to prevent overflows.
Additionally, unnecessarily largeorder by ... limit xclauses would result wasted time allocating space.
heap.Pushappends to the internal slice, so we'll rely on golang to manage the memory.
fixes: dolthub/dolt#11503 - 3695: Allow
NULLand other numerical swap flags forBIN_TO_UUID
Fixes dolthub/dolt#11457 - 3693: fix panic for
GeometryFromWKTand various GeoSpatial bugs
We added support for "pure empty geometry forms", which MySQL doesn't support, except for "GEOMETRYCOLLECTION EMPTY".
Changes:- fix panics for pure empty geometry forms
- fix panics for invalid axis-order options
- fix ordering for axis-order options
- expose st_latitude function
- fix geospatial srid for
st_x()andst_y()functions
Fixes: dolthub/dolt#11492
- 3692: When serializing bytes for a MySQL client, correctly handle wrapped values, such as adaptive encoded columns
Currently, when asql.Valuecontains a wrapped value, but the value's type doesn't implementsql.ValueType, we fail to properly serialize it when sending the bytes to the MySQL client.
Closed Issues
- 3108: array_to_string() panic with int2vector
- 3115: IN clause fails with dolt_branches
- 11517: Dolt panics on a numeric
FORMATlocale from a window expression - 11518: Dolt panics on empty
LIKE ... ESCAPE ''within window expressions - 11494: Dolt panics on
RAND(NULL)on a nil seed. - 11493: Dolt panics on
INET6_ATONon a non-string SQL argument - 11361:
dolt backup sync: an interrupted sync leaves a complete, unreferenced archive in the destination forever — the archive is published before the manifest and there is no prune - 11024: Incorrect expression evaluation when NULL appears in a tuple
- 11456: MySQL Binary Prepared Statement (
COM_STMT_EXECUTE) truncates TCP packet payload onJSONcolumns containing multi-line formatted strings - 11475:
INSERT INTOa table with functional index enabled panics when binlog replication is active ondolt sql-server - 11450:
dolt branch -ddoes not find branch that exists when doingdolt branch [-a] - 11503:
ORDER BY+ hugeLIMIT(≥ 2^62) panics - 11457:
BIN_TO_UUIDpanics for a NULL swap flag - 11492: Dolt panics on empty
POLYGONWKT
-
v1.1.1-0.20260819174525-848e240d440f19 Aug 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260818195940-212ec76bb92418 Aug 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260818193532-44ca81ea15af18 Aug 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260818191517-58eb2fa8e96818 Aug 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260818182353-297612ab4e7818 Aug 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260818154018-00426d6270ad18 Aug 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260817232723-36942b33399417 Aug 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260815005859-0be8ae3d8cff15 Aug 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260814231307-201c8a802ba914 Aug 2026 pre-releaseNothing published for this version
-
v1.1.012 Aug 2026Release notes
Open source →1.1.0 has a breaking change in transaction semantics. Previous transaction semantics did not correctly emulate Postgres behavior.
- In 1.0.0 and earlier, multiple statements in a single Query message were each committed separately, as if they had arrived in individual Query messages. In 1.1.0, all statements in a single message are treated as an implicit transaction, with all statements being committed or rolled back atomically.
- In 1.0.0 and earlier, statements received via the extended query protocol (parse, bind, execute, etc.) used by many libraries were all committed independently unless wrapped in an explicit transaction with
BEGIN. In 1.1.0, such statements are committed atomically when aSyncmessage is received. - In 1.0.0 and earlier, statements that produced an error were treated as independent errors and additional statements in the same transaction could still succeed. In 1.1.0, any error in a transaction causes all subsequent statements to fail until a
COMMITorROLLBACKis received.
This change is unlikely to break most customers, but in accordance with our release policy this change in behavior requires a minor version increment.
Merged PRs
doltgresql
- 3070: bug fix: implicit transactions
Postgres's rules for handling implicit transactions are subtle and diverge dramatically from MySQL's. This PR implements the correct semantics for implicit transactions:- Multiple statements in a single query message execute in an implicit transaction
- Queries using the extended query protocol all take place in an explicit transaction, with Sync triggering a commit
There are lots of additional subtleties in this behavior, fully documented at https://www.postgresql.org/docs/current/protocol-flow.html
- 3069: Decorrelate
EXISTS/NOT EXISTSqueries
Fix Doltgres'sTypeSanitizeranalyzer rule casting every*plan.ExistsSubquerynode before GMS'sunnestExistsSubqueriesrule runs, which hid the node from that rule's pattern match and silently disabled EXISTS/NOT EXISTS decorrelation (semi/anti join rewrite) for every Doltgres query using them.
Manually perf testing results (10k rows, indexed): a simple correlated EXISTS query dropped from ~18s to ~20ms, and a nested EXISTS/NOT EXISTS query that hadn't finished after 90s completed in ~2s, roughly three orders of magnitude on the query shapes this fixes. - 3064: Fix goroutine deadlock from unlocked mutex during panic
Fixes a deadlock in DoltgresType.IoOutput/ConvertToType where a panic while resolving a type's cast or output function (e.g. an index-out-of-range on an unexpected empty ResolvedTypes()) left the type's mutex locked
forever, hanging every later query that touched the same type.
Also adds a step in the CI workflow to check for signs of a timeout in the logs, and if so, errors with a message about a deadlock timeout. - 3063: Accept transaction isolation levels, but always use
REPEATABLE READ
Follow Dolt's existing behavior to allow clients to specify a transaction isolation level, but still always useREPEATABLE READ.
Also includes an update to the Doltgres SQL parser, to allow us to differentiate between specified isolation levels in the future. - 3054: bug fix: SHOW support global settings
A bug prevented SHOW from working with global settings. - 3049: Fix panic in test query converter
Fix a panic in the Doltgres' test query converter when processingDEFAULTvalues inON DUPLICATE KEY UPDATE / UPDATE ... SETclauses.
Fixes: #3045 - 3041: bug fix for nonlocal tables to work in Doltgres
Depends on: dolthub/dolt#11406
Fixes: #3035
Closed Issues
-
v1.0.1-0.20260814215406-a7b5f1b26a1314 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260814191525-8ff5563e8b2f14 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260814005041-52e16087d58814 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260813233700-2913f8ef109a13 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260813231454-55da9675c08113 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260813223101-2858705c342013 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260813220433-e8b1bc0cf79f13 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260812192615-9ddb7a78b08712 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260812150458-c98632f6867312 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260812145754-a188105885ac12 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260811230315-0feee252c3f611 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260811185950-ef896316f05811 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260811011335-7b8cb0fbac3911 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260810160622-3e3e088c140510 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260810033815-4e2acd78348310 Aug 2026 pre-releaseNothing published for this version
-
v1.0.1-0.20260807152459-04d033dfc49307 Aug 2026 pre-releaseNothing published for this version
-
v1.0.006 Aug 2026Release notes
Open source →This is the 1.0 release of Doltgres.
1.0 means:
- Forward Storage Compatibility: all 1.x releases will be compatible with no data migrations.
- Production Performance: Fast enough for your production workloads.
- Postgres Compatibility: Your Postgres tools, libraries and queries will just work.
- Stable Version Control Interface: Version control queries you write will work for all 1.x releases.
For more detail, read up on the release here:
https://dolthub.com/blog/2026-08-06-doltgres-1-0/
Merged PRs
doltgresql
- 3031: fix unknown type array input for any expr
- 3030: Fix
RANGEwindow frame panics and bugs
Fixes panics and silent mishandling when the frame boundary offset is numeric or anINTERVALover aDATE/TIMESTAMPcolumn.
Depends on: dolthub/go-mysql-server#3665 - 3029: Add fast path for binary CompiledFuncs
We can avoid memory allocations if we know the number of arguments we're going to process. - 3026: Add native
ntile(),nth_value(), andcume_dist()window functions
New window functions forntile(),nth_value(), andcume_dist()implemented in the Doltgres layer, matching Postgres's exact return types and semantics. - 3024: Homogenize RootObject and Collection storage
This simplifies root object collections by tying them all to use the same underlying storage, and also fixes a few long-standing issues:- We were aggressive with cache eviction, meaning collections were often cached for only a single statement, since we didn't have good guarantees that separate statements would properly invalidate a stale cache.
- Simply loading a collection would write a different value into the root, as it went from an "unwritten collection" to an "empty collection", which is a material difference as far as the root is concerned. We tried to mitigate this, but it was a per-collection fix.
- Concurrent branch modifications could cause a session to get into an error loop which we couldn't exit in the session, as we'd never clear the error from the previous statement and we'd resurface that error before we could even do anything
- 3023: Revamped extensions to use emulation
This removes the old logic of looking at the locally-installed Postgres instance and directly using those DLLs, and replaces it with emulated versions. So far onlyuuid-osspreally worked in the previous version, and we're successfully emulating it in Go code now. We can follow this same model and implement the other extensions as well. - 2986: Create a SequenceTracker for Postgres sequences.
This is the Doltgres side of dolthub/dolt#11337
The purpose of this PR is for Doltgres to have the same behavior for sequences and SERIAL columns that Dolt has for AUTO INCREMENT tables.
In order to accomplish this, we introduce a SequenceState type that mirrors the AutoIncrementState in Dolt. The GlobalState has trackers for both that manage a state for each Sequence object.
Closed Issues
-
v0.57.4-0.20260807011225-a9518083d25d07 Aug 2026 pre-releaseNothing published for this version
-
v0.57.4-0.20260806162322-6147a92165d406 Aug 2026 pre-releaseNothing published for this version
-
v0.57.4-0.20260806143449-a2f65d2cc9da06 Aug 2026 pre-releaseNothing published for this version
-
v0.57.4-0.20260806003700-48711497ede406 Aug 2026 pre-releaseNothing published for this version
-
v0.57.4-0.20260805225607-9e82e545f93505 Aug 2026 pre-releaseNothing published for this version
-
v0.57.4-0.20260805224502-77277089fb3b05 Aug 2026 pre-releaseNothing published for this version
-
v0.57.4-0.20260805165153-caa08c4ac14905 Aug 2026 pre-releaseNothing published for this version
-
v0.57.304 Aug 2026Release notes
Open source →Merged PRs
doltgresql
- 3021: avoid reallocating slice and sorting during typecoll name resolution
- 3020: use postgres error code
- 3018: Add regression tests for bindvar type inference with
#>>operator
Fixes: #3012
Depends on: dolthub/go-mysql-server#3663 - 3015: Add support for
ALL()
TheALL()expression allows comparing a value with the results from a subquery or from an array, and testing how the value compares to all the values in that array or subquery result set.
Fixes: #3013 - 3010: added OUT params to dolt_* system functions
Currently, alldolt_*functions return[]textas their output, e.g.:This is also true of functions that return only a single scalar results, e.g.select * from dolt_checkout('-b', 'new-branch'); dolt_checkout --------------------------------------- {0,"Switched to branch 'new-branch'"} (1 row)
{0}.
This PR changes this behavior to give all dolt procedures named OUT params so that they return column multiple column values or a single scalar, as the case may be.This is a breaking change, but will enable customers who want to inspect the output ofselect * from dolt_add('.'); status -------- 0 (1 row) select status from dolt_add('.'); status -------- 0 (1 row) select dolt_add('.'); dolt_add ---------- 0 (1 row)
dolt_functions to be able to do so much more cleanly. It also matches the behavior of built-in postgres functions with multi-value return semantics, such aspg_stat_file. Finally, it enables us to allow customers to write postgres-native SELECT constructs such asselect status from dolt_checkout()..., which is not possible with the[]textreturn type.
Examples with multiple return values:This should also work but doesn't yet, and can be added in a followup:postgres=> select * from dolt_checkout('-b', 'new-branch2'); status | message --------+---------------------------------- 0 | Switched to branch 'new-branch2' (1 row) postgres=> select message from dolt_checkout('-b', 'new-branch3'); message ---------------------------------- Switched to branch 'new-branch3' (1 row) select dolt_checkout('-b', 'new-branch4'); dolt_checkout ---------------------------------------- (0,"Switched to branch 'new-branch4'") (1 row)
postgres=> select (dolt_checkout('-b', 'new-branch3')).message; ERROR: column "message" not found in data type record (errno 1105) (sqlstate HY000)
- 3009: bug fix for joins on set-returning functions
- 3008: fixed tests that were missing pgcatalog info
- 3007: use given schema if exists as composite type for table parsed as column
- 3005: pointer comparison for
DoltgresType.Equals()
Compare the pointers to theDoltgresTypes before comparing their Serialized bytes, because they are the same most of the time. - 3004: added missing functions for psql queries
- 2999: table statistics support
- 2995: commit generated files so doltgresql can be consumed as a dependency
postgres/parser/build.shgenerates five Go files that were gitignored, so they never reached the published module zip. Any consumer importingpostgres/parser/...failed to build. This is a blocker for building adoltgresapigo service in DoltHub. This PR aims to make doltgres consumable as a library. - 2972: support OUT parameter in functions
VARIADIC mode is still not supported yet.
Closed Issues
- 3011: Querying a missing table returns SQLSTATE
XX000with a MySQL-shaped message instead ofundefined_table(42P01) - 3012: Parameter compared to
jsonb #>> text[]is inferred asjson; PostgreSQL inferstext - 3013:
ALL (array)not supported — the standard cycle-check idiom in recursive CTEs fails - 2979: Server panic in kvexec lookup-join when the join key is not the first non-PK column (0.57.0 + 0.57.1)
-
v0.57.230 Jul 2026Release notes
Open source →Merged PRs
doltgresql
- 2990: Flesh out remaining pg_catalog tables
- 2988: Regression test for bug fix in lookup join when using extended types
Fixes: #2979
Depends on: dolthub/dolt#11368 - 2987: Add regression tests for bug fix in
CASEsupport forExtendedType
Depends on: dolthub/go-mysql-server#3656
Related to: #2980 - 2983: Re-enable replication tests on MacOS
GitHub MacOS runners can take a long time to do DNS lookups, even for localhost, which was the root cause of the races on that platform. All are now changed to the loopback IP.
Also fixes an unrelated bug: connections that default to a DB with the same name as a user are now rejected if that DB doesn't exist. - 2982: Allow aliasing columns in a table function
Allows aliasing the column names of a table function, such as:SELECT * FROM generate_series(1,3) AS s(r).
Also enablesregprocto work with schema-qualified procedures.
Both of these gaps were found while fixing a gap to enable DBeaver to work correctly with Doltgres.
Depends on: - 2977: Hidden column support
This adds partial support for hidden columns, in that they return empty values, but don't have the full internal mechanics backing them at this time.
Closed Issues
- 2979: Server panic in kvexec lookup-join when the join key is not the first non-PK column (0.57.0 + 0.57.1)
- 2980: CASE with mixed numeric/integer branches resolves to text — SUM errors, MAX returns silently wrong values (0.57.1)
- 2973: Silent data corruption: int4 parameter bound to BIGINT column is misread as int8 when the same statement contains an untyped NULL parameter (extended query protocol)
-
v0.57.2-0.20260805144923-0b7e0d59d73d05 Aug 2026 pre-releaseNothing published for this version
-
v0.57.2-0.20260804210202-8e44f2abd9e104 Aug 2026 pre-releaseNothing published for this version
-
v0.57.2-0.20260804210020-7b04b1b4f8c504 Aug 2026 pre-releaseNothing published for this version
-
v0.57.2-0.20260804074002-d2eefba058a704 Aug 2026 pre-releaseNothing published for this version
-
v0.57.2-0.20260804022602-d1c51e990d7104 Aug 2026 pre-releaseNothing published for this version
-
v0.57.2-0.20260804014844-3bfdba75549e04 Aug 2026 pre-releaseNothing published for this version
-
v0.57.2-0.20260803223939-b56f1fb16e6c03 Aug 2026 pre-releaseNothing published for this version