This release contains a behavior change to use the SQL user name for the Dolt commit author, when Dolt is operating in a SQL mode (i.e. when calling dolt_commit()
through dolt sql
or through a SQL connection to a dolt sql-server
).
Per Dolt's versioning policy, this may require users to update code that accesses the committer field of the dolt_log
table. Thus, the minor (major.minor.patch) version bump.
Merged PRs
dolt
- 6026: Remove
__LD_1__
from CI
This is an initial pass at removing integration tests that test the old data format or the migration to the new format.
The most important thing is the changes to the GitHub action yaml files. We no longer create actions where the default format is LD_1.
This PR also removes some individual tests that test the old format, but not all of them, only the really low hanging fruit to start. Removing all of these tests will likely be a gradual approach as we edit bats tests. - 6025: Use the SQL user as the Dolt commit author when operating in a SQL context
When operating in SQL mode (e.g.dolt sql
or connected to adolt sql-server
), the Dolt commit author is now recorded as the SQL user who created the Dolt commit, instead of using the user info configured throughdolt config
. Committing from the CLI continues to use thedolt config
configured user info.
Fixes #5607 - 6014: Allow
@@dolt_transaction_commit
to be set through sql-server config
Dolt sql-server YAML configuration can now specifydolt_transaction_commit
in the behavior section to automatically set the global value of@@dolt_transaction_commit
for a sql-server.
Prereq for dolthub/hosted-issues#99
go-mysql-server
- 1795: qualify json_table columns
Likely due to improved aliasing code, it's simple to qualify columns forjson_table
.
This PR- adds skipped tests for currently unsupported functionality for json_tables
for ordinality
nested paths
default
error
- adds prepared tests for existing json table script and query tests
- reorganizes json tests
MySQL docs for missing functionality: https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html
Fix for: #6004
- 1789: foreign key index match should be on prefix not subset
Turns out the logic for using an existing secondary index for foreign keys was matching on a subset instead of a prefix.
For example:
This should produce a child table that creates a new secondary index over the columns (fk1, fk2).fks> create table parent (fk1 int, fk2 int, primary key (fk1, fk2)); fks> create table child (id int unique, fk1 int, fk2, primary key (fk2, fk1, id), foreign key (fk1, fk2) references parent (fk1, fk2));
But, we don't do that and instead reference some other index (not sure what), causing errors when callingdolt constraints verify --all
This PR ensures that we only pick an existing secondary index as the underlying index for a foreign key if that index is a prefix for the foreign key. - 1788: Divide pushdown
Pushdown currently performs two sets of transforms.- Push filters as low in the tree as possible:
Filter(x=1) -> Join(Tablescan(x), Tablescan(y), x=y) => Join(Filter(x=1)->Tablescan(x), Tablescan(y), x=y)
- Convert filters into static index scans:
There are now two rules,Filter(x=1)->Tablescan(x) => Indexscan(x, x in [1,1])
pushFilters
andgenerateIndexScans
. RunningpushFilters
before join planning lets join planning make better use of functional dependencies.
Also:- Small rule reorganizations
- Small correctness changes exposed by refactor
- Remove pushdown tests
- Filter pushdown appears to work in more cases, see plan changes
sql.FilteredTable
interface is now unused, marked as deprecated but did not delete related functions
Closed Issues
- 5607: SQL users act as committer, not user who started the server
- 6006:
JSON_EXTRACT()
has trouble parsing an expression with*
- 6004:
JSON_TABLE
can't find column when using aliases - 4330: Replication variables too sensitive to definition order
- 1749: [Feature Request] Support for JSON operator
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.3 | 16.41 | 1.3 |
index_join | 1.16 | 4.03 | 3.5 |
index_join_scan | 1.12 | 2.14 | 1.9 |
index_scan | 30.26 | 53.85 | 1.8 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.86 | 8.13 | 2.8 |
select_random_points | 0.29 | 0.77 | 2.7 |
select_random_ranges | 0.35 | 1.08 | 3.1 |
table_scan | 30.81 | 54.83 | 1.8 |
types_table_scan | 69.29 | 173.58 | 2.5 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 4.65 | 5.88 | 1.3 |
oltp_insert | 2.3 | 2.86 | 1.2 |
oltp_read_write | 6.21 | 15.27 | 2.5 |
oltp_update_index | 2.39 | 2.97 | 1.2 |
oltp_update_non_index | 2.43 | 2.91 | 1.2 |
oltp_write_only | 3.43 | 7.56 | 2.2 |
types_delete_insert | 4.65 | 6.67 | 1.4 |
writes_mean_multiplier | 1.5 |
Overall Mean Multiple | 2.0 |
---|