github dolthub/dolt v1.28.0
1.28.0

latest releases: v1.43.0, v1.42.20, v1.42.19...
10 months ago

This release contains backwards incompatible changes:

  • Stopped Replacing Spaces in DB Names – Dolt databases take their names from the name of their directory on disk. Previously, any spaces in directory names were automatically replaced with underscores to form the name of that database. This behavior has been changed to preserve spaces in database names, in order to match MySQL's database naming rules. To re-enable the older behavior, set the DOLT_DBNAME_REPLACE environment variable to any value before starting dolt sql or dolt sql-server.

Per Dolt’s versioning policy, this is a minor version bump because these changes may impact existing applications. Please reach out to us on GitHub or Discord if you have questions or need help with any of these changes.

Merged PRs

dolt

  • 7024: Concurrent branches map
    This PR converts all instances of the RepoState.Branches to a concurrent map (implementation found in utils). Avoids issues when the branches field is accessed concurrently from different routines.
    This PR is waiting for #7019 to be merged first to integrate those changes.
  • 7023: fix dolt fetch and dolt pull
  • 7020: use database name that is the same as directory name on disk
    As of Dolt version 1.27.0, we allow hyphens in database name and replace space characters with underscores and reduce multiple underscore characters side by side into single underscore character.
    This PR resolves:
    • Using the database name the same as directory name on disk allows round-trip to the database location on disk.
      Note:
    • A potential issue might arise when the directory name has trailing space characters. MySQL do not allow database name with trailing space characters such as mydb , whereas Dolt allows. This will cause failing import of dolt dump to MySQL.
  • 7019: Concurrent backups map
    This PR converts all instances of the RepoState.Backups to a concurrent map (implementation found in utils). Avoids issues when the backups field is accessed concurrently from different routines.
  • 7016: Allow dolt config to run in folders without write permissions
    This change allowsdolt config to run in folders without write permissions.
    Fixes: #2313
  • 7015: Update docs for merge's --abort param
    The merge CLI command and SQL stored procedure both validate that the working set is clean before it will start a merge, so the warning about uncommitted changes isn't relevant.
  • 7008: fix panic on foreign key references dropped table for dolt diff
  • 7004: cmd/dolt/commands/sqlserver: Restructure the start up sequence for sql-server.
    We explicitly model Services, which can have an Init step, a Run step and a Stop step. Every registered service get initialized in the order they were registered in, then they all run concurrently until Stop is called, when they all get Stopped in reverse order. It's possible for clients to wait for init to be completed and be delivered any errors encountered on startup. They can also wait for stop, to be delivered any errors encountered on shutdown.
  • 6980: Correctly identify and report data conflicts when deleting rows and/or columns during a three-way merge.
    Fixes #6747
    Also fixes #6766
    #6747 is important to fix because ignoring data conflicts means that a merge could put a user in a state that wouldn't be possible from a linear sequence of transactions. Issues like this (especially ones that don't display any warning to the user) need to be addressed before they cause problems.

go-mysql-server

  • 2155: Allow BLOB/JSON/TEXT columns to have literal default values (MariaDB compatibility)
    Technically, MySQL does NOT allow BLOB/JSON/TEXT columns to have a literal default value, and requires them to be specified as an expression (i.e. wrapped in parens). We diverge from this behavior and allow it, for compatibility with MariaDB.
    While testing with a binary literal, I noticed that SQLVal was converting that value to "BLOB" instead of the actual binary content, so I fixed that one, too.
    Related to: #7033
    Dolt CI Checks: #7036
  • 2154: Use max prec and scale for decimal oob
  • 2153: null in-tuple bugs
    fixes: #7025
  • 2151: add decimal type to convert functions
    fixes #7018
  • 2149: updating RangeTree node MaxUpperBound again
    A previous fix involved updating the MaxUpperBound in the RangeTree when traversing the right node, turns out we need to do that when creating a new node as well.
    To better catch overlapping range expressions, we now verify that the resulting ranges do not overlap (an operation which isn't too expensive). This fixes some plans from an index refactor.
    Additionally, this also fixes a skipped test where the ranges were not overlapping but different than the brute force approach.
  • 2148: fix for foreign key that references dropped table in information_schema.referential_constraint table
  • 2147: Fix mod bool conversion
    fixes: #7006
  • 2146: Update MaxUpperBound when inserting into RangeTree
    Recent changes to index costing exposed a bug in RangeTree. This bug is responsible for a small regression in the sqllogictests, involving a complicated filter.
    When generating ranges over an index to satisfy a filter, we have to ensure that the resulting ranges do not overlap; we accomplish this efficiently through the use of a RangeTree (a multi-dimensional red-black tree) to split up and merge ranges.
    Given a Range, the RangeTree returns a set of Ranges that overlap it, and we replace these with a set of ranges that cover the same area, minus the overlap.
    However, during insertion (specifically when the new node is a right child), we do not update the parent's MaxUpperBound. This is important for deciding to search subtrees during FindConnection(). As a result, the RangeTree did not find all overlapping ranges, and would produce a set of Ranges that still contained overlaps.
    Additionally, this PR adds a slightly better method of checking if the resulting ranges have overlaps.
    There is also a skipped test; it's possible that there are multiple sets of non overlapping ranges that satisfy the same sets of filters.
    There will be a follow up PR that has a better method of verifying the correctness of these ranges.
  • 2145: mysql server handler intercept support
    Split from the PR https://github.com/dolthub/go-mysql-server/pull/2036.
    Add mysql server handler intercept support.
  • 2144: Push filters insensitive to table name
    Filter pushing bug that is specific to 1) table names with capital letters, and 2) filters that need to move through joins. The problem is not indexing specifically, but checking for an index is the easiest way to test this.
    dolt bump: #7001
  • 2125: Minimal index searchable interface
    re: dolthub/go-mysql-server#2036

Closed Issues

  • 7030: Error running dolt_diff() table function through ODBC
  • 7025: Unexpected Results when Querying with NULL values
  • 6766: Merging an altered column with a deleted row currently results in a merge conflict.
  • 6747: Three Way Merging won't detect a data conflict in a dropped column.
  • 7009: stop renaming database names with blank spaces
  • 7018: Unexpected Results about Floating-point Type Casting
  • 2313: dolt config needs write access in current directory for dolt config --add --global
  • 7006: Unexpected Results when Using '%' operator
  • 7005: Dropping a table referenced by a foreign key breaks some information_schema tables, dolt diff

Latency

Read Tests MySQL Dolt Multiple
covering_index_scan 2.18 2.81 1.3
groupby_scan 13.22 17.63 1.3
index_join 1.37 5.09 3.7
index_join_scan 1.27 2.18 1.7
index_scan 34.33 54.83 1.6
oltp_point_select 0.17 0.43 2.5
oltp_read_only 3.3 7.7 2.3
select_random_points 0.32 0.72 2.2
select_random_ranges 0.38 0.86 2.3
table_scan 34.33 54.83 1.6
types_table_scan 74.46 155.8 2.1
reads_mean_multiplier 2.1
Write Tests MySQL Dolt Multiple
oltp_delete_insert 7.98 6.79 0.9
oltp_insert 3.75 3.36 0.9
oltp_read_write 8.28 15.0 1.8
oltp_update_index 3.82 3.43 0.9
oltp_update_non_index 3.82 3.36 0.9
oltp_write_only 5.37 7.56 1.4
types_delete_insert 7.56 7.43 1.0
writes_mean_multiplier 1.1
Overall Mean Multiple 1.6

Don't miss a new dolt release

NewReleases is sending notifications on new releases.