Merged PRs
dolt
- 5131: Add merge.GetForeignKeyViolatedTables
Refactorsmerge.AddForeignKeyViolations
by creatingmerge.GetForeignKeyViolations
and theFKViolationReceiver
interface.
Previously, our mechanic to check if edits to a root value created constraint violations was to write the constraint violations to the artifacts table and check if it was empty for all tables.
Instead, we can now do a read-only operation to get constraint violations created by edits to a root value. - 5130: go/store/{blobstore, nbs}: Fix blobstore conjoin
go-mysql-server
- 1530: mysql_db: binlog replication configuration table
binlog replication requires a persistent store for replication configuration so that a server can be restarted and still retain the replication configuration settings a user provided. MySQL uses a table in themysql
database for this, so I've added that table to our implementation ofmysql_db
.
I added a test for the new table's schema, but skipped the JSON loading test that other entities implemented, since I think the JSON serialization support is deprecated and everything is serializing through flatbuffers now. Happy to implement that test if it's still need though. - 1529: Fix resolve subq issue with empty parent scope
- 1528: Decorrelate filtered subqueries with single rel
This decorrelates simple single relation scopes with filter expressions. Unnesting scopes can have dramatic effects on join planning. For the query that motivated this work (a changed integration query plan), latency went from 90 seconds -> 2 seconds.
This PR uses aSelectSingleRel
node to represent the folded scope, which passes through join planning before being converted back intoFilter(Table)
bynormalizeSelectSingleRel
after all rules.
Closed Issues
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.03 | 2.97 | 1.5 |
groupby_scan | 12.98 | 17.63 | 1.4 |
index_join | 1.27 | 5.0 | 3.9 |
index_join_scan | 1.21 | 4.41 | 3.6 |
index_scan | 32.53 | 58.92 | 1.8 |
oltp_point_select | 0.16 | 0.53 | 3.3 |
oltp_read_only | 3.13 | 9.39 | 3.0 |
select_random_points | 0.31 | 0.84 | 2.7 |
select_random_ranges | 0.37 | 1.23 | 3.3 |
table_scan | 32.53 | 65.65 | 2.0 |
types_table_scan | 73.13 | 200.47 | 2.7 |
reads_mean_multiplier | 2.7 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.86 | 12.08 | 4.2 |
oltp_insert | 1.39 | 3.07 | 2.2 |
oltp_read_write | 5.37 | 18.28 | 3.4 |
oltp_update_index | 1.5 | 5.67 | 3.8 |
oltp_update_non_index | 1.5 | 6.21 | 4.1 |
oltp_write_only | 2.3 | 8.74 | 3.8 |
types_delete_insert | 3.02 | 13.7 | 4.5 |
writes_mean_multiplier | 3.4 |
Overall Mean Multiple | 3.0 |
---|