github dolthub/dolt v1.86.0
1.86.0

7 hours ago

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 the sql.Row fields involved for secondary index Update statements.
  • 10799: Support bare format with ssh transport
    Altered the dolt transfer command 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 the rebase within 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() and dolt revert
    Previously any conflict or constraint violation would cause dolt_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 of dolt_revert() has changed. It now matches the return schema for dolt_cherry_pick() and dolt_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 diff and show hiding committed tables matching dolt_ignore
    Ignore patterns apply to staging untracked tables, not committed history. dolt diff, dolt show, and dolt_diff_summary() were incorrectly filtering tables from commit-to-commit diffs when those tables matched a dolt_ignore pattern after the commit.
    • Add IsWorkingSetRef to doltdb and ShouldIgnoreDelta to IgnorePatterns as shared helpers.
    • Fix diffUserTables to skip ignore pattern evaluation when both refs are commits, using hasWorkingSet on diffDatasets
    • 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() and dolt_diff_summary() to lock in correct commit-to-commit behavior across independent implementations.
      Fix #10782
      Related dolthub/docs#2813
  • 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.

Closed Issues

  • 10807: RemotesAPI push: FastForward skips working set update, causing 'target has uncommitted changes' on next push
  • 10808: Non-local tables do not persist across branches (dolt sql-server)
  • 10782: dolt show / dolt diff retroactively hides committed tables added to dolt_ignore

Don't miss a new dolt release

NewReleases is sending notifications on new releases.