Merged PRs
dolt
- 7044: Track whether or not rows actually need to be remapped to the result schema.
This prevents a bunch of expensive computation in places where it isn't necessary.
Basically when computing the schema diff, we now compute:- Whether the left side needs to be remapped to the final schema
- Whether the right side needs to be remapped to the final schema
- Whether we should invalidate all secondary indexes because a column changed its type.
The last one's the odd one out, since it's less a fact about the merge and more this derived property that could change later if we figure out a good way to update secondary indexes in the presence of schema change. But we can bikeshed the specifics once users aren't blocked by this.
We store all this data in a newMergeInfo
struct, which gets passed around the merge logic.
Closed Issues
- 7026: Crashing by Division Operators
- 7033: MariaDB default values for LONGTEXT types don't work in Dolt
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.81 | 1.3 |
groupby_scan | 13.22 | 17.63 | 1.3 |
index_join | 1.34 | 5.09 | 3.8 |
index_join_scan | 1.25 | 2.18 | 1.7 |
index_scan | 34.33 | 55.82 | 1.6 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.36 | 7.7 | 2.3 |
select_random_points | 0.32 | 0.73 | 2.3 |
select_random_ranges | 0.39 | 0.87 | 2.2 |
table_scan | 34.33 | 55.82 | 1.6 |
types_table_scan | 75.82 | 158.63 | 2.1 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 6.79 | 0.9 |
oltp_insert | 3.75 | 3.36 | 0.9 |
oltp_read_write | 8.28 | 15.27 | 1.8 |
oltp_update_index | 3.82 | 3.43 | 0.9 |
oltp_update_non_index | 3.82 | 3.36 | 0.9 |
oltp_write_only | 5.37 | 7.7 | 1.4 |
types_delete_insert | 7.7 | 7.43 | 1.0 |
writes_mean_multiplier | 1.1 |
Overall Mean Multiple | 1.6 |
---|