github dolthub/dolt v0.40.5
0.40.5

latest releases: v1.43.0, v1.42.20, v1.42.19...
2 years ago

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 cover dolt_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 a DoltEnv 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 require DoltEnv, but I did still have to do one weird thing in order to get a DoltCLIConfig 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 returns 0 if conflicts OR constraint violations exist. Previously it only returned 0 if conflicts existed, although it seems as though the intention was to also return 0 for constraint violations.
    • Adds bats and sql engine tests for new behavior
    • Updates broken tests

    Future work

    • Update CALL DOLT_MERGE and dolt 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 a mysql.db file present in current directory.
    TODO:
    • User.Attributes aren't being loaded/stored
    • global_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
    Fixes column_key, character_maximum_length, data_type and column_type column values of information_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 to mysql_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 for SRID 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

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 or commit_date appear as NULL in the dolt_diff_{table_name} system table.
  • 3229: parsing SRID syntax needs to be supported for geometry types

Don't miss a new dolt release

NewReleases is sending notifications on new releases.