Merged PRs
dolt
go-mysql-server
- 1568: Merge join selects do not filter left join
A join filter that evaluates to false or nil can still return rows in certain cases. One of the cases we evaluated incorrectly were LEFT_MERGE_JOINs with multiple filters, which should always return the left row even if a filter returns false. MERGE_JOIN's first filter is specially selected because its Left/Right expressions reference attributes for two tables that will arrive sorted given the indexes we chose to read. We use that first filter for the merge comparison direction.
Closed Issues
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.71 | 1.4 |
groupby_scan | 12.3 | 16.71 | 1.4 |
index_join | 1.16 | 4.57 | 3.9 |
index_join_scan | 1.12 | 3.89 | 3.5 |
index_scan | 30.26 | 52.89 | 1.7 |
oltp_point_select | 0.15 | 0.48 | 3.2 |
oltp_read_only | 2.97 | 8.43 | 2.8 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 62.19 | 2.0 |
types_table_scan | 70.55 | 186.54 | 2.6 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.66 | 13.7 | 5.2 |
oltp_insert | 1.37 | 3.13 | 2.3 |
oltp_read_write | 5.09 | 18.61 | 3.7 |
oltp_update_index | 1.42 | 6.21 | 4.4 |
oltp_update_non_index | 1.34 | 6.55 | 4.9 |
oltp_write_only | 2.18 | 9.56 | 4.4 |
types_delete_insert | 2.76 | 14.21 | 5.1 |
writes_mean_multiplier | 3.9 |
Overall Mean Multiple | 3.1 |
---|