Merged PRs
dolt
- 4413: turn off opt-in feature for unix socket
Initial implementation of unix socket has opt-in feature for unix socket support. The default of mysql unix socket when socket flag is not defined is when host is defined as 'localhost' or undefined. - 4395: improve error message when current branch on session is force deleted
An active branch in session can be force deleted. The session on deleted branch cannot run any queries that requires dolt transaction. It gives error message with possible actions that user can take, either to runUSE <database>/<branch>
query or reconnect to the server.
Depends on dolthub/go-mysql-server#1288
go-mysql-server
- 1291: allow adding column to table with autoincrement column
fix for: #2587 - 1288: add ValidateSession() to Session interface
#4395 depends on this PR - 1280: More join types
AddFullOuterJoin
,SemiJoin
, andAntiJoin
.
None of these new join nodes are safe for join ordering transformations yet. They are explicitly excluded from join planning.
The getField indexes for these three nodes' join conditions deserve more consideration. I excluded them from auto-fixup after manually correcting join condition get fields for the appropriate schemas.
FullOuterJoin
uses a union distinct execution operator, which is correct but a lot slower than a merge join-esque operator.
SemiJoin
andAntiJoin
rearrange subquery expression scopes. I separateresolve
andfinalizeSubqueryExpressions
to perform decorrelation before predicate pushdown (where we were panicking on FixUpExpressions) and join ordering (we want to decorrelate scopes before join planning).
Other:- query plan tests added for exist hoisting edge cases i did not catch on first pass
- fixed bug with CTE stars
vitess
- 195: Allow other options to precede COLLATE in column type defintions
Fixes #4403
Previously,COLLATE
had to immediately follow the column type in a column definition. As per the above issue, this is not a required rule in MySQL. The fix involved moving all collation-related options from thecolumn_type
rule to thecolumn_type_options
. This caused a conflict incolumn_type_options
, ascolumn_default
also has aCOLLATE
rule. The conflicting rule resolved to the following:
For reference, this is the newcolumn_type_options DEFAULT value_expression COLLATE ID
COLLATE
rule incolumn_type_options
:
Given the MySQL expressioncolumn_type_options COLLATE ID
DEFAULT "xyz" COLLATE utf8mb4_bin
, it could match either rule, which caused the conflict.value_expression
is too permissive in this context, and although we filter out invalid expressions in GMS, we need to be more restrictive here in the parser to prevent conflicts. In addition, the above example should put the collation on the column, as it is not possible to add a collation to a default string literal (must use the expression form:DEFAULT ("xyz" COLLATE utf8mb4_bin)
).
To fix this, thecolumn_default
rule was updated to be vastly more restrictive. This also highlighted some tests in GMS that enforce incorrect behavior, but those have been fixed ahead-of-time, and will be incorporated into the bump PR.
NOTE: For some reason, we had tests allowing the use ofutc_timestamp
,utc_date
, etc. as default values without the need for parentheses. This is not allowed in MySQL, so I am unsure as to why we allowed them in the first place. Perhaps because they're similar toCURRENT_TIMESTAMP
, so we just allowed all of them? Regardless, the tests have been removed as they no longer pass (as they should not pass). - 194: adding missing keywords to token.go
I forgot to add some keywords used inROW_FMT
table option, which caused a bats test to fail
Closed Issues
- 4403: Modifying a column is order-sensitive for NOT NULL and COLLATE
- 387: Pushing to DoltHub with incorrect credentials does not fast fail
- 629: Peer-to-peer dolt server?
- 4419: Unicode error running a utf8mb4 MySQL database export
- 4360: Deleting branch causes error in another session if that branch is active
- 4358: support PARTITION syntax in CREATE TABLE
- 4353: Incorrect result from aggregating on table joined in both subquery and CTE
- 4344: Subquery alias naming conflict