Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dolt 1.28.0 #155116

Merged
merged 2 commits into from
Nov 22, 2023
Merged

dolt 1.28.0 #155116

merged 2 commits into from
Nov 22, 2023

Conversation

BrewTestBot
Copy link
Member

Created by brew bump


Created with brew bump-formula-pr.

release notes
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 Concurrent backups map dolthub/dolt#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: dolt config needs write access in current directory for dolt config --add --global dolthub/dolt#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 Three Way Merging won't detect a data conflict in a dropped column. dolthub/dolt#6747
    Also fixes Merging an altered column with a deleted row currently results in a merge conflict. dolthub/dolt#6766
    Three Way Merging won't detect a data conflict in a dropped column. dolthub/dolt#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.
    Most of this PR is refactoring how we do three way merging in a way that makes these fixes possible.
    Prior to this PR, we would handle schema merges by converting the left side of the merge to match the result schema, and then processing each diff. However, this causes ambiguity when the right side drops a column: it is no longer possible to distinguish between merges where the left side modified the dropped column and merges where it didn't. It is no longer possible to reliably determine whether or not there was a data conflict.
    This PR changes the approach so that, in the event of a schema merge, each row gets a Diff object which is processed during three way merging. This requires every part of the merge process to handle DiffOpLeftAdd and DiffOpLeftModify, diff types that were previously handled before the merge and thus could be safely ignored.
    This shouldn't cause an impact in runtime: running the three way diff in the event of a schema merge is now O(N) on the size of the left table, but prior to this PR, preparing to run the three way diff in the event of a schema merge was O(N) on the size of the left table: the total runtime should be unaffected.
    I added several more tests to gain confidence in the correctness of these changes. It's possible that, if there's an oversight, diffs where there isn't a schema change may also result in O(Left Rows) runtime. If this is the case it should be easy to fix, but it's something to keep an eye out for.

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: MariaDB default values for LONGTEXT types don't work in Dolt dolthub/dolt#7033
    Dolt CI Checks: Running Dolt CI checks for go-mysql-server/pull/2155 dolthub/dolt#7036
  • 2154: Use max prec and scale for decimal oob
  • 2153: null in-tuple bugs
    fixes: Unexpected Results when Querying with NULL values dolthub/dolt#7025
  • 2151: add decimal type to convert functions
    fixes Unexpected Results about Floating-point Type Casting dolthub/dolt#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: Unexpected Results when Using '%' operator dolthub/dolt#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: [no-release-notes] GMS bump for filter push bug dolthub/dolt#7001
  • 2125: Minimal index searchable interface
    re: Index optimize extension with dynamic index support in embed db  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

@github-actions github-actions bot added go Go use is a significant feature of the PR or issue bump-formula-pr PR was created using `brew bump-formula-pr` labels Nov 22, 2023
Copy link
Contributor

🤖 An automated task has requested bottles to be published to this PR.

@github-actions github-actions bot added the CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. label Nov 22, 2023
@BrewTestBot BrewTestBot added this pull request to the merge queue Nov 22, 2023
Merged via the queue into Homebrew:master with commit 8e24c8d Nov 22, 2023
12 checks passed
@BrewTestBot BrewTestBot deleted the bump-dolt-1.28.0 branch November 22, 2023 03:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bump-formula-pr PR was created using `brew bump-formula-pr` CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. go Go use is a significant feature of the PR or issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants