Merged PRs
dolt
- 5634: Added support for ALTER TABLE ... COLLATE
Fixes #5623
Builds upon dolthub/vitess#229 and dolthub/go-mysql-server#1676
go-mysql-server
- 1679: Small fix for a join-related regression in Dolt
- 1677: fix for duplicate hash tuple in
This is the old explain:We just had duplicate Ranges inside the filters, which cause multiple lookups for the same value.tmp> explain select * from t where i in (1, 1); +---------------------------------------+ | plan | +---------------------------------------+ | Filter | | ├─ (t.i HASH IN (1, 1)) | | └─ IndexedTableAccess(t) | | ├─ index: [t.i] | | ├─ filters: [{[1, 1]}, {[1, 1]}] | | └─ columns: [i] | +---------------------------------------+ 6 rows in set (0.00 sec)
A side-effect of this change is that the filters are now sorted in the explain query, so that's nice.
Example: https://github.com/dolthub/go-mysql-server/pull/1677/files#diff-eae6109880e132a9197c2b536f62e9572fc34d8e7c65e957dd37f48657790a94L2392-R2392 - 1676: Added support for ALTER TABLE ... COLLATE
Fixes #5623
Builds upon dolthub/vitess#229 - 1675: SET multiple system variables including 'NAMES' and 'CHARSET'
- 1669: clean up hoisting
Variety of refactors related to hoisting subqueries and unnesting scopes.- remove
SingleSelectRel
- empty join expansion
- limits + filters should be tested in memo now
- fix to anti join correctness for empty right-hand rel
- remove
- 1660: Added a permissive collation coercibility model
This PR adds support for collation coercion by granting every expression, node, and type the ability to report their own coercibility. In addition, we're extremely permissible now, and do not report any coercibility errors, which deviates from MySQL. This still attempts to adhere to MySQL's coercibility rules as much as possible though.
vitess
- 229: Added support for ALTER TABLE ... COLLATE
Fixes #5623 - 226: supporting syntax for user variables in PREPARE statements
fix for: #5530
Closed Issues
- 4428: Collation Coercibility
- 5623: Missing support for ALTER TABLE table_name COLLATE utf8mb4_bin;
- 5630: "Out of range for int" error
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.52 | 16.41 | 1.3 |
index_join | 1.18 | 4.18 | 3.5 |
index_join_scan | 1.14 | 2.07 | 1.8 |
index_scan | 30.81 | 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.74 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 31.37 | 53.85 | 1.7 |
types_table_scan | 70.55 | 161.51 | 2.3 |
reads_mean_multiplier | 2.3 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.37 | 5.88 | 1.1 |
oltp_insert | 2.61 | 2.97 | 1.1 |
oltp_read_write | 6.67 | 15.83 | 2.4 |
oltp_update_index | 2.76 | 3.07 | 1.1 |
oltp_update_non_index | 2.86 | 2.97 | 1.0 |
oltp_write_only | 3.82 | 7.56 | 2.0 |
types_delete_insert | 5.28 | 6.79 | 1.3 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 1.9 |
---|