dolt

Dolt – Git for Data

APACHE-2.0 License

Downloads
2.4K
Stars
17.1K
Committers
143

Bot releases are visible (Hide)

dolt - 0.40.12

Published by github-actions[bot] over 2 years ago

This is a patch release containing bug fixes and features.

  • Bug fix for transactions that introduce constraint violations
  • dolt status now contains remote tracking info
  • Allow the persistence of several system variables
  • Better support for deleting branches in the server
  • Support for describe on views
  • Support for use with a / in a database name without quoting the identifier

Merged PRs

dolt

  • 3698: Fix Typo
  • 3692: typo
  • 3687: Fix internal merges not rolling back on a constraint violation
    Bug fix for transactions that create constraint violations.
    Prior to this PR, an internal merge (a merge called inside a transaction) or a transaction merge that produced constraint violations would not rollback the transaction.
    The desired behavior is that if dolt_force_transaction_commit is false, then rollback the transaction if any constraint violations are encountered.
  • 3686: Add remote tracking info to dolt status
    Added remote tracking information for dolt status. If the local branch has upstream remote branch, dolt status outputs whether the local branch is ahead of, behind, diverged from or up-to-date with the tracked remote branch.
  • 3685: Speed up client tests by installing pre-compiled R packages
    https://packagemanager.rstudio.com maintains binary versions of R packages so one doesn't have to compile them all to install on Linux
  • 3682: persistable vars
  • 3678: Fix broken link for hosted dolt in readme.md
    Without the HTTPS prefix, the link went to https://github.com/dolthub/dolt/blob/main/hosted.doltdb.com
  • 3676: update and fix cherry-pick docs
  • 3673: Update README.md to include hosted
  • 3670: Remove SELECT CONSTRAINTS_VERIFY_ALL and DOLT_VERIFY_CONSTRAINTS_ALL
    Removes the ALL versions of CONSTRAINTS_VERIFY() and DOLT_VERIFY_CONSTRAINTS(). --all has been added to the remaining SQL function and procedure.
    Also adds --output-only support for SQL
  • 3667: Clean up revision database metadata when renaming/deleting branches
    When a Dolt sql-server connects to a branch-qualified database (e.g. <database>/<branch>) either through a connection or use statement, it tracks metadata for that database+branch and shows the entry as a database in show databases. If that branch is deleted or renamed, the metadata isn't cleaned up and can cause the server to stop working correctly in any query that causes all databases to be searched (e.g. using information_schema, calling a stored procedure, calling `show procedure status).
    This PR updates the branch delete/rename logic to clean up this database metadata and also fixes the safegaurd for deleting/renaming a branch in use by another session, since it didn't take revision databases into account previously.
    Fixes: https://github.com/dolthub/dolt/issues/3636
    Depends on: https://github.com/dolthub/vitess/pull/170
  • 3665: Fix cherry-pick flaky test
    This PR fixes cherry-pick: commit with ALTER TABLE rename table name flaky bats test.
    doltdb.UnionTableNames() method returns inconsistent/randomized ordered array of table names. Renaming table is not tracked when merging, so that it becomes the old name table being dropping and the new table being added. If the tableNames array has old table name first, then the error case is caught, but if the tableNames array has the new table name first, then MergeRoots try to add the exact same table, which returns error of same column tags.
    To avoid this, doltdb.UnionTableNames() method now returns unique table names present in order of RootValues passed in.
  • 3654: Update dolt merge unique key violation behavior. Implement unique key violations for new format.

    Both format changes

    CALL DOLT_MERGE conflicts column returns 1 if the post-merge root contains conflicts or violations:
    Previously, the conflicts column would only return 1 if the merge produced new conflicts. Now it returns 1 regardless if whether the conflicts in the root are new or from a previous merge.
    It also returns 1 if there are any constraint violations.

    Current format changes

    1. Unique key constraints during merge are documented for both the existing row and violating row:
    Sometimes a dolt merge or the stored-procedure equivalent CALL DOLT_MERGE may produce unique key violations even when those violations did not exist in either the target or source branches.
    Consider the following:
    -- in the ancestor
    CREATE TABLE t (pk int PRIMARY KEY, col1 int UNIQUE);
    INSERT INTO t VALUES (1, 1);
    -- on the right, this is valid
    INSERT INTO t VALUES (2, 2);
    /*
    Query OK, 1 row affected
    */
    -- on the left, this is valid
    UPDATE t set col1 = 2 where pk = 1;
    /*
    Query OK, 1 row affected
    Rows matched: 1  Changed: 1  Warnings: 0
    */
    -- in the post merge state col1 has the duplicate value 2
    SELECT * from t;
    /*
    +----+------+
    | pk | col1 |
    +----+------+
    | 1  | 2    |
    | 2  | 2    |
    +----+------+
    */
    
    Prior to this PR only PK 2 would be returned as a constraint violations:
    SELECT * from dolt_constraint_violations_t;
    /*
    +----------------+----+------+---------------------------------------+
    | violation_type | pk | col1 | violation_info                        |
    +----------------+----+------+---------------------------------------+
    | unique index   | 2  | 2    | {"Columns": ["col1"], "Name": "col1"} |
    +----------------+----+------+---------------------------------------+
    */
    
    After this PR both PK 1 and 2 are returned as constraint violations:
    SELECT * from dolt_constriant_violations_t;
    /*
    +----------------+----+------+---------------------------------------+
    | violation_type | pk | col1 | violation_info                        |
    +----------------+----+------+---------------------------------------+
    | unique index   | 1  | 2    | {"Columns": ["col1"], "Name": "col1"} |
    | unique index   | 2  | 2    | {"Columns": ["col1"], "Name": "col1"} |
    +----------------+----+------+---------------------------------------+
    */
    
    2. Rows that violate a unique key constraint during merge are no longer filtered. They are allowed to persist into the left:
    In the above example, prior to this PR we would not see PK 2 in our post-merge state:
    -- post-merge state
    SELECT * from t;
    /*
    +----+------+
    | pk | col1 |
    +----+------+
    | 1  | 2    |
    +----+------+
    */
    
    After this PR, we do see PK 2:
    -- post-merge state
    SELECT * from t;
    /*
    +----+------+
    | pk | col1 |
    +----+------+
    | 1  | 2    |
    | 2  | 2    |
    +----+------+
    */
    

    New format changes

    The new format matches the current format behavior except for the following.
    1. Merge errors if a single row violates multiple UK or FK violations:
    The PKs of the artifact table are: PKs of the source table, a root-ish hash, and then the artifact type. If a row violates multiple UK or FK constraints in the same merge, there is a PK key collision and the previous CV entry is overwritten with the new one. In the future, we can store both constraint violations in the json metadata.
    This is a problem in the current format as well but we don't produce errors.
    2. If the ancestor has duplicate values for a column and the right de-dupes them and adds a UK constraint, the merge will not abort:
    In the current format this case aborts the merge because on the left we have constraint violations. If the left is missing a unique index, it is built prior to the merge. During this process if a duplicate value is found the entire merge is aborted.
    In the new format, if a unique index is missing in either the left, right, or ancestor we build the merged index with the post-merge primary row data. If we encounter duplicate values here we document them instead of aborting.
    Due to the way the current format updates indexes, even if we documented the constraint violations in the left we would not achieve consistent behavior. For example, we would document the violations that the right might have already resolved.
  • 3642: Update Describe tests in Dolt due to bug in GMS
    This pr modifies bats and enginetests due to some missing functionality in GMS.
  • 3365: TableStatistics implementation for dolt side
    Implements the sql.StatisticsTable interface

go-mysql-server

  • 1073: Fixed returning null type instead of null value
    A few places, such as NULLIF(), were returning the null type (sql.Null) when they should have been returning a null value (nil in Go). This has been fixed.
  • 1065: Support describe for views
    This pr:
    1. Introduces a new analyze rules to ensure describe works on views
    2. Fixes a bug in the return of SHOW COLUMNS
    3. Makes sure describe works with expressions
  • 1061: blob enginetests
  • 998: Column Statistics
    Gathers the following column stats:
    • mean
    • min
    • max
    • count
    • null count
    • distinct count
      and stores them in a modified information_schema.column_statistics table.
      There is now a new sql.Histogram struct that contains the column stats; the contents and format of sql.Histogram come from a mixture of Cockroach and MySQL.
      Additionally, there is also a TableStatistics interface, which is meant to be implemented if people want statistics on that table.

vitess

  • 170: Adding support for use db/branch syntax
    Currently, use <database>/<branch> works only from the mysql client, because it parses the use command on the client side and sends it to the server as a different command (not a query). This means this syntax does not work with dolt sql or with other clients that don't parse this command client side and translate it (e.g. go-sql-driver/mysql).
    This PR adds support to our parser for this syntax, so that use <database>/<branch> can be used consistently.
  • 169: Adding support for specifying a primary key name
    MySQL allows you to specify an optional name following a primary key definition when creating or altering a table. This name is always ignored though – all primary keys in MySQL are always named PRIMARY.
    Fixes: https://github.com/dolthub/dolt/issues/3674
  • 168: Remove glog dependency, reduce log levels, remove all logutilpb usage and support.

Closed Issues

  • 3636: Broken doltdb after deletion of the branch which had DB alias
  • 3599: Have 'dolt status' also show how local repo compares with remote
  • 3649: dolt sql --result-format csv returns empty values for bit columns
  • 3207: ORDER BY with several primary keys on a very large table takes too long ( almost does not load )
  • 3143: Dolt table import OOM panic
  • 2978: Bad error message when using unsupported FULLTEXT KEY
  • 1104: SQL Alchemy cannot parse CREATE TABLE statement with foreign key constraint
  • 3257: Panic with querying geometry types
  • 3258: MySQL database is only available in sql-server mode
  • 3658: NULLIF doesn't work properly with LONGTEXT
  • 787: Add support for describing views
dolt - 0.40.11

Published by github-actions[bot] over 2 years ago

This is a patch release, containing bug fixes and improvements

  • Bug fix for stale data in certain queries
  • Bug fix for wire and shell representation of certain GEOMETRY values
  • Performance improvement for joins
  • Better error message for multi-line query input with dolt sql
  • Better bulk inserts for dolt dump

Merged PRs

dolt

  • 3663: Removed exclamation marks in README
  • 3662: go/libraries/doltcore/sqle/index: Invalidate schema-dependent cached durable state when root value changes.
  • 3660: go/libraries/doltcore/sqle/index: Fix races in index caching using atomics.
  • 3653: selecting geometry types now show up in hex form, rather than raw ASCII
  • 3651: index join scan
  • 3648: Unskipped bats tests
  • 3647: go/libraries/doltcore/sqle/index: Cache durable.Index values for primary and secondary data.
    Introduce an instance-local cache which can refresh its value when
    the working root of the underlying table changes.
    In 4300e8460eccfc999059eca503748766b7327869 we changed DoltIndex
    implementations to not store row data. Index implementations are retrieved at
    analysis time and used at query time, and storing row data in them breaks
    things like static lookups and index joins in things like prepared statements
    and stored procedures.
    Retrieving the row data from the doltdb.Table instance for every lookup turns
    out to have a sizeable performance impact, especially on something like a large
    join.
  • 3639: Improved error message for multistatement query failing during exec
    While debugging https://github.com/dolthub/dolt/issues/3512 , realized that if a multistatement exec fails during query execution, Dolt doesn't tell you which line failed. Updated the error message to include the failing statement's line and added a bats test for the original customer issue.
    Depends on: https://github.com/dolthub/go-mysql-server/pull/1066
  • 3620: Add bulk export parameters to dump
    Addressed issue #3015
    Note that mysqldump uses the --no-autocommit flag which wraps each table with a SET AUTOCOMMIT=0 and COMMIT=1
    cc: https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_no-autocommit
  • 3571: support dolt cherry-pick - version 1
    This PR is the first version of cherry-pick support.
    • Only a single commit is allowed with cherry-picking
    • No flags or subcommands are supported
    • No conflicts, leaves the working set clean if conflicts occur
    • Only available on CLI
    • No renaming or dropping a table in cherry-pick commit
    • Cherry-picking a merge commit is not supported
    • Always creates a new commit except there is no changes.

go-mysql-server

Closed Issues

  • 3632: dolt crashes when connecting with DBeaver
  • 3512: Improve logs for dolt sql
  • 3015: Dolt dump should support common bulk loading paradigms
dolt - 0.40.10

Published by github-actions[bot] over 2 years ago

This is a patch release with bug fixes and performance improvements.

  • Bug fix for dolt_diff system table and null values.
  • Bug fix for max_connections system variable
  • Bug fix for polygon types with multiple linestrings
  • Better performance for dolt table import
  • Differentiate between staged and unstaged changes in dolt_diff results
  • Updated README to be more database-centric
  • Bug fix for certain REGEXP expressions
  • Fix for dolt dump output involving string literals

Merged PRs

dolt

  • 3635: Liuliu/root hash does not exist panic
  • 3630: bugfix: using nils instead of "NULL" strings
    The dolt_diff system table was returning literal "NULL" strings instead of nil values. This worked in the enginetests, but when they get printed out in a shell they couldn't be converted into a datetime and produced an error.
  • 3622: Changed CLI docs generation to use bold paragraphs instead of subheadings for arguments etc.
    Also cleaned up a nonsensical set of doc interfaces
  • 3619: Fix setting max_connections in server yaml
    We use system variables depending on whether a variable is user-defined variable or not. The issue was variables defined in config variable was not used in starting new sql engine. When max_connections variable was defined in config file either through yaml file or on command line, it should use that value, if not it uses default value. We check for persistence behavior. If it's set to load, then use the value of global max_connections variable, otherwise use value set in server config, which can either be default or user defined value.
  • 3611: fixing panic when creating a polygon with more than one linestring
    geom_db> create table t (p polygon);
    geom_db> insert into t values (polygon(linestring(point(1,1),point(2,2),point(3,3),point(1,1)),linestring(point(1,1),point(2,2),point(3,3),point(1,1)));
    Query OK, 1 row affected
    geom_db> select * from t;
    panic in ExchangeIterPartitionRows: runtime error: slice bounds out of range [260:140]
    
    fix was just a typo multiplying the index to be way out of range
    enginetests for this case in GMS PR
  • 3608: Add a warning for imports where the file's schema is smaller than the table's schema
    We should warn the user when executing a partial import as it may have antagonistic behaviors when import files do not properly match a table schema. For example consider a table with the schema (pk, val). If I import a file with schema (pk, va) the second column will get dropped by the importer.
  • 3606: Get branches by root hash
  • 3598: Simplified types, removed some type checks, fixed SELECT output
    DECIMAL, ENUM, SET, and TIME have all been simplified to return a consistent and expected value type (which cleanly maps to storage). This lets us bypass type checking in some places. In addition, we now have consistency between the output of CLI commands and a client's output when connected to the server (these were different in some scenarios).
  • 3597: Modified README to be more "database version control"-centric
    Maps to this blog:
    https://www.dolthub.com/blog/2022-06-13-version-controllled-database-getting-started/
  • 3591: Support the bulk edit accumulator for dolt table import
    At release 0.34.5 we introduced the new import path that supported import through the sql engine. Recently, I noticed that there was a performance decrease at imports of the size ~10M rows compared to the 0.34.4 version of import. Performance was improved by adding support to the bulk edit accumulator.
  • 3584: update bats test for columnDefaultValue changes in GMS
    Depends on https://github.com/dolthub/go-mysql-server/pull/1036
  • 3581: Differentiate between staged and unstaged table deltas in dolt_diff system table

go-mysql-server

  • 1064: Add more exhaustive cases for int, uint conversion
    fix for https://github.com/dolthub/dolt/issues/3632
  • 1062: adding enginetests to scriptgen
  • 1060: remove suffix check
    NOW() does not have prefix ( but has suffix )
  • 1059: Adding EngineTests for polygons with multiple linestrings
  • 1056: Allow REGEXP args to be converted
    fix for #1055
  • 1053: Added type wire tests
    This enforces that we're returning the correct data over the wire (which may differ from the storage values). Majority of the fixes made have been moved to the parent PR (https://github.com/dolthub/go-mysql-server/pull/1044) so that this one is not quite as large. They're all fairly straightforward, hence I don't think they require review.
    The expected test output has been validated against MySQL (using the shim). In addition, this also enforces that the results are coming from the Type.SQL() function by running the output of a sql.RowIter (gathered from the directly querying the engine) through the Type.SQL() function and ensuring it matches.
  • 1044: Type value changes & row type assertions
    This PR has two primary goals:
    1. All types now pass their values around in a form most suitable to that type.
    2. Enforce that the aforementioned types are always passed to integrators, such that integrators do not need to do type validation on their end.
      To elaborate on these points, some types already passed around values that were sensible and a best fit for that type, such as MEDIUMINT returning an int32. Other types, such as DECIMAL, passed around strings, which necessitated conversions for integrators to be able to properly persist the values. Not only that, there is currently no guarantee that a row's values each have their best fit type (a BIGINT can work with an int8, but it should be able to always expect int64). To make these guarantees, I'm adding a check at all GMS-integrator junctions that pass a sql.Row and verifying that the value types are exactly what that column expects.
      This may have the side effect of changing the output of a SELECT statement for integrators. As a SELECT statement simply returns a sql.RowIter, additional logic will be needed to convert all values to their canonical MySQL representation. This can easily be achieved by passing all values through Type.SQL() before display.
  • 1036: single quoted default value in create table statements
    Current Dolt default literal values are stores in double quotes, but MySQL does not parse double quoted default literal value in CREATE TABLE statements for both sql shell and importing dumps.
    Fixes https://github.com/dolthub/dolt/issues/3218
    Added character set and collation columns for show create view

Closed Issues

  • 3618: setting listener.max_connections in server yaml does not reflect in system variables
  • 3601: dolt table import should print a warning message if there is a schema mis-match
  • 3612: Fix Elixir Installation for mysql-client-tests
  • 3218: dolt dump has incorrect default values for create table statements
  • 3583: Error: [2057] when fetching remote table at non-HEAD commit following schema change using as of
  • 1055: REGEXP '^[-]?[0-9]+$' fails on int64 column.
dolt - 0.40.9

Published by github-actions[bot] over 2 years ago

Merged PRs

dolt

  • 3592: new enginetests for prep asof

go-mysql-server

  • 1056: Allow REGEXP args to be converted
    fix for #1055
  • 1054: Fix prep AS OF
    Prepared AS OFs errored when the asof target was not a bindvar. All of our previous tests treated ASOF also as a bindvar.
    companion PR: https://github.com/dolthub/dolt/pull/3592
  • 1052: enginetest: Parameterize query plan tests
  • 1051: Better join commutativity count
    We excluded joins on the basis of join factors in the logical join tree,
    rather than distinct join subtrees subject to commutativity. The
    difference is that we have to permute n! to optimize the search space
    of all valid commutative trees, versus a k^n (k = table rows) execution
    runtime. 12! blocks analysis, k^12 is steep but can be OK depending on
    cardinality and indexes. We impose no limits on k^n joins.

Closed Issues

  • 3453: dolt_ stored procedures do not work with python connector
  • 3494: Panic trying to insert longblob in new format
dolt - 0.40.8

Published by github-actions[bot] over 2 years ago

This is a patch release with small bug fixes and features.

  • Bug fix for queries involving large numbers of tables in a join
  • New option for the dolt backup command.

Merged PRs

dolt

  • 3580: dolt backup sync-url
    Adds sync-url to the backup command as a way to backup a database without having to add a backup. This is useful in sql-server mode where you cannot add named backups.

go-mysql-server

  • 1051: Better join commutativity count
    We excluded joins on the basis of join factors in the logical join tree,
    rather than distinct join subtrees subject to commutativity. The
    difference is that we have to permute n! to optimize the search space
    of all valid commutative trees, versus a k^n (k = table rows) execution
    runtime. 12! blocks analysis, k^12 is steep but can be OK depending on
    cardinality and indexes. We impose no limits on k^n joins.
  • 1047: sql/parse: Test round-tripping sql.Type as string
  • 1046: Introduced OrderedIndex interface to deal with indexes that don't return ordered results

Closed Issues

  • 1050: Complex query with ABS, !=, REGEXP, and CONVERT fails.
dolt - 0.40.7

Published by github-actions[bot] over 2 years ago

This is a patch release with small bug fixes:

  • Support for working changes in dolt_diff system table
  • Bug fix for BIT types during import

Merged PRs

dolt

go-mysql-server

  • 1046: Introduced OrderedIndex interface to deal with indexes that don't return ordered results
  • 1043: enginetest: Validating Enginetest Harness

Closed Issues

  • 3567: dolt table import fails on bit columns
  • 3501: Does aws remote work with assume role?
dolt - 0.40.6

Published by github-actions[bot] over 2 years ago

This is a patch release with features and bug fixes.

  • Schema change for result of DOLT_MERGE procedure
  • Bug fix for procedure aliases in information_schema tables
  • Bug fix for dolt init with name and email
  • Changes to how dolt_diff matches columns across schema revisions

Merged PRs

dolt

  • 3564: CALL DOLT_MERGE now returns fast_forward and conflicts columns
    The double negative no_conflicts column returned by CALL DOLT_MERGE and SELECT DOLT_MERGE has been replaced with a simpler conflicts column. CALL DOLT_MERGE additionally returns a fast_forward column which indicates if the merge was a fast-forward. If fast_forward is 0, then you must perform a commit to reach a clean working set state.
    Closes #3560
    Replaces uses of SELECT DOLT_MERGE with CALL DOLT_MERGE in the engine tests. Both the sql function and procedure have similar test coverage. We currently don't support multiple return columns with sql functions, so the change was made to test the fast_forward column.
  • 3561: error instead of blob panic
  • 3557: checkout proc startpoint
  • 3554: add bats test for procedure alias not showing in information_schema.routines table
    Added bats tests for procedure aliases.
    Depends on https://github.com/dolthub/go-mysql-server/pull/1042
  • 3549: Bug fix for not saving explicit name and email settings to local config
    Fixes: https://github.com/dolthub/dolt/issues/3546
  • 3547: add cherry-pick to ClientEventType
  • 3538: Unskip newly working bats tests
  • 3535: change dolt_diff system table to coerce schema by name only
    The dolt_diff_{table_name} system table now coerces schema by name only. The dolt_diff table uses the schema at head to interpret the tables at every prior commit. Previously the schema of the table at each prior commit was matched to the head schema using tags with a name fallback. Now it is matched by name only.
    Let's consider an example between the new and old behaviors. Define table t with the following schema:
    CREATE TABLE t (
    pk int PRIMARY KEY,
    a text
    );
    
    In commit1 we insert the following row:
    INSERT INTO T VALUES (1, 'one');
    
    In commit2 we rename col1 to col2:
    ALTER TABLE T RENAME col1 TO col2
    
    In the old behavior, we would see the following diffs.
    Between init and commit1:
    + (1, 'one')
    
    No diff between commit1 and commit2.
    In the new behavior, we would see the following diffs.
    Between init and commit1:
    + (1, NULL)
    
    No diff between commit1 and commit2. (We actually do expect to see ~ (1, 'one') here but this is a TODO and known issue.)
    Also adds warnings to new storage format when a column value coercion fails.
  • 3514: Apply index lookups on diff tables
    diff_table now implements sql.IndexedTable interface and uses dolt lookups.
    Currently treats to_ columns as primary key, so index lookups on work on those.
    Fix for: https://github.com/dolthub/dolt/issues/3438

go-mysql-server

  • 1043: enginetest: Validating Enginetest Harness
  • 1042: exclude procedure aliases from showing information_schema.routines table
    Not show procedure aliases in information_schema.routines table
    Dolt PR tests this change
  • 1041: cleanup enginetest
    Splits up enginetest/enginetest.go into initialization.go and evaluation.go. The intent is to leave only test banks in enginetest.go
    This is a pure refactor, no logical changes were made.
  • 1038: Added a few foreign key tests
  • 1037: Parallelize IndexedTableAccess on DoltDiff tables

vitess

  • 168: Remove glog dependency, reduce log levels, remove all logutilpb usage and support.
  • 167: go/vt/{vttls,tlstest}: Sync from upstream; supports CRL, minimum TLS version configuration.
  • 166: proto: Move .proto files to dolthub/vt subdirectory and package name.
    Removes global proto registry conflict with vitessio/vitess, as per #155.

Closed Issues

  • 3560: call dolt_merge() needs to return two things: fast-forward (yes/no) and conflicts (yes/no)
  • 3552: Dolt stored procedure alias show in Table plus
  • 3558: call dolt_commit('-am', ...) not committing all changes or call dolt_merge() leaves dirty working set on fast forward
  • 3546: dolt init --user --email isn't respected in succeeding commits
  • 3501: Does aws remote work with assume role?
  • 155: Vitess protocol buffer namespace conflict
dolt - 0.40.5

Published by github-actions[bot] over 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: https://github.com/dolthub/go-mysql-server/pull/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: https://github.com/dolthub/go-mysql-server/pull/1034
    Doc updates: https://github.com/dolthub/docs/pull/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: https://github.com/dolthub/dolt/issues/3423
  • 1022: Rewrite table for drop column
  • 1019: UUID function is no longer based off current time
    fix for: https://github.com/dolthub/dolt/issues/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 https://github.com/dolthub/dolt/issues/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
dolt - 0.40.4

Published by github-actions[bot] over 2 years ago

This is a patch release containing bug fixes and features:

  • Support for dolt_backup stored procedure
  • Bug dropping a database that had branches in use
  • Bug in SHOW CREATE PROCEDURE for native procedures which broke on some JDBC connections

Merged PRs

dolt

  • 3454: Fixed panic when dropping a database with active branches in use
  • 3441: go/libraries/doltcore/sqle/dfunctions: dolt_backup.go: Implement dolt_backup("sync", ...).

go-mysql-server

Closed Issues

  • 3420: Dolt log panics under concurrency
  • 3435: Server error while inserting records and querying dolt_log in parallel
  • 3424: Dolt Stored Procedures don't work with CALL functionality in some connectors
dolt - 0.40.3

Published by github-actions[bot] over 2 years ago

This is a patch release with small bug fixes and improvements.

  • Support for dolt clean command to mirror git clean
  • Support for dolt_clean stored procedure
  • Bug fix for bad error message on some merge conflicts.

Merged PRs

dolt

  • 3440: Dolt clean
    CLI and SQL clean function. Clears untracked tables by finding the
    difference between HEAD and the current working set and then deleting
    the result.
    Optionally specify --dry-run to avoid persisting the result root.
    Optionally pass a list of table names to filter for deletion if
    untracked.
  • 3413: Fix error message for DOLT_MERGE conflicts
    This pr is a little incomplete with regards to constrain violations. cc: https://github.com/dolthub/dolt/issues/3414

go-mysql-server

  • 1021: Allow SHOW CREATE PROCEDURE for external procedures + display a fake CREATE PROCEDURE

Closed Issues

  • 3428: SHOW CREATE PROCEDURE on dolt stored procedures should return something other than "procedure does not exist"
dolt - 0.40.2

Published by github-actions[bot] over 2 years ago

This is a patch release with minor bug fixes and features.

  • Support for --disable-fk-checks in the dolt table import command

Merged PRs

dolt

  • 3437: [no-release-util] Added concurrent query util
  • 3412: Make import work with FKs and add disableFks check
    This pr does the following:
    1. Add back FK support for dolt table import
    2. Add a --disable-fk-checks flag to table import
    3. Skips some of new import update tests due to issues with the new storage format
    4. Integrates GMS changes that address Insert on Duplicate inconsistencies with Fks

go-mysql-server

  • 1015: Thread safe procedure cache
  • 1011: Add FK Checks for Insert on Duplicate

Closed Issues

  • 3406: Add --ignore-foreign-keys option to dolt table import
  • 3410: INSERT ON DUPLICATE does not support FK CASCADE
  • 3418: Making incorrect query to dolt system table kills server connection
  • 3304: support prepared versioned queries in TestVersionedQueriesPrepared
dolt - 0.40.1

Published by github-actions[bot] over 2 years ago

This is a minor release with bug fixes and features.

  • Better logging for server
  • Better error message for deleting a server's default branch
  • Bug fix for stale table data involving index lookups with prepared statements
  • Better docs for reset command
  • Bug fix for dolt reset --hard with an in-progress merge
  • Bug fix for dolt conflicts cat missing some conflicts
  • Bug fix for collation in SHOW CREATE TABLE
  • Bug fix for stale data on some queries
  • Allow DEFAULT NULL syntax for BLOB columns
  • Use indexed lookups for certain primary key sorted queries
  • Allow creation of triggers that refer to non-existent table / columns
  • Support for SIGNED keyword

Merged PRs

dolt

  • 3432: Bump R Client Tests
    Integrates changes for #3418
  • 3427: Include connected DB in log messages
  • 3422: Default branch now database-specific global variable
  • 3419: Restore obfuscated default branch error
  • 3398: go/libraries/doltcore/sqle: Change Index and IndexLookup implementations to not capture table rows. Resolve them from the table at RowIter/Partitions time.
  • 3389: Touch up reset docs
  • 3385: Support add and modify column via table rewrites (new format only for now)
  • 3379: Only skip engine, not inverse
    Enginetest -race has it's own CI job that is only run on merge main. As part of that PR, I tried to skip enginetest -race during routine PR tests. I mistakenly did the opposite, running only enginetest -race on ubuntu.
  • 3375: Fixing revert command usage docs
  • 3374: dolt reset --hard clears any merge state
    Closes #3371
    When dolt reset --hard is called, it now clears the merge state if set.
  • 3369: short dolt procs
    > call dbranch('-b', 'new')
    > call dadd('.');
    > call dcommit('-am', 'message');
    > call dreset('--hard', 'main')
    
  • 3368: go/store/types: Remove WalkValues func and method.
  • 3356: go/{store/datas,libraries/doltcore/doltdb/durable}: Move DOLT_1 format to flatbuffers top-of-DAG.
  • 3354: Fix dolt conflicts cat failing to show conflicted rows in the union-ed schema between left, right, and base.
    Fixes a one-liner bug where the conflicted rows wouldn't show with the union schema between left, right, and base. Added a bats test as well.
  • 3345: Implemented foreign keys for the new format
    This adds foreign key support to the new format.
  • 3272: Add first-hour-db and bats tests for it
    Added dump file of first-hour-db database, which is slightly modified version of MySQL Sakila DB to fit current Dolt version.
    Added bats tests on first-hour-db, to test current supported functionalities.
    Added both the dump file and tests as more functionalities are supported/fixed in Dolt.
    Currently tests basics of importing the dump file.

go-mysql-server

  • 1014: Added field for connected db to logger
  • 1013: Moving transaction initialization before query analysis
    Moves transaction creation ahead of query analysis, so that queries can be executed with the latest committed state from other transactions.
    Fixes: https://github.com/dolthub/dolt/issues/3402
  • 1009: sql/analyzer: Fix reresolveTables to not drop IndexedTableAccess and DeferredAsOfTable nodes on its transform.
    enginetest: Add a test to assert IndexedTableAccess in a prepared statement
    behaves correctly when querying a table that has been modified since the
    prepare.
  • 1008: Bug fix for rewriting table during modify column
  • 1005: Allowing "DEFAULT NULL" for blob column definitions
    Fixes: https://github.com/dolthub/dolt/issues/3388
  • 1004: Support for rewriting tables on column modifications
  • 1003: Replace statements that order by primary key, to use indexed table access
  • 1002: New interface to rewrite table on certain schema change operations
    Interface isn't quite final but this can be checked in. Complementary dolt changes are done and tested but want to get feedback on this approach first.
  • 1000: Regression test case for https://github.com/dolthub/dolt/issues/3247
    https://github.com/dolthub/dolt/issues/3247 reported a panic that our test cases didn't cover. Another commit (https://github.com/dolthub/go-mysql-server/commit/324e43b896d344f745be0b52935640335e9fd546) already fixed the panic, so this PR just adds a quick test to ensure we don't regress with the same bug.
  • 997: adding COLLATE to SHOW CREATE TABLE
    Fix for: https://github.com/dolthub/dolt/issues/3351
    Also fix for: https://github.com/dolthub/dolt/issues/3352
  • 992: Allow unresolved tables and procedures in trigger body in CREATE TRIGGER
    In order to allow non-existent tables and non-exitent procedures in trigger body in CREATE TRIGGER statement, we no longer run analyzer on trigger body, instead all validation checks are performed on a single rule, validateCreateTrigger.
    Added tests for cases of different action times and events.
  • 990: support SELECT INTO 'variable' functionality
    Added functionality support for SELECT INTO variable only. Usages of 'outfile' or 'dumpfile' will return unsupported syntax error.
    Added tests for different cases of SELECT INTO syntax. Using SELECT INTO around unions will not work unless the result is a single row because we do not support order by and limit clauses for union statements even though we parse it correctly.

vitess

Closed Issues

  • 3402: sql-client can't find knex-created table until show tables called
  • 3407: Bug: error: '*sql.ColumnDefaultValue' is not a valid value type for 'TINYINT'
  • 3165: Support unique constraints on tables without a primary key
  • 3288: allow create trigger to reference non-existent table in trigger_body
  • 3388: text/blob types may only have expression default values
  • 3355: DEFAULT NULL for text/blob types give error
  • 3371: dolt reset --hard should clear merge state
  • 3247: panic: unresolved function is a placeholder node, but Type was called
  • 3351: SHOW CREATE TABLE is missing COLLATE
  • 3352: Collation not explicitly defined in SHOW CREATE TABLE, dolt schema show, dolt table export, and dolt dump output
  • 950: README suggests installing via now depreciated "go get"
  • 989: willing to maintaion sql standard schema support?
dolt - 0.40.0

Published by github-actions[bot] over 2 years ago

This is a minor release with bug fixes, performance improvements, and new features.

  • Support for SELECT INTO syntax
  • Better error message for merge conflicts
  • Better handling of geometry types in certain insert statements
  • Fixed bug in merging indexes

Merged PRs

dolt

  • 3347: Improve merge failure messages
    Fixes #3336
    Slightly improves the failure messages for merge. Basically adds a better hint that dolt conflicts should be used to investigate and resolve any conflicts.
    Before:
    -> dolt merge right
    Updating j2pj08g8rkm8o348fr13vbo9fafv0ck8..rbdk7ovdugbnsnimrjjqq6rbq09idh7p
    Auto-merging t
    CONFLICT (content): Merge conflict in t
    Automatic merge failed; fix conflicts and then commit the result.
    -> dolt merge right
    error: Merging is not possible because you have unmerged tables.
    hint: Fix them up in the working tree, and then use 'dolt add <table>'
    hint: as appropriate to mark resolution and make a commit.
    fatal: Exiting because of an unresolved conflict.
    
    After:
    -> dolt merge right
    Updating j2pj08g8rkm8o348fr13vbo9fafv0ck8..rbdk7ovdugbnsnimrjjqq6rbq09idh7p
    Auto-merging t
    CONFLICT (content): Merge conflict in t
    Automatic merge failed; 1 table(s) are unmerged.
    Use 'dolt conflicts' to investigate and resolve conflicts.
    -> dolt merge right
    error: A merge is already in progress, 1 table(s) are unmerged due to conflicts or constraint violations.
    hint: Fix them up in the working tree, and then use 'dolt add <table>'
    hint: as appropriate to mark resolution and make a commit.
    fatal: Exiting because of an unresolved conflict.
    fatal: Use 'dolt conflicts' to investigate and resolve conflicts.
    
  • 3342: Adding check for GeometryKind when writing to column
    Fix for: https://github.com/dolthub/dolthub-issues/issues/203
  • 3332: Fix composite index merge bug
    A bug was discovered where a composite index is left in an inconsistent state after a merge. This PR adds a bats test to catch this bug, and fixes it.
    In preparation for the new storage format, this PR also rewrites the merge tests in a universal way. This will allow us to test both the old format and new format functionality with the same test cases.
  • 3331: [no-release-note] Add pkg message to abstract flatbuffers details
    • Adds pkg Message to abstract Flatbuffers message serialization. The intent is to store different prolly tree implementations with different Flatbuffers messages.
    • Adds AddressMap as a chunked alternative to RefMap. Rather than store name keys as [string], AddressMap uses a key array ([ubyte]) with offsets ([uin16]) to store keys in less space.
  • 3329: Changed default behavior for handling merge conflicts in sessions
    Changed the default of @@dolt_allow_commit_conflicts to false, and changed how merge conflicts that happen incidentally on commit are handled.
    A commit that results in a merge conflict from another client updating the same head will always roll back the transaction, since many connectors will be unable to recover from such a condition otherwise, regardless of the value of @@dolt_allow_commit_conflicts.
    A commit that has merge conflicts from a dolt_merge() can be committed by setting @@dolt_allow_commit_conflicts = on to allow others to collaborate on resolving the conflicts. By default, attempting to commit a working set with merge conflicts will result in a rollback, as above.
  • 3311: mergeTableData for New Storage Format
    Implements the mergeTableData function for the new storage format. Any conflicts will throw an error. Cell-wise merge is implemented.
    TODO:
    • Fix merging of secondary indexes in the presence of cell-wise merges.
    • Conflicts

go-mysql-server

  • 990: support SELECT INTO 'variable' functionality
    Added functionality support for SELECT INTO variable only. Usages of 'outfile' or 'dumpfile' will return unsupported syntax error.
    Added tests for different cases of SELECT INTO syntax. Using SELECT INTO around unions will not work unless the result is a single row because we do not support order by and limit clauses for union statements even though we parse it correctly.
  • 988: Fix SHOW CREATE ... AS OF ... prepared statements
    Fix for: https://github.com/dolthub/dolt/issues/3304
    Note:
    • The parseColumnDefaults rule is repeated because ColumnDefaults are unresolved after unresolveTables and setTargetSchemas, for some reason this only happens when using a DoltHarness.
  • 983: Change Autocommit Query Plan
    This PR adds a new analyzer rule and query Node for autocommit. This fixes an issue where previously a query process was being killed (via a cancelCtx function) before a transaction committed.

vitess

  • 160: return Into value in GetInto() in SelectStatement
    This allows to get Into value without doing switch on its types.
  • 159: support parsing of XOR logic operator
    Added support for parsing XOR logic operator
  • 158: support SELECT ... INTO syntax
    Added supporting of SELECT ... INTO syntax
    Added tests for cases with different locations of INTO in SELECT statement
    INTO clause can only be used in one place, but it can come in different positions, before [FROM ...] or after the whole SELECT statement but beforing locking. (mysql recommends it after locking options)
    INTO OUTFILE ... and INTO DUMPFILE ... are not included yet.

Closed Issues

  • 3226: Dolt Python SDK write_pandas is not consistent with dolt table import
  • 3336: Difficult to learn how to resolve merge conflicts on command line
  • 3242: supportSELECT ... INTO Statement (for create procedure)
  • 3314: pushdown IN filters into range scans
dolt - 0.39.5

Published by github-actions[bot] over 2 years ago

This is a patch release with bug fixes and behavior changes.

  • Bug fix for concurrent transactions failing
  • Changed dolt diff to show data for created and dropped tables (instead of "new table")
  • Bug fix for triggers that failed during execution
  • Bug fix for tables / queries that use the CURRENT keyword
  • Support for XOR operator

Merged PRs

dolt

  • 3326: Option for sysbench perf tests to clone big repo
  • 3320: Add Support for new Transaction Query Plans
    This PR integrates new GMS changes to ensure that the new TransactionCommittingNode works. As a result it addresses #3240
  • 3319: Add perf runner test
  • 3318: Display schema and data for created and dropped tables in dolt diff command
    Fixes: https://github.com/dolthub/dolt/issues/3300
    The dolt diff command was previously omitting schema and data diffs if tables were created or dropped within the commit range, and only outputting diff summary information with tabular output. This change causes the schema changes and data changes to be included in tabular output.
    Old behavior:
    ❯ dolt diff mhgva1kfcljign82ntcmr6ftmpbmemko j6n5727at9652tri8ncsa02v794h1fi4
    diff --dolt a/a b/a
    added table
    ❯ dolt diff mhgva1kfcljign82ntcmr6ftmpbmemko ccm9bfiv6jhft1tmeu1cqd0ghduhg4v7
    diff --dolt a/a b/a
    added table
    ❯ dolt diff qd507o2jjlckjgmn2polsmiifk62vo8n js1bb2cvdr7h4tdj2d3m33jhp9rc9ee9
    diff --dolt a/a b/a
    deleted table
    
    New behavior:
    ❯ dolt diff mhgva1kfcljign82ntcmr6ftmpbmemko j6n5727at9652tri8ncsa02v794h1fi4
    diff --dolt a/a b/a
    added table
    +CREATE TABLE `a` (
    +  `n` int NOT NULL,
    +  PRIMARY KEY (`n`)
    +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    +-----+---+
    |     | n |
    +-----+---+
    +-----+---+
    ❯ dolt diff mhgva1kfcljign82ntcmr6ftmpbmemko ccm9bfiv6jhft1tmeu1cqd0ghduhg4v7
    diff --dolt a/a b/a
    added table
    +CREATE TABLE `a` (
    +  `n` int NOT NULL,
    +  PRIMARY KEY (`n`)
    +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    +-----+---+
    |     | n |
    +-----+---+
    |  +  | 1 |
    |  +  | 2 |
    +-----+---+
    ❯ dolt diff qd507o2jjlckjgmn2polsmiifk62vo8n js1bb2cvdr7h4tdj2d3m33jhp9rc9ee9
    diff --dolt a/a b/a
    deleted table
    -CREATE TABLE `a` (
    -  `n` int NOT NULL,
    -  PRIMARY KEY (`n`)
    -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    +-----+---+
    |     | n |
    +-----+---+
    |  -  | 1 |
    |  -  | 2 |
    |  -  | 3 |
    +-----+---+
    
  • 3316: Max/fix nightly
  • 3291: Use Transactional Logic to Revert Triggers
    Fix for: https://github.com/dolthub/dolt/issues/2613
    Note: can't roll back in GMS / in-memory tables as they don't have any transactional logic, so we don't test there

go-mysql-server

  • 986: support XOR logic operator
    Added XOR MySQL logic operator
  • 985: Fix Handler queries when Prepared Statements are Disabled
    Fix for: https://github.com/dolthub/dolt/issues/3305
  • 983: Change Autocommit Query Plan
    This PR adds a new analyzer rule and query Node for autocommit. This fixes an issue where previously a query process was being killed (via a cancelCtx function) before a transaction committed.
  • 982: adding flag options 2 and 4 for st_asgeojson
    fix for: https://github.com/dolthub/dolt/issues/3280
  • 978: Use transactional logic to rollback bad triggers, also tests
    Added a new rule that wraps everything in a TriggerRollback node if there is a trigger present. This new node will make a savepoint right before execution, and will return to normal if something breaks.

vitess

Closed Issues

  • 3240: Potential Compatibility issue with Knex
  • 2613: Changes, made by "before insert" trigger do not rollback when insert fails
  • 3300: dolt diff doesn't show data diff when table was added within the commit range
  • 3305: DISABLE_PREPARED_STATEMENTS errors
  • 3309: dolt pull fails when other branch exists in the repo
dolt - 0.39.4

Published by github-actions[bot] over 2 years ago

This is a patch release containing bug fixes.

  • Bug for dolt pull incorrectly trying to merge other branches than the current one
  • Fixed panics for certain CREATE PROCEDURE statements
  • Bug fixes for behavior of certain spatial functions

Merged PRs

dolt

  • 3315: Nightly benchmarks
  • 3310: Incorrectly trying to merge every branch when fetching
    Fix for: https://github.com/dolthub/dolt/issues/3309
  • 3248: integration-tests/bats: update dolt dump bats test for v1 storage format
    • Skips keyless tables in tests
    • Adds primary key where primary key was intended
      @andrew-wm-arthur Do we want to add comprehensive tests for dump for each type, etc. right now?

go-mysql-server

  • 982: adding flag options 2 and 4 for st_asgeojson
    fix for: https://github.com/dolthub/dolt/issues/3280
  • 981: fix panics on CREATE PROCEDURE queries
    • Skips evaluating procedure-parameters in the analyzer step
    • Added case for handling UnresolvedFunction in fds to avoid panics
    • Fixes issue, https://github.com/dolthub/dolt/issues/3241 (when procedure parameters are used in filter expressions, it needs to be evaluated, but procedure parameters cannot be evaluated without nil reference map)
  • 975: Fixing return types for spatial functions
    Fix for: https://github.com/dolthub/dolt/issues/3279
    Adding tests that check the return type for functions
    • st_asgeojson
    • st_aswkb
    • st_aswkt
    • st_astext
    • st_dimension
    • st_latitude
    • st_longitude
    • st_swapxy
    • st_x
    • st_y

Closed Issues

  • 3279: Function to export spatial types to not create correct output types
  • 3280: st_asgeojson does not print SRID
  • 3231: binary 'string' type needs to be resolved as geometry type
  • 2991: Dolt panic on index errors
  • 3186: Readding index on hospital-price-transparency-v3 fails - top shows "stuck"
dolt - 0.39.3

Published by github-actions[bot] over 2 years ago

This is a patch release containing bug fixes and performance improvements.

  • Performance improvement for full table scans
  • Fixed bugs involving certain join statements with parenthesis

Merged PRs

dolt

  • 3308: Revert table_reader changes
    This revert the changes made to table_reader.go in https://github.com/dolthub/dolt/pull/3223
    This was done to fix a performance regression to oltp_delete caused by the above PR.
    In summary, the regression was caused by a change to how chunks are located. A tableReader from table_reader.go, previously held a copy of the chunk hash prefixes while also holding the table file index itself. In the above PR, the copy of the chunk hash prefixes were removed and instead the accesses were relayed to the table file index.
    As a consequence, each access to a prefix does additional work. onHeapTableIndex holds the serialized bytes of the table file index, so each access requires deserialization work. Namely, a multiplication and the deserialization of 8 bytes into a uint64 prefix value.
    Reads were not affected for two reasons. First, I/O masks any read regressions in this area because we read many chunks at a time. And secondly, writes have patterns that frequently access this code path.
    Reverting these changes restored the performance seen in Dolt v0.39.0.
  • 3298: Fix ErrBranchNotFound
    This reverts commit 8cd5f16de103f92b40a65c099b82caef558e7608, reversing
    changes made to f857be6c4a4d51422f038a87706f08b019179897.
  • 3286: skip -race enginetests until merge

go-mysql-server

  • 980: Add tests for handling join in parentheses
    Tests regarding this issue, https://github.com/dolthub/dolt/issues/2203
    Some cases give incorrect result in Dolt.
  • 979: Fixed overly aggressive type change check with foreign keys
    Previously PR https://github.com/dolthub/go-mysql-server/pull/977
    The bug has existed since the GMS foreign key implementation, but only surfaced after the previous PR. When changing a column's type, I was only checking that the table was used in foreign keys, when I needed to check that the column is used. This fixes that bug.
  • 975: Fixing return types for spatial functions
    Fix for: https://github.com/dolthub/dolt/issues/3279
    Adding tests that check the return type for functions
    • st_asgeojson
    • st_aswkb
    • st_aswkt
    • st_astext
    • st_dimension
    • st_latitude
    • st_longitude
    • st_swapxy
    • st_x
    • st_y

Closed Issues

  • 3241: CREATE PROCEDURE panics on different queries that mysql allows
  • 2625: C++ connector library does not see null JSON field as null
  • 3243: support multiple statements inside BEGIN ... END for CREATE PROCEDURE
  • 2203: Support explicit join tree syntax for joins
dolt - 0.39.2

Published by github-actions[bot] over 2 years ago

This is a patch release with a new feature.

  • Columns with foreign key constraints on them now support limited type changes.

Merged PRs

dolt

go-mysql-server

  • 977: Foreign keys now allow limited type changing
    It seems that, specifically when using the string types, you may lengthen a field, but you may not change any other properties (cannot change character set or collation). Non-string types don't seem to allow lengthening, as you can't change an INT to a BIGINT.
    The implemented behavior is actually an approximation of MySQL's, as you cannot cross some length thresholds due to how MySQL stores strings. From what I can gather for MySQL, as long as the on-disk data does not change AND does not need to be checked, it is allowed. I'm sure more type changes are allowed, but it's not documented, and therefore would require a ton of trial and error, so just shipping this for now.

Closed Issues

dolt - 0.39.1

Published by github-actions[bot] over 2 years ago

This is a patch release containing bug fixes, performance improvements, and features.

  • All dolt_ SQL functions now implemented as stored procedures as well
  • Unique constraints for keyless tables now supported
  • Bug fixes for certain LOAD DATA statements
  • Better memory management for large servers
  • Better error output for dolt checkout
  • Better error messages when inserting illegal values
  • TRADITIONAL sql mode now parses correctly
  • Character sets for string literals now parse correctly
  • Certain DML statements now return an ok result
  • Better support for certain CREATE VIEW statements

Merged PRs

dolt

  • 3277: go/cmd/dolt: Add create new branch suggestion to dolt checkout {commit_hash}
    Closes #3276
    Instead of showing the following when trying to checkout a specific commit:
    dolt checkout 400435pip70vh165ggsq4etmggdh6h5i
    error: could not find 400435pip70vh165ggsq4etmggdh6h5
    
    We instead show:
    dolt checkout 400435pip70vh165ggsq4etmggdh6h5i
    dolt does not support a detached head state. To create a branch at this commit instead, run:
    dolt checkout 400435pip70vh165ggsq4etmggdh6h5i -b {new_branch_name}
    
  • 3271: Fixing bad error message for ErrBranchNotFound
    Fix error message for ErrBranchNotFound to include the branch that wasn't found.
    helps for: https://github.com/dolthub/dolt/issues/3270
  • 3268: Fixed docs for sql command
  • 3259: Add generated queries tests for Tableplus
  • 3246: Added stored procedure versions of all dolt functions
  • 3245: Enable unique indexes on keyless tables
    This pr
    1. Unblocks unique indexes for keyless tables
    2. Fixes index/cat.go for keyless rows
    3. Adds additional test and verification of unique key indexes
  • 3244: go/store/nbs: fix racy fileTableReader
  • 3225: dolt dump should include views, triggers, and procedures
    fix for: https://github.com/dolthub/dolt/issues/3159
    instead of dumping certain dolt tables, create the views, triggers, and procedures.
  • 3223: go/store: changes to support memory management of NomsBlockStores
    Various changes to support doltremoteapi NBS memory management.
    Changes:
    • Acquires quota with a singular call during a Rebase
    • Table file indices loaded from an AWS or Blob chunk source load their contents into an individually mmapped region of memory. When an index is closed, it's associated mmapped region is unmapped.
    • When loading indices from a disk file, stop using mmap pointlessly
    • Optimizes index memory usage. Instead of allocating an additional n sized buffer to hold the offsets, allocate a n - n/2 sized buffer and recycle the unused lengths region of memory.
    • Table reader no longer copies all the prefixes when reading
      Also renames the following noms copyrighted files:
    • mmap_table_reader.go -> file_table_reader.go
    • mmap_table_reader_test.go -> file_table_reader_test.go
  • 3210: dolt pull should do dolt fetch before
    fix for: https://github.com/dolthub/dolt/issues/3113
  • 3209: add bats tests for importing from mysqldump
    Added bats tests for importing from mysqldump of currently tested simple cases including empty database and databases with view, trigger, procedure.
    Added skipped bats tests for currently known issue, character set introducer support.
  • 3167: fix panic from nil VRW
    Fixes avoiding panics when readSequence() functions is called on valueDecoder with nil VRW

go-mysql-server

  • 977: Foreign keys now allow limited type changing
    It seems that, specifically when using the string types, you may lengthen a field, but you may not change any other properties (cannot change character set or collation). Non-string types don't seem to allow lengthening, as you can't change an INT to a BIGINT.

    The implemented behavior is actually an approximation of MySQL's, as you cannot cross some length thresholds due to how MySQL stores strings. From what I can gather for MySQL, as long as the on-disk data does not change AND does not need to be checked, it is allowed. I'm sure more type changes are allowed, but it's not documented, and therefore would require a ton of trial and error, so just shipping this for now.

  • 974: Fixed LOAD DATA errors
    There are three core issues with LOAD DATA that have been fixed:

    1. Columns could be rearranged, but we didn't handle the case where the rearranged columns were a subset.
    2. Line endings were assumed to be a single character, which is not true for Windows (which uses \r\n).
    3. Default values did not work. Nil default values "worked" due to nil being the default value when instantiating a slice of interface{}s.
  • 971: support handling join table between parentheses
    Allow handling join tables in parentheses. It causes the JoinTableExpr to be wrapped in ParenTableExpr in the parser, so it needs to be unwrapped to get the JoinTableExpr inside
    Fixes https://github.com/dolthub/dolt/issues/3254

  • 970: Changed all DDL nodes to return an OkResult
    This is important for compatibility with certain SQL clients (notably C connector).

  • 969: Improving Error Message for Inserting Strings that are too Long
    includes the string that failed and for which column
    helps for: https://github.com/dolthub/dolt/issues/3270

  • 968: Expanded AddColumn tests to include some writes on the new table

  • 967: add TRADITIONAL to sql_mode set
    Added TRADITIONAL option to sql_mode set.
    Fixes https://github.com/dolthub/dolt/issues/3230

  • 966: Arithmetic .Type() Perf Improvement
    SQL Logictests were timing out on huge CASE statements with ~40
    nodes. This fixes the computational blowup, which I think was
    somehow exponential before.

  • 965: Bug Fix: FilterTable pushdown to aliased tables
    Fixes: https://github.com/dolthub/go-mysql-server/issues/808
    Max – Tagging you for your analyzer expertise. Could you check this out and see if you see a better approach to solving this? I saw a couple ways to address this, but this seemed like the least intrusive approach.

  • 964: support more than 1 byte characters to insert for char()/varchar() types
    Allows inserting strings with 'exact number of character but consists of more bytes' values to char() or varchar() types
    Fixes https://github.com/dolthub/dolt/issues/3233

  • 961: Fix underspecified insert tests
    No inserts were not being run with prepareds. A lot of them were broken, but should be running in GMS now at least.
    Edit: These pass Dolt also.

  • 960: Parse charset introducer for string literals for expressions
    Fixes parsing charset introducer in front of string literals for handling some expressions such as column default expressions.
    Allows only utf8mb4, utf8mb3 and utf8 charsets. If other charsets are used, gives unsupported charset error.

  • 958: Added variable to hide external stored procedures

  • 957: Allow conversion of strings and hex to geometry types
    fix for: https://github.com/dolthub/dolt/issues/3231
    we should be able to read mysql dumps produced using the --hex-blob flag.

  • 956: Fixing Point method to actually print string
    Fix for: https://github.com/dolthub/dolt/issues/3228
    Allows the use of point(), linestring(), and polygon() for default values for columns of type point, linestring, polygon, and geometry.

  • 952: Remove checks for unique index
    We should follow up with an implementation for a unique index for the memory table. Will take a crack at this in a future edit.

  • 795: ComPrepare saves partial query plan
    Prepared statements hidden behind enable_prepared_statements config.
    Lacking:

    • Full support for versioned questions (select * asof '2021-03-21)). I fixed the panics, but many asof tests return incorrect results.
    • Window function parameters can't be bindVars currently (lag(x,?))
    • Needs a lot more insert ... select tests
      ComPrepare saves a partially optimized plan for prepared statements.
      Query execution will use the saved plan when possible. Connections have
      a private view of saved plans that are deleted on termination.
      All enginetests ran with prepared queries regarless of BindVar
      inclusion. Variety of bug fixes exposed by the prepared enginetests.

vitess

  • 157: add all charset introducers and parsing of charset introducers in LIKE function
    • Added all charset introducers supported by MySQL
    • Added parsing charset introducer in front of string literal of LIKE function
  • 154: move CURRENT to non-reserved-keyword-list
    CURRENT is non reserved keyword, it fixes issue of SELECT * FROM current query failing
    Fixes https://github.com/dolthub/dolt/issues/3224
  • 153: Add additional syntax support for CREATE VIEW statement
    Added ALGORITHM=..., DEFINER=..., SQL SECURITY DEFINER|INVOKER syntaxes for CREATE VIEW statement.
    Fixed definer_opt to parse account_name instead of ID to support parsing of user@locahost syntax.
    Moved VIEW (non-reserved keyword) from non-reserved to reserved as non-reserved keywords are used for account_name parsing, so it creates shift/reduce conflict for view.

Closed Issues

  • 3270: Ambiguous error message when type checking fails makes it almost impossible to figure out why an import failed, especially when using triggers.
  • 3276: dolt checkout {commit_hash} should ask the user for a new branch name
  • 3233: character length of varchar values are calculated incorrectly for some characters
  • 3230: TRADITIONAL needs to be added to sql_mode set
  • 3254: support parsing join tables statements in parentheses
  • 3010: Panic on adding a foreign key constraint
  • 3232: character set introducer needs to be supported for some filter functions
  • 3224: Selecting a view named current errors
  • 3228: show create table fails on default value of POINT() function
  • 3159: dolt dumps with dolt_procedures, dolt_schema_fragments tables cannot be imported
  • 3113: dolt pull should do dolt fetch under the hood
  • 973: no index record in information_schema.statistics
  • 808: FilteredTable uses wrong schema with alias
dolt - 0.39.0

Published by github-actions[bot] over 2 years ago

This is a minor release with bug fixes and performance improvements.

  • dolt login is now configurable for different remotes, not just DoltHub
  • dolt clone now works with local file URLs to other dolt repositories
  • AUTO_INCREMENT columns can now accept negative numbers
  • information_schema tables have better support for column default values

Merged PRs

dolt

  • 3238: latest GMS main
  • 3234: /go/cmd/dolt/commands/login.go: make dolt login command configurable, can authenticate against different remotes
    This PR adds the --auth-endpoint, --login-url, and --insecure arguments to the dolt login command so that it can authenticate against remotes beyond doltremoteapi.dolthub.com:443. This supports dolt login's use with DoltLab instances. It also adds a dolt config option doltlab.insecure, which if true will establish an insecure gRPC connection to the remote authentication server (currently required for DoltLab's remote auth server).
    dolt login will continue to use doltremoteapi.dolthub.com:443 as the default remote authEndpoint and https://www.dolthub.com/settings/credentials as the loginUrl opened by the browser.
    If a local or global dolt config file sets remotes.default_host and remotes.default_port, the values specified in the config will be used over the defaults. If creds.add_url is set in the config file, its value will be used instead of the default loginUrl. All values supplied with the command line arguments take precedence over the config file values.
    Examples:
    # login to dolthub.com
    dolt login
    
    # login to doltlab.dolthub.com
    dolt login -i -e doltlab.dolthub.com:50051 -url http://doltlab.dolthub.com/settings/credentials
    
    # login to doltlab.dolthub.com with config
    dolt config --global --add remotes.default_host doltlab.dolthub.com
    dolt config --global --add remotes.default_port 50051
    dolt config --global --add creds.add_url http://doltlab.dolthub.com/settings/credentials
    dolt config --global --add doltlab.insecure true
    dolt login
    
  • 3208: Allow local Dolt Clone
    Fix for: https://github.com/dolthub/dolt/issues/3184
    For some reason we use EmptyWorkingSet() (which has a TODO for it to be deleted/modified), instead of srcDB.ResolveWorkingSet().
    can't include /c/... before path on windows or it'll translate it to C:\c\Users\...
  • 3073: Add Tests to ensure default values are correctly interpreted in the information_schema.columns table
    this PR fixes NULL and EMPTY values were not being converted correctly when converting from Dolt schema
    previousy default value of NULL and "" (empty) was defined incorrectly
    > dolt sql -q "SELECT column_name, is_nullable, column_default FROM information_schema.columns WHERE table_name = 'mytable'" -r csv
    column_name,is_nullable,column_default
    i,NO,""
    s,YES,""""""
    somecol,YES,""
    col4,YES,""
    
    for table with schema:
    CREATE TABLE `mytable` (
    `i` bigint NOT NULL,
    `s` varchar(20) DEFAULT "",
    `somecol` int,
    `col4` bigint,
    PRIMARY KEY (`i`)
    )
    
  • 2790: Prepared statement GMS bump
    GMS dependency PR: https://github.com/dolthub/go-mysql-server/pull/795

go-mysql-server

  • 955: allow NULL value for geometry types
    Allow handling null values some geometry data types. For these types, DEFAULT NULL values should be allowed
  • 954: Allow arbitrary parameter count for external stored procedures
    If an overloaded function contains a variadic variant, that variant is only used if an exact match is not found.
  • 953: fixing geometry tests
    Fix for: https://github.com/dolthub/dolt/issues/3217
    Types returned should be wrapped in geometry.
  • 951: Added support for external stored procedures
    This adds support for hooking functions into the stored procedure system.
    There were two considerations for the implementation, and I felt this implementation is superior (using the reflect package). The other primary consideration was to expect a specific function signature that takes a map[string]interface{} representing each parameter, and there'd be another map[string]sql.Type returned in the loading function that specifies the type of each parameter. I didn't like that the types were interfaces, and their definitions declared elsewhere, as I'd rather the engine handle as much as possible. I'd prefer to have this all statically-enforced, but Go's type system is sadly not flexible enough, so this is the next best thing.
    The reflection logic is fairly straightforward, and there are many comments, so I'm not too concerned with this being hard to maintain at all.
  • 948: Allow insertion of negative numbers into auto_increment columns
    Fix for: https://github.com/dolthub/dolt/issues/3192
    Added an additional check to just not run auto_increment logic when value provided is less than the Zero() value for column.
    Small change to memory/table.go to stop incrementing the current autoIncVal when the provided value is strictly less than the current autoIncVal.
  • 943: Return correctly formatted column defaults in the information_schema.columns table
    The information_schema.columns contains the column column_default that represents the formatted string version of the column default. This correct representation is essential as tools (like table editors) use this column to generate representation of a table or their alter statements.
    This pr pushes the resolution of column defaults through the analyzer. Note that there are some open flaws
    1. The double quoting of literal column defaults
    2. The double parentheses for expressions due to improper parentheses handling in the codebase
    3. Missing backticks for columns. This is due to fact that all the way down to GetField for expressions we don't actually backtick the name. We should followup with a rewrite of the Column Default String method
      There should be subsequent followup work that simplifies string formatting with default values and expressions as a whole.
  • 939: ValidateJoinDepth rule; hard cutoff for > 12 table joins
    New analyzer rule validateJoinDepth that errors if we count more than 12 join leaves. Opaque node counting could be done more carefully.
    join search schema comparison was O(n^4) if i counted correctly, now should be more like O(n)
  • 935: update create view parsing and added definer var for create trigger stmt
    Updated CREATE VIEW parsing supporting algorithm, definer, security syntaxes, but does not support the functionality or affect create view query statement.
    Added Definer variable to Trigger.
    Added and updated engine tests covering these changes
  • 795: ComPrepare saves partial query plan
    Prepared statements hidden behind enable_prepared_statements config.
    Lacking:
    • Full support for versioned questions (select * asof '2021-03-21)). I fixed the panics, but many asof tests return incorrect results.
    • Window function parameters can't be bindVars currently (lag(x,?))
    • Needs a lot more insert ... select tests
      ComPrepare saves a partially optimized plan for prepared statements.
      Query execution will use the saved plan when possible. Connections have
      a private view of saved plans that are deleted on termination.
      All enginetests ran with prepared queries regarless of BindVar
      inclusion. Variety of bug fixes exposed by the prepared enginetests.

vitess

  • 153: Add additional syntax support for CREATE VIEW statement
    Added ALGORITHM=..., DEFINER=..., SQL SECURITY DEFINER|INVOKER syntaxes for CREATE VIEW statement.
    Fixed definer_opt to parse account_name instead of ID to support parsing of user@locahost syntax.
    Moved VIEW (non-reserved keyword) from non-reserved to reserved as non-reserved keywords are used for account_name parsing, so it creates shift/reduce conflict for view.
  • 152: support generated columns
    There is no functionality besides parsing.
    Fix for: https://github.com/dolthub/dolt/issues/3089
  • 151: Parser support for show create table <table> as of <asof>
    Adding support for parsing show create table <table> as of <asof>.
    Removing the OnTable field in Show struct that was duplicating the Table field.
    Two minor formatting fixes.

Closed Issues

  • 3184: "optimistic lock failed on database Root update"
  • 3179: Combining dolt and git repositories
  • 3192: AUTO_INCREMENT changes integer column types from signed to unsigned
  • 3117: Unsupported CREATE VIEW syntax
  • 3045: column_default column value of information_schema.columns table is incorrect
  • 3091: Allow for full host name to appear in CREATE DEFINER= for Procedures and Triggers
dolt - 0.38.0

Published by github-actions[bot] over 2 years ago

This is a minor feature release, containing new features, bug fixes, and performance improvements.

  • Support for describe table as of <version>
  • Support for show create table as of <version>
  • Support for GEOMETRY type
  • Support auto_increment on non-primary key columns
  • Large insert / update operations are now faster and consume less memory
  • Better information_schema table support
  • Fixed an error for certain filters on subqueries
  • Improved performance for analyzing joins
  • Improved query analysis performance

Please note: This release is backwards incompatible with older versions of dolt. Older versions of dolt are unable to read databases written by this version until they upgrade to this version or later.

Merged PRs

dolt

  • 3194: Bulk IEA flushes to disk periodically
  • 3193: Adding auto increment support for non-primary key columns
  • 3191: simplify Bulk IEA partials map
  • 3183: updating feature version test
  • 3182: go/store/datas: Use RefMap directly instead of copying all entries and doing a linear search.
  • 3176: Moved the bulk of foreign key processing into the SQL engine
    This removes a lot of the local code dealing with foreign keys, as it has been moved to the engine.
  • 3173: Implemented RowIter2 for relevant types to enable indexed point-lookup with new storage format
  • 3171: Fix panic when converting old triggers to new ones
  • 3158: .github: Add DOLT_DEV testing to GitHub CI.
  • 3141: Adding tests for 'show create table as of '
    Adds support for show create table as of <version>.
    Depends on:
  • 3140: Updated roadmap to match docs site
  • 3123: go/store/datas/pull: Use errgroup. Rewrite Stats publishing.
  • 3093: Adding Geometry type
  • 3082: Store created time for triggers
    Dolt changes necessary to actually display the trigger creation times.
    Migrations only happen after someone from an older Dolt version creates a new view/trigger.
  • 2818: Short Hash
    hashes can't contain any letters past 'v', as they don't encode/decode correctly.

go-mysql-server

  • 947: Update drop table tests to add primary keys, Add more ordering to JSON script test results
  • 946: enginetests: Added result ordering to a few more JSON script tests
  • 942: enginetest: Update JSON Scripts tests to add primary keys and ordered results
  • 941: Fixes unhashable filter bug, adds semantic validation starter
    Fixes unhashable filter bug.
    Adds improvement on semantic operand validation. Targetted checks easier
    to implement.
  • 940: Enable RowIter2 on IndexedTableAccess
    This is pretty limited and only works for static lookups, not joins, but is enough to benchmark with
    This change also does some refactoring of index analysis code, but no other functional changes
    Small bug fix to the String() method of SubstringIndex
  • 939: ValidateJoinDepth rule; hard cutoff for > 12 table joins
    New analyzer rule validateJoinDepth that errors if we count more than 12 join leaves. Opaque node counting could be done more carefully.
    join search schema comparison was O(n^4) if i counted correctly, now should be more like O(n)
  • 938: Quickperm, reduce join search memory usage
  • 936: Allow auto_increment on non-primary key columns
    Fix for: https://github.com/dolthub/dolt/issues/2981
    Since Unique Keys are not a part of sql.Schema and sql.Column, we need to check if there are any valid indexes defined over the columns we want to mark as auto_increment.
    Added skipped tests for queries that don't work.
    TODO:
    • Adding auto_increment adds NOT NULL constraint too
    • Support adding columns; need to be able to alter table t add column j int unique first
    • Autoincrement on keys defined over multiple columns; MySQL only allows leftmost column to be auto_incremented
  • 934: More transform and join tests
  • 932: Adding support for show create table <table> as of <version>
    Adds support for show create table <table> as of <version> to go-mysql-server
    Depends on:
  • 929: have _example/main.go work as expected
    Fixes: https://github.com/dolthub/go-mysql-server/issues/911
  • 867: TransformUp is now sensitive to tree modifications
    TransformUp and related node/expression DFS helper functions expect the
    visit functions to return an additional boolean parameter indicating
    whether the visit changed the node:
    type TransformNodeFunc func(Node) (Node, bool, error)
    type TransformExprFunc func(Expression) (Expression, bool, error)
    type Transformer func(TransformContext) (sql.Node, bool, error)
    
    TransformUp's implementation uses the modification information to avoid
    re-creating a node with identical children:
    BenchmarkTransformOld
    BenchmarkTransformOld-12          	  396544	      2782 ns/op	    3000 B/op	      51 allocs/op
    BenchmarkTransformOldNoEdit
    BenchmarkTransformOldNoEdit-12    	  407797	      2731 ns/op	    2936 B/op	      50 allocs/op
    BenchmarkTransformNew
    BenchmarkTransformNew-12          	 4584258	       254.1 ns/op	      96 B/op	       5 allocs/op
    BenchmarkTransformNewNoEdit
    BenchmarkTransformNewNoEdit-12       	 4782098	       237.8 ns/op	      96 B/op	       5 allocs/op
    
    We use plan.InspectUp when possible, and then plan.TransformUp
    where possible, resorting to the more expensive plan.TransformUpCtx
    and plan.TransformUpCtxSchema only when necessary.
  • 858: New Foreign Key Implementation
    Baseline PR containing foreign key progress. As foreign keys won't be ready to merge until they're fully completed, this PR will serve as the baseline that future foreign key PRs are based on, so that changes are digestible. Once a PR is approved, it will be added to this one. In addition, this serves as a synchronization point for merging main changes to manage conflicts.

vitess

  • 151: Parser support for show create table <table> as of <asof>
    Adding support for parsing show create table <table> as of <asof>.
    Removing the OnTable field in Show struct that was duplicating the Table field.
    Two minor formatting fixes.
  • 150: Parser support for describe table as of and show columns from table as of
    Adding parser support for describe <table> as of <asof> and show columns from <table> as of <asof>

Closed Issues

  • 3138: SQL syntax error registers as unhashable filter
  • 2981: Support Auto increment on non-primary key column with index
  • 3188: Unique constraint on table not preventing insert
  • 3061: Should Store Creation Time for Triggers
  • 3179: Combining dolt and git repositories
  • 3100: unbound variable in query (bug in 0.37.6 and after)
  • 3068: SQL: Geometry type support
  • 911: _example Failure to output