-
released this
2025-10-16 14:44:12 -05:00 | 564 commits to main since this releaseBackwards Incompatible Changes
This version enables Automatic Garbage Collection and the Archive storage format as the default behavior. We do not expect any backwards in compatibility, but this is a significant change which merits having a significant version bump from our previous version, 1.59.
Per Dolt’s versioning policy, this is a minor version bump because these changes may impact existing applications. Please reach out to us on GitHub or Discord if you have questions or need help with any of these changes.
We called this release 1.75 to indicate we are much closer to Dolt 2.0 for which Automatic Garbage Collection and the Archive storage format as the default are requirements.
Merged PRs
dolt
- 9964: Enable AutoGC and Archive format by default
In prep for dolt 1.75, this change makes auto_gc and archives the default. - 9957: go/libraries/utils/earl: Add special handling for AWS URLs with non-compliant host components so that we can bump the Golang version.
- 9952: dolthub/dolt#9904: Add MariaDB connectors integration tests
Fixes dolthub/dolt#9904
Companion dolthub/docs#2691 - 9940: go: sqle: Add support for visting GC roots in current table editors.
This will unlock the ability to finalize GC even during long running statements. To accomplish this, we add support to table editors to visit their own GC roots. Stashed edits in a table editor need to be flushed before we visit them, so we do that here. - 9939: blobstore push/pull and conjoin
Add support for pushing and pulling archives to blobstore remotes. This includes conjoin support.
go-mysql-server
- 3267: Fix GroupBy validation for queries with Having
fixes dolthub/dolt#9963
In #3166, I had skipped adding aggregate function dependencies to the from scope of the Having node because they were being included in the select expressions during GroupBy validation. However, removing them caused other scoping issue.
So I undid the skip, and instead of using the select expressions from the innermost Project node, we now use the select expressions from the innermost Project node that is not a direct child of a Having node. This exposed a bug where we were not able to resolve aliases in OrderBy expressions so I added Alias expressions to the select dependency map used for resolving OrderBy and Select expressions - 3265: Do not allow inserting NaN and Inf values into numeric type columns
fixes #3264 - 3263: Do not prune tables in semi-joins
Fixes dolthub/dolt#9951 - 3262: dolthub/dolt#9927: Fix SQL regression on UnaryMinus NULL CAST
Fixes dolthub/dolt#9927
Closed Issues
Downloads
- 9964: Enable AutoGC and Archive format by default
-
released this
2025-10-14 05:20:34 -05:00 | 634 commits to main since this releaseMerged PRs
dolt
- 9956: go.mod,.github: Build with go 1.25.1.
1.25.2 introduces stricter net/url.Parse semantics on bracketed hostname components, which breaks the (non-standard) URLs that Dolt uses for AWS remotes. We will build with the previous version of Go until we can fix this.
Closed Issues
- 9941: Add an INFO message to the sql-server logs for MCP server start if configured
- 9942: Error in logs when using
claude mcp list
Performance
Read Tests MySQL Dolt Multiple covering_index_scan 1.86 0.65 0.35 groupby_scan 13.7 18.61 1.36 index_join 1.5 2.43 1.62 index_join_scan 1.5 1.39 0.93 index_scan 34.95 30.26 0.87 oltp_point_select 0.21 0.28 1.33 oltp_read_only 3.89 5.37 1.38 select_random_points 0.36 0.58 1.61 select_random_ranges 0.39 0.61 1.56 table_scan 34.95 32.53 0.93 types_table_scan 75.82 130.13 1.72 reads_mean_multiplier 1.24 Write Tests MySQL Dolt Multiple oltp_delete_insert 8.43 6.55 0.78 oltp_insert 4.18 3.25 0.78 oltp_read_write 9.39 11.87 1.26 oltp_update_index 4.25 3.3 0.78 oltp_update_non_index 4.25 3.25 0.76 oltp_write_only 5.28 6.43 1.22 types_delete_insert 8.58 6.91 0.81 writes_mean_multiplier 0.91 TPC-C TPS Tests MySQL Dolt Multiple tpcc-scale-factor-1 92.85 39.31 2.36 tpcc_tps_multiplier 2.36 Overall Mean Multiple 1.50 Downloads
- 9956: go.mod,.github: Build with go 1.25.1.
-
released this
2025-10-10 18:28:12 -05:00 | 641 commits to main since this releaseMerged PRs
dolt
- 9933: Fix performance issue when using large JSON documents in UPDATE statements.
UPDATE statements return the number of rows that changed as a result of the operation. This requires comparing the new and old values for the rows.
Because IndexedJsonDocument didn't properly implement the ComparableJSON interface, these values were being fully reconstructed in memory for the comparison, which was needlessly slow. Implementing the interface allows comparing two documents to be logarithmic on document size instead of linear. - 9928: go: doltcore/remotestorage: Clear our cached repo token when Commit or Rebase are called on the ChunkStore.
doltremoteapi returns RepoTokens on some RPC interactions. When Dolt mirrors the token back to doltremoteapi, doltremoteapi can check if the current repo state matches the token state and if it does, it can avoid doing some I/O work to refresh its current view of the repository.
After a Commit(), the client was not clearing its view of the repoToken, and the server was not returning the new RepoToken on a successful commit. This meant that the client was potentially seeing stale data for the repository if its RepoToken represented the previous committed state and if its requests landed on a doltremoteapi replica where that state was also the state of the repository in memory.
In multi-process concurrency against a ChunkStore, clients are expected to refresh their view of storage after a Commit and after a call to Rebaes. This corresponds to clearing our RepoToken, so that doltremoteapi will Rebase the store and return a new RepoToken which reflects the refreshed state.
go-mysql-server
- 3262: dolthub/dolt#9927: Fix SQL regression on UnaryMinus NULL CAST
Fixes dolthub/dolt#9927 - 3261: Do not convert keys if key type is incompatible with column type
fixes dolthub/dolt#9936
fixes dolthub/dolt#7372
makes progress on dolthub/dolt#9739 - 3260: dolthub/go-mysql-server#3259: Fix system variable lookup to only happen on no qualifier
Fixes dolthub/go-mysql-server#3259 - 3258: dolthub/dolt#9935: Add fix for boolean evaluation in analyzer for EXISTS
Fixes dolthub/dolt#9935 - 3256: dolthub/dolt#9927: Fix double negation overflow with Literals
Fixes dolthub/dolt#9927
Fixes dolthub/dolt#9053 - 3252: Add pure Go regex implementation for non-CGO builds
This PR provides an optional pure Go regex engine that allows building go-mysql-server without CGO.
The default build process (using ICU via CGO) remains unchanged.Implementation
- With CGO (default): Uses the existing
go-icu-regexlibrary. (internal/regex/regex_cgo.go) - Without CGO (
CGO_ENABLED=0or-tags=gms_pure_go): Uses a new implementation based on Go's standardregexppackage. (internal/regex/regex_pure.go)
Build selection is handled via Go build tags.
Compatibility Notes
The pure Go engine trades compatibility for portability, as it is based on standardregexppackage.
Notable limitations compared to ICU include:- Lack of back-references
- No before/after text matching
- Differences in handling CR ('\r')
- Other minor differences
This change allows running the server in pure Go for users who can accept the trade-offs, providing greater build flexibility.
- With CGO (default): Uses the existing
- 3251: Condense nested
select * fromSubqueryAliases into the innermost SubqueryAlias - 3223: README.md: Add notes to the readme indicating cgo dependency.
Closed Issues
- 9936: Use of invisible hash index under-fetches rows
- 7372: Unexpected results when comparing string with type conversion
- 9927: Incorrect double-negation of integer
- 9935: Incorrect use of negation in AntiJoinIncludingNulls
- 9053: Incorrect negation of minimum signed integer
- 9865: Stored procedure containing a transaction always return
EOFas a MySQL error - 3259: Panic when column is missing and that column is a system variable
Downloads
- 9933: Fix performance issue when using large JSON documents in UPDATE statements.
-
released this
2025-10-07 12:47:55 -05:00 | 670 commits to main since this releaseMerged PRs
dolt
- 9924: Implement dolt_global_tables system table
This adds support for a new system table,dolt_global_tables.
It has the following schema:It's purpose is to allow tables in one branch namespace to alias to tables in another ref, effectively simulating global tables if multiple "downstream" branches have dolt_global_tables point to the "upstream" table.CREATE TABLE `dolt_global_tables` ( `table_name` varchar(65535) NOT NULL, `target_ref` varchar(65535), `ref_table` varchar(65535), `options` varchar(65535), PRIMARY KEY (`table_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin
table_name can be a pattern just like the entries in theignore_tablessystem table.
target_ref and ref_table, if null, are treated as the current branch and the input table name.
Currently options must equal "immediate", which means that writes to a global table are seen immediately by other branches. The behavior is identical to writing to another branch via a fully qualified db name.
This only effects name resolution during queries, and not other ways to interact with branches. This means that these tables are invisible to system procedures such asDOLT_ADD, just like if you tried to add a system table.
I would love to have improved error messaging when using global tables with DOLT_ADD,show tables, etc, but if the rest of the design is ready I can do that in a follow-up.
go-mysql-server
- 3250: Replace SubqueryAlias that selects an entire table with TableAlias
Closed Issues
Performance
Read Tests MySQL Dolt Multiple covering_index_scan 1.82 0.65 0.36 groupby_scan 13.46 18.28 1.36 index_join 1.52 2.43 1.6 index_join_scan 1.5 1.42 0.95 index_scan 34.95 30.81 0.88 oltp_point_select 0.21 0.28 1.33 oltp_read_only 3.89 5.37 1.38 select_random_points 0.35 0.58 1.66 select_random_ranges 0.39 0.62 1.59 table_scan 34.95 32.53 0.93 types_table_scan 75.82 130.13 1.72 reads_mean_multiplier 1.25 Write Tests MySQL Dolt Multiple oltp_delete_insert 8.58 6.67 0.78 oltp_insert 4.18 3.25 0.78 oltp_read_write 9.39 11.87 1.26 oltp_update_index 4.25 3.36 0.79 oltp_update_non_index 4.25 3.25 0.76 oltp_write_only 5.37 6.55 1.22 types_delete_insert 8.58 7.04 0.82 writes_mean_multiplier 0.92 TPC-C TPS Tests MySQL Dolt Multiple tpcc-scale-factor-1 93.58 39.39 2.38 tpcc_tps_multiplier 2.38 Overall Mean Multiple 1.52 Downloads
- 9924: Implement dolt_global_tables system table
-
released this
2025-10-03 17:27:54 -05:00 | 685 commits to main since this releaseMerged PRs
dolt
- 9921: Bug fix: multi-line commit messages with dolt rebase
Handle multi-line commit messages indolt rebaseand withdolt_rebase().
Fixes: https://github.com/dolthub/dolt/issues/9910
go-mysql-server
- 3250: Replace SubqueryAlias that selects an entire table with TableAlias
- 3249: dolthub/dolt#9916: Add TRUNCATE(X,D) Support
Fixes dolthub/dolt#9916
Companion dolthub/docs#2688 - 3247: dolthub/dolt#9865: Fix EOF on procedure
Fixes dolthub/dolt#9865 - 3246: sql/rowexec: Add a SessionCommandSafepoint session callback for long-running write commands. Call it in some rowexec implementations.
This allows for integrators to see quiesced states on engine session utilization even on very long running write operations.
Closed Issues
Downloads
- 9921: Bug fix: multi-line commit messages with dolt rebase
-
released this
2025-10-02 21:30:59 -05:00 | 692 commits to main since this releaseMerged PRs
dolt
- 9891: Runtime update support for
dolt_replicate_to_remote
This change alters the commit hook code to be dynamic in regards to the primary configuration flagsdolt_replicate_to_remoteanddolt_async_replication. It does this by wrapping the two existing hooks we have in an interceptor hook which determines the configuration each time Execute is invoked, allowing for dynamic changes to the configuration in a running server.
go-mysql-server
- 3247: dolthub/dolt#9865: Fix EOF on procedure
Fixes dolthub/dolt#9865 - 3242: Added collation ignoring for information_schema
Provides a fix for:
Closed Issues
Downloads
- 9891: Runtime update support for
-
released this
2025-10-01 19:02:26 -05:00 | 709 commits to main since this releaseMerged PRs
dolt
- 9908: Add expect_single_value support for booleans
- 9900: Added collation ignoring for information_schema
Adds testing for:- https://github.com/dolthub/go-mysql-server/pull/3242
Would have preferred to add a test in GMS itself, however for some reason the query that JDBC sends (when ran on its own) does not result in an error.
- https://github.com/dolthub/go-mysql-server/pull/3242
go-mysql-server
- 3245: Allow triggers to fire with
INSERT...RETURNINGstatements
Fixes dolthub/dolt#9895 - 3244: /go.{mod,sum}: add patch version
- 3243: Added armscii charset and collations
Adds thearmsciicharset and both collations - 3242: Added collation ignoring for information_schema
Provides a fix for:
Closed Issues
- 9899: Predicate failure for IN subquery with BOOLEAN type
- 9895: INSERT … RETURNING fails if an AFTER INSERT trigger is present
Performance
Read Tests MySQL Dolt Multiple covering_index_scan 1.86 0.65 0.35 groupby_scan 13.95 18.28 1.31 index_join 1.52 2.43 1.6 index_join_scan 1.47 1.39 0.95 index_scan 36.24 30.26 0.83 oltp_point_select 0.2 0.28 1.4 oltp_read_only 3.82 5.28 1.38 select_random_points 0.35 0.58 1.66 select_random_ranges 0.39 0.61 1.56 table_scan 36.24 31.94 0.88 types_table_scan 80.03 130.13 1.63 reads_mean_multiplier 1.23 Write Tests MySQL Dolt Multiple oltp_delete_insert 8.43 6.55 0.78 oltp_insert 4.18 3.25 0.78 oltp_read_write 9.22 11.65 1.26 oltp_update_index 4.25 3.3 0.78 oltp_update_non_index 4.25 3.25 0.76 oltp_write_only 5.28 6.43 1.22 types_delete_insert 8.58 6.91 0.81 writes_mean_multiplier 0.91 TPC-C TPS Tests MySQL Dolt Multiple tpcc-scale-factor-1 93.14 39.35 2.37 tpcc_tps_multiplier 2.37 Overall Mean Multiple 1.50 Downloads
-
released this
2025-10-01 12:23:30 -05:00 | 721 commits to main since this releaseMerged PRs
dolt
- 9875: docker-entrypoint.sh: Add timeout queries to reliably configure users and database
Companion: dolthub/vitess#437
Fixes resource hang issues (i.e.,connect: connection refused) fordocker-entrypoint.shwhen configuring users and database in the script using queries with a newDOLT_SERVER_TIMEOUTvariable that will wait for successful execute (default: 5 minutes) for multiple iterations.
Fixes issue withdolt sql-serverwaiting on dolt process to free lock on database file.
Therootuser is now created through the environment variables support ondolt sql-serverinstead of queries. However, a query fallback is provided if your initialization scripts must use someUSERorGRANTrelated queries that conflict with the default behavior.Query errors now include the actual query error message as a postfix to the author's message. The error below was manually created, however, it also shows syntax errors are immediately reported instead of fully terminating on timeout.2025-09-26 17:43:56+00:00 [Warn] [Entrypoint]: Environment variables failed to initialize root@%; docker-entrypoint-initdb.d scripts queries may have conflicted. Overriding root user... 2025-09-26 17:43:57+00:00 [Note] [Entrypoint]: Configured root@% for Dolt +---------------------+-----------+ | User | Host | +---------------------+-----------+ | event_scheduler | localhost | | __dolt_local_user__ | localhost | | root | % | | versioning | % | +---------------------+-----------+Initialization scripts and launching2025-09-26 17:53:53+00:00 [Warn] [Entrypoint]: Environment variables failed to initialize root@%; docker-entrypoint-initdb.d scripts queries may have conflicted. Overriding root user... 2025-09-26 17:53:53+00:00 [ERROR] [Entrypoint]: Could not create root user: error on line 1 for query CREATE USER IF NOT EXITS 'root'@'%' IDENTIFIED BY 'rootpass' Error parsing SQL: syntax error at position 25 near 'EXITS' CREATE USER IF NOT EXITS 'root'@'%' IDENTIFIED BY 'rootpass' ^dolt sql-serverhas also been moved to this new timeout system to deal with desyncs due to system hangs and similar (e.g., file locks that don't release in time). To test this stability we also now launch multiple (40) docker instances at the same time.
go-mysql-server
- 3238: fix load data when escaped and enclosed are the same
We weren't actually escaping any characters and just deleting all the escaped characters.
fixes: https://github.com/dolthub/dolt/issues/9884 - 3237: fix string to boolean comparison for
HashInTupleexpressions
fixes: https://github.com/dolthub/dolt/issues/9883 - 3234: dolthub/dolt#9873: Add tests for
FOR UPDATE OF
Fixes dolthub/dolt#9873 - 3230: truncation refactoring and partial decimal truncation implementation
changes:- reorganize more tests
- fix partition test to truncate with warning
- fix JSON test to match MySQL's message
- partially fixes index comparison with type conversion
- refactor comparison logic for
INoperator - decimal truncation
- add warning for negative unsigned cast
fixes: - https://github.com/dolthub/dolt/issues/7128
- https://github.com/dolthub/dolt/issues/9735
- https://github.com/dolthub/dolt/issues/9840
partially addresses: https://github.com/dolthub/dolt/issues/9739
vitess
- 437: docker-entrypoint.sh: Add VERSIONING to non-reserved
- 436: dolthub/dolt#9873: Add support
FOR UPDATE OF
Fixes dolthub/dolt#9873
Companion dolthub/go-mysql-server#3234
Closed Issues
- 9883: Boolean literal in IN clause fails to match truthy VARCHAR values
- 9884: Escaped characters not handled correctly in
LOAD DATA LOCAL INFILE - 9873:
Airflow standalonesyntax errorfor update of
Performance
Read Tests MySQL Dolt Multiple covering_index_scan 1.82 0.65 0.36 groupby_scan 13.95 18.28 1.31 index_join 1.52 2.43 1.6 index_join_scan 1.5 1.39 0.93 index_scan 34.95 30.26 0.87 oltp_point_select 0.2 0.28 1.4 oltp_read_only 3.89 5.37 1.38 select_random_points 0.36 0.58 1.61 select_random_ranges 0.39 0.61 1.56 table_scan 34.95 32.53 0.93 types_table_scan 75.82 130.13 1.72 reads_mean_multiplier 1.24 Write Tests MySQL Dolt Multiple oltp_delete_insert 8.43 6.67 0.79 oltp_insert 4.18 3.25 0.78 oltp_read_write 9.39 11.87 1.26 oltp_update_index 4.25 3.3 0.78 oltp_update_non_index 4.25 3.25 0.76 oltp_write_only 5.28 6.55 1.24 types_delete_insert 8.58 6.91 0.81 writes_mean_multiplier 0.92 TPC-C TPS Tests MySQL Dolt Multiple tpcc-scale-factor-1 93.46 39.97 2.34 tpcc_tps_multiplier 2.34 Overall Mean Multiple 1.50 Downloads
- 9875: docker-entrypoint.sh: Add timeout queries to reliably configure users and database
-
released this
2025-09-26 09:00:38 -05:00 | 745 commits to main since this releaseMerged PRs
dolt
- 9879: Fix dolt conflicts resolve for resolving one table at a time
Fixes https://github.com/dolthub/dolt/issues/9878 - 9867: Bats test for branch create being replicated
- 9855: Preemptively store extended adaptive values out-of-band if they're too large to fit in a Tuple
Extended Adaptive values are values whose semantic meaning and serialization are defined by another module, and can be stored both inline in a tuple and out-of-band. It's currently used for text types in Doltgres.
Previously, when writing tuples, these values would get initially written inline, and then moved to out-of-band if the total tuple length exceeded some threshold. However, this caused issues if the value was longer than the max tuple length, resulting in truncation. These values must always be written out of band, so we now do it pre-emptively.
go-mysql-server
- 3235: Allow caching subqueries in a tree of joins.
This is a follow-up to https://github.com/dolthub/go-mysql-server/pull/3205, catching a previously missed case.
In a tree like so:We want to be able to cache the subquery result. But we weren't because we saw that the subquery was the leftmost child of a join (Join B) and it doesn't make sense to cache the leftmost child of a join.Join A ├─ Table └─ Join B ├─ SubQuery └─ Table
But really we should consider the subquery to be a child of Join A, where it isn't the leftmost child. That is to say, encountering a join node while we're already walking a join tree shouldn't cause thecacheSubqueryAliasesInJoinsto treat it as a new join.
This allows for more subquery caching in places that would benefit from it. - 3234: dolthub/dolt#9873: Add tests for
FOR UPDATE OF
Fixes dolthub/dolt#9873 - 3232: Add
TEXT(m)support
Fixes dolthub/dolt#9872
Companion dolthub/vitess#435 - 3231: Push filters down into join condition
fixes dolthub/dolt#9868
doltgres test updated in dolthub/doltgresql#1887 - 3227: dolthub/dolt#9857: Add UUID_SHORT() support
Fixes dolthub/dolt#9857
Companion dolthub/docs#2676 - 3226: fix Expressions() of TableFunctionWrapper to make the function expression visible
vitess
- 436: dolthub/dolt#9873: Add support
FOR UPDATE OF
Fixes dolthub/dolt#9873
Companion dolthub/go-mysql-server#3234 - 435: Add TEXT(m) support
Fixes dolthub/dolt#9872
Closed Issues
- 9873:
Airflow standalonesyntax errorfor update of - 9872: Support for mysql
Text(m) - 7302: Scientific notation in strings should not be honored when converting to an integer type
- 9868: Filter gets dropped after join optimization
- 7207: division operation should not truncate the result if it's in another function.
- 9878: Getting autocommit error using
dolt conflicts resolvefor one of many tables on the CLI - 9857: Missing function uuid_short()
Performance
Read Tests MySQL Dolt Multiple covering_index_scan 1.82 0.65 0.36 groupby_scan 14.21 18.95 1.33 index_join 1.52 2.43 1.6 index_join_scan 1.47 1.39 0.95 index_scan 34.33 30.26 0.88 oltp_point_select 0.21 0.28 1.33 oltp_read_only 3.82 5.28 1.38 select_random_points 0.36 0.58 1.61 select_random_ranges 0.39 0.61 1.56 table_scan 34.33 31.94 0.93 types_table_scan 75.82 130.13 1.72 reads_mean_multiplier 1.24 Write Tests MySQL Dolt Multiple oltp_delete_insert 8.43 6.55 0.78 oltp_insert 4.18 3.25 0.78 oltp_read_write 9.22 11.65 1.26 oltp_update_index 4.25 3.3 0.78 oltp_update_non_index 4.18 3.19 0.76 oltp_write_only 5.28 6.43 1.22 types_delete_insert 8.58 6.91 0.81 writes_mean_multiplier 0.91 TPC-C TPS Tests MySQL Dolt Multiple tpcc-scale-factor-1 93.38 39.38 2.37 tpcc_tps_multiplier 2.37 Overall Mean Multiple 1.51 Downloads
- 9879: Fix dolt conflicts resolve for resolving one table at a time
-
released this
2025-09-18 21:42:53 -05:00 | 769 commits to main since this releaseMerged PRs
dolt
- 9851: Bug fix:
dolt_statusworks with anas ofclause
Fixes: https://github.com/dolthub/dolt/issues/8283 - 9833: support dolt tests in dolt ci
This PR add support for running Dolt Tests in DoltHub CI. User's can now define the dolt tests they want to execute in DoltHub CI but specifying one or both of the Dolt Test Step Workflow fields,dolt_test_tests: []and/ordolt_test_groups: [], like so:Thename: wf_dt_example on: push: {} jobs: - name: job steps: - name: run group a tests dolt_test_groups: ["group_a"] - name: run tests 4 and 5 dolt_test_tests: ["test_4", "test_5"]dolt ci runcommand has also been updated to support executing Workflows with Dolt Test Steps locally.
go-mysql-server
- 3227: dolthub/dolt#9857: Add UUID_SHORT() support
Fixes dolthub/dolt#9857
Companion dolthub/docs#2676 - 3224: Validate expressions in
ORDER BYclause duringGROUP BYvalidation
fixes dolthub/dolt#9767
update dolt test in dolthub/dolt#9853 - 3217: Add
CREATE DATABASEfall back onCREATE SCHEMAto mirror MySQL
Fixes dolthub/dolt#9830
vitess
- 432: Implement
PIPES_AS_CONCATmode parsing
Part of dolthub/dolt#9791
Closed Issues
Downloads
- 9851: Bug fix:
mirror of
https://github.com/dolthub/dolt.git
synced 2025-12-16 20:25:20 -06:00