github dolthub/dolt v0.50.1
0.50.1

latest releases: v1.38.1, v1.38.0, v1.37.0...
19 months ago

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
    1. New integration test queries
    2. 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 for
    BEGIN [WORK]
    COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
    ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
    fix for: #4436
  • 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 the column_type rule to the column_type_options. This caused a conflict in column_type_options, as column_default also has a COLLATE rule. The conflicting rule resolved to the following:
    column_type_options DEFAULT value_expression COLLATE ID
    
    For reference, this is the new COLLATE rule in column_type_options:
    column_type_options COLLATE ID
    
    Given the MySQL expression 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, the column_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 of utc_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 to CURRENT_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

Don't miss a new dolt release

NewReleases is sending notifications on new releases.