This release contains backwards incompatible changes:
- Primary key change to the
dolt_status
system table. Previously the primary key of this table only included thetable_name
column. The primary key now also contains thestaged
andstatus
columns to account for the same table name appearing multiple times indolt_status
(i.e. a table that was staged and then additional unstaged changes being made).
Per Dolt’s versioning policy, this is a minor version bump because of the schema change for the dolt_status
system table.
Merged PRs
dolt
- 6550: Silence branch create
Previouslydolt branch foobar HEAD
would print a statement that HEAD is an invalid branch name. It would succeed though, and return an exit status of 0. So tests passed.
This is no longer the case. - 6542: Clean up sql command's help message
- 6474:
dolt_status
system table shows if merge is active when there are no conflicts
Breaking change: Updates primary keys ofdolt_status
system table. We originally just hadtable_name
in the primary key, but a table can already show up more than once indolt_status
.status
andstaged
should also be part of the primary key.
This PR also adds a "merged" status row to thedolt_status
system table when a schema conflict has been resolved but that table has not yet been committed, which fixes #6473
go-mysql-server
- 1959: Bug fix: Prevent panic when reading non-existent user and system vars
Fixes #6546
We have enginetests that cover both of these queries, but because we don't run them with the full wire request/response processing code, we didn't catch these bugs during testing. Happy to add more tests here if there are suggestions, but I think the right way to test both of these is to get our existing test suite running over a SQL server connection, instead of just using the internal interfaces to the engine (i.e. #3646), which Zach started on last week. - 1958: Don't parse queries twice
Local profile foroltp_point_select
(query with smallest time spent in execution) is 5-15% speedup. Impact on queries with longer-runtime will be smaller, proportional to the fraction of time spent in analysis vs execution.
results here: #6547 (comment) - 1957: Fixed relevancy ordering for Full-Text
Fixes #6530 - 1956: Removed unused AutoIncrementGetter interface
Related to #6543.
TheAutoIncrementGetter
was moved from the editor to the table years ago, however the interface remained. I debated deleting this during my Full-Text implementation, however decided to leave it. Now, we've encountered an error with an integrator making use of the interface, so it has been removed here and the interface was moved into the integrator since it's an internal detail now. - 1954: Lateral join uses prepend row on RHS
- 1951: Fixed collation display in SHOW CREATE TABLE
Originally, we didn't display the collation inSHOW CREATE TABLE
when the collation was the default collation. Now, it doesn't display it if it's the same as the table collation, which mimics MySQL's behavior. - 1938: Create interface for indexible tables in
IndexedTableAccess
Currently, only ResolvedTables are allowed to have indexes. There exists an interface,sql.IndexAddressable
, which any node or table can implement in order to be a candidate for index-based optimization. But in practice, implementing that interface won't actually do anything because theIndexedTableAccess
struct explicitly requires a ResolvedTable.
This PR replaces theResolvedTable
field inIndexedTableAccess
with a new interface tentatively calledTableNode
, although a more specific name would probably be better.
In order for a node to be used for index-based optimization, it must implement this interface, and the table returned by theUnderlyingTable
method must implementsql.IndexAddressable
Closed Issues
- 6473:
dolt_status
system table should show if merge is active - 6540: Can't add a fulltext index to an existing TEXT type column.
- 6530: order by a fulltext match column does not work
- 6546: Dolt sql-server panics on unknown variable
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.97 | 1.4 |
groupby_scan | 13.22 | 18.28 | 1.4 |
index_join | 1.25 | 4.74 | 3.8 |
index_join_scan | 1.21 | 2.22 | 1.8 |
index_scan | 32.53 | 57.87 | 1.8 |
oltp_point_select | 0.14 | 0.42 | 3.0 |
oltp_read_only | 2.71 | 7.43 | 2.7 |
select_random_points | 0.31 | 0.74 | 2.4 |
select_random_ranges | 0.37 | 1.06 | 2.9 |
table_scan | 33.12 | 57.87 | 1.7 |
types_table_scan | 74.46 | 170.48 | 2.3 |
reads_mean_multiplier | 2.3 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 4.74 | 5.67 | 1.2 |
oltp_insert | 2.26 | 2.86 | 1.3 |
oltp_read_write | 5.99 | 14.46 | 2.4 |
oltp_update_index | 2.35 | 2.86 | 1.2 |
oltp_update_non_index | 2.3 | 2.76 | 1.2 |
oltp_write_only | 3.3 | 7.17 | 2.2 |
types_delete_insert | 4.74 | 5.99 | 1.3 |
writes_mean_multiplier | 1.5 |
Overall Mean Multiple | 1.9 |
---|