Skip to content

doltgres 1.4.0 - #314846

Merged
BrewTestBot merged 2 commits into
mainfrom
bump-doltgres-1.4.0
Oct 2, 2026
Merged

BrewTestBot merged 2 commits into
mainfrom
bump-doltgres-1.4.0

Conversation

@BrewTestBot

Copy link
Copy Markdown
Contributor

Created by brew bump


Created with brew bump-formula-pr.

Details

release notes
# Merged PRs

dolt

  • 11993: /go/{cmd,libraries,store}: allow configuring git remotes
    Add git-remote.max-history-commits and git-remote.reset-history-on-prune settings so users can trade disk usage for faster incremental transfers. Support local/global dolt config, environment overrides, and typed options for embedders.
    Defaults remain unchanged. A history limit of 0 means unlimited; disabling prune-triggered resets allows obsolete data to remain reachable until the history limit is reached.
  • 11991: /go/store/blobstore: use fetch anchor ref
    Preserve a persistent Git fetch anchor during teardown so subsequent pulls can negotiate incremental transfers instead of re-downloading the database. Compare-and-swap protects the anchor from overlapping sessions while allowing private refs to be cleaned up.
  • 11990: significantly faster implementation of dolt log
    With these optimizations, dolt log is now an O(N) operation rather than an O(N^2).
    Optimizations:
    • Only query dolt_branches, dolt_tags, dolt_log() once instead of for every commit
    • CommitInfo is passed as a pointer
      Potential improvements:
    • There are places where we can now add concurrency for long running queryist calls
    • Pagination can now be properly implemented, but it is left as a TODO
      Before:
    james@macbook beads_sample % time dolt log -n 5000 > out.txt
    dolt log -n 5000 > out.txt  97.62s user 2.81s system 157% cpu 1:03.60 total
    
    After:
    james@macbook beads_sample % time dolt log -n 5000 > out.txt
    dolt log -n 5000 > out.txt  0.09s user 0.13s system 15% cpu 1.422 total
    
    About a 1000x improvement, which scales exponentially as number of commits increase.
    Fixes: dolt log takes really long time. dolthub/dolt#9315
  • 11989: /go/store/nbs: cover missing spooling paths
    Newly persisted Git-backed tables and conjoin input reads bypassed NBS spooling, causing redundant Git reads and decompression. This change spools persisted tables from bytes already in memory and makes conjoin reuse existing source readers.
    Adds regression coverage for chunk correctness, blob read counts, and spool cleanup. Full NBS tests and focused race tests pass.
    Fixes #11916.
  • 11985: Fix License Link
  • 11956: Fix upsert authorization and add protocol regression coverage
    Upserts could rewrite rows without UPDATE privileges. Update GMS to require UPDATE authorization and add protocol regression coverage for denied and permitted upserts.
  • 11935: Replace github.com/dolthub/fslock with github.com/dolthub/file-locks
    The new library keeps the interface - New, Lock, TryLock, LockWithTimeout, Unlock, Close, ErrLocked and ErrTimeout - so nothing here changes but the import line. The package is still named fslock, imported under that name from a path that no longer matches it.
  • 11933: Allow DoltgreSQL to override effective user in search path $user substitution.
  • 11921: Allow DoltgreSQL to provide branch-control principal
  • 11920: Add DoltgreSQL transaction lifecycle hooks
    These allow Doltgres to see transaction start, why a transaction ended (rollback, commit) and interact with savepoints as well.
  • 11896: Limit CI deferral comments to label and draft state changes
    Limits CI deferral and release comments to relevant label changes and draft/ready transitions, preventing duplicate notifications on commit pushes.
  • 11893: go/store/nbs: Fix two nil-ghostGen bugs in GenerationalNBS
    Two pre-existing bugs on the ghostGen == nil path, both only reachable outside the Dolt server (dbfactory always supplies a ghost store):
    • HasMany returned nil instead of the absent set, hiding missing hashes. Regression test included.
    • PersistGhostHashes had its nil check inverted.
  • 11892: go/store/nbs: Fix generation ordering on reads to avoid missing a chunk which is being moved from new to old gen.
    When GC moves chunks from new to old gen, it publishes them into old gen and then, eventually, drops them from new gen. If the Reads check old gen first, and then fall back to new gen, they can miss a chunk which is actually retained --- the entire GC can run in between the return from the old gen Read and before the new gen Read.
    Reading new gen first is the fix. If the chunk isn't in new gen and it does exist, it has guaranteed already been published to old gen by the time we ask for it.
  • 11891: go/store/nbs: Drain outstanding reads before a GC installs its keeper.
    An unlocked read samples |nbs.keeperFunc| under |nbs.mu| and then runs
    against a table set with the lock released, so a read already in flight
    when BeginGC installed its keeper could return chunks having taken no
    read dependency on them, leaving the GC free to collect them. BeginGC now
    sets |gcInstallPending| and waits for |outstandingReads| to drain before
    installing, and every read path parks on that flag at the top of its
    locked section. Parking there, rather than in |beginRead|, keeps a read
    which spans the memtable and the table files from being split across the
    barrier. A BeginGC whose context is cancelled during the drain clears the
    flag and restores conjoin, so it leaves no reads parked and no conjoin
    disabled.
  • 11889: go/store/nbs: Sample the keeper in |beginRead|, and register every unlocked read.
    |beginRead| now samples |nbs.keeperFunc| and |nbs.gcCycleCounter| itself
    and registers every unlocked read, rather than each call site sampling
    them separately and only reads which started during a GC being
    registered. A read's keeper and cycle therefore come from the same
    locked section which registers it, |nbs.outstandingReads| counts every
    read running against a table set, and |endRead| is never nil. This is
    the plumbing for making a keeper installation a barrier: the follow-up
    drains those registrations before it installs a keeper. The costs are
    that a read with no GC running reacquires |nbs.mu| once at completion,
    where before it did not, and that EndGC now also waits out reads which
    started before its GC began.
  • 11888: go/store/nbs: Fix a lost cancellation wakeup in |waitForGC|.
    Now take nbs.mu when we broadcast gcCond, so that our waiter is definitely already parked if they need to see our wakeup.
  • 11887: go: NodeStore, ValueStore: Avoid caching things that might have been read before an incoming Purge request.
    The NodeStore and the ValueStore cache have the structure where they are queried and, if there is a miss, a fetch is made the underlying ChunkStore. They are then populated with the result. GC runs a Purge operation on these caches. This makes all future read operations reach the ChunkStore layer during the GC operation, so that proper dependencies can be taken on them.
    This change fixes a race where Get -> Read -> Purge -> Put could result in the cache carrying data throughout and after the GC which might have been read before the Purge operation itself. The caches now carry a purge count and they refuse to populate with values which were fetched based on a Get at a previous purge count.
  • 11872: integration-tests/go-sql-server-driver: Add machinery to run dolt fsck on the database directories anytime these tests fail.
  • 11854: Print SQL boolean results as numeric values
    Prints boolean SQL results as 1 and 0 in text and CSV output to match MySQL.
    Fixes dolt returns boolean values sometimes dolthub/dolt#6044
  • 11852: Validate destination branch names before pushing
    Rejects invalid destination branch names before pushing to remotes.
    Fixes push should validate branch name like checkout or branch dolthub/dolt#5341
  • 11851: Enable Dolt executable comments in SQL scripts
    Enables DOLT executable comments with the parser support in Support Dolt executable SQL comments dolthub/vitess#494.
    Fixes Dolt should support it's own flavor of special comments. dolthub/dolt#3096
  • 11849: Support JSON Lines output for SQL queries
    Adds jsonl SQL result formatting with one JSON object per row.
    Fixes Allow jsonl result format dolthub/dolt#1844
  • 11844: Show ON UPDATE CURRENT_TIMESTAMP across schemas and table alterations in EXTRA column
    Fix dolthub/dolt#11774
    Blocked by dolthub/go-mysql-server#3862
  • 11842: Support wildcard table filters for binlog replication
    Adds REPLICATE_WILD_DO_TABLE and REPLICATE_WILD_IGNORE_TABLE support for MySQL-to-Dolt binlog replication, including MySQL wildcard matching, precedence, case handling, validation, and SHOW REPLICA STATUS output.
    Filter updates are applied atomically and synchronized with replica lifecycle operations.
    Part of #11787
    Depends on: dolthub/go-mysql-server#3885
  • 11802: Fix legacy table name unmarshalling receiver
  • 11773: go/store/nbs: Add validation and sanity checks on the index data when a NomsBlockStore opens a table file.
    Two types of checks are added. Simple checks are run on every index parse. They assert that prefixes are in sorted order, that ordinals are within range, that offsets (dervied from the lengths) are not too small. The more expensive checks only run when we add new table files to the store, typically as part of GC, a pull or receiving a push. These further assert that recorded ordinals are unique and that the hash of the suffixes table matches the file name, which is how the table file name is derived on all write paths.
    These sanity checks are added to make Dolt more robust in the face of bugs in Dolt or unexpected behavior from I/O interactions. If these validation checks fail, Dolt has a chance to fail a write operation which is attempting to take a new dependency on the corrupted data.
  • 11756: Bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /go
    Bumps google.golang.org/grpc from 1.83.1 to 1.83.2.
    Release notes

    Sourced from google.golang.org/grpc's releases.

    Release 1.83.2

    Security

    • server: Reject requests missing both :authority and Host headers with HTTP 400 and status Internal. (grpc/grpc-go#9365)
    Commits

  • 11643: dynamic merge conflict handling
    This change allows for more flexible row merge behavior, in particular the ability to detect conflict on matching values and create rows dynamically based on the callers requirements.
    DumboDB is the direct consumer of this change. This allows us to match Dumbo's standard compare-and-set query pattern, and to also enable collection specific merge modes.
    There may be cleaner ways to implement this, but I opted to touch the common (dolt) code path as little as possible since this could have significant perf impacts. nil rowMergePolicy is the dolt way as a result.
  • 11618: {proto,go/serial}/.bazelversion: Bump to 9.2.0. Bump some module versions.

doltgresql

go-mysql-server

View the full release notes at https://github.com/dolthub/doltgresql/releases/tag/v1.4.0.


@github-actions github-actions Bot added go Go use is a significant feature of the PR or issue bump-formula-pr PR was created using `brew bump-formula-pr` icu4c ICU use is a significant feature of the PR or issue labels Oct 1, 2026
@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

🤖 An automated task has requested bottles to be published to this PR.

Caution

Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch.

@github-actions github-actions Bot added the CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. label Oct 2, 2026
@BrewTestBot
BrewTestBot enabled auto-merge October 2, 2026 00:52
@BrewTestBot
BrewTestBot added this pull request to the merge queue Oct 2, 2026
Merged via the queue into main with commit 0d3ab5a Oct 2, 2026
22 checks passed
@BrewTestBot
BrewTestBot deleted the bump-doltgres-1.4.0 branch October 2, 2026 01:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bump-formula-pr PR was created using `brew bump-formula-pr` CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. go Go use is a significant feature of the PR or issue icu4c ICU use is a significant feature of the PR or issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants