dolt

Dolt – Git for Data

APACHE-2.0 License

Downloads
2.4K
Stars
17.1K
Committers
143

Bot releases are visible (Hide)

dolt - 0.41.0

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

Merged PRs

dolt

  • 4285: trim byte order mark present in UTF-8 encoded files
    Closes: https://github.com/dolthub/dolt/issues/3790
  • 4284: add nil check for string pointers during dolt table import
    Closes: https://github.com/dolthub/dolt/issues/4209
  • 4283: fix enum panics in history table
    Closes: https://github.com/dolthub/dolt/issues/4279
    sql.enumtype contains a map, which in golang cannot be used in == operator
  • 4278: Escape columns and table names in conflict commands
    Fixes #4274
  • 4277: Adds dolt_merge_status system table
    Closes https://github.com/dolthub/dolt/issues/3504
    The dolt_merge_status system table tells a user if a merge is active. It has the following schema:
    CREATE TABLE `dolt_merge_status` (
    -- Whether a merge is currently active or not
    `is_merging` tinyint NOT NULL,
    -- The commit spec that was used to initiate the merge
    `source` text,
    -- The commit that the commit spec resolved to at the time of merge
    `source_commit` text,
    -- The target destination working set
    `target` text,
    -- A list of tables that have conflicts or constraint violations
    `unmerged_tables` text
    )
    
    For example, lets create a simple conflict:
    dolt sql -q "CREATE TABLE t (a INT PRIMARY KEY, b INT);"
    dolt add .
    dolt commit -am "base"
    dolt checkout -b right
    dolt sql <<SQL
    ALTER TABLE t ADD c INT;
    INSERT INTO t VALUES (1, 2, 1);
    SQL
    dolt commit -am "right"
    dolt checkout main
    dolt sql -q "INSERT INTO t values (1, 3);"
    dolt commit -am "left"
    dolt merge right
    
    Output of SELECT * from dolt_merge_status;:
    +------------+--------+----------------------------------+-----------------+-----------------+
    | is_merging | source | source_commit                    | target          | unmerged_tables |
    +------------+--------+----------------------------------+-----------------+-----------------+
    | true       | right  | fbghslue1k9cfgbi00ti4r8417frgbca | refs/heads/main | t               |
    +------------+--------+----------------------------------+-----------------+-----------------+
    
  • 4276: Automatically push and pull new databases in replicated servers
  • 4273: go/utils/remotesrv: Add a -read-only flag for exposing a remote endpoint that rejects write requests.
  • 4271: rCTEs GMS bump
  • 4264: go/utils/remotesrv: Add -repo-mode to run a remote server for the primary database in a dolt cli working directory.
  • 4262: PartitionRows lookupBuilder access race
    del extra line
  • 4259: [store/prolly] Add key range machinery
    Adds functions to support operating on a physical key range.
    Continuation of #4247 and #4258
  • 4257: unskipping commit DiffSystemTableTests
  • 4255: allow init with empty working set
    In sql session, if the current head on CLI is deleted, the repostate head is empty branch ref.
    If the current head on CLI is renamed, the repostate head is updated with new branch ref.
    dolt_branches table is read-only now.
  • 4252: unskip tests for bindvars in filters for history tables and table functions
  • 4251: go/utils/remotesrv: Improve memory safety and scalability of remotesrv.
    Fixes a race condition in the way the gRPC implementation stores data for the HTTP server to see on future requests.
    Fixes a memory utilization issue where the full contents of a written table file were read into memory before being persisted to disk.
  • 4250: go/doltcore/migrate: Migrate oldgen manifest in dolt migrate
    fixes https://github.com/dolthub/dolt/issues/4234
  • 4243: use commitItr instead of commitwalk for querying dolt_diff table
    This improves select query on unscoped dolt_diff table in old format for commit_hash column filter
  • 4242: unskipping tests for prepareds on dolt diff tables
    Unskipping:
  • 4210: Fix dolt version error when repo state is missing
    Fixes #4154
    Not sure if tests are required for this?
  • 4179: moving prepared history table test out of broken
    Companion PR:

go-mysql-server

  • 1240: Additional fixes to collation coercion
    Coercion rules specify that Unicode and non-Unicode characters may the Unicode collation applied in the event that they're being compared, concatenated, etc. I'm not exactly sure how to determine what a "Unicode" collation is, so I'm assuming that all collations that use more than one byte are Unicode. I can almost guarantee that this is incorrect, however it's a better approximation of behavior than not considering it at all.
  • 1238: Added limited support for collation coercibility
    This adds a sort of "fix" for the first issue identified in https://github.com/dolthub/go-mysql-server/issues/1232. This is basically a hack for collation coercibility, which is a significant undertaking. This should suffice in the meantime.
  • 1231: Return errors instead of asserting inside runQueryPrepared
    Test PR:
  • 1230: fix applying bindvars to filters and table functions
    Changes:
  • 1229: fix filters being dropped from prepareds on dolt_diff tables
    TransformProjections was not transferring filters from certain prepared plans that did not contain projections.
    Fix for
  • 1228: Resolve CTEs ignored recursive changes
    fixes regression where we do not propagate nested changes in cte resolve
  • 1227: Fixed collation error message, added more collations
    Fixes https://github.com/dolthub/dolt/issues/4236, in addition to adding two new collations:
    • utf8mb3_unicode_ci
    • utf8mb4_unicode_520_ci
  • 1226: recursive ctes resolve limit filter sort
    General outline:
    1. Union nodes absorb LIMIT, ORDERBY, and DISTINCT logic
    2. Recursive CTEs embed a UNION node, and the analyzer treats them the same for the most part
    3. Rewrite resolve_cte to bridge the gap between WITH -> rCTE -> UNION nodes
      Re: (1), Union is basically collapsed into a single node. I think all scopes should probably look like this longterm for a few reasons. Adding an attribute grammar for resolving tables and columns becomes a lot easier. Transformation rules are simpler because they do not have to see through the tree within a scope. Logical nodes can be separate from physical nodes. Moving from a tree to a hash map of logical nodes is the main way of doing costed planning.
      Re: (2), the easiest way to support arbitrary left/right nodes in recursive ctes is to try to run the regular analyzer on them. Notably, MySQL prevents many types of top-level nodes in rCTEs, which we have not prevented yet. For example, GROUPYBY, ORDERBY, LIMIT are not permitted in the middle of an rCTE (I think because the results are ambiguous). We do not error on those right now, but maybe should in a follow-up PR.
      Re: (3), rCTEs are structurally parsed as Unions, and can be resolved like unions in most of the analyzer, but we need several manual steps to address the ways rCTEs are functionally different. rCTEs should be separated into recursive and non-recursive chains of UNIONs (refer to Aaron's comment). If a rCTE has no recursive portions, we convert to a regular CTE. We manually resolve references to the recursive binding, converting them from UnresolvedTable to RecursiveTable. There is a chicken and egg problem where we have to resolve the left-side of the union before we can construct and apply a schema'd RecursiveTable to the right.
  • 1212: fix more prepared enginetests
    Moved these rules to run during preprepared, as the explain queries for history table were missing Exchange node
  • 1202: moveJoinConditionsToFilter bug
    The move join condition rule selects filters not needed as a join condition, identify the target parent for the filter, and then moves the plucked filters to EVERY child of the parent of the join node. The correct behavior is to move the filter immediately above the join whose condition we plucked the filter from.

vitess

  • 187: CTEs on unions parse
  • 186: add implicit from dual to select x in recursive cte statements

Closed Issues

  • 4209: panic on import
  • 4274: Can't dolt conflict on a database with a column with a : in it
  • 4125: Automatically replicate newly created databases
  • 3504: dolt_merge_state system table
  • 3790: Dolt table importing csv using UTF-8 with BOM encoding prepends BOM (U+FEFF) to first column's name
  • 4279: dolt_history_<table> panics on enum types
  • 4232: Optimize dolt_diff system table access when scoped to a commit
  • 4248: Deleting the branch you have checked out on the CLI in sql-server mode makes database unusable
  • 4234: oldgen and newgen chunkstore versions vary error after dolt migrate
  • 4169: Django App Fails to Migrate with Global AUTO_INCREMENT Keys
  • 3916: Prepared statement Issue with dolt_diff_<table>
  • 4154: dolt version errors when run from directory containing DOLT_ROOT_PATH
  • 4175: dolt panics on importing parquet file
  • 4109: unexpected "table does not have column" error
  • 3995: System Table Performance Investigation
  • 3976: sql_mode is always strict
  • 4211: Inserting large JSON object in a prepared statement causes panic
  • 4007: Make Dolt work with Fivetran through its MySQL connector
  • 3800: nodejs concurrency issue
  • 3858: Connecting to a dolt sql-server with InnoDb MySQL client may fail if a table uses special characters like hyphen
  • 3836: INSERT IGNORE INTO throws duplicate unique key given for keyless tables
  • 3811: PHP PDO issue with float data type
  • 3650: Dolt Diff across all tables
  • 3566: Panic accessing information_schema when mixing old and new storage formats
  • 4230: cte table not found when using limit
  • 4222: Can't build dolt with LTO
  • 3468: Dolt diff does not show diff inside JSON
  • 3405: (sql-client) shortcut to navigate cursor to next word
  • 3222: Newlines in data exported from sql query
  • 3198: [REQUEST] Option to output sql generated by dolt diff
  • 3150: Dolt may fail to push on slow internet connections
  • 1219: How can i change the log level?
dolt - 0.40.32

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

Merged PRs

dolt

  • 4229: go/doltcore/sqle/globalstate: Reset AUTO_INCREMENT sequence to 1 on table drop
  • 4206: fix wrong error variable used

go-mysql-server

  • 1227: Fixed collation error message, added more collations
    Fixes https://github.com/dolthub/dolt/issues/4236, in addition to adding two new collations:
    • utf8mb3_unicode_ci
    • utf8mb4_unicode_520_ci
  • 1225: Hoist CTEs above Filter, Limit, OrderBy, and Having
  • 1224: SET NAMES collation fix, results have proper charset
    Fixes two issues. SET NAMES would cause all statements that feature a COLLATE expression to error if the character set and collation did not match, however such a comparison only makes sense for string literals (at parse time). This has been fixed, as the parse-time check only occurs for literals, and checks that require analysis (such as table columns) now occur at the appropriate time. In addition, the system variable character_set_results was not used when returning string results, resulting in unexpected behavior, which has also been fixed.
  • 1223: fix infinite recursion during cte self-reference
    Changes:

Closed Issues

  • 3142: Dolt pull using 90% of memory
  • 3111: Start supporting the mysql database
  • 3087: unknown push error When pushing a branch with a 20,000 commits to DoltHub
  • 3064: trying to drop a column used in a foreign key gives a bad error message
  • 3051: CREATE TABLE with RESERVED KEYWORD status breaks
  • 2820: Using --continue flag for dolt table import -u doesn't add any rows
  • 2808: Support minio as remote storage
  • 2756: set root password in SQL session without removing administrator password
  • 2723: DOLT_CHECKOUT('-b', 'newbranch) should take working set changes to new branch
  • 2673: Reorder of columns in UNIQUE INDEX when re-create table
  • 2637: Dolt SQL shell can't handle semicolons in comments
  • 2600: dolt diff does not show schema changes when modifying constraints
  • 2594: Dropping and readding constraints generates schema diff
  • 2591: dolt constraints should be exposed in the top level dolt help text
  • 4173: Query crashes SQL server
  • 4236: Bad collation Error Message
  • 4222: Can't build dolt with LTO
  • 2398: panic for dolt_diff tables when in detached head mode
  • 4103: dolt ls --verbose panics in the new format
  • 4123: count(*) in new format 3X slower for large table
  • 2359: CLI supports param for different working directory
  • 2335: Identical schema alterations results in two different columns with same tag error on merge
  • 2328: dolt pull -f fails when dolt fetch -f works && dolt branch main remotes/origin/main -f works
  • 2315: DOLT_MERGE should return detailed error
  • 2311: Tableplus can't detect Table
  • 2306: daemon mode
  • 2305: confusing error message when selecting from conflict tables with @@autocommit = true
  • 2304: Reverse order between from_commit and to_commit of "dolt_commit_diff_$table" will throw out exception and code stack
  • 2296: Prevent branch deletion when another client has a session open on it
  • 2292: [Feature Request] Progress Indicators for GC
  • 2286: Dolt errors out on table definitions that use a UNIQUE KEY and KEY on the same column
  • 2283: [Feature Request] Progress indicator for merges
  • 2275: golang go-sql-driver/mysql does't work with Multiple HEADs
  • 2260: Can't connect with Visual Studio MySQL Connector
  • 2181: dolt table import -u <table> slows down almost 20x after only five imports of ~20k rows
  • 2118: dolt import table Foreign Key NOT NULL violation error is not helpful
  • 2070: Dolt doesn't respect primary key for sort order
  • 2018: Deleting branch does not delete associated working set
  • 1708: Feature request: show status during dolt sql edits
  • 1561: Django multi-table inheritance: duplicate primary key error on edit
  • 1318: When checking out via SQL, views don't automatically update
  • 1010: Show progress on dolt schema import
  • 655: Dolt SQL vs MySQL client: MySQL client right justifies number columns
  • 407: Weird group by behavior
  • 1096: go 1.17 support
dolt - 0.40.31

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

Merged PRs

dolt

  • 4228: Make dolt conflicts resolve $tbl --theirs faster
    dolt conflicts resolve $tbl --theirs previously took too long as it used a nested for-loop query. That query has been replaced with some out-of-engine machinery.
  • 4224: Added skipped tests for charcter set matching tests back
    These tests can be unskipped when https://github.com/dolthub/go-mysql-server/pull/1224 makes it into Dolt.
  • 4215: Secondary lookup cursor reuse
    Locally on OSX index_join_scan goes from 3.4ms/q -> 2.5ms/q.
  • 4202: go/store/prolly: Added map.FetchOrdinalRange to utilize batch chunk reads on scans

go-mysql-server

  • 1224: SET NAMES collation fix, results have proper charset
    Fixes two issues. SET NAMES would cause all statements that feature a COLLATE expression to error if the character set and collation did not match, however such a comparison only makes sense for string literals (at parse time). This has been fixed, as the parse-time check only occurs for literals, and checks that require analysis (such as table columns) now occur at the appropriate time. In addition, the system variable character_set_results was not used when returning string results, resulting in unexpected behavior, which has also been fixed.
  • 1222: use float input as str for decimal type
    The scale of float input in INSERT statement gets rounded when converting to float64 value.
    The scale of input for DECIMAL data type should not be rounded.
  • 1221: 1 % 0 should not panic but return NULL
    From https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_mod:

    MOD(N,0) returns NULL.

  • 1217: any number of column is allowed for where exists subquery
    Any number of column from the subquery is allowed. The result of WHERE EXISTS subquery is dependent on the number of rows rather than the number of columns
    Fix for https://github.com/dolthub/dolt/issues/3772
  • 1216: fix infinite recursion for recursive cte used with union subquery
    Changes:
  • 1215: Collation fixes
    Fixes the following issues:

vitess

  • 186: add implicit from dual to select x in recursive cte statements
  • 173: parse json_table syntax
    TODO:
    • NESTED
    • FOR ORDINALITY
    • ON EMPTY
    • ON ERROR

Closed Issues

  • 4199: No results with WHERE IS NOT NULL on a datetime field
  • 1218: The Decimal type treats the same value with different input format differently
dolt - 0.40.30

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

Merged PRs

dolt

  • 4221: Bug fix for Tuple.Compare to return consistent results when comparing against a null value
    Tuple.Compare / Tuple.Less returns inconsistent results when comparing different types against a null value. This caused non-null values for most types to be ordered before null values, but other types like time/date/datetime to have non-null values after null values in the index. That resulted in incorrect query execution because the index range reader saw the null values and exited out before ever evaluating the non-null values.
    Fixes: https://github.com/dolthub/dolt/issues/4199
  • 4214: Updating arg docs for dolt commit -a
    Quick arg doc update for behavior change in: https://github.com/dolthub/dolt/pull/4161
  • 4208: go/store/nbs: byte_sink.go: Fix panic in some cases when we retry table file upload in push.
    The buffered byte sink finish() implementation was expected to only be called,
    but Reader() could be called multiple times for a retried upload.
  • 4201: proto,go/.../remotestorage: Add repo_token support.
    doltremoteapi can return an opaque token which makes it cheaper to access the repository compared to just using the RepoId. This updates protos and remotestorage implementation to cache that token and use it for future accesses of the same repository.
  • 4198: Various changes for the __DOLT__ bounty scoreboard
  • 4197: Add support for ancestor references in database revision specifiers
    Enables use of ~ and ^ to reference ancestors in database revision specifiers.
    Fixes: https://github.com/dolthub/dolt/issues/2146
  • 4196: Add support for table-level collations
    This is the Dolt side of https://github.com/dolthub/go-mysql-server/pull/1215.
  • 4194: Support json output for dolt diff
    Fixes https://github.com/dolthub/dolt/issues/2243
  • 4193: create db with specific format depending on currentDB format
    CREATE DATABASE on new-format DB should create DB with new-format(same format as the currentDB)
  • 4177: Bats tests for charsets and collations
    This is a first pass and includes skipped tests for the bugs: #4172, #4170, #4168
  • 4161: dolt commit -a ignores new tables
    Fixes #4133.
    This PR will fix the -a flag in dolt commit committing new tables.
    The bulk of this PR is fixing old integration tests, as many of them assumes the old behavior of dolt commit -am.

go-mysql-server

Closed Issues

  • 4199: No results with WHERE IS NOT NULL on a datetime field
  • 2146: Support more revision spec in database names
  • 4200: recursive cte used inside a union overflow
  • 4212: Using files that define JSON with dolt sql --file or dolt sql < results in weird error at position 2
  • 3772: WHERE EXISTS ( SELECT * ... ) returns operand should have 1 columns, but has n
  • 4133: In thedolt commit, the -a option adds new tables, not just modified or deleted ones.
  • 4168: Defining Charset and Collation in table specification not supported
  • 4172: Panic when using latin1 charset and latin1_german1_ci collation
  • 2243: dolt diff output format
  • 4159: starting sql-server in new format db starts old format
  • 4182: Unresolved Column panic
  • 4183: Column Resolution errors with Table Aliases
dolt - 0.40.29

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

Merged PRs

dolt

  • 4189: Deprecate git-dolt and git-dolt-smudge
    Versioning a Dolt repository in a Git repository does not make much sense in our current product conceit. These products were lacking features and unmaintained. So, we're deprecating them.
  • 4181: Migrate TEXT, BLOB index keys by converting them VARCHAR, VARBINARY
  • 4163: adding missing test cases for prepared tests
    Companion PR:

go-mysql-server

  • 1213: Show all currently-implemented charsets with default collations
  • 1211: fix str_to_date to returns time or date or datetime type results
    STR_TO_DATE() returns result type depending on Date given in the query. If only date parts like year, month and/or day was defined in Date argument, then the result is only Date type without time parts. If Date defined is date with time, then Datetime type is returned.
    Currently, STR_TO_DATE allows zero-date.
  • 1207: fix some filters being dropped from history tables
    Changes:
    • run pruneTables in prePreparedSelector, to transfer projections correctly
    • added Filters() getter into sql.FilteredTables interface
    • transferProjections also copies over table filters
      Test PR:
    • https://github.com/dolthub/dolt/pull/4163
  • 1183: index lookup refactor
    New implementation divides lookup management into analysis and exec components. During analysis, *plan.IndexedTableAccess embeds an IndexedTable. The IndexLookup itself is static, dynamic lookups will be passed multiple lookup objects at exec time.
    type IndexLookup struct {
    fmt.Stringer
    Index  Index
    Ranges RangeCollection
    }
    type IndexAddressable interface {
    // AsIndexedAccess returns a table that can perform scans constrained to an IndexLookup
    AsIndexedAccess(Index) IndexedTable
    // GetIndexes returns an array of this table's Indexes
    GetIndexes(ctx *Context) ([]Index, error)
    }
    type IndexAddressableTable interface {
    Table
    IndexAddressable
    }
    type IndexedTable interface {
    Table
    // LookupPartitions returns partitions scanned by the given IndexLookup
    LookupPartitions(*Context, IndexLookup) (PartitionIter, error)
    }
    
    Minimal changes to DriverIndexedLookup and ForeignKeyUpdater to accommodate changes.

Closed Issues

  • 4128: STR_TO_DATE() returns DATETIME even when just DATE is expected
  • 3086: support HEAD~ ref syntax for connection string / USE statements
  • 4149: Dolt commands output success logs to stderr
  • 4178: Support SHOW CHARACTER SET
  • 4025: [Feature Request] use a recursive cte result in an update
  • 4126: Support for RANK() and DENSE_RANK() window functions
  • 2163: Support JSON_TABLE() function
  • 2170: Missing indexes when join condition uses extra conditions
  • 1613: Git-Dolt: Multiple invocations of git dolt install should not re-append to files
  • 1612: Git-Dolt: git dolt update should use the dolt HEAD revision by default
  • 163: dolt blame should provide an option to ignore schema changes in the history that did not affect the final row state.
  • 427: Dolt commit doesn't work with sublime as $EDITOR
  • 991: Excel Query Broken
  • 1028: [Bug Report] Segfault When Cloning Repo From Self-Compiled Dolt on Raspberry Pi
  • 1235: panic: star is just a placeholder node, but Eval was called - 0.22.8
  • 1846: Bit type doesn't render on Tableplus
  • 2123: dolt add . regression related to license file
  • 2039: diffs displayed incorrectly
  • 2099: SQL column names should not be case sensitive
  • 2209: Row History command fails on db
  • 2246: dolt checkout will stomp uncommitted changes on another branch
  • 2668: Autocommit blocks access to conflict resolution table
  • 2905: Investigate Statement Level atomicity for the import path
  • 2976: Support DEFAULT CHARACTER SET in CREATE TABLE statements
  • 3049: Support the following SHOW statements
  • 3088: Inserting into foreign key table causes crash
  • 3156: Retry failed clone / pull operations using already cached information
  • 3162: Remove db.Rebase() from dsess.StartTransaction
  • 3212: dolt sql -q gives different results from dolt sql --file
  • 3292: Color bug is back after latest release
  • 3227: Dolt sql csv output ignores filename case
  • 3373: Globally distinct auto increment keys in server
  • 3416: Confused by renaming to a previously used name.
  • 3795: CLI commands should be equivalent of starting a new session, running equivalent stored procedure, and closing session
  • 3940: dolt panic when using cli from dbs directory
  • 1144: tagname containing dots not supported
  • 4141: Window function ORDER BY should be optional when frame specification doesn't require it
  • 1153: proposal: Refactor Indexed Table Access
dolt - 0.40.28

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

Merged PRs

dolt

  • 4171: version in server metrics
  • 4167: Skipping a sql-server test that's been hanging for hours in CI
  • 4162: Index lookup refactor
  • 4157: Privileges bats first pass. Refactor server_query bats helper.
    In addition to some basic privileges tests, this PR refactors the server_query function apparatus. A single server_query function replaces all helper functions including multi_query, insert_query, server_query_with_user, etc. This single interface removes a bunch of duplicate code in query-server-common.bash making everything easier to maintain.
    You now need to pass user and password to server_query which required changing everywhere in bats where server_query and all of its duplicates were called.
  • 4156: Allows diff to be performed across primary key renames
  • 4151: set upstream from sql session
    dolt_checkout() and dolt_push() sets upstream that persists outside of sql session
  • 4146: Revamped ref name validation to allow the '.' character
    This means that parsing noms paths into objects like structs, maps, etc. no longer works, so deleted code that relies on that functionality.
  • 4145: Add prolly.RangeDiffMaps
    This PR adds prolly.RangeDiffMaps which can be used to get the diffs between two prolly map within a certain key range.
  • 4142: Bump @actions/core from 1.2.6 to 1.9.1 in /.github/actions/ses-email-action
    Bumps @actions/core from 1.2.6 to 1.9.1.
  • 4116: Fix dolt diff --limit
    Closes #4078.
  • 4106: go/{store,libraries,gen}: Adopt new flatc, throw an error if we enconter unknown fields.
  • 4105: commit merge if no conflict
    This PR implements performing dolt commit if merge is not fast forward and there is no conflict and constraint violation
    It adds --commit, --no-commit and --no-edit flag options for both dolt merge and dolt pull.
    Same conditions apply for dolt pull merging a remote branch into current working set.
    Dolt merge does not log commit after committing successful merge.
  • 4102: Various fixes for database revision specifiers
    Changing revision databases to be instantiated on-demand, instead of trying to track them in DoltDatabaseProvider. This simplifies how we manage revision databases and avoids revision dbs hanging around in memory after customers are done using them. The biggest UI changes for customers is that show databases will now no longer show all revision dbs that have ever been used, but instead will only include the single revision database a customer is currently using.
    Fixes: https://github.com/dolthub/dolt/issues/4067
    Fixes: https://github.com/dolthub/dolt/issues/4031
  • 4050: Add amend option for commit
    This PR adds the ability to amend the commit at HEAD. It accomplishes this by first soft resetting to HEAD~1 before applying the new commit. Empty new amended commits are allowed to support the original use case of changing the commit messages of previous commits.
    Note that this PR does not add the amend feature to the SQL stored procedures.
    Fixes #2338

go-mysql-server

  • 1208: Handle IN expressions with NULL values for string typed columns
    fixes string assertion panic here
  • 1206: Fix alias error that should qualify correctly
  • 1205: Fixed inability to drop user without host being specified
    Fixes github.com/dolthub/issues/4135
  • 1204: Fix timestamp comparisons and add regression test

    Summary

    This PR fixes another regression introduced by #1061. That PR altered the way that timestamps are represented internally (they went from string to []byte) without updating all of the locations where the previous representation was assumed.
    The particular regression this PR fixes deals with timestamp comparisons. A test like
    CREATE TABLE mytable (t TIMESTAMP);
    INSERT INTO mytable (t) VALUES ('1990-01-01'), ('2020-01-01');
    SELECT COUNT(1) FROM mytable WHERE t > '2000-01-01';
    
    should return 1, but today it returns 2.
    The core issue is that the filter (e.g., WHERE t > '2000-01-01') needs to compare timestamps. That comparison logic has type coercion, but the type coercion only knows how to coerce a string into a timestamp, and it is now being handed a []byte.
    The fix here is two-fold:
    1. increase the priority of timestamp type coercion so that it takes precedence over binary coercion
    2. ensure that the convertValue function correctly converts []byte into timestamps (and dates)

    Motivation

    https://github.com/dolthub/go-mysql-server/issues/1139
    This is not strictly speaking the same issue, but something wonky is going on with timestamps and I'd like to get to the bottom of it, and then fix it "for good".
  • 1203: Stop requiring order by clause for range frames that only use unbounded preceding/following and current row
    We were requiring the order by clause for all range frame queries, but it is optional when the frame only uses unbounded preceding/following and current row.
    Fixes: https://github.com/dolthub/dolt/issues/4141
  • 1201: Add end-to-end tests for timestamp insertion, and patch the conversion issue

    Summary

    This PR introduces an e2etests/ directory with "end to end" tests:
    • set up a memory engine
    • start the server
    • connect using the normal Go mysql driver
    • execute queries
      This can catch issues that a unit test against the engine itself cannot.
      There is only a single test thus far, and it is fairly verbose. I know that there is at least one more issue with timestamps, and I will open a follow-up PR to address that issue as soon as I track down its source. For now I'm opting for clarity rather than code reusability.
      Lastly, this PR introduces a little patch to the timestamp conversion logic, which was accidentally broken in https://github.com/dolthub/go-mysql-server/pull/1061 because it only handles string but the server layer now passes it []byte. This patch is very dumb and simple: just convert []byte to string before parsing.

    Motivation

    https://github.com/dolthub/go-mysql-server/issues/1139
  • 1199: adding support for RANK and DENSE_RANK
    Fix for:
  • 1194: Support Anonymous User
    Fixes https://github.com/dolthub/dolt/issues/4090
  • 1192: support CONV() function
    Fix for https://github.com/dolthub/dolt/issues/4099
  • 1168: Add a series of skipped tests related to functionality gaps

Closed Issues

  • 3773: merge should create a commit when are no conflicts
  • 4031: Drop revision database from SQL
  • 4067: Calling dolt_checkout after use [db]/[commit] panics
  • 2338: dolt commit --amend to amend commit messages
  • 4078: diff limit flag ignored
  • 4141: Window function ORDER BY should be optional when frame specification doesn't require it
  • 4098: Support BIT_XOR() SQL Function
  • 4139: Support CAST() as alternative to CONVERT()
  • 4135: drop user without a host should default to %
  • 4090: Dolt does not support an "anonymous user"
  • 4079: Starting dolt as a sql server specifying user and host parameter creates a user at the host as defined. This should be the % default.
  • 4099: Support CONV() SQL function
  • 4057: Implicit type conversion for InSubquery
  • 1139: Error with passing time.Time as a field for saving
dolt - 0.40.27

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

Merged PRs

dolt

  • 4122: Burlier tests for multi-db replication
  • 4121: Update README to reflect socket interface release
    Socket interface supported but not on by default.
  • 4113: fix broken DOLT_DEV engine tests
  • 4112: Use multiple node stores in orderedTree diff
  • 4110: sql-server host shouldn't affect default superuser
    fix for: https://github.com/dolthub/dolt/issues/4079
  • 4100: Adding a skipped bats test for dolt_reset being disallowed in read-only mode
    We had a skipped BATS test for dolt_commit being disallowed, but dolt_reset also needs one since it modifies the branch HEAD.
  • 4091: Lock new databases where source db is locked
  • 4071: global auto increment tracking

go-mysql-server

  • 1198: adding implicit type conversion to in <subquery> statements
    fix for: https://github.com/dolthub/dolt/issues/4057
  • 1197: Indexed joins range scans ignore non-equalities
    When building index lookups, do not about when we see non-equality expressions. Instead, continue with the equality subset.
    Ex:
    SELECT pk,i,f FROM one_pk RIGHT JOIN niltable ON pk=i and pk > 0
    -	RightJoin((one_pk.pk = niltable.i) AND (one_pk.pk > 0))
    -	 	├─ Table(one_pk)
    -		 │   └─ columns: [pk]
    -		 └─ Table(niltable)
    -		     └─ columns: [i f]
    +	Project(one_pk.pk, niltable.i, niltable.f)
    +	     └─ RightIndexedJoin((one_pk.pk = niltable.i) AND (one_pk.pk > 0))
    +		     ├─ Table(niltable)
    +		     │   └─ columns: [i f]
    +		     └─ IndexedTableAccess(one_pk)
    +		         ├─ index: [one_pk.pk]
    +		        └─ columns: [pk]
    
  • 1195: SkipResultsCheck logic for TestScriptPrepared
  • 1193: Fixed typos in engine tests (skipped tests not actually getting skipped)
  • 1190: add support for BIT_AND, BIT_OR, and BIT_XOR functions
    fix for: https://github.com/dolthub/dolt/issues/4098
  • 1189: Fixed Privilege-Related Issues
    Fixes the following issues:
  • 1188: Bug fix for recursive view definitions causing stack overflow during analysis
  • 1182: Use literal for Enum/set default
    Currently enum / set default value will be evaluated(converted to int) and store in information_schema, think better to leave as their literals.
    PS: I'm also investigating if this issue related to #1131
  • 1179: Preserve original enum value case on retrieval
    When retrieving enum values for ShowCreateTable,Information_Schema.Columns, and Describe/ShowColumns, they were always being converted to lowercase, which doesn't match MySQL's behavior. Instead, we should preserve the case each enum value was defined with, whenever we return those values.
    This did not affect enum values returned as part of table data – these values were already correctly preserving the originally defined case.
    Fixes: https://github.com/dolthub/dolt/issues/3991
    Fixes: https://github.com/dolthub/go-mysql-server/issues/1161
  • 1174: sql/analyzer: Update Index Selection heuristics to prioritize Primary Key indexes
    In Dolt, this increases out TPC-C throughput by 2x for the new NBF.
  • 1142: adding json_table function
    Adds some support for json_table function, which generates a table given a JSON string and column definitions.
    Fix for: https://github.com/dolthub/dolt/issues/2163
    TODO:
    • NESTED
    • FOR ORDINALITY
    • ON EMPTY
    • ON ERROR

vitess

  • 185: add support for grant all privileges to <user>
  • 173: parse json_table syntax
    TODO:
    • NESTED
    • FOR ORDINALITY
    • ON EMPTY
    • ON ERROR

Closed Issues

  • 4083: No server.lock file created for databases created after server start
  • 4034: enum values should honor collation
  • 2162: Length of CHAR and VARCHAR types appears to pertain to physical representation
  • 2161: Support case-insensitive collation utf8mb4_general_ci
  • 4081: After the mysql database is populated, it should show up in SHOW DATABASES if you have permission to see it
  • 4082: Bad error message on malformed delete user
  • 4085: Nil pointer dereference for create user 'foo'@'%' identified by ''
  • 2391: Case of enum literals lost in information schema
  • 3991: Add support for case-sensitive text in ENUM options
  • 1161: ENUM values are always lowercased regardless of actual case
dolt - 0.40.26

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

This release supports collations and charsets in the new __DOLT__ format. To create a database in the new format, run dolt init --new-format. The new format is about 3X faster than the original __LD_1__ format.

Merged PRs

dolt

  • 4097: Fix for diffing across Dolt databases
  • 4093: allow optional empty value for string value for arg parsing
    --socket flag can be defined without value, which should get default value of /tmp/mysql.sock
    To allow empty string as value, added a new arg option type.
  • 4089: don't overwrite parent's .doltcfg if current is missing
    fixes: https://github.com/dolthub/dolt/issues/4088
  • 4087: go/store/{nbs,datas/pull}: Fix race condition in concurrent pulls which can truncate a table file.
  • 4073: Preserve enum value case when emitting type metadata
    Depends on: https://github.com/dolthub/go-mysql-server/pull/1179
  • 4070: Prevent use [db]/[tag] from creating duplicate revision db
    Fixes https://github.com/dolthub/dolt/issues/4030
  • 4061: Index Builder more efficient for secondary lookups
  • 4051: Real Collation Support
    This PR adds real collation support to Dolt, primarily through the new __DOLT__ format. The old format does not intentionally support collations, however general GMS improvements do have some effect on the correctness of the old format.
    Related PR: https://github.com/dolthub/go-mysql-server/pull/1147

go-mysql-server

  • 1185: empty host is any host
    Fixes issue where empty string for host should be "%".
    Context: https://github.com/dolthub/go-mysql-server/pull/1151#discussion_r938253888
  • 1184: Added more wire tests for collations
  • 1179: Preserve original enum value case on retrieval
    When retrieving enum values for ShowCreateTable,Information_Schema.Columns, and Describe/ShowColumns, they were always being converted to lowercase, which doesn't match MySQL's behavior. Instead, we should preserve the case each enum value was defined with, whenever we return those values.
    This did not affect enum values returned as part of table data – these values were already correctly preserving the originally defined case.
    Fixes: https://github.com/dolthub/dolt/issues/3991
    Fixes: https://github.com/dolthub/go-mysql-server/issues/1161
  • 1177: Secondary Lookup Range Templates
    Do not use the IndexBuilder for secondary lookups. Directly create the equality ranges and/or nullable filters.
    index_join_scan latency change locally on OXS: 4.8ms -> 3.8 ms (-20%).
    No interface changes, regular Dolt bump passes at the time the PR was created.
  • 1147: Real Collation Support
    This PR adds true support for collations. Most of the files in the encodings package were generated from collation-extractor, and thus inflate the overall line count.
    Many tests have been implemented, however I do plan on replicating most of the engine tests over the wire, but I do not feel that that is a blocker (just additional validation).

vitess

  • 185: add support for grant all privileges to <user>
  • 183: resolving unreserved keyword inconsistencies with MySQL
    Tests have been updated to document the inconsistencies below.
    Changes:
    • unreserved many keywords
    • allow reserved keywords to be used as identifiers when they are qualified
      Words that parse in dolt, but don't in MySQL:
    • dual
    • minute_second
      Words that don't parse in dolt (only in quries that use these in where conditions), but do in MySQL:
    • escape
    • next
    • off
    • sql_cache
    • sql_no_cache
      Fix for: https://github.com/dolthub/dolt/issues/3977

Closed Issues

  • 4088: dolt sql-server does not look in parent directory (as per spec) for .doltcfg
  • 2161: Support case-insensitive collation utf8mb4_general_ci
  • 3985: --socket option says it defaults to /tmp/mysql.sock but it does not
  • 4074: Update query has matches but no rows changed -- parser bug?
  • 3991: Add support for case-sensitive text in ENUM options
  • 3948: granting all privileges leads to syntax error
  • 4030: Creating a tag at commit that already exists in databases list and then calling use db/tag overloads procedures
  • 3217: TestSpatialQueries in Dolt
  • 3979: Dolt insists reserved words are always quoted
  • 1091: expose JoinComplexityLimit system variable
dolt - 0.40.25

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

Merged PRs

dolt

  • 4068: Add storage format information to dolt version and add new sql function dolt_storage_format(). Add dolt init --new-format
    • Adds --new-format to dolt init. For example:
    $ dolt init --new-format
    
    • Adds storage format information to dolt version. For example:
    $ dolt version
    dolt version 0.40.24
    database storage format: OLD ( __LD_1__ )
    
    We considered making a separate command called dolt storage_format, but decided against it to promote discoverability of the current storage format that dolt is using.
    • Adds a new sql function that returns the format used by the currently selected database. For example:
    > SELECT dolt_storage_format();
    +-----------------------+
    | dolt_storage_format() |
    +-----------------------+
    | NEW ( __DOLT__ )      |
    +-----------------------+
    
    • dolt_version() is unchanged:
    > SELECT dolt_version();
    +----------------+
    | dolt_version() |
    +----------------+
    | 0.40.24        |
    +----------------+
    
    In the SQL context, we decided to display the storage format in a new function. The reasoning is partly due to the fact that MySQL functions do not support multiple return columns and partly to make parsing either the dolt version or storage format by clients easy.
  • 4066: Fixed flakey history table test
  • 4064: go/store/prolly: Fix race in diffOrderedTrees
  • 4048: Clean up the import benchmarker notes
  • 4021: Refactoring Dolt's use of ExternalStoredProcedureDatabase to ExternalStoredProcedureProvider
    Fixes: https://github.com/dolthub/dolt/issues/3934
    Depends on: https://github.com/dolthub/go-mysql-server/pull/1156

go-mysql-server

  • 1177: Secondary Lookup Range Templates
    Do not use the IndexBuilder for secondary lookups. Directly create the equality ranges and/or nullable filters.
    index_join_scan latency change locally on OXS: 4.8ms -> 3.8 ms (-20%).
    No interface changes, regular Dolt bump passes at the time the PR was created.
  • 1172: Allow common table expressions in INSERT, UPDATE, DELETE statements
    This fixes https://github.com/dolthub/dolt/issues/4025
  • 1156: Refactoring ExternalStoredProcedureDatabase to ExternalStoredProcedureProvider
    From https://github.com/dolthub/dolt/issues/3934, we want customers to be able to call the dolt_clone stored procedure when no database is selected.

vitess

  • 184: Added parse tests for all functions
  • 183: resolving unreserved keyword inconsistencies with MySQL
    Tests have been updated to document the inconsistencies below.
    Changes:
    • unreserved many keywords
    • allow reserved keywords to be used as identifiers when they are qualified
      Words that parse in dolt, but don't in MySQL:
    • dual
    • minute_second
      Words that don't parse in dolt (only in quries that use these in where conditions), but do in MySQL:
    • escape
    • next
    • off
    • sql_cache
    • sql_no_cache
      Fix for: https://github.com/dolthub/dolt/issues/3977
  • 182: Fix error in REPEAT function

Closed Issues

  • 3879: Building from source fails "package embed is not in GOROOT"
  • 3880: Panic when running dolt sql-server in a directory with old and new format dolt databases
  • 3881: Running dolt sql-server creates an empty .doltcfg directory. Potential UX issue.
  • 3950: Cant merge and because dolt does not let me resolve conflicts
  • 3977: Nonreserved keywords require escaping
  • 3979: Dolt insists reserved words are always quoted
  • 4059: panic: unknown encoding when running dolt diff --summary
  • 3934: call dolt_clone() does not work if you have not used a database
dolt - 0.40.24

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

Merged PRs

dolt

  • 4053: Fix racey updates of NomsBlockStore putCount
    Found this issue while running tests in the new format with the -race flag enabled in ld. Harmless issue as it is only used in tests.
  • 4049: Dropping a non-pk column that is before a primary key column should be diffable.
    Fixes #4037
    The ordering of the primary key columns in returned by Schema.GetAllCols() should not determine diffability.
    If and only if the primary key tags, their ordinal ordering, and their types (in the new format) are equal, two schemas are diffable.
    Schema.GetPkCols() always returns the columns in ordinal order:
    https://github.com/dolthub/dolt/blob/ad471682829fc379c95a41eb23f26c00cad0e099/go/libraries/doltcore/schema/schema_test.go#L106-L145
  • 4014: Add a variety of skipped bats tests

Closed Issues

  • 3645: Panic in GeometryType.SQL when trying to cast GeometryType to string
  • 4037: dolt diff --summary fails when non-pk column is dropped when it's the first column
  • 4011: As of reach dependent on view commit history
dolt - 0.40.23

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

Merged PRs

dolt

  • 4036: Fix indeterministic diff delta matching
    Before this fix, tables with different names would attempted to be matched even if there was a pair of tables with a matching name.
  • 4029: Andy/migration concurrency
  • 4026: Adding links to roadmap and blogs
  • 4024: Fix dolt diff not working when there is a space in a column name
  • 4018: Bug fix to configure remote dialer when no databases exist yet
    When creating a DoltDatabaseProvider, the GRPCDialProvider was being pulled from the first DoltEnv found in the mutli-repo environment. When no DoltEnvs existed yet, the GRPCDialProvider was being set to nil, which caused dolt_clone to fail (see https://github.com/dolthub/hosted-issues/issues/31).
    This change pulls out the GPRCDialProvider code from DoltEnv into a separate type that can work (without supporting custom user credentials) when there is no existing DoltEnv yet.
    Fixes: https://github.com/dolthub/hosted-issues/issues/31
  • 4016: /{.github,go}: bump required go to 1.19
  • 3918: Expose a means to iterate sql.Row's from a durable.Index

go-mysql-server

vitess

  • 182: Fix error in REPEAT function
  • 180: Support for common table expressions in INSERT, UPDATE, DELETE
  • 179: allow unescaped reserved keywords when prefixed with table name, and add more reserved keywords
    Changes:
    • fixed misidentified keywords as column safe
    • fixed incorrect tests
    • every reserved keyword in MySQL is reserved in our grammar now
    • exceptions are DUAL and MINUTE_SECOND
      Note:
    • we are still missing many unreserved keywords
    • some of our reserved keywords are unreserved in MySQL
      Fix for: https://github.com/dolthub/dolt/issues/3979
  • 178: Added BINARY to match deprecated functionality
    Fixes https://github.com/dolthub/dolt/issues/4019
  • 177: Removed unused methods
    Follow up from #175
  • 176: /{.github,go.mod}: bump go to 1.19
  • 175: Remove all package-level flags

    Summary

    This is my attempt to perform a minimally invasive purge of all package-level flags.
    I would appreciate some input on:
    • whether any of the upstream repos that use this vitess fork will be impacted by these changes
    • whether this change should be more invasive (e.g., if you don't use the AuthServerClientCert it may be better to remove it entirely rather than just prune the flags)

    Motivation

    https://github.com/dolthub/vitess/issues/174

    Testing

    I've removed all package-level flags:
    ryanpbrewster@argon:~/p/g/dolthub-vitess$ rg "flag\.\w"
    go/mysql/auth_server_clientcert.go
    35:     if flag.CommandLine.Lookup("mysql_server_ssl_ca").Value.String() == "" {
    
    The existing tests still pass:
    ryanpbrewster@argon:~/p/g/dolthub-vitess$ go test go/...
    ok      go/ast  (cached)
    ok      go/build        (cached)
    ok      go/build/constraint     (cached)
    ok      go/constant     (cached)
    ok      go/doc  (cached)
    ok      go/format       (cached)
    ok      go/importer     (cached)
    ok      go/internal/gccgoimporter       (cached)
    ok      go/internal/gcimporter  (cached)
    ok      go/internal/srcimporter (cached)
    ?       go/internal/typeparams  [no test files]
    ok      go/parser       (cached)
    ok      go/printer      (cached)
    ok      go/scanner      (cached)
    ok      go/token        (cached)
    ok      go/types        (cached)
    
  • 172: Changes for adding new auth method

Closed Issues

  • 4025: [Feature Request] use a recursive cte result in an update
  • 4011: As of reach dependent on view commit history
  • 3215: Dolt dump should support views
  • 3589: SHOW GRANTS doesn't show grants correctly
  • 3039: Implement the CHECK TABLE syntax.
  • 3009: Support the DO statement
  • 3008: Support CASCADE syntax for ALTER TABLE
  • 3006: Support the EXTRACT function
  • 4019: Need to support BINARY syntax in ALTER because Dolt uses a binary collation
  • 3932: Can't create doc from sql if no docs exist
  • 1488: Support for BINARY collation of CHAR / VARCHAR columns
  • 2391: Case of enum literals lost in information schema
  • 2631: Color coded server logs
  • 2259: dolt pull should force a commit message for non-ff merges
  • 3144: Dolt statistics table improperly returns two indexes for the Primary Key
  • 3107: ALTER TABLE ADD COLUMN with default value referring to non-existent column panics
  • 3414: Constraint Violations and Foreign Key Checks
  • 3148: Bad error message for string is too large for column
  • 3409: Support '--quiet' for dolt cli commands
  • 3485: Schema import should support .sql files
  • 3500: dolt constraints verify for working set changes
  • 3502: Dolt log gets very slow on repositories with lots of commits
  • 3103: DESCRIBE is broken for tables that have an expression based defaults
  • 3058: Panic on CREATE USER with empty password
  • 3511: Corrupted Database from inserts on dolt_branch table
  • 2992: Panic on weird Like Condition
  • 2198: SHOW STATUS returns an empty table
  • 1970: Unique indexes are ignored for keyless tables.
  • 1690: GCP Remotes should take in path to application configs
  • 1161: ENUM values are always lowercased regardless of actual case
  • 174: Remove package-level Vitess flags
dolt - 0.40.22

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

Merged PRs

dolt

  • 4013: Add blob write test for sysbench
  • 4010: go/{commands,doltcore/sqle}: Allow dolt_docs to be created from SQL
  • 4001: Fixing dolt_clone to clean up partially cloned database directories on failure
  • 3996: Fix dolt_remote stored procedure to write to the correct database directory
    Changes DoltDatabaseProvider to track a Filesystem location for each database it manages. This allows callers, like the dolt_remote stored procedure to find the correct root directory for a database and update repo state correctly.
    Fixes #3936
  • 3994: Support USE statement with tag name
  • 3992: Remove query plan decorated nodes
  • 3988: Remove prollyIndexIter channel
  • 3986: Lockfile should be ignored if encoded pid is different than the current process
  • 3981: blob sysbench
  • 3973: Integrate update ignore with gms
    This pul request implements UPDATE IGNORE behavior. CC:
  • 3912: Clone Dolthub Links
    This pr supports dolt clone for https://www.dolthub.com/repositories/.. databases

go-mysql-server

  • 1149: Prevent JSON and GEOMETRY columns from having literal default values
    MySQL disallows BLOB, TEXT, JSON, and GEOMETRY columns from having a literal column default value:
    https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html#data-type-defaults.html#data-type-defaults-explicit
    go-mysql-server already prevents BLOB and TEXT column types; this PR extends that check to cover JSON and GEOMETRY columns as well.
    Fixes: https://github.com/dolthub/dolt/issues/4003
  • 1148: Big fix for resolving column default values in correct order
    Fixes an issue where we weren't pulling the column definitions in the same order as the InsertInto specified the column values when resolving and validating column default values.
    We did have a test for this case, but because the types in the test were int and varchar, the default values were being coerced silently and the tests were passing when they should have failed. I've updated that test and also added a new test case using an enum that closely matches the case the customer reported.
    Fixes: https://github.com/dolthub/dolt/issues/4004
  • 1146: fix inverted index IN filter error
  • 1145: Remove decorator nodes, add info back in table plan printing
    Delete *plan.DecoratedNode and helper methods.
    *plan.ResolvedTable and *plan.IndexedTableAccess compensate by printing range and column (logical) properties.
    -                      Projected table access on [pk c1 c2 c3 c4 c5]
    -                          └─ IndexedTableAccess(one_pk on [one_pk.pk] with ranges: [{[NULL, ∞)}])
    +                      IndexedTableAccess(one_pk)
    +                          ├─ index: [one_pk.pk]
    +                          ├─ filters: [{[NULL, ∞)}]
    +                          └─ columns: [pk c1 c2 c3 c4 c5]
    
    Project(a.i, a.s)
    └─ IndexedJoin(a.i = b.i)
    ├─ TableAlias(a)
    -                           │   └─ Projected table access on [i s]
    -                           │       └─ Table(mytable)
    +                           │   └─ Table(mytable)
    +                           │       └─ columns: [i s]
    └─ TableAlias(b)
    -                               └─ Projected table access on [i]
    -                                   └─ IndexedTableAccess(mytable on [mytable.i])
    +                               └─ IndexedTableAccess(mytable)
    +                                   ├─ index: [mytable.i]
    +                                   └─ columns: [i]
    
  • 1143: distinct count supports multiple columns
    Fix for: https://github.com/dolthub/dolt/issues/3978
    PR for testing: https://github.com/dolthub/dolt/pull/3989
  • 1141: Bug fix for now/current_timestamp column default values not in parens
    Our column default logic was conflating whether a default value was a literal value or an expression when the now or current_timestamp functions were used as the column default. Those column defaults were marked as literals, even though they are expressions that need to be resolved and evaluated. These two functions are the only functions that may be used as a column default value without being enclosed in parens, and when used that way, they were not getting resolved and causing a panic (see linked issue for more details).
    This change makes ColumnDefaultValue.IsLiteral always return true if the default value is a literal value and always return false if the default value is some expression that needs to be resolved and evaluated. To keep consistency with MySQL's behavior, it requires that we track whether the column default was enclosed in parens when defined. This is necessary because MySQL allows the now/current_timestamp functions to be used without parens for datetime/timestamp column, but must be specified in parens when used as the default for any other column type. Since that validation is done in a separate spot from the parsing, we need to track that as part of ColumnDefaultValue.
    Testing: Dolt engine tests and Dolt unit tests all pass correctly with these changes.
    Fixes: https://github.com/dolthub/dolt/issues/2618
  • 1135: Support UPDATE IGNORE
    This pul request implements UPDATE IGNORE behavior. CC:

Closed Issues

  • 3890: Upgrading Dolt seems to drop some privileges granted to users
  • 3846: Using CALL with DOLT_CHECKOUT returns [HY000][1105] branch not found
  • 3794: Creating a user breaks the default user
  • 3731: Import Benchmarking
  • 3520: Dolt table import on large databases is extremely slow
  • 3438: Performance concerns querying dolt_diff_
  • 3421: Can't reset --hard a table move
  • 3415: Support EDITOR Configuration
  • 3211: dolt sql --file= does not work with -r csv
  • 3185: Certain keys do not work on dolt sql cli
  • 3163: dolt clone progress: "chunks being downloaded currently" is broken
  • 3206: Potential memory leak with sql output
  • 3180: Is dolt's database format stabilized?
  • 2430: Dolt should reuse column on drop then add
  • 2983: mysqldump of an empty database needs to work in Dolt
  • 2969: six million sha256 hashes for 300K packages - a use case
  • 2951: Change README to be more OLTP-centric, less command line-centric
  • 2928: Schema merge should merge constraints more intelligently
  • 2765: Currently downloaded chunks greater than total chunks
  • 2763: Expose remote branches same as Git
  • 2596: Dolt has unclear behavior with check constraint merge
  • 2561: dolt sql-client gets out of sync with dolt sql on creating tables
  • 2751: record updates are extremely slow through SQLModel/SQLAlchemy
  • 2424: dolt diff --schema doesn't print diffs for check constraints
  • 2415: In multi head mode, sometimes feature branch editing has an influence on main branch
  • 2320: writeable dolt_remotes
  • 4003: SHOW CREATE TABLE returns incorrect statement for json field default
  • 2244: Any changes made in another branch will be lost if dolt sql-server isn't restarted after changing branches
  • 2165: Bug: [HY000][1105] ambiguous column name
  • 1899: Weird diff behavior when updating table with csv
  • 2038: error: fetch failed, can't fast forward remote tracking ref
  • 2037: dolt conflicts needs some user interface work
  • 1771: Push down ORDER BY below JOIN
  • 1762: Update dolt sql-server from a remote
  • 1693: dolt table import -u intermittently hangs during batch import
  • 1668: dolt_diff table performance
  • 1604: PhpMyAdmin, Adminer and any other general SQL client compatibility
  • 1602: Replication and clustering
  • 1516: Server Side: Add server flags to Wire Protocol
  • 1550: Possible Deadlock on Large Table Update
  • 1343: Dolt Insert eating up all the memory on host via SQL Server but not CLI
  • 1330: wrong error message for query
  • 1260: Segmentation Fault when i try run dolt blame
  • 984: Dolt SQL select order is inconsistent on larger tables
  • 1152: confusing error message when column missing from CSV
  • 1122: Prevent multiple Dolt SQL servers starting for the same database
  • 1138: Import path writes types.Null to the storage layer
  • 1119: Non-deterministic error on dolt merge --no-ff
  • 1044: Infer join conditions without explicit JOIN clause
  • 1005: Indexing a datetime column is SLOW and makes performance 8x worse
  • 936: Automatically update winget and chocolatey versions of dolt on every release
  • 845: Add test for HTML in Command Line docs
  • 4004: InsertInto with column subset doesn't correctly validate column defaults
  • 3990: Verbose mode with table import
  • 558: generate and support arm binaries
  • 197: dolt blame come out in random order each time
  • 620: All command line arguments that use table or column names should match case-insensitive
  • 392: 'dolt push' should have output for an empty database
  • 330: SQL REPLACE currently counts an INSERT-only as a REPLACE
  • 1610: Dolt: Throughput Test Fails Intermittently
  • 1556: CLI could remap www.dolthub.com to doloteremoteapi.dolthub.com during dolt remote add to improve usability
  • 3978: Unsupported syntax: more than one expression in COUNT
  • 3936: Can't add a remote from a sql-server started outside of a dolt directory
  • 2618: Error with Lazy ColumnDefaultResolution w/ Describe and Column Defaults
  • 3972: Cannot query "WHERE 1 = 0" with ORDER BY clause
  • 3914: MYSQL_DATA_TRUNCATED error when using C API
dolt - 0.40.21

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

Merged PRs

dolt

go-mysql-server

  • 1141: Bug fix for now/current_timestamp column default values not in parens
    Our column default logic was conflating whether a default value was a literal value or an expression when the now or current_timestamp functions were used as the column default. Those column defaults were marked as literals, even though they are expressions that need to be resolved and evaluated. These two functions are the only functions that may be used as a column default value without being enclosed in parens, and when used that way, they were not getting resolved and causing a panic (see linked issue for more details).
    This change makes ColumnDefaultValue.IsLiteral always return true if the default value is a literal value and always return false if the default value is some expression that needs to be resolved and evaluated. To keep consistency with MySQL's behavior, it requires that we track whether the column default was enclosed in parens when defined. This is necessary because MySQL allows the now/current_timestamp functions to be used without parens for datetime/timestamp column, but must be specified in parens when used as the default for any other column type. Since that validation is done in a separate spot from the parsing, we need to track that as part of ColumnDefaultValue.
    Testing: Dolt engine tests and Dolt unit tests all pass correctly with these changes.
    Fixes: https://github.com/dolthub/dolt/issues/2618
  • 1140: Error test fixes, extra test for EmptyTable
  • 1138: Improving error message when a stored procedure isn't found and no DB is selected
    Previously, if a user tried to call a stored procedure with no database selected, they would get this error message:
    stored procedure "%s" does not exist
    
    We've seen some users connect to a sql-server, but not use a database and be confused by this error message, so this change adds extra content to the error message when no current database is selected:
    stored procedure "%s" does not exist: this might be because no database is selected
    
  • 1134: Populate max field length response metadata
    The MySQL wire protocol includes a "column length" field as part of the Column Definition that tells clients the maximum amount of bytes they should expect for each serialized value in that column. Before this change, go-mysql-server was not populating this field and some MySQL clients were unable to parse responses without that max field byte length metadata. This change starts populating that field, with values identical to what MySQL returns.
    It was pretty straightforward to plumb this new piece of data through, but things got a little tricky with some of the stringtypes, so I cleaned up that code a little bit to better distinguish between the maxChars, maxBytes, and maxResponseBytes for a stringtype.
    Fixes: https://github.com/dolthub/dolt/issues/3914
    Fixes: https://github.com/dolthub/dolt/issues/3893
  • 1133: Add indexes to keyless data tests and validate engine after TestQueryWithContext
  • 1130: Better read only errors
  • 1129: json_contains bug fixes
    Bug fixes for Dolt's implementation of json_contains (MySQL Documentation)
    Fixes: https://github.com/dolthub/dolt/issues/3895
  • 1127: super user is localhost, and don't persist superuser
    Companion PR: https://github.com/dolthub/dolt/pull/3810
  • 1122: Prune *plan.ResolvedTable columns
    Table schemas change after we prune columns by pushing projections into them. This is a one-way process, tables can't become un-projected after pushdown.
    edit: I rewrote this completely to be more organized and avoid some of the resolve issues from before.
  • 1114: support unix socket
    https://github.com/dolthub/dolt/pull/3796 is dependent of this PR
    Merged in Aaron's branch with supporting two-listeners

Closed Issues

  • 2618: Error with Lazy ColumnDefaultResolution w/ Describe and Column Defaults
  • 3937: Can't call dolt_pull() if no upstream branch is set
  • 3970: transaction error
  • 3957: DBeaver: data tables in-cell updates are not picked-up by Dolt
  • 3949: DBeaver: data tables in-cell updates are not picked-up by Dolt
  • 3914: MYSQL_DATA_TRUNCATED error when using C API
  • 3893: Support sending back max field length metadata in MySQL wire protocol
  • 3895: "Invalid argument" for json_contains() queries
  • 3935: Calling dolt_add() does not stage commits
  • 3913: Resolving conflict using theirs never completes
  • 3887: Dolt upgrade seems to have lost some settings
  • 3595: Allow Dolt to communicate over MySQL socket interface
dolt - 0.40.20

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

Merged PRs

dolt

  • 3905: Fix for persisted database specific system variables failing to load
    Fix for https://github.com/dolthub/dolt/issues/3887
    Persisting and loading ${branch_name}_default_branch from config now works.
  • 3901: Update release and nightly files to include import benchmarking
  • 3899: go/store/types: SerialMessage: Unify TupleRowStorage and SerialMessage.
    Get rid of TupleRowStorage and use SerialMessage everywhere. In turn, change
    SerialMessage so that it carries its kind and size prefix as part of itself.
  • 3898: /.github/workflows/ci-performance-benchmarks-new-format.yaml: remove since #benchmark also does new format
  • 3894: fix minor log.Fatalln output
    Signed-off-by: Abirdcfly [email protected]
    log.Fatalln is equivalent to Println() followed by a call to os.Exit(1).
    see example:
    https://go.dev/play/p/VcdbrSNK6wH
    package main
    import (
    "log"
    "os"
    )
    func main() {
    log.Fatalln("A")
    log.Fatalln("B") // unreachable code
    os.Exit(2)
    }
    /* output:
    2009/11/10 23:00:00 A
    Program exited.
    */
    
  • 3875: Benchmark __DOLT_1__ on release
  • 3868: yaml config also initialize .doltcfg directories
    Fix for: https://github.com/dolthub/dolt/issues/3865
  • 3867: Sql server jwt auth
    GMS PR: https://github.com/dolthub/go-mysql-server/pull/1123
  • 3862: Support dolt_remote() stored procedure
    Supported options:
    DOLT_REMOTE('add', ...)
    DOLT_REMOTE('remove', ...)
    DOLT_REMOTE('rm', ...)
    Got dialer out of env.Remote object definition, dialer will be set when GetRemoteDB() method is called in dolt push and pull
    Manually copied DoltDatabaseProvider interface from Zach's PR, https://github.com/dolthub/dolt/pull/3745 , in order to get Zach's implementation of accessing FS from the Provider object.
  • 3861: Add a better error message for schema mismatch
    With csv file imports we used to throw an error if the a read row did not have the same numbers of columns as the original schema.
    For example:
    Rows Processed: 0, Additions: 0, Modifications: 0, Had No Effect: 0
    A bad row was encountered while moving data.
    csv reader's schema expects 3 fields, but line only has 2 values.
    line: '5,5,'
    These can be ignored using '--continue'
    
    This is not particularly useful output when the size of the row is massive. It has been a headache debugging this issue for the recent museums bounty. This pr is changing the error message to as follows:
    Rows Processed: 0, Additions: 0, Modifications: 0, Had No Effect: 0
    A bad row was encountered while moving data.
    CSV reader expected 3 values, but saw 2.
    The row was interpreted to be: '{
    "pk": "5"
    "v1": "5"
    "v2": ""
    }
    '
    
    Also improve printing for skipping rows
  • 3745: dolt_clone stored procedure
    Adds support for a new dolt_clone() stored procedure.
    Removes most of the use of os.Chdir (except for in test code and one or two dolt-cli-only spots).
    Doc Updates: https://github.com/dolthub/docs/pull/804

go-mysql-server

vitess

  • 172: Changes for adding new auth method
  • 171: Add rows parsing for LOAD DATA IGNORE and address flaky tls test
    This PR does two things
    1. Addresses https://github.com/dolthub/dolt/issues/2548 by introducing new conditions in sql.y
    2. Addresses flaky tls server tests by updating tests to use Tls13 and adding an additional error check

Closed Issues

  • 3919: Using dolt sql with a running dolt sql-server
  • 3895: "Invalid argument" for json_contains() queries
  • 3806: Need a way to add, modify and delete remotes on SQL path
  • 3481: Panic with describe
  • 3513: Implement cherry-pick
  • 3623: Deprecate multi-db-dir, databases field in config.yaml
  • 3865: v0.40.18 tries to open empty string as privilege file if not explicitly provided
  • 3859: Reading Old Version of Privilege File with Newer version of Dolt causes Panic
dolt - 0.40.19

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

Merged PRs

dolt

go-mysql-server

  • 1124: still read JSON privilege files, but write flatbuffer format
    fix for: https://github.com/dolthub/dolt/issues/3859
    tests are in dolt pr
    companion pr: https://github.com/dolthub/dolt/pull/3860
  • 1120: Support where clause for show variables
    Where clause is supported only for variable_name column of result table of show variables query.
    Fixes https://github.com/dolthub/dolt/issues/3834
  • 1117: Add foreign key tests where the parent table has inverted primary keys
  • 1116: Add tests for unique key violations and fix engine to pass them
  • 1111: Bug fixes for AlterPK and column defaults
    Operations that modify a table's schema were not consistently resolving column default values:
    • AlterPK was missed in resolve column default switch cases, and also wasn't considering its expressions when checking for resolution.
    • AlterDefaultSet was resolving the wrong schema (its output schema, OkResultSchema, instead of the target schema).
      While I was in there, I cleaned up the code to more consistently use the sql.TargetSchema interface and combined some copy/pasted switch cases.
      Updated existing tests to use column default values and verified they caught both of these failures. Have already run Dolt engine tests and verified they pass correctly.
      Fixes: https://github.com/dolthub/dolt/issues/3788

Closed Issues

  • 3853: Calling SELECT DOLT_BRANCH('-d', '<branch-name>') results in [HY000][1105] attempted to delete a branch that is not fully merged into its parent; use -f to force
  • 3815: Branch deletes (and maybe other things) don't replicate
  • 3788: Panic when altering the PK on a table with column defaults
  • 3834: Show Variables Where Is An Unsupported Feature
dolt - 0.40.18

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

Merged PRs

dolt

  • 3850: fix session vars and add region
  • 3838: Make unique key errors more consistent and fix unique key bats for new format
    Companion GMS PR: https://github.com/dolthub/go-mysql-server/pull/1116
  • 3833: Add jwks to server yaml config
  • 3830: doltcore/merge: Disallow revert, cherry-pick for commits without parents
  • 3827: Added table, index, and view caching for performance
  • 3824: Moving LargeJsonObject tests from go-mysql-server into Dolt
    Moved LargeJsonObjects out of go-mysql-server (https://github.com/dolthub/go-mysql-server/pull/1115) since they were causing go test -race to fail for Dolt. These tests are now executed from a new Dolt-specific enginetest that is skipped by default in CI environments, unless the DOLT_TEST_RUN_NON_RACE_TESTS env var is set (same process used to skip the TestLargeJsonObjects unit test in Dolt).
    I also added the -v flag to the dolthub/dolt enginetest race detection GH workflow so future failures have better output on exactly what failed.
    I ran these changes through go test -race enginetests on Ubuntu and confirmed it now passes.
  • 3823: go/{commands,doltcore}: Rewrote Dolt docs to use SQL path
  • 3821: doltcore/doltdb: Added interface for Rootish
  • 3816: replicate delete branch
    Replicate will push deletes on write in syncronous and async mode. Read replicas will delete refs that don't exist on the replica. Both of these can have destructive effects if not used carefully.
  • 3802: go/libraries/doltcore/sqle: read_replica_database.go: Fix race condition when we replicate the same head on more than one session.
    Previously StartTransaction would pull the new head from the upstream on each
    StartTransaction, but there was no concurrency control to ensure that pulls
    that started earlier didn't attempt to overwrite pulls that started later. The
    end result was that some transactions would fail spuriously because the old
    commit was not a fast forward merge of the current commit.
    This adds a concurrency limiter so that only one pull per branch is outstanding
    at a time.
  • 3744: Revamp the Import Benchmarker
    This pr refactors the import benchmarker and enables users to leverage Golang's built-in benchmarking suite against dolt table import.
  • 3732: Rework File Handling for privileges
    Fix for: https://github.com/dolthub/dolt/issues/3711
    Changes:
    • --multi-dir-db flag is now --data-dir
    • adds a .doltcfg directory
    • adds a --doltcfg-dir flag option
    • default location is $data-dir/.doltcfg
    • default value for --privilege-file will be $doltcfg/privileges.db

go-mysql-server

  • 1115: pulling out large JSON test scripts
    The large JSON test scripts have been causing go test -race to fail for Dolt (on ubuntu at least). This PR removes them from go-mysql-server and PR https://github.com/dolthub/dolt/pull/3824 moves them into Dolt.
    Confirmed that go test -race for Dolt's enginetests passes again on Ubuntu after this change.
  • 1105: Performance improvements in permission checking and view resolution
  • 1102: remove ValidateCanPersist()
    removes the ValidateCanPersist() from Persister interface, as it is no longer used.
    Companion PR: https://github.com/dolthub/dolt/pull/3732
  • 1101: Bump ruby-mysql from 2.9.14 to 2.10.0 in /_integration/ruby
    Bumps ruby-mysql from 2.9.14 to 2.10.0.

Closed Issues

  • 3834: Show Variables Where Is An Unsupported Feature
  • 3711: Rework file handling for users/privileges
dolt - 0.40.17

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

Merged PRs

dolt

  • 3818: disable aws params for dolt_sync command run via sql and minor credentialing change
  • 3808: dolt_checkout and read replication working set fixes
    Sql path dolt_checkout used to create a new branch from HEAD
    if the checkout name did not have a remote tracking ref. The CLI,
    on the other hand, will initialize a local branch if a remote tracking
    ref with the same name in the default remote exists. The SQl path
    now mirrors the CLI checkout: if we checkout a new branch, like
    'new_feature', and we have previously fetched that branch from our
    default remote, dolt_checkout('new_feature') will initialize a branch
    using the head commit from the remote new_feature.
    Second, read replication was creating a local tracking branch for
    remote branches (sourced from the master remote), but not creating
    corresponding working sets. This let users attach to new branches with
    use db/new_feature syntax, but prevented users from
    dolt_checkout('new_feature') both for the bug in dolt checkout, but also
    because we created an intermediary state with a local branch, but
    without a corresponding working set. SQL replication will now fetch,
    create the new branch, and create the appropriate working set.
  • 3798: Support per user session variables in the server config
  • 3793: doltcore/sqle/dsess: Return "serialization failure" ER_LOCK_DEADLOCK (1213) on transaction merge conflict, remove DOLT_TRANSACTION_MERGE_STOMP flag and session var
    This change removes the ability to stomp merge conflicts stemming from transaction commit. Instead, transaction merge conflicts return ER_LOCK_DEADLOCK (1213) which signals to the client that the transaction has been rolled back due to failures in locking and/or transaction isolation guarantees. Part of this signal is the ANSI SQLSTATE code of 40001 that is associated with ER_LOCK_DEADLOCK. This code means "serialization failure", which is a more accurate description of the error being thrown by transaction merge conflicts.
    In this context ER_LOCK_DEADLOCK (1213) is a misnomer, and is somewhat misleading to the user. However, this is the only MySQL error code associated with transaction rollback due to serialization failures, and in particular it is recognized by the TPC-C benchmarking utility that we use. This change is partially motivated by Postgres's implementation of REPEATABLE READ which is similar to snapshot isolation.
    companion GMS PR: https://github.com/dolthub/go-mysql-server/pull/1112
  • 3792: Backup success=1, error=0
  • 3786: Add --track flag to dolt branch
  • 3777: Drop support for deleting conflicts through cli and add cardinality column for keyless table conflicts
    Support for deleting conflicts "manually" through the cli has been dropped in favor of the equivalent SQL commands.
    Previously you could delete a conflict by specifying the primary key of the conflict:
    dolt conflicts resolve some_table pk_col 1
    Now, you can only delete a conflict through the SQL path:
    dolt sql -q "DELETE from dolt_conflicts_some_table where pk_col = 1"
    In addition, this PR also adds a cardinality column to dolt_conflicts_$tableName for keyless source tables. cardinality is the number of rows with the specified column values.
    For example:
    $ dolt sql -q "SELECT base_c0, base_c1, base_cardinality, our_cardinality, their_cardinality from dolt_conflicts_dupe;"
    +---------+---------+------------------+-----------------+-------------------+
    | base_c0 | base_c1 | base_cardinality | our_cardinality | their_cardinality |
    +---------+---------+------------------+-----------------+-------------------+
    | 1       | 1       | 10               | 6               | 8                 |
    +---------+---------+------------------+-----------------+-------------------+
    
    This PR also contains changes that reimplements dolt conflicts resolve --ours | --theirs through the SQL path.

go-mysql-server

  • 1113: Init RO sess vars
    I needed a way to initialize read-only session variables so I can set them when a new user connects to a value that depends on which user connects.
  • 1112: Added ErrLockDeadlock, mapped to MySQL error code 1213 and SQLSTATE 40001
  • 1109: Escape backticks in identifier names in show create table
    Updated show create table output to match MySQL's backtick escaping behavior.
    Related to: https://github.com/dolthub/dolt/pull/3779

Closed Issues

  • 3820: N-gram databases for other-language Wikipedias
  • 3803: Replication and call dolt_checkout() not playing nice.
  • 3791: Dolt backup sync from SQL context returns success 0 instead of success 1.
  • 2970: Dolt does not consider primary keys to be a covering index
  • 3752: Socket not closing
  • 1137: sql: querying repo tags from a system table
  • 1089: I proxies mysql-8.0.23 to go-mysql-server,some problem confuse me
dolt - 0.40.16

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

Merged PRs

dolt

  • 3783: go: doltdb: commit_hooks,hooksdatabase: Ensure that replication hooks work for replicating HEADs when the commit itself is already on the remote.
  • 3779: Allow backticks in index names
    Fixes: https://github.com/dolthub/dolt/issues/3776
    Related to: https://github.com/dolthub/go-mysql-server/pull/1109
  • 3774: add dolt_tags system table and dolt_tag() procedure
    Adds dolt_tags system table and DOLT_TAG() procedure.
  • 3771: Add test case for hanging sockets in Ubuntu
    This pr modifies the knex testing suite to ensure all sockets are closed when db.destroy() is called.
    The updated test correctly fails on an older version of GMS and passes on the updated version of GMS.
  • 3761: Bump ruby-mysql from 2.9.14 to 2.10.0 in /integration-tests/mysql-client-tests/ruby
    Bumps ruby-mysql from 2.9.14 to 2.10.0.
  • 3759: Add --track flag to dolt checkout
    Adds --track flag for dolt checkout.
    Fixes local branch tracking remote tracking branch with different names
    • dolt checkout --track origin/feature will create new branch named feature and set its upstream to origin/feature remote branch
    • dolt checkout -b branch1 --track origin/feature will create new branch named branch1 and set its upstream to origin/feature remote branch
    • dolt checkout -b branch1 origin/feature will guess remote branch. If remote branch origin/feature exists, it will set upstream to it.
  • 3757: GMS type simplifications
  • 3755: CLI write commands server-locked
  • 3753: go/libraries/doltcore/sqle/index: rangePartitionIter: Remove an unnecessary Mutex. PartitionIter.Next() is not called concurrently.
  • 3748: Adds our_diff_type and their_diff_type to dolt_conflicts_table_name
    our_diff_type and their_diff_type reports the row diff between the base and our/their rows. It is one of added, modified, or removed.
  • 3743: fix for datetime and time types for exporting parquet file
    Fixes https://github.com/dolthub/dolt/issues/3517
    Issues for importing parquet file from Dolt export to pandas.
    • Datetime type is exported as timestamp to avoid out of range issues.
    • Time type is exported as timedelta to avoid being parsed as time and panics if val is negative
  • 3672: readme: add MacPorts install info
    https://ports.macports.org/port/dolt/

go-mysql-server

  • 1110: Allow floats to specify precision and scale to match MySQL's behavior
    MySQL supports a non-standard SQL syntax for specifying precision and scale for floats and doubles:
    https://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html
    MySQL has marked this as deprecated, but existing MySQL applications (e.g. NocoDB) use this, so we should support it for compatibility. Doubles already support this notation.
    Fixes: https://github.com/dolthub/dolt/issues/3778
  • 1109: Escape backticks in identifier names in show create table
    Updated show create table output to match MySQL's backtick escaping behavior.
    Related to: https://github.com/dolthub/dolt/pull/3779
  • 1108: sql/session.go: Migrate from opentracing to opentelemetry.
  • 1106: Close duplicated file descriptor
  • 1104: Expand support for explicit column defaults in insert into statements
    The previous code for handling explicit column defaults in insert into statements couldn't handle many valid cases of using explicit column defaults. To handle inserting explicit column default values in all cases, we need to move to a different approach.
    This change leaves DefaultColumn values in the plan.Values expression tuples and updates the analyzer rules to parse and resolve ColumnDefaultValues in those expressions.
    I've run the Dolt engine tests and verified that all pass with this change.
    Fixes: https://github.com/dolthub/dolt/issues/3741 and https://github.com/dolthub/go-mysql-server/issues/527
  • 1100: type convert simplifications
    dolt bump here: https://github.com/dolthub/dolt/pull/3757
    This expands some Convert methods into smaller helper functions that can be used more precisely:
    • avoid interface conversions
    • sidestep bound checks that don't apply on the read path unless we are explicitly running a Cast
      These are a bit rough and ready, the interfaces and semantic check organization could be formalized, but gives 15% boost on table scan.
  • 1099: Adjust limits on varbinary/json data
    • Relaxed limit on incoming varbinary fields to allow for large JSON fields, which have a max size of 1GB and come across the wire as varbinary types.
    • Added a test to ensure limits on varbinary fields are still being honored.
    • Added a size limit on JSON fields at 1GB.
      Fixes: https://github.com/dolthub/dolt/issues/3728
  • 1098: Added safety check to index filter pushdown

Closed Issues

  • 3752: Socket not closing
  • 3741: dolt fails to insert multiple values into table when using DEFAULT values
  • 3776: Support backticks in index names
  • 3778: Support floats with scale and precision
  • 3517: Dolt export parquet NULL datetime errors
  • 2548: Unsupported syntax: LOAD DATA ... IGNORE 1 ROWS
  • 3764: FAQ - Why would I use dolt instead of a local MySQL Instance with database data into VCS?
  • 3728: prepare binding failed when fields length more than 65535
  • 527: Gap in coverage for DEFAULT keyword in inserts
dolt - 0.40.15

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

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

  • checkout and pull commands now behave closer to git equivalents with respect to upstream branch tracking
  • Support for named primary keys

Merged PRs

dolt

  • 3751: Remotesrv more verbose errors
  • 3742: Updating release workflow to include new Linux-ARM64 build
    I previously updated the build and install scripts to support Linux OS running on Mac hardware (https://github.com/dolthub/dolt/pull/3727), but I missed this update to the GitHub workflow to copy the new artifact over and make it available on the GitHub release page.
  • 3725: fix inconsistencies of dolt checkout and pull commands
    This PR fixes inconsistent behaviors of Dolt CLI against Git commands AND of Dolt SQL against Dolt CLI commands.
    Inconsistencies between Dolt CLI and Git:
    • dolt checkout new_branch: checking out a new branch without -b flag. If there is a remote branch with matching name, sets upstream.
    • dolt checkout -b new_branch: if there is a remote branch with matching name, it does not set upstream.
    • dolt pull and dolt pull remote_name: each gives separate errors when run on a branch that does not have upstream
      Inconsistencies between Dolt CLI and Dolt SQL:
    • dolt pull should match dolt_pull()
    • dolt_checkout() and dolt_push() should set upstream that persists outside of sql session (added skipped tests)
  • 3722: Only rebase transaction start for read replica
    Changes:
    • Remove rebase on TransactionStart, unless the engine is a read replica, in which case we continue to poll for updates.
    • Starting a server writes a lock file .dolt/sql-server.lock that is deleted when the server is terminated.
    • A SqlEngine created after a server lock is written is limited to ReadOnly mode. Bulk table import does not appear to respect read only mode, so it has an additional check.

go-mysql-server

  • 1093: raising upper bound for @@join_complexity_limit to 20
  • 1090: Changed character sets and collations to use integer IDs

Closed Issues

  • 2911: dolt checkout -b incorrectly sets upstream tracking info
  • 3726: Support installing Dolt in a Docker Linux env on Mac hardware
  • 3674: Dolt doesn't create named primary key
dolt - 0.40.13

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

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

  • Release binaries for arm64/aarch64 hardware
  • Change in case for column names in some information_schema tables
  • Dolt system tables now support AS OF syntax appropriately
  • Support for LOAD DATA IGNORE

Merged PRs

dolt

  • 3727: Build and install for for Linux OS on Mac arm64/aarch64 hardware
    I tested the build binaries script locally and confirmed it is producing the new dolt-linux-arm64.tar.gz artifact. I also ran the install script on an Ubuntu container and verified that it tries to download that same artifact from GitHub, then copied the new artifact over and verified that the dolt binary executes as expected.
    Anything else I need to do to get that new artifact to show up on GitHub in the next release?
    Resolves: https://github.com/dolthub/dolt/issues/3726
  • 3719: Update Dolt to handle the information_schema having capital column names
  • 3714: Add missing semicolon
    Missing semicolon in docs
  • 3702: go/libraries/doltcore/sqle/index: Update IndexLookup range builders to support new sql.Range model.
    The new model puts BelowNull and AboveNull at the bottom of the value lattice
    and has the analyzer form continuous ranges for some kinds of null and not-null
    clauses.
  • 3699: Fix for data race warning
    Fixes: https://github.com/dolthub/dolt/actions/runs/2572738403
  • 3688: Support AS OF expressions for Dolt system tables
  • 3644: Reimplemented dolt diff command to use SQL queries
    Also:
    • Re-enable push / pull, unskip related tests for new format
    • Get rid of use of row printing pipeline in a few places, reimplemented output printing with SQL rows

go-mysql-server

  • 1092: Expose JoinComplexityLimit system variable
    Fix for: https://github.com/dolthub/go-mysql-server/issues/1091
  • 1088: Avoid NewEmptyContext() to optimize IN filters
  • 1087: Change all info schema columns to capital letters
    Update the information_schema implementation to use capital letters for column names. This matches the MYSQL implementation
    This runs against Dolt correctly: https://github.com/dolthub/dolt/pull/3719
  • 1083: Update columns table numeric precision and scale
    This fills in the numeric_precision and numeric_scale columns of the information_schema.column table
  • 1082: Integrate latest Vitess along with new LOAD DATA test case
  • 1080: sql/analyzer: Make indexed joins more aware of NULL safe comparisons.
    Fix joins and indexed joins using <=>. Ensure that joins using = do not scan NULL values in the index.
  • 1078: Improve how index lookups and ranges address NULL values.
  • 1075: adding histogram builder
    Also removes unnecessary call to AnalyzeTable in information_schema
    Companion PR: https://github.com/dolthub/dolt/pull/3365

vitess

  • 171: Add rows parsing for LOAD DATA IGNORE and address flaky tls test
    This PR does two things
    1. Addresses https://github.com/dolthub/dolt/issues/2548 by introducing new conditions in sql.y
    2. Addresses flaky tls server tests by updating tests to use Tls13 and adding an additional error check
  • 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.

Closed Issues

  • 3726: Support installing Dolt in a Docker Linux env on Mac hardware
  • 3226: Dolt Python SDK write_pandas is not consistent with dolt table import
  • 3701: dolt sql-server Port already in use
  • 3636: Broken doltdb after deletion of the branch which had DB alias
  • 1086: Support Describe for information_schema tables