Backwards Incompatible Changes
This version adds support for conflict resolution with the dolt_revert() stored procedure and the dolt revert CLI. To support that, the response schema from dolt_revert() has changed to the same response schema as dolt_merge() and dolt_cherry_pick() so that a count of data conflicts, schema conflicts, and constraint violations can be returned.
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
- 10810: Fix remotesapi push fail with "target has uncommitted changes" after any successful push
- Fixed regression where pushing to a SQL server left the server's staged and working state pointing at the previous commit instead of the new one.
- Pushes to servers with ignored tables correctly advances all three branch pointers together.
Fix #10807
- 10806: validate noop in secondary index
Update()
Updates to non-indexed columns do not need Delete and Put or materialize tuples.
Turns out it is worth it to compare thesql.Rowfields involved for secondary index Update statements. - 10799: Support bare format with ssh transport
Altered thedolt transfercommand to determine if we are pushing to a bare repository or a full fledge generational repository. Also added the ability to push to an empty directory - which results in a bare repository. - 10797: go: store/nbs: Use pointer receivers for some large structs related to working with archives.
- 10794: enable adaptive encoding for geometry types
Relies on dolthub/go-mysql-server#3499 - 10790: go/store/nbs: gcFinalizer: Have Finalize open and carry a chunkSourceSet for the specs.
This can be used to avoid opening the files in therebasewithin swapTables and addTableFiles.
It can also be used to directly implement the correct HasManyFunc result of AddChunksToStore. This is more robust than requiring the table file stay in the destination chunk store exactly as is, for example.
Combined with #10788 opening this file immediately and keeping it open until the rebase makes concurrent destructive operations like PruneTableFiles safer. - 10788: go/store/nbs: fileTablePersister keeps track of open files and tracks its own keepers as well.
- 10786: Add support for manually resolving conflicts with
dolt_revert()anddolt revert
Previously any conflict or constraint violation would causedolt_revert()to error out. With this change, it returns information on the conflicts or constraint violations so that customers can manually resolve them and then continue the revert action.
Note: in order to return information about conflicts and constraint violations, the return schema ofdolt_revert()has changed. It now matches the return schema fordolt_cherry_pick()anddolt_merge(). Revert's behavior also changes to create one revert commit per input commit (instead of a single revert commit) to match Git's behavior. Because of that, this change should be released as a minor version bump. - 10785: Fix
diffandshowhiding committed tables matchingdolt_ignore
Ignore patterns apply to staging untracked tables, not committed history.dolt diff,dolt show, anddolt_diff_summary()were incorrectly filtering tables from commit-to-commit diffs when those tables matched adolt_ignorepattern after the commit.- Add
IsWorkingSetReftodoltdbandShouldIgnoreDeltatoIgnorePatternsas shared helpers. - Fix
diffUserTablesto skip ignore pattern evaluation when both refs are commits, usinghasWorkingSetondiffDatasets - Fix
dolt_diff_summary()to apply the same gate, correcting commit-to-commit queries. - Restrict ignore filtering to newly added or dropped tables in both layers; modifications to tracked tables are always shown.
- Add enginetests for
dolt_diff(),dolt_patch()anddolt_diff_summary()to lock in correct commit-to-commit behavior across independent implementations.
Fix #10782
Related dolthub/docs#2813
- Add
- 10781: go/nbs/store: store.go,conjoiner.go: Small improvements to the efficiency and robustness of conjoin.
Keep the conjoined chunk source open as part of the conjoinOp after the table file persister makes and opens it. Make it available as a pre-opened chunkSource to the rebase call, assuming the manifest update lands. This keeps Dolt from having to re-open the table file immediately after the manifest update.
Fix a dropped error in finalizeConjoin after the updateManifest call.
Fix a bug where ConjoinTableFiles didn't close oldTables before the cleanup.
Fix a bug where ConjoinTableFiles didn't manifestMgr.LockForUpdate before the manifest updates. This does not have an impact in Dolt, but for hygiene's sake we should be consistent for now.
go-mysql-server
- 3499: Support for unwrapping geometry values, which may be stored inline or out of band
- 3498: eventscheduler: Block event scheduler's Close() on finishing its spawned goroutines.
Otherwise the background thread is still running and potentially accessing the database.