Merged PRs
dolt
- 4448: go/doltcore/sqle: Update system tables tests in pkg
sqle
- 4447: bats: cluster: Add a test for a couple failovers and the new primary having all writes.
- 4446: go: sqle: cluster: commithook: Log warnings when the commithook sees commits when we are not primary.
- 4445: go: sqle: cluster: Have call dolt_assume_cluster_role() transition gracefully when going primary -> standby. Fail if it cannot true-up the peer.
- 4444: go: sqle: cluster: Have remotesapi client and server interceptors transition server cluster role if they notice a new primary or broken cluster configuration.
- 4443: go: sqle: cluster: When the server has role "standby", make all dolt databases read-only.
- 4441: go: sqle: cluster: Add a mechanism to kill inflight queries and connections when transition server role.
- 4440: Fix broken schema table test
- 4439: .github/workflows: Run full CI against both
__DOLT__
and__LD_1__
The default NomsBinFormat is now__DOLT__
. This change updates CI to continue running golang tests and BATS against the old NBF__LD_1__
- 4438: Walk artifacts ref
- Reordered table serial message address walk to match the definitions in table.fbs
- Now walks artifact ref hash. Previously we were not walking it :(
- 4437: Add integration tests
- 4433: go: sqle: cluster: Add a ChunkStore wrapper for use in our remotesrvServer to record successful commits on the standby.
go-mysql-server
- 1301: Ensuring read-only check is executed for prepared and non-prepared statements
Quick fix for: #4434
Tested locally with a python script to verify that prepared statements to read-only dbs are now correctly blocked. After getting this fix out, we will follow up with more formal, automated test to cover this. - 1297: Add query plan integration tests
- New integration test queries
- Fix some join planning bugs related to i) column casing and ii) TableWrappers
- 1296: server: context.go: Expose *SessionManager.KillConnection.
vitess
- 197: adding better support for transaction statements
MySQL reference: https://dev.mysql.com/doc/refman/8.0/en/commit.html
adds support forfix for: #4436BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
- 195: Allow other options to precede COLLATE in column type defintions
Fixes #4403
Previously,COLLATE
had to immediately follow the column type in a column definition. As per the above issue, this is not a required rule in MySQL. The fix involved moving all collation-related options from thecolumn_type
rule to thecolumn_type_options
. This caused a conflict incolumn_type_options
, ascolumn_default
also has aCOLLATE
rule. The conflicting rule resolved to the following:
For reference, this is the newcolumn_type_options DEFAULT value_expression COLLATE ID
COLLATE
rule incolumn_type_options
:
Given the MySQL expressioncolumn_type_options COLLATE ID
DEFAULT "xyz" COLLATE utf8mb4_bin
, it could match either rule, which caused the conflict.value_expression
is too permissive in this context, and although we filter out invalid expressions in GMS, we need to be more restrictive here in the parser to prevent conflicts. In addition, the above example should put the collation on the column, as it is not possible to add a collation to a default string literal (must use the expression form:DEFAULT ("xyz" COLLATE utf8mb4_bin)
).
To fix this, thecolumn_default
rule was updated to be vastly more restrictive. This also highlighted some tests in GMS that enforce incorrect behavior, but those have been fixed ahead-of-time, and will be incorporated into the bump PR.
NOTE: For some reason, we had tests allowing the use ofutc_timestamp
,utc_date
, etc. as default values without the need for parentheses. This is not allowed in MySQL, so I am unsure as to why we allowed them in the first place. Perhaps because they're similar toCURRENT_TIMESTAMP
, so we just allowed all of them? Regardless, the tests have been removed as they no longer pass (as they should not pass).
Closed Issues
- 4436: Support BEGIN WORK
- 1300: Inserts for some values get dropped when accessed via a trigger for inserts.
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.3 | 17.32 | 1.4 |
index_join | 1.18 | 4.49 | 3.8 |
index_join_scan | 1.12 | 3.82 | 3.4 |
index_scan | 30.26 | 52.89 | 1.7 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.91 | 8.43 | 2.9 |
select_random_points | 0.3 | 0.73 | 2.4 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 62.19 | 2.0 |
types_table_scan | 70.55 | 186.54 | 2.6 |
reads_mean_multiplier | 2.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.71 | 9.22 | 3.4 |
oltp_insert | 1.37 | 2.81 | 2.1 |
oltp_read_write | 5.09 | 16.41 | 3.2 |
oltp_update_index | 1.39 | 4.18 | 3.0 |
oltp_update_non_index | 1.39 | 4.41 | 3.2 |
oltp_write_only | 2.14 | 7.98 | 3.7 |
types_delete_insert | 2.91 | 10.65 | 3.7 |
writes_mean_multiplier | 2.9 |
Overall Mean Multiple | 2.7 |
---|