Skip to content

1.40.3

Compare
Choose a tag to compare
@github-actions github-actions released this 21 Jun 23:09

Merged PRs

dolt

  • 8041: Truncate MCVs
    Sort and truncate MCVs. Only keep values whose frequency is > twice the uniform frequency. This prevents us from manually summing non-outliers (which is expensive).
  • 8025: [prolly] Float keyRange increment bug
    Incrementing the [n, n+1) key range is a lot faster than a binary search with a tuple comparison callback. But it is subject to at least two edge cases where (n+1) is not a valid stop range: (1) n+1 == n, because of precision loss, and (2) n+1 < n, because of overflow.
    I added a series of GMS tests here: dolthub/go-mysql-server#2554. I couldn't find a DECIMAL failure case, I think DECIMAL always encodes a valid 1's place, and is not subject to overflow AFAICT.

go-mysql-server

  • 2563: small changes to stats bucket counting
    Joins don't track output MCVs anymore, they aren't in a format where they'd be useful anyways. Also assume MCVs are sorted for faster matching.
  • 2562: throw error on invalid utf8 encoding for strings
    fixes #8040
  • 2561: Fixes unexpected timezone converting when passing TIMESTAMP to unix_timestamp()
    see #2111
  • 2560: fix GetField indexes for UpdateJoin with Update Trigger
    This PR addresses an issue where we were incorrectly assigning GetField indexes to an update join query.
    The fix involved:
    • adding a case for triggerIters to rowUpdateAccumulator
    • not picking ResolvedTable references under SubqueryAliases when there are multiple
    • correctly setting the scope node for update joins
      fixes #7943
  • 2559: Implement support for DECLARE CONTINUE HANDLER
    Fixes #7971
    Previously, we would always terminate a block when encountering an error, even if there's a matching handler. Additionally, there was no mechanism to resume an error that happened inside a LOOP construct.
    This correctly implements DECLARE CONTINUE HANDLER by making the following changes:
    • Checks for handlers while executing the Block node instead of the BeginEnd node.
    • For DECLARE EXIT HANDLER, the Block returns a special error value that propagates to the containing BeginEnd node in order to terminate just that node.
  • 2556: Compute GetField indexes in procedure if-conditions.
    Fixes #7994
    It seems like we aren't running the assignExecIndexes analysis pass on if-conditions when invoking stored procedures, which can cause execution failures if the condition has a sub-expression that has a GetField node.
    Fixing this revealed a related issue: when constructing the scope of the if-condition to determine the correct indexes, we were incorrectly including any columns from the condition's body in the scope. This was also causing incorrect index calculations for GetFields in the if-condition, and is also fixed here.
    (This only affected conditionals in stored procedures, not conditionals in triggers, because the analysis has a separate execution path for each; analyzeProcedureBodies is not called for triggers.)
  • 2555: [stats] simplify stats comparison and mcv logic
    Lazier comparison logic. Skip promoting/converting types when the index types match.
    Remove an expensive and seemingly unnecessary bucket compression step that was re-evaluating mcvs.
  • 2552: support VALUES statement
    fixes #8012
    syntax: dolthub/vitess#354

vitess

  • 355: New functions to create PreviousGtids events, and to update event checksum
  • 354: support VALUES statement
    This PR add syntax support for VALUES statment as an alias for SELECT * FROM ....
    We are still missing SELECT (VALUES ...) (support for values as a select_expression).
    syntax for #8012

Closed Issues

  • 8034: Users are able to create branches with a "-" at the start. If you try to delete the branch after that, it looks like dolt is understanding it as an option for dolt_branch
  • 8040: Inserting BINARY into VARCHAR(26) should result in error Incorrect string value
  • 7943: Update with subquery join clause causes field index error/panic for table with trigger
  • 8042: mysql:latest - missing error: [HY000][1524] Plugin 'mysql_native_password' is not loaded
  • 7971: NOT FOUND handlers in procedures cause ERROR 1105 (HY000): EOF
  • 7994: "Unable to find field with index" error on INSERT in procedure following IF (SELECT ...)

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 2.07 2.91 1.4
groupby_scan 13.22 17.32 1.3
index_join 1.34 5.37 4.0
index_join_scan 1.27 2.22 1.7
index_scan 34.33 53.85 1.6
oltp_point_select 0.18 0.52 2.9
oltp_read_only 3.49 8.28 2.4
select_random_points 0.33 0.81 2.5
select_random_ranges 0.39 0.97 2.5
table_scan 34.95 54.83 1.6
types_table_scan 75.82 142.39 1.9
reads_mean_multiplier 2.2
Write Tests MySQL Dolt Multiple
oltp_delete_insert 8.13 6.09 0.7
oltp_insert 3.82 3.02 0.8
oltp_read_write 8.58 15.0 1.7
oltp_update_index 3.89 3.13 0.8
oltp_update_non_index 3.89 3.07 0.8
oltp_write_only 5.37 6.55 1.2
types_delete_insert 7.7 6.79 0.9
writes_mean_multiplier 1.0
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 98.85 32.66 3.0
tpcc_tps_multiplier 3.0
Overall Mean Multiple 2.07