This release adds the commit_order
column to the dolt_log
system table and dolt_log() table function
. This is a backwards incompatible change because select *
-style queries against that table or table function will return rows of a different size and require the user to update their parsing code. Per Dolt's versioning policy, this requires a minor version bump.
Merged PRs
dolt
- 9262: Fix replace count test
Claude insists that this behavior matches MySQL. It consulted the docs and ran tests against MySQL.
I can confirm the tested behavior matches MariaDB which I have installed:MariaDB [(none)]> CREATE DATABASE test_replace; ERROR 1007 (HY000): Can't create database 'test_replace'; database exists MariaDB [(none)]> DROP DATABASE IF EXISTS -> test_replace; Query OK, 1 row affected (0.057 sec) MariaDB [(none)]> USE test_replace; ERROR 1049 (42000): Unknown database 'test_replace' MariaDB [(none)]> CREATE DATABASE test_replace; Query OK, 1 row affected (0.003 sec) MariaDB [(none)]> USE test_replace; Database changed MariaDB [test_replace]> CREATE TABLE test(pk BIGINT -> PRIMARY KEY, v BIGINT); Query OK, 0 rows affected (0.030 sec) MariaDB [test_replace]> REPLACE INTO test -> VALUES (1, 1); Query OK, 1 row affected (0.001 sec) MariaDB [test_replace]> REPLACE INTO test VALUES (1, -> 2); Query OK, 2 rows affected (0.001 sec)
- 9261: Unskip no test symbols in binary test
- 9260: Ignore CLAUDE.md for now
- 9254: Add support for MariaDB's GTID format
Fixes: #9241
Fixes: #8697
Testing for this is currently manual. To add automated tests for MariaDB integration, we'll need some larger changes to the binlog replication testing framework to support launching a MariaDB server. We should do that work eventually, especially if we hear more customer requests for MariaDB replication integration. - 9251: Allow dumping wrapper values to SQL
This prevents an issue where commands likedolt dump
would fail when trying to export a table as SQL statements if the table has aBLOB
column, since it would fail to unwrap the text wrapper value to access the underlying bytes. - 9250: Implement commit_order in dolt_log system table and table function
This PR implements: #9145. This is implemented using Claude Code.
A customer asked for the commit order in thedolt_log
system table. We have that information as we generate the commit log in the height variable. This exposes that variable as a column populated for each commit.$ dolt sql -q "select * from dolt_log limit 3" +----------------------------------+--------------------+-----------------------------------+---------------------+--------------------------------------+--------------+ | commit_hash | committer | email | date | message | commit_order | +----------------------------------+--------------------+-----------------------------------+---------------------+--------------------------------------+--------------+ | iifq0hvp5fis9ld2lnhorqr5l697ph38 | post-no-preference | post.no.preference@protonmail.com | 2025-05-23 06:34:26 | volatility_history 2025-05-22 update | 1427 | | 62n14k63lu5jcc3a3qr18q8ku19e8g8q | post-no-preference | post.no.preference@protonmail.com | 2025-05-23 06:34:15 | option_chain 2025-05-22 update | 1426 | | 2paehofana33lbbbjnqa18v3nlsvbgbk | post-no-preference | post.no.preference@protonmail.com | 2025-05-22 06:34:38 | volatility_history 2025-05-21 update | 1425 | +----------------------------------+--------------------+-----------------------------------+---------------------+--------------------------------------+--------------+
- 9247: Made dolt diff --stat -r sql an error
Fixes #7817
From Claude:⏺ Perfect! The changes are working correctly. Let me summarize what I've implemented: Summary I successfully implemented the fix for GitHub issue #7817. The issue was that dolt diff --stat -r sql was throwing a generic "unsupported" error, but it should return a more specific error message explaining that SQL format diffs are only for schema or data changes. Changes Made: 1. Updated the error message in /Users/timsehn/dolthub/git/dolt/go/cmd/dolt/commands/diff_output.go: - Changed from: "diff stats are not supported for sql output" - Changed to: "SQL format diffs only rendered for schema or data changes" 2. Updated the test in /Users/timsehn/dolthub/git/dolt/integration-tests/bats/sql-diff.bats: - Updated the expected error message in the test case to match the new error message Reasoning: The --stat flag shows statistics about diffs (like number of rows changed), which cannot be meaningfully represented as SQL statements. SQL format should only be used for actual schema or data changes that can be expressed as executable SQL commands. The new error message clearly communicates this limitation to users. The implementation correctly returns an error when someone tries to use dolt diff --stat -r sql, and the tests confirm that: 1. The specific error case now returns the improved error message 2. Normal SQL diff functionality continues to work as expected > /cost ⎿ Total cost: $3.08 Total duration (API): 11m 9.9s Total duration (wall): 25m 15.4s Total code changes: 2 lines added, 3 lines removed Token usage by model: claude-3-5-haiku: 79.9k input, 1.9k output, 0 cache read, 0 cache write claude-sonnet: 23.2k input, 15.3k output, 4.1m cache read, 396.2k cache write
- 9246: --all option for dolt log
Issue #8200
Adds a--all
option for dolt log. You can also specify tables after the all option, withdolt lot --all table1 table2
.
I still want to work on:- The code's a bit messy still, I think a helper function might be nice, especially to set the existingTables map.
- Maybe make it work with
--not
to exclude branches? - I'm sort of wondering if the code handling the generation of the "query" we make could be improved. It might not be worth it, but for example if you have a table and branch with the same name, we reinsert that value into the
params
slice. We also reuse a bunch of code for the code handling the first non-revision argument.
- 9244: update maven for ORM tests
- 9237: Sql shell warnings
Fix issue #8875
This pr adds support for warnings in the sql shell. There is now both a summary and detailed list of warnings.
Runningselect 1/0;
will produce, after the table:Warning (Code 1365): Division by 0``` You can disable/enable the ending list with \w and \W, respectively.
- 9235: Log errors on a binlog connection
When a SQL error is sent from the replication source to the replica, the connection is closed out, but the error wasn't getting logged. This made it difficult to debug why the replication connection was erroring out.
go-mysql-server
- 2993: Added undeclared variable error message
Fixes #8539 - 2992: Hacky extension point for aggregate function determination
Also refactors building aggregates - 2989: fix: Fix create new server in example.
I found that the parameters did not match when creating the server in the example, so I fixed it. - 2988: Implement
REVOKE ALL PRIVILEGES, GRANT OPTION ...
This PR adds tests forREVOKE [IF EXISTS] ALL [PRIVILEGES], GRANT OPTION ...
and implements theIGNORE UNKNOWN USER
option.
There are changes toREVOKE PROXY
, but it seems like that is unsupported so there are no tests.
Companion pr: dolthub/vitess#415 - 2986: add returning clause case for assign exec index rule
Test for it is added in doltgresql PR - 2985: fix default value for non null enum columns
In MySQL non null enum columns default to the very first enum instead of throwing a missing default error.
fixes: #8617 - 2984: Add lock_warnings system variable.
Adds a session variable for locking warnings, allowing you to run background queries without clearing the warnings from the last user-generated command.
vitess
- 415: Fix implementation for
REVOKE ALL...
This PR fixesREVOKE ALL [PRIVILEGES], GRANT OPTION ...
so that it parse to the same thing asREVOKE ALL PRIVILEGES
as they are equivalent in MySQL. TheGRANT
privilege is already part of all privileges, specifying it is just for clarity.
Additionally, this PR adds syntax support for theIF EXISTS
option andIGNORE UNKNOWN USER
option that is part ofREVOKE
statements.
MySQL Docs: https://dev.mysql.com/doc/refman/8.4/en/revoke.html
Syntax for: #9228 - 414: add support for
with <resource_option>
forALTER USER ...
statements
fixes: #7841
Closed Issues
- 9145: Add toposort integer column starting at 0 (latest) to
dolt_diff_<table>
anddolt_history_<table>
- 9241: Support MariaDB GTID format for replication with MariaDB
- 8697: Support MariaDB to Dolt replication
- 9055: Exception while Drop database
- 8200: Support more flags with
dolt log --graph
- 8539: Bad error for
SELECT ... INTO ...
- 7817:
dolt diff --stat -r sql
is unimplemented - 7758: Support
dolt schema update-tag
in SQL - 8267: Support Functional Key Parts (aka expressions in indexes)
- 2902:
branch -d
doesn't work without amain
branch - 9069: Removing remote breaks
dolt status
CLI command - 9228:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM ...
errors with "not yet implemented" - 8875: Show warnings by default in
dolt sql
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.86 | 0.67 | 0.36 |
groupby_scan | 13.46 | 17.95 | 1.33 |
index_join | 1.47 | 2.39 | 1.63 |
index_join_scan | 1.44 | 1.44 | 1.0 |
index_scan | 34.33 | 30.26 | 0.88 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.43 | 5.18 | 1.51 |
select_random_points | 0.33 | 0.6 | 1.82 |
select_random_ranges | 0.37 | 0.62 | 1.68 |
table_scan | 34.95 | 32.53 | 0.93 |
types_table_scan | 77.19 | 127.81 | 1.66 |
reads_mean_multiplier | 1.3 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.9 | 6.32 | 0.71 |
oltp_insert | 4.1 | 3.13 | 0.76 |
oltp_read_write | 8.9 | 11.65 | 1.31 |
oltp_update_index | 4.18 | 3.19 | 0.76 |
oltp_update_non_index | 4.18 | 3.07 | 0.73 |
oltp_write_only | 5.67 | 6.32 | 1.11 |
types_delete_insert | 8.28 | 6.67 | 0.81 |
writes_mean_multiplier | 0.88 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 97.33 | 40.46 | 2.41 |
tpcc_tps_multiplier | 2.41 |
Overall Mean Multiple | 1.53 |
---|