This is a patch release containing bug fixes and features.
- Bug fixes for foreign keys and keyless tables
- Load AWS credentials by default (for AWS remotes)
- Bug fixes for case sensitivity and database and branch names in connection strings
- Support for deleting and renaming branches with the
DOLT_BRANCH
procedure - Fix for replicated databases not pushing changes to replicas in all cases
- Changes to
DOLT_MERGE
procedure - Support for
SRID
in column definition for spatial columns - Support for
mysql
database in sql shell - Bug fixes for
MODIFY COLUMN
on keys - Bug fixes for
information_schema.columns
table - Support for
MOD()
function - Bug fix for duplicate
UUID()
values
Merged PRs
dolt
- 3528: Fixed foreign key parent referencing + keyless referencing
We, apparently, don't have any tests for referencing the primary key in a foreign key, so those have been failing in the new format. In addition, some changes ended up breaking new format keyless, which was also not caught due to lack of tests. Both of those issues have been fixed.
Tests have been added to GMS: dolthub/go-mysql-server#1038 - 3506: go/libraries/doltcore/dbfactory: aws.go: Load shared config by default, instead of requiring the user to set AWS_SDK_LOAD_CONFIG=1.
- 3505: [no-relase-note] Refactor go/store/prolly/tree.Advance
- 3498: format databases map key for case-insensitive db name and case-sensitive branch name
Database name is case-insensitive, but branch name is case sensitive. - 3495: Shifted fuzzer to use new format
- 3487: Adding support for deleting and renaming branches from SQL with
dolt_branch
Also added more go tests to coverdolt_branch
functionality, cleaned up the code a little bit, and fixed a few other gaps in functionality I came across (e.g. --force option wasn't always being honored).
The only snag I hit is that the interfaces for the CLI functionality required aDoltEnv
struct and we don't have a good way to get that from within a SQL function/procedure. I was able to change the interfaces a bit to not requireDoltEnv
, but I did still have to do one weird thing in order to get aDoltCLIConfig
struct, but I was able to keep it pretty isolated and clearly documented in one place in the code. Happy to hear feedback if there's a better way to tackle that.
Depends on: dolthub/go-mysql-server#1034 ✅
Doc updates: dolthub/docs#625 - 3483: fix tildes
- 3480: Log and diff tables use topo sorted iterator
- 3471: Read replica update working set fixes
Read replica pull updates the session working set after pulling a
filtered set of branches from the tracking database. The original
(buggy) implementation updates the working set to the branch specified
at server-start time. The identity of that branch was fixed for the
duration of the server, so dolt_checkout would (appear to) have no
effect on the new branch's working set. What actually happened was more
pernicious: the working set was updated to the value of the
incorrect branch.
The fix no longer statically sets the active branch for a read replica
database. The active branch is pulled from the*sql.Context
, so the
correct working set will be updated.
Note:- Changing the remote name or remote endpoint would have a similar static state issue. We could read remote name and remote target from the session vars, repo state reader at pull time.
- 3463: Don't print root account username and password when running dolt sql-server
- 3460: go/libraries/doltcore/merge: allow merges in an inconsistent state
Merges are now allowed in an inconsistent state, i.e. conflicts and constraint violations can exist in the working root.
Conflicts are stashed from the left root, then applied to the merged root. If the merged root and stash contain conflicts, then we abort the merge.
Constraint violations have to be stashed from the ancestor, then merged with any violations generated during the merge. We currently generate violations by diffing tables involved in foreign keys between the merged root and the ancestor root. This may result in constraint violations that already existed in left to be regenerated during the merge process. This is why we have to stash from the ancestor.
Changes:CALL DOLT_MERGE
returns0
if conflicts OR constraint violations exist. Previously it only returned0
if conflicts existed, although it seems as though the intention was to also return0
for constraint violations.- Adds bats and sql engine tests for new behavior
- Updates broken tests
Future work
- Update
CALL DOLT_MERGE
anddolt merge
to only report conflicts / constraint violations if those inconsistencies where generated in the merge. Existing inconsistencies shouldn't be reported. (We may show a warning in the CLI case). - Allow multiple merges in the working root, currently if a merge produces conflicts / constraint violations, they must be committed to perform another merge.
- 3457: support SRID value in column definition
Added SRID check for spatial types when converting the value/column between noms and sql values.
Added SRID details for column definition in type params when converting table info. - 3448: go/store/types: add types.UnionMaps
- 3439: Grant access to
mysql
database when in dolt shell
Creating a new SQL engine will load privileges by default. - 3411: mysql db
Will no longer persist changes to privileges-file, and will ignore privileges file entirely if there is amysql.db
file present in current directory.
TODO:User.Attributes
aren't being loaded/storedglobal_dynamic
privileges aren't being loaded/stored
- 3400: Reworked keyless indexes for new format + keyless fk
go-mysql-server
- 1033: fix drop current database with case insensitive name
- 1032: Bug fixes for ModifyColumn related to primary keys
- 1029: fix some column values of information_schema.columns table
Fixescolumn_key
,character_maximum_length
,data_type
andcolumn_type
column values ofinformation_schema.columns
table - 1027: Moved responsibility for rewriting tables on add / drop primary key into engine
- 1026: More tests converted to new format
- 1025: adds
mod()
function
fix for: #3423 - 1022: Rewrite table for drop column
- 1019: UUID function is no longer based off current time
fix for: #3323 - 1018: support
SRID
for spatial type column definition
Added SRID value syntax functionality for column definition.
Added tests cover CREATE TABLE, ALTER TABLE ADD/MODIFY COLUMN, and INSERT statements.
Fixes #3425 - 1007: Refactor
grant_tables
tomysql_db
Mostly renaming variables and files to better reflect what they are now.
Added flatbuffer files for MySQL DB. - 995:
CheckpointHarness
and analyzer mutexes
vitess
- 166: proto: Move .proto files to dolthub/vt subdirectory and package name.
Removes global proto registry conflict with vitessio/vitess, as per #155. - 165: Change the prepared statements return value
- 164: add parsing for
SRID
Added parsing forSRID
value
SRID value is an integer value that can be upto 2^32-1.
Other fixes:- Allowed
.SQLType()
function to evaluate types that are capitalized strings and added tests for it - Added
NULL
column option in formatting and added tests for it
- Allowed
Closed Issues
- 2408: Support
dolt_branch()
SQL function - 3425: Cannot create spatial table with CRS
- 3490: Can't connect to uppercase branch names using JDBC
- 3459: Changing spatial column type sets row values to NULL
- 3469: The column_key is empty in the information_schema.columns
- 3423: MOD function is missing
- 3323:
uuid()
returns the same value for all uses in a statement - 3357: A failed dolt sql -q "SELECT DOLT_BRANCH" sometimes return an unexpected sql row in the output
- 3395: Columns that are named
commit
orcommit_date
appear as NULL in thedolt_diff_{table_name}
system table. - 3229: parsing
SRID
syntax needs to be supported for geometry types