Merged PRs
dolt
- 8219: Bug fix: events should remain enabled after sql-server restarts
Fixing an event scheduler bug that caused events to be disabled and not run when the sql-server is restarted.
Fixes #8167 - 8209: add constraint violations to dolt status
fixes: #8114
go-mysql-server
- 2623: Fix anti-join correctess bug
We had some strange logic for accepting a join anti-match, ripped it out and everything seems to be working correctly now. - 2620: implement
name_const
function
MySQL docs: https://dev.mysql.com/doc/refman/8.4/en/miscellaneous-functions.html#function_name-const - 2618: More aggressively elide IN filters used for indexed lookups
re: #8215 - 2617: More QueryProps, missed max1rowiter usage
- 2613: Query properties rule filtering
Edit most of the analyzer interfaces to pass a new context object that accumulates query specific properties. Currently the object is calledQueryFlags
, and accumulates information about the query to inform better rule filtering and more efficient spooling strategies.
The change that has the biggest effect onoltp_point_select
perf is thesql.QFlagMax1Row
setting, which lets us skip the default results iter boilerplate when we're only returning one row. Added a couple other skips for rules that are easy to whitelist correctly and show prominently on CPU profiles, like aggregations and subqueries.
vitess
- 361: adding
instant
as non-reserved keyword
TheINSTANT
keyword isn't in the MySQL docs, but it is a non reserved keyword.
MySQL Docs: https://dev.mysql.com/doc/refman/8.4/en/keywords.html
fixes: #8220 - 360: Bug fix: Preserve sign for integers in prepared statements
Bound integer values for prepared statements are parsed from the wire and packaged intoint64
values that are then passed to the SQL engine to execute with the prepared statement. Forint8
,int16
,int24
, andint32
types those bytes from the wire weren't getting cast to the correct type first, before they were cast toint64
, which meant if the signed bit was set, the value was interpreted incorrectly.
Customer issue: #8085
Closed Issues
- 8220: Correctness Issue, queries run differently on MySQL and Dolt
- 8206: Unknown JSON struct tag in schema_marshaling.go
- 8167: Scheduled events fail to execute after a server restart
- 8114:
dolt_status
table unhelpful during merge when there are constraint violations.
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 3.02 | 1.5 |
groupby_scan | 13.7 | 17.63 | 1.3 |
index_join | 1.37 | 2.66 | 1.9 |
index_join_scan | 1.3 | 2.18 | 1.7 |
index_scan | 34.95 | 54.83 | 1.6 |
oltp_point_select | 0.18 | 0.3 | 1.7 |
oltp_read_only | 3.49 | 5.99 | 1.7 |
select_random_points | 0.34 | 0.65 | 1.9 |
select_random_ranges | 0.39 | 0.83 | 2.1 |
table_scan | 34.95 | 55.82 | 1.6 |
types_table_scan | 75.82 | 144.97 | 1.9 |
reads_mean_multiplier | 1.7 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 5.99 | 0.7 |
oltp_insert | 3.82 | 3.02 | 0.8 |
oltp_read_write | 8.58 | 12.08 | 1.4 |
oltp_update_index | 3.89 | 3.02 | 0.8 |
oltp_update_non_index | 3.89 | 2.97 | 0.8 |
oltp_write_only | 5.47 | 6.21 | 1.1 |
types_delete_insert | 7.7 | 6.55 | 0.9 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 98.12 | 38.64 | 2.5 |
tpcc_tps_multiplier | 2.5 |
Overall Mean Multiple | 1.70 |
---|