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.0Pullwas receiving a Go error on every invocation, so nothing depended on the old (broken) return shape in practice.
Fixed
Client.Pullnow scansDOLT_PULL's actual(fast_forward, conflicts, message)result directly instead of going throughcall()'s 1-or-2-column assumption. The newPullResult{FastForward, Conflicts, Message}surfaces the conflict count rather than silently mis-parsing or swallowing it — a non-zeroConflictsis not treated as an error, since the merge completed and left resolvable conflict rows indolt_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.Pullon the rejected side now succeeds, merges cleanly, and reportsConflicts: 0for 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 fromPush/Fetch; usage example extended with aPullcall and conflict check - MkDocs site
Syncdescription updated to match
License
MIT