Skip to content

1.42.5

Compare
Choose a tag to compare
@github-actions github-actions released this 26 Jul 23:50

Merged PRs

dolt

  • 8162: Better error message when attempting to push from a shallow clone
    Push from a shallow clone is possible, but we should message better when it's not possible. In order to do this we need to error better from the Generational Chunk Store with a custom error.
    Fixes: #8156
  • 8158: fix no-op merge msg in cli
    Fixes: #8148
  • 8154: When removing from a secondary index during merging, use the pre-merge ordinal mapping, not the merged mapping, to identify the secondary key to be removed.
    Basically, we have a bug where dropping a column on the remote side of a merge can interfere with updating secondary indexes.
    Example:
    Base Schema: (pk INT PRIMARY KEY, a TINYINT, b INT, UNIQUE KEY b_idx (b))
    "theirs" drops column a
    Merged Schema: (pk INT PRIMARY KEY, b INT, UNIQUE KEY b_idx (b))
    In effect, the merger would see that in the final table, b is the second column. Then, when updating b_idx for each resolved row, it would use the second column of "ours" to find the index entry to remove. But this is incorrect, because the second column of "ours" is a.
    If the user is lucky, these two columns will be different sizes and the merger will panic. But if the two columns are the same size, merge proceeds with an incorrect value. This will cause it to either fail to remove the old row from the secondary index, or remove a different row. Either way, the secondary index is now incorrect.
  • 8150: fix warnings in dolt sql shell
    This PR fixes a bug where warnings were incorrectly being suppressed in the dolt sql shell.
    The bug is caused by the shell making queries to check if the working set is dirty, what database we're on, and what branch we're on. The fix is to set a special flag in the session to not clear the warnings for those specific queries.
    companion pr: dolthub/go-mysql-server#2605
    fixes: #8016
  • 8124: [stats] limit stats boostrap to server start
    fixes: #8123

go-mysql-server

  • 2606: [memo] assume self-join stats cardinality continuity
    Self-join stats estimation is particularly expensive because all of the buckets exactly overlap. If the index is unique, the cardinality distribution will not change. If the index is non-unique, the cardinality will expand proportional to rowCount/distinctCount.
    before
    BenchmarkOltpJoinScan-12    	    1766	    694524 ns/op	  462834 B/op	    8240 allocs/op
    after
    BenchmarkOltpJoinScan-12    	    2460	    481166 ns/op	  193569 B/op	    7129 allocs/op
    
    sysbench perf here: #8159
  • 2605: add lock to prevent warnings from being cleared
    This PR adds two functions to BaseSession that toggle a boolean, so integrators can prevent warnings from being cleared.
    This is mostly useful for dolt sql shell.
    addresses #8016

Closed Issues

  • 8123: stats refresh warning a little too zealous
  • 8156: Unknown push Error When Pushing Large DB to Remote
  • 8016: dolt sql suppresses warnings.
  • 8148: Ghost Commit Error On Empty Merge
  • 7638: Syntax Error Occurs When Using AS Clause with ON DUPLICATE KEY UPDATE

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 2.11 2.97 1.4
groupby_scan 13.46 17.32 1.3
index_join 1.37 2.81 2.1
index_join_scan 1.3 2.22 1.7
index_scan 34.33 53.85 1.6
oltp_point_select 0.18 0.46 2.6
oltp_read_only 3.49 7.7 2.2
select_random_points 0.34 0.77 2.3
select_random_ranges 0.39 0.89 2.3
table_scan 34.33 54.83 1.6
types_table_scan 74.46 142.39 1.9
reads_mean_multiplier 1.9
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 13.95 1.6
oltp_update_index 3.82 3.07 0.8
oltp_update_non_index 3.89 3.02 0.8
oltp_write_only 5.37 6.43 1.2
types_delete_insert 7.7 6.67 0.9
writes_mean_multiplier 1.0
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 99.43 34.46 2.9
tpcc_tps_multiplier 2.9
Overall Mean Multiple 1.93