Skip to content

godolt v0.2.0 Release Notes

Release Date: 2026-08-17

Overview

A single fix release: Client.Pull was broken on every call since v0.1.0. CALL DOLT_PULL returns a three-column result (fast_forward, conflicts, message) — a different shape from every other stored procedure godolt's shared call() helper handles (one or two columns) — so Pull unconditionally errored with sql: expected 3 destination arguments in Scan, not 2, regardless of whether the pull itself would have succeeded. Found while building VisionStudio's cloud-to-local sync (RMI-VISIONSTUDIO-535) and verified against a real dolt sql-server reproducing true history divergence before and after the fix.

Breaking Changes

  • Client.Pull's return type changes from (string, error) to (*PullResult, error). There is no compatible old signature to preserve: every caller of the v0.1.0 Pull was receiving a Go error on every invocation, so nothing depended on the old (broken) return shape in practice.

Fixed

  • Client.Pull now scans DOLT_PULL's actual (fast_forward, conflicts, message) result directly instead of going through call()'s 1-or-2-column assumption. The new PullResult{FastForward, Conflicts, Message} surfaces the conflict count rather than silently mis-parsing or swallowing it — a non-zero Conflicts is not treated as an error, since the merge completed and left resolvable conflict rows in dolt_conflicts_<table> for the caller.

Installation

go get github.com/grokify/godolt@v0.2.0

Verification

Reproduced true history divergence — two independent clones each committing before either syncs the other's push, not just an unpushed local commit — against a real dolt sql-server:

  • The second push is genuinely non-fast-forward; Dolt's own remote logic rejects it (... [rejected] ... (non-fast-forward)), confirming push was already fast-forward-only by design before this fix.
  • Client.Pull on the rejected side now succeeds, merges cleanly, and reports Conflicts: 0 for the divergent-but-non-conflicting case.
  • A subsequent push from the same client succeeds once the pull has integrated the remote's history.

Documentation

  • README's Sync feature row split to describe Pull's new return shape separately from Push/Fetch; usage example extended with a Pull call and conflict check
  • MkDocs site Sync description updated to match

License

MIT