github dolthub/dolt v1.54.0
1.54.0

latest releases: v1.59.3, v1.59.2, v1.59.1...
3 months ago

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 like dolt dump would fail when trying to export a table as SQL statements if the table has a BLOB 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 the dolt_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, with dolt 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.
    Running select 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 for REVOKE [IF EXISTS] ALL [PRIVILEGES], GRANT OPTION ... and implements the IGNORE UNKNOWN USER option.
    There are changes to REVOKE 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 fixes REVOKE ALL [PRIVILEGES], GRANT OPTION ... so that it parse to the same thing as REVOKE ALL PRIVILEGES as they are equivalent in MySQL. The GRANT privilege is already part of all privileges, specifying it is just for clarity.
    Additionally, this PR adds syntax support for the IF EXISTS option and IGNORE UNKNOWN USER option that is part of REVOKE statements.
    MySQL Docs: https://dev.mysql.com/doc/refman/8.4/en/revoke.html
    Syntax for: #9228
  • 414: add support for with <resource_option> for ALTER USER ... statements
    fixes: #7841

Closed Issues

  • 9145: Add toposort integer column starting at 0 (latest) to dolt_diff_<table> and dolt_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 a main 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

Don't miss a new dolt release

NewReleases is sending notifications on new releases.