Merged PRs
dolt
- 3818: disable aws params for dolt_sync command run via sql and minor credentialing change
- 3808: dolt_checkout and read replication working set fixes
Sql pathdolt_checkout
used to create a new branch from HEAD
if the checkout name did not have a remote tracking ref. The CLI,
on the other hand, will initialize a local branch if a remote tracking
ref with the same name in the default remote exists. The SQl path
now mirrors the CLI checkout: if we checkout a new branch, like
'new_feature', and we have previously fetched that branch from our
default remote,dolt_checkout('new_feature')
will initialize a branch
using the head commit from the remotenew_feature
.
Second, read replication was creating a local tracking branch for
remote branches (sourced from the master remote), but not creating
corresponding working sets. This let users attach to new branches with
use db/new_feature
syntax, but prevented users from
dolt_checkout('new_feature')
both for the bug in dolt checkout, but also
because we created an intermediary state with a local branch, but
without a corresponding working set. SQL replication will now fetch,
create the new branch, and create the appropriate working set. - 3798: Support per user session variables in the server config
- 3793: doltcore/sqle/dsess: Return "serialization failure"
ER_LOCK_DEADLOCK (1213)
on transaction merge conflict, removeDOLT_TRANSACTION_MERGE_STOMP
flag and session var
This change removes the ability to stomp merge conflicts stemming from transaction commit. Instead, transaction merge conflicts returnER_LOCK_DEADLOCK (1213)
which signals to the client that the transaction has been rolled back due to failures in locking and/or transaction isolation guarantees. Part of this signal is the ANSI SQLSTATE code of40001
that is associated withER_LOCK_DEADLOCK
. This code means "serialization failure", which is a more accurate description of the error being thrown by transaction merge conflicts.
In this contextER_LOCK_DEADLOCK (1213)
is a misnomer, and is somewhat misleading to the user. However, this is the only MySQL error code associated with transaction rollback due to serialization failures, and in particular it is recognized by the TPC-C benchmarking utility that we use. This change is partially motivated by Postgres's implementation ofREPEATABLE READ
which is similar to snapshot isolation.
companion GMS PR: dolthub/go-mysql-server#1112 - 3792: Backup success=1, error=0
- 3786: Add --track flag to dolt branch
- 3777: Drop support for deleting conflicts through cli and add cardinality column for keyless table conflicts
Support for deleting conflicts "manually" through the cli has been dropped in favor of the equivalent SQL commands.
Previously you could delete a conflict by specifying the primary key of the conflict:
dolt conflicts resolve some_table pk_col 1
Now, you can only delete a conflict through the SQL path:
dolt sql -q "DELETE from dolt_conflicts_some_table where pk_col = 1"
In addition, this PR also adds acardinality
column todolt_conflicts_$tableName
for keyless source tables.cardinality
is the number of rows with the specified column values.
For example:This PR also contains changes that reimplements$ dolt sql -q "SELECT base_c0, base_c1, base_cardinality, our_cardinality, their_cardinality from dolt_conflicts_dupe;" +---------+---------+------------------+-----------------+-------------------+ | base_c0 | base_c1 | base_cardinality | our_cardinality | their_cardinality | +---------+---------+------------------+-----------------+-------------------+ | 1 | 1 | 10 | 6 | 8 | +---------+---------+------------------+-----------------+-------------------+
dolt conflicts resolve --ours | --theirs
through the SQL path.
go-mysql-server
- 1113: Init RO sess vars
I needed a way to initialize read-only session variables so I can set them when a new user connects to a value that depends on which user connects. - 1112: Added ErrLockDeadlock, mapped to MySQL error code 1213 and SQLSTATE 40001
- 1109: Escape backticks in identifier names in
show create table
Updated show create table output to match MySQL's backtick escaping behavior.
Related to: #3779
Closed Issues
- 3820: N-gram databases for other-language Wikipedias
- 3803: Replication and
call dolt_checkout()
not playing nice. - 3791: Dolt backup sync from SQL context returns success 0 instead of success 1.
- 2970: Dolt does not consider primary keys to be a covering index
- 3752: Socket not closing
- 1137: sql: querying repo tags from a system table
- 1089: I proxies mysql-8.0.23 to go-mysql-server,some problem confuse me