Merged PRs
dolt
- 9730: Fix dolt_conflicts_resolve for doltgres
- 9728: #9725 - Fix AUTO_INCREMENT reuse after HA failover by refreshing trackers
Fixes #9725
Newly promoted primary could reuse AUTO_INCREMENT values due to a stale in-memory tracker. On promotion, we now synchronously refresh AUTO_INCREMENT trackers for databases already loaded in the session, aligning sequences with the current working sets so the first post-promotion inserts do not reuse existing IDs. - 9721: disable
only_full_group_by
in sysbench
Since our group validation much more closely aligns with MySQL, we discovered that sysbench scriptgroupby_scan.lua
is not valid in MySQL without disablingONLY_FULL_GROUP_BY
insql_mode
. This PR fixes the local test scripts and the benchmark runners to accept aconfig.yaml
with thesql_mode
set. - 9719: Drop old event messages
Changes the event collector/emitter to drop old events and not grow unbounded when events can't be delivered.
The event collector already batched 64 events per request whenLogEvent
messages were being sent successfully. However, when there are issues sendingLogEvent
messages, the events queue up, with no upper bound, and eachLogEvent
request gets larger and larger. This change limits the tracked "unsent" events to that existing 64 event batch size. - 9710: Fixes for Doltgres-related procedure calling
This contains some fixes related to calling Dolt functions in Doltgres.
Required by: - 9702: go: cmd/dolt: cli_context: Slightly rework CliContext and LateBinderyQueryist lifecycle.
Rework CliContext and LateBinderyQueryist lifecycle so that CliContext itself isClose
d when we are done with it. If it instantiated the LateBinderQueryist, it closes it at that time.
Previously LateBinderQueryist was responsible for returning acloser()
, which a caller ofCliContext.QueryEngine
could see as non-nil
and call at the end of its work. This works well when a QueryEngine is used exactly one time or when QueryEngine usage is completely nested, as is the case with the backslash command implementations called fromdolt sql
. But in tests, we sometimes use command instances back-to-back, on the same CliContext instance, where it results in using the Queryist after it has already been closed.
This PR also reworks result types so that callers of QueryEngine can know if they are connected locally or remotely and if the QueryEngine interaction they are making is the first one in the session. Some callers need to inspect that state to implement helpful error checks and guard rails, and they were previously using things like a non-nilcloser
and interface casts to concrete types to implement these checks. - 9678: dolt_tests system table
Addsdolt_tests
system table. The table currently has no functionality, but behaves similarly to the other writable system tables likedolt_ignore
anddolt_query_catalog
.
go-mysql-server
- 3175: Support filtering by comment in
show table status
fixes #6894- update "Comments" to "Comment" in show table status schema
- include table comment in table status row
- 3174: Make
SHOW VARIABLES
display boolean values as ON/OFF to match MySQL
Changes the output ofSHOW VARIABLES
to match MySQL's output, where boolean values are shown asON
orOFF
. Also adds definitions for two replication related system variables. - 3173: Mask column names from non-triggered tables in UpdateJoins
fixes #9403 - 3172: Add correlated columns from subqueries to GroupBy select dependencies
fixes #9699 - 3169: go.mod: Bump go-icu-regex. Picks up a wazero bump which improves amd64 behavior on builds with go 1.24.0+.
- 3166: Unskip GroupBy validation on Project, Having, and Sort nodes
Fixes #4998
Still need to allow group by unique non-nullable columns (#9700)
Query plans needed to be updated because Subquery.String and GroupBy.String changed. The latter was due to SelectedExprs being renamed to SelectDeps.
Dolt bump: #9704
Closed Issues
- 9725: AUTO_INCREMENT not synced after primary/standby failover, causing duplicate key errors
- 6894:
show table status
"Comments" column does not match MySQL "Comment" column - 9403: Triggers are unable to get the right column when joined tables share a column name
- 9699: GroupBy nodes for aggregate columns need to include select dependencies from subqueries
- 4736: migrate: column type cannot be auto-incremented
- 4998:
GroupBy
validation not running on nodes wrapped inHaving
,Project
, orSort
(validation is also way too strict when it does run)
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.86 | 0.68 | 0.37 |
groupby_scan | 13.22 | 21.11 | 1.6 |
index_join | 1.47 | 2.61 | 1.78 |
index_join_scan | 1.44 | 1.44 | 1.0 |
index_scan | 34.33 | 32.53 | 0.95 |
oltp_point_select | 0.2 | 0.29 | 1.45 |
oltp_read_only | 3.75 | 5.37 | 1.43 |
select_random_points | 0.35 | 0.61 | 1.74 |
select_random_ranges | 0.38 | 0.64 | 1.68 |
table_scan | 34.33 | 32.53 | 0.95 |
types_table_scan | 74.46 | 127.81 | 1.72 |
reads_mean_multiplier | 1.33 |
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.06 | 11.87 | 1.31 |
oltp_update_index | 4.18 | 3.3 | 0.79 |
oltp_update_non_index | 4.18 | 3.25 | 0.78 |
oltp_write_only | 5.28 | 6.55 | 1.24 |
types_delete_insert | 8.43 | 6.91 | 0.82 |
writes_mean_multiplier | 0.93 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 94.92 | 39.42 | 2.41 |
tpcc_tps_multiplier | 2.41 |
Overall Mean Multiple | 1.56 |
---|