Merged
Conversation
branchv
approved these changes
Jan 21, 2026
Contributor
|
🤖 An automated task has requested bottles to be published to this PR. Caution Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 bumpCreated with
brew bump-formula-pr.Details
release notes
Since Dolt v1.78.5, Dolt has truncated the journal file to the latest successfully loaded record when it successfully loads a database. This is the correct behavior when the CLI is operating as the exclusive writer to the database. However, Dolt also has a mode where it can load the database in read-only mode. Due to a bug, Dolt was also truncating the journal file when it was operating in this mode. The end result was the running something like
dolt sql -r csv -q ...against a Dolt database that was running a sql-server and was currently accepting writes could incorrectly truncate the journal file. The Dolt sql-server process would go ahead writing into the journal at its previously extended offset and the space between the truncation and the next write offset would be 0 filled by the operating system. Attempting to load the database later or accessing the chunks located at that corrupted portion of the journal file would result in checksum errors or failure to load messages.This change correctly updates Dolt to only Truncate the journal file when we are loading it in read-write mode.
Previously, early in the process life-cycle after dolt was run, dolt would immediately check if a file created in
os.TempDir()was able to beos.Renamed into a subdirectory of the dolt process's data directory, by default$PWD/.dolt. If the rename failed, it would configure Dolt to use.dolt/temptfas the movable temp file directory instead.This meant that for many
doltinvocations, Dolt would do some local filesystem writes, including potentiallyMkdir(.dolt)before it it was fully loaded. With the advent of things like dolt accessing the running server through sql-server.info anddolt --host ... sqlthis behavior was not ideal. It creates races with concurrently rundoltprocesses that try to use the.doltdirectory, and it creates odd behavior when running something likedolt sqlin a non-Dolt directory but on a filesystem mount where this rename fromos.TempDir()does not work.This PR changes the check and the configuration of a potential
.dolt/temptfdirectory to be delayed until the first temporary movable file is actually requested by Dolt. At that point we know that we have a need for a renamable temp file and it is OK to go ahead and create.dolt/temptfif we need it.This PR changes the error handling around some edge cases like permissions errors on the calling process creating
temptfwithin.dolt. In particular, some errors which were previously early and fatal are now delayed until use site and may end up being persistent but non-fatal to the process, depending on the operation.Online GC could write new tale files to oldgen, and the manifest write was not crash safe. This could result in data loss depending on filesystem settings if there was an inopportune crash.
go-mysql-server
The previous implementation of the
applyIndexesFromOuterScopesoptimization uses thegetTablesByNamefunction to map table name references onto tables. But this function only locates ResolvedTables, and other optimizations rely on this behavior.I've split
getTablesByNameinto two different functions:getResolvedTablesByName, which has the original behavior, andgetNamedChildren, which takes a parent node and identifies all nameable nodes in its children, including both ResolvedTables and TableAliases.fixes dolthub/dolt#10311
branched from #3381
Enums of different types join based on their string value, not their underlying int value. Ensures join correctness for enums of different types by doing the following:
part of dolthub/dolt#10311
This change allows avoiding unnecessary type conversions when filtering by index and also simplifies some range filter expressions.
This causes foreign keys, particularly enums and sets, to be compared based on their internal values, instead of based on the generalized converted type.
This PR enhances the "applyIndexesFromOuterScope" analysis pass to transform filters on tablescans into indexed table lookups, when the table's column is being compared with a column visible from a lateral join.
An example of a query that can be optimized with this change:
select x, u from xy, lateral (select * from uv where y = u) uv;Users don't often write lateral joins, but the engine can transform
WHERE EXISTSexpressions into lateral joins, and this lets us optimize those too.IsExprcase toreplaceVariablesInExprStored procedures containing
ISexpressions that referenced a procedure variable were breaking.Related PRs:
vitess
NATURAL FULL JOINPart of dolthub/dolt#10268
Part of dolthub/dolt#10295
Any join with the
NATURALprefix that was not aLEFTor LEFT OUTER JOINwas getting parsed as aNATURAL RIGHT JOIN. This PR allows forNATURAL FULL JOINto be parsed correctly and also prevents invalid joins using theNATURAL` prefix from getting parsed.Related PRs:
Closed Issues
View the full release notes at https://github.com/dolthub/dolt/releases/tag/v1.81.0.