Skip to content

2.7.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 22:24

Minor Version Bump

This release is a minor version bump due to storage changes made to support merge conflict resolution. When conflicts arise in merging schema changes, the artifacts persisted to disk will be unreadable by older versions of Dolt. Since backwards compatibility is not possible in this case, we've bumped minor version number.

Merged PRs

dolt

  • 12334: go: Allow merge to work when the two branches have applied the same primary key change on both sides.
    The merge operation rekeys the altered tables in the common ancestor, so that all three schemas match as required. Conflict readers rekey the same way.
    Changes MergeArtifacts to store the rekeyed base so that it persists across replication, push and GC in the case that the common ancestor was rekeyed in this way.
    Fixes #12012
  • 12333: dolt_preview_merge_conflicts: fix swapped base, our and their schemas
    getConflictSchemasFromRoots returned the schemas in the order (ours, theirs, base), but its caller reads them as (base, ours, theirs). When the schemas differed between branches, the preview showed the wrong columns and decoded each side's values with another side's layout.
    Fixes #12330
  • 12319: dolt_query_diff: compare matched row values by column type
    • Add diff.ValuesEqual to use column type's Compare, and compare text exactly. Equal out-of-band content addresses skip reading both values.
      Fix #12262
  • 12291: sqle: Keep temporary tables across GC.
    sqle: Keep temporary tables across GC.
  • 12290: go/libraries/doltcore/sqle/dsess: Write savepoint roots before keeping them in VisitGCRoots
    go/libraries/doltcore/sqle/dsess: Write savepoint roots before keeping them in VisitGCRoots
  • 12289: go/store/prolly: roll back flushed edits when a statement with no checkpointed edits fails
    go/store/prolly: roll back flushed edits when a statement with no checkpointed edits fails
  • 12279: go: Remove Dolt's dependencies on the global variable registries.
    Part of a body of work to remove the global SystemVariables and StatusVariables registries and make them state on the Engine itself.
    • Dolt no longer falls back to the global registries, and NewSqlEngine and sqlserver.Serve now require a variable bundle.
    • Dolt's system variable definitions are merged into one list.
    • DefaultSession and NewDetachedSession are deprecated.
  • 12278: go: Store the commits of a rebase plan as commit addresses.
    New dolt_rebase plans store commit_hash with CommitAddrEnc, so garbage collection keeps the commits of a paused rebase even when no branch reaches them. Writes to the column reject anything but an existing commit before it reaches the store, where a dangling address would discard the shared memtable. Older clients fail reading these plans with a clean error from a new schema field, and plans they wrote keep working as text.
  • 12276: go: Keep rebase state and the pre-merge head reachable through working sets.
    WalkAddrs skipped a working set's rebase state and pre-merge head commit, so GC could collect them and leave the database unreadable. WorkingSetHashes now also keeps the pre-merge head for in-memory working sets. Fixes #12253.
  • 12240: go/cmd/dolt/commands/sqlserver: Run the read-only access mode check inside a GC safepoint session command.
    With context validation enabled by an earlier engine in the process, as in DoltgreSQL's startup integrity check, loading databases in this check panicked. ConfigureServices now creates one GCSafepointController, shared by this check and the engine through the new SqlEngineConfig.GCSafepointController field.
  • 12226: Add dolt branch --orphan to start an unrelated history
    dolt branch --orphan <name> [<start-point>] and dolt_branch('--orphan', ...) create a branch whose only commit has no parents and holds the contents of the start point (HEAD by default). The commit message names the start point, so an orphan of the initial commit never hashes to the same commit. Use dolt commit --amend to change the message.
    Git has the --orphan option in three commands: checkout, switch, and workspace. I decided to deviate for Dolt because checkout is discouraged in a server context, and there is nothing like switch and workspace. Creating a new branch is actually a better description of what is happening anyway.
    Additionally: checkout permission bug addressed.
    Related: #4468

Closed Issues

  • 12330: dolt_preview_merge_conflicts returns wrong values when a schema changed on either branch
  • 12012: Merge should succeed when both sides made the same primary-key change
  • 11503: ORDER BY + huge LIMIT (≥ 2^62) panics
  • 12107: JSON_EXTRACT panics when one of several paths matches nothing
  • 12253: dolt_gc after deleting a branch mid-rebase leaves the database unopenable
  • 12235: DELETE ... WHERE a IN (derived table with NOT EXISTS and ORDER BY ... LIMIT) drops the connection (called partitions on a lookup indexed table)
  • 12263: md5() and sha2() on a BLOB over 2 KB panic and drop the connection
  • 12262: dolt_query_diff reports rows with equal DECIMAL or JSON values as modified
  • 11317: panic: index out of range in prolly index writer during ON DELETE CASCADE on a table with an indexed generated column (2.2.0)
  • 12238: Multi-table UPDATE assigning a generated column drops the connection (*plan.JoinNode is not sql.NameableNode)
  • 11439: dump panics with "index out of range" on a table with a generated column
  • 11456: MySQL Binary Prepared Statement (COM_STMT_EXECUTE) truncates TCP packet payload on JSON columns containing multi-line formatted strings
  • 11638: Wrong results: a scalar subquery's aggregate returns the OUTER query's aggregate when both use the same aggregate expression on the same table
  • 10856: Error when LateBindQueryist fails to connect to the running sql-server noted in sql-server.info is confusing
  • 11658: sql-server logs expected idle-connection reaps at ERROR (6565 lines/day on a healthy server)
  • 11648: git-remote: dolt_remote_info under refs/heads/ makes concurrent git fetch fail with "incorrect old value provided"
  • 12284: Unsupported feature: unary operator: ~