github dolthub/dolt v1.86.2
1.86.2

21 hours ago

Merged PRs

dolt

  • 10887: fixed failing bats test
  • 10876: go/store/nbs: Fix a rare race condition whould could cause GC and some concurrent readers or writers to deadlock.
    If a GC was started immediately after another GC finished, a session which was waiting on the first GC completion could get stuck waiting for the second GC to complete instead. But the second GC itself was going to block on that session finishing whatever work it was doing.
    Added tracking for the gcCycleCounter which reflects the actual GC operation which any individual call into the NomsBlockStore actually needs to block on.
  • 10875: Add swappable identifier validation function
    Adds a function variable that Doltgres can override to change identifier validation logic.
    Related to dolthub/doltgresql#2580
  • 10873: Fix panic when branch tracking has no merge ref
    Fixes a nil pointer panic in DOLT_PULL when a branch has a remote recorded in its tracking configuration but no merge ref set.
    Fix #10839
  • 10820: go: derive internal cache sizes from GOMEMLIMIT

    Summary

    • Solves #10821
    • Adds a memlimit package that reads standard Go GOMEMLIMIT and proportionally sizes Dolt's three largest caches (node cache, memtable, decoded chunks)
    • When GOMEMLIMIT is unset, all defaults preserved exactly — zero behavior change
    • Replaces the per-cache env var approach from #10815/#10816 with a single standard knob

    Usage

    GOMEMLIMIT=512MiB dolt sql-server

    Design

    Cache Default At GOMEMLIMIT=512MiB
    Prolly node cache 256 MiB ~120 MiB
    Memtable write buffer 256 MiB ~120 MiB
    Decoded chunks cache 32 MiB ~15 MiB
    Budget partitioning: 50% usable (50% GC reserve), then 47/47/6 across caches — matching the ratio of the original hardcoded defaults (256:256:32 MiB). Minimums prevent pathologically small caches. Maximum caps ensure caches never exceed current defaults, even with high GOMEMLIMIT — we can loosen these later if needed.

    Changes

    • New: go/libraries/doltcore/memlimit/ — budget calculator with 8 unit tests
    • Modified: go/store/prolly/tree/node_store.go — lazy sync.Once init via memlimit
    • Modified: go/store/types/value_store.go — decoded chunks from memlimit
    • Modified: go/libraries/doltcore/dbfactory/ — all 8 factory impls call memlimit.MemtableSize() directly
    • Modified: go/cmd/dolt/dolt.gomemlimit.Init() in runMain()

    What this doesn't do

    • No custom DOLT_* env vars
    • No YAML config additions
    • No automemlimit dep yet (follow-up for container cgroup auto-detection)
    • Doesn't touch commit cache (already has DOLT_COMMIT_CACHE_SIZE)

    Test plan

    • 8 unit tests: defaults, zero, 512 MiB, 128 MiB, 32 MiB (minimums), 4 GiB (capped at defaults), accessors
    • store/prolly/tree, store/types, libraries/doltcore/dbfactory, store/prolly test suites pass
    • Full binary build + live RSS measurement (needs CI with ICU headers)
      🤖 Generated with Claude Code

go-mysql-server

  • 3510: Ignore unique key errors when inserting into fulltext position table
    fixes #10882
    Ignore unique key errors when inserting into fulltext index.Position table (similar to how unique key errors are ignored for index.DocCount).
    We should consider using a non-unique index for index.Position and index.DocCount or restructuring how we're writing to these tables if we're always going to be ignoring unique key errors.
  • 3508: go.mod: Bump go-icu-regex.
  • 3505: trim analyzer rules for simple selects
    This PR adds a fast analysis pass for queries of the form SELECT ... FROM ... WHERE ....
    The idea is that simple select queries (no subqueries) can avoid many (recursive) analyzer rules like applying triggers and foreign keys.
    Benchmarks: #10824 (comment)
  • 3501: Several new spatial funcs
    Also revived our MySQL engine test harness to verify these new tests match the current MySQL behavior

Closed Issues

  • 10882: REPLACE INTO panics on FULLTEXT-indexed table when old and new content share a word at the same position
  • 10839: DOLT_PULL panics with nil pointer when branch tracking not configured in repo_state.json
  • 10841: (Dolt shell) Do not throw error when parsing delimiter statements that follow a line comment
  • 10573: Support jsonl format in dolt table export
  • 10849: dolt server consumes significant CPU while idle
  • 3506: ICU regex dependency causes portability problems for downstream consumers
  • 3507: CGO compilation fails because icu.go includes C++ ICU header unicode/regex.h via C compiler

Don't miss a new dolt release

NewReleases is sending notifications on new releases.