Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Created by
brew bump
Created with
brew bump-formula-pr
.release notes
DOLT_DBNAME_REPLACE
environment variable to any value before startingdolt sql
ordolt 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
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.
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:
Note:
mydb
, whereas Dolt allows. This will cause failing import of dolt dump to MySQL.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.
dolt config
to run in folders without write permissionsThis change allows
dolt 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--abort
paramThe 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.
dolt diff
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.
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
andDiffOpLeftModify
, 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
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
fixes: Unexpected Results when Querying with NULL values dolthub/dolt#7025
fixes Unexpected Results about Floating-point Type Casting dolthub/dolt#7018
RangeTree
nodeMaxUpperBound
againA 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.
information_schema.referential_constraint
tablefixes: Unexpected Results when Using '%' operator dolthub/dolt#7006
MaxUpperBound
when inserting intoRangeTree
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 duringFindConnection()
. 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.
Split from the PR https://github.com/dolthub/go-mysql-server/pull/2036.
Add mysql server handler intercept support.
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
re: Index optimize extension with dynamic index support in embed db dolthub/go-mysql-server#2036
Closed Issues
dolt_diff()
table function through ODBCdolt config --add --global
dolt diff