This release contains a backwards incompatible change to the Dolt command line interface. Dolt is now far more strict about which CLI subcommands require the presence of a Dolt repository. Many CLI commands that would work when being run outside of a Dolt repository directory, especially when a Dolt SQL server was running, will now error.
Merged PRs
dolt
- 10289: Consistently implement which commands require a repo
Add a test file to ensure behavior - 10281: drop schema support
- 10262: fsck to walk references and report missing/corrupted objects
Currentlydolt fsckjust validates all chunks have a valid address. This change extends the validation to three phases.- Validate chunks have valid addresses
- Collect the commits we can reach from branches/tags
- Walk the content trees of reachable commits. Walking is performed with the serialmsg.WalkAddrs() itereator.
go-mysql-server
- 3371: Error out for
NATURAL FULL JOIN
Fixes #10268
Part of #10295
Relies on dolthub/vitess#447 and adds test - 3368: Do not parse trigger bodies in
LoadOnlycontext
fixes #10287
fixes #10288
This PR adds aLoadOnlyflag to a trigger context so that the body of a CreateTrigger statement is not unnecessarily parsed. This avoids parsing the trigger body every time aninsert,update, ordeleteis called and only parses it when the trigger is actually relevant to the event. This also avoids parsing the trigger body whenshow triggeris called.
This PR also rearranges some things inbuildCreateTriggerto be more performant. - 3367: drop schema support
- 3366: Fix query ok for
drop view
fixes #10201 - 3365: Handle more types in
abs
fixes #10171
fixes #10270
Add case for bool types and add default case that tries to convert value to Float64.
vitess
- 447: Parse
NATURAL FULL JOIN
Part of #10268
Part of #10295
Any join with theNATURALprefix that was not aLEFTor LEFT OUTER JOINwas getting parsed as aNATURAL RIGHT JOIN. This PR allows forNATURAL FULL JOINto be parsed correctly and also prevents invalid joins using theNATURAL` prefix from getting parsed. - 445: /go/vt/sqlparser: support float8
Closed Issues
- 10268:
NATURAL FULL JOINincorrectly parsed asNATURAL RIGHT JOIN - 10230:
The current directory is not a valid dolt repository.inconsistently reported inside a dolt repository - 10288: Every single trigger definition is parsed for every single
insert,update, ordelete - 10287: When a trigger references a column that no longer exists, errors should only be thrown when the trigger is actually triggered
- 10283: Non-local tables appear twice in
show tables, dolt workbench.
Performance
| Read Tests | MySQL | Dolt | Multiple |
|---|---|---|---|
| covering_index_scan | 1.82 | 0.58 | 0.32 |
| groupby_scan | 13.7 | 9.91 | 0.72 |
| index_join | 1.5 | 1.89 | 1.26 |
| index_join_scan | 1.47 | 1.34 | 0.91 |
| index_scan | 34.33 | 22.28 | 0.65 |
| oltp_point_select | 0.2 | 0.27 | 1.35 |
| oltp_read_only | 3.82 | 5.18 | 1.36 |
| select_random_points | 0.35 | 0.54 | 1.54 |
| select_random_ranges | 0.39 | 0.55 | 1.41 |
| table_scan | 34.33 | 22.28 | 0.65 |
| types_table_scan | 74.46 | 66.84 | 0.9 |
| reads_mean_multiplier | 1.01 |
| Write Tests | MySQL | Dolt | Multiple |
|---|---|---|---|
| oltp_delete_insert | 8.43 | 6.43 | 0.76 |
| oltp_insert | 4.18 | 3.19 | 0.76 |
| oltp_read_write | 9.22 | 11.45 | 1.24 |
| oltp_update_index | 4.25 | 3.25 | 0.76 |
| oltp_update_non_index | 4.25 | 3.19 | 0.75 |
| oltp_write_only | 5.28 | 6.21 | 1.18 |
| types_delete_insert | 8.58 | 6.91 | 0.81 |
| writes_mean_multiplier | 0.89 |
| TPC-C TPS Tests | MySQL | Dolt | Multiple |
|---|---|---|---|
| tpcc-scale-factor-1 | 93.84 | 36.73 | 2.55 |
| tpcc_tps_multiplier | 2.55 |
| Overall Mean Multiple | 1.48 |
|---|