Merged PRs
dolt
- 5750: Higher Res image for video in README
- 5745: Add explainer video to README
- 5742: Update uses of go-mysql-server error objects to point to new package.
The dolt side of #5656.
This is needed for dolt to build against go-mysql-server at HEAD. - 5717: support
EVENT
storage handling
Depends on GMS PR: dolthub/go-mysql-server#1701
The description of the GMS PR applies here as well that this PR implements events storage only (non-versioned metadata such aslast_executed
is not implemented yet). The event execution is not implemented yet.
The events are versioned and are stored on all branches. This means that checking out a new branch will have the copy of existing events of the starting point branch. The events versioned metadata is stored indolt_events
system table.
go-mysql-server
- 1716: Revert "allow renaming views with
RENAME TABLE
statement (#1712)"
This reverts commit dac7262c9b7904b931f9792ac8ce3eb52f6f9ccf from PR dolthub/go-mysql-server#1712
The PR above added aViewDatabase
implementation forPrivilegedDatabase
, which is causing some Dolt cluster integration tests to fail. Temporarily pulling this commit out so we can get other GMS changes through and can debug the Dolt test failures separately. - 1713: Changing
MaxTextResponseByteLength()
to respectcharacter_set_results
TheType.MaxTextResponseByteLength()
function was not honoring thecharacter_set_results
system variable, which resulted in Dolt sending different response length metadata from MySQL when the value ofcharacter_set_results
is not the same as the type's charset.
This change adds a*sql.Context
parameter to theMaxTextResponseByteLength(ctx)
function, so that the correct value can be pulled out of the session when the response metadata is sent through the handler.
Fixes: #5735
Related Dolt change: #5752 - 1712: allow renaming views with
RENAME TABLE
statement- Added renaming of views with
RENAME TABLE ... TO ...
statement - Added
ViewDatabase
implementation forPrivilegedDatabase
TODO:ALTER TABLE ... RENAME ...
should fail for renaming of views. Currently,vitess
parses both the statements into the same node, which makesGMS
parser not be able to detect the difference.
Should return error:ERROR 1347 (HY000): 'mydb.myview' is not BASE TABLE
- Added renaming of views with
- 1711: update stored procedure timestamps to be accurate
Currently when we load non-built-in stored procedures, we re-analyze the sql string which also re-creates all the metadata. This means that theCreated At
andModified At
fields can re-set every time the procedure is loaded in, instead of showing the correct timestamp. This change updates the loaded in procedure with the correct timestamps.
fixes: #3081 - 1710: Detect invalid uses of * and window functions in queries.
This PR is the GMS side of the fix for #5656.
Preventing panics from invalid window functions is easy: replace the panic with returning a new kind of error.
The invalid *s were trickier. I added an additional analysis rule that runs immediately after resolving function names. It checks for any uses of "*" in a subexpression (so, not just "SELECT *") that aren't used inside a COUNT, COUNTDISTINCT, or JSONARRAY function.
It's possible that there's other places where *s are allowed that we need to account for. It's also possible that there may be some other disallowed uses of * that will pass this and still cause a panic. - 1708: Allow uppercase collations
Fixes #5699
We were comparing the raw strings, which failed when they were anything but lowercase. Now we just force all strings to lowercase. - 1701: support
EVENT
storage handling
This PR implements:CREATE EVENT
statementDROP EVENT
statementSHOW EVENTS
statementSHOW CREATE EVENT
statement.
This PR handles events storage only. The event execution logic is not implemented yet. No events will be run and/or dropped if the execution time is passed or dropped if 'ends' time is passed and 'not preserve' is defined. Created events will be only stored in the database and can be queried to see details usingSHOW
statements.
- 1663: Return column size in datetime type
During testinggo-mysql-server
with Trino and I have noticed that it does work when I have eithertimestamp
ordatetime
. I have asked them trinodb/trino#16575 whether it's ok for them to implement default column size like they did for Phoenix connector, but they did not want to add it. I still think it should be fine without column size, since most of the clients (except the ones which are written in java) accept date time without column size.
In order to be fully compatible about it for now I have added0
as column size fortimestamp
anddatetime
Closed Issues
- 5592: binlog replication doesn't use correct user
- 5711: dolt JSON has different ordering vs MySQL JSON
- 5656: Panics while executing queries
- 5510: dolt command --help should use a pager
- 5338: dolt status reports deleting and creating table when run against active server
- 5260: Lots of dangling connections can potentially hang
dolt sql-server
- 4978: Error starting sql-server:
invalid ref format: refs/heads/
when encountering a database with no main branch. - 4291:
dolt sql
interactive shell can't see changes created in another shell if it is running - 5743: Feature: auto-create branches on connect
- 5425: Add support for
dolt show
- 5719: dolt dolt_constraint_violations doesn't show all violations on merge for composite unique keys
- 5699: Collation description in CREATE TABLE context fails when uppercased
- 3834: Show Variables Where Is An Unsupported Feature
- 1657: panic if project imports vitess.io/vitess@v0.9.0
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.76 | 1.4 |
groupby_scan | 12.3 | 16.41 | 1.3 |
index_join | 1.16 | 4.1 | 3.5 |
index_join_scan | 1.12 | 2.07 | 1.8 |
index_scan | 31.37 | 54.83 | 1.7 |
oltp_point_select | 0.15 | 0.49 | 3.3 |
oltp_read_only | 2.86 | 8.58 | 3.0 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 31.37 | 56.84 | 1.8 |
types_table_scan | 75.82 | 176.73 | 2.3 |
reads_mean_multiplier | 2.3 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 6.09 | 6.43 | 1.1 |
oltp_insert | 3.07 | 3.19 | 1.0 |
oltp_read_write | 7.04 | 16.12 | 2.3 |
oltp_update_index | 3.02 | 3.3 | 1.1 |
oltp_update_non_index | 3.13 | 3.25 | 1.0 |
oltp_write_only | 4.49 | 7.7 | 1.7 |
types_delete_insert | 5.99 | 7.04 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.9 |
---|