Download Latest Version dolt-windows-amd64.zip (40.0 MB) Google Add to Preferred Sources
Home / v2.4.1
Name Modified Size InfoDownloads / Week
Parent folder
dolt-windows-amd64.msi 2026-10-03 45.8 MB
dolt-2.4.1-1.aarch64.rpm 2026-10-02 40.9 MB
dolt-2.4.1-1.x86_64.rpm 2026-10-02 44.1 MB
install.sh 2026-10-02 3.2 kB
dolt-windows-amd64.7z 2026-10-02 23.2 MB
dolt-windows-amd64.zip 2026-10-02 40.2 MB
dolt-darwin-arm64.tar.gz 2026-10-02 41.2 MB
dolt-darwin-amd64.tar.gz 2026-10-02 43.7 MB
dolt-linux-arm64.tar.gz 2026-10-02 40.8 MB
dolt-linux-amd64.tar.gz 2026-10-02 44.1 MB
2.4.1 source code.tar.gz 2026-10-02 12.4 MB
2.4.1 source code.zip 2026-10-02 14.2 MB
README.md 2026-10-02 18.2 kB
Totals: 13 Items   390.8 MB 0

Merged PRs

dolt

  • 12016: /{go,integration-tests}: use a more specific cache key Use the local database cache root, remote URL, and effective Git ref as the cache key so databases and custom refs cannot incorrectly share a remote handle. The SQL provider and Git remote factory share key construction, and remote opens and cache lookups share parameter construction. Validated with all eight SQL Git-remote integration tests and targeted remote configuration, factory, and database provider Go tests. Fixes [#12011].
  • 12002: Fix CREATE TABLE rejected on the target branch of a nonlocal table rule
  • Add checkNonlocalTableName for Database.CreateTable and Database.CreateIndexedTable to allow a table name where the nonlocal rule resolves it locally. Fix [#11995]
  • 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: https://github.com/dolthub/dolt/issues/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
  • 11980: Test update triggers during CSV imports Adds CSV import regression coverage for update triggers alongside https://github.com/dolthub/go-mysql-server/pull/3947 and https://github.com/dolthub/doltgresql/pull/3469. Fixes https://github.com/dolthub/dolt/issues/5925
  • 11756: Bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /go Bumps google.golang.org/grpc (github.com) from 1.83.1 to 1.83.2.
    Release notes

    Sourced from google.golang.org/grpc's releases (github.com).

    Release 1.83.2

    Security

Commits


go-mysql-server

  • 3979: Preserve decimal precision in GREATEST and LEAST Preserves exact decimal values and result types in GREATEST and LEAST. Fixes https://github.com/dolthub/dolt/issues/10567
  • 3976: Test EXISTS and NOT EXISTS with window functions Adds regression coverage for NOT EXISTS and multiple window functions inside EXISTS subqueries. Fixes https://github.com/dolthub/dolt/issues/11421
  • 3975: Test EXISTS over empty scalar aggregate inputs Adds regression coverage for EXISTS and NOT EXISTS over scalar SUM aggregates with empty inputs and grouped controls. Fixes https://github.com/dolthub/dolt/issues/11489
  • 3974: Test listener shutdown with pending connections Adds regression coverage for TCP and Unix listener shutdown races and Accept after Close.
  • 3973: Preserve literal defaults during ALTER table rewrites ALTER rewrites starting from persisted schema could reclassify literal defaults as expressions, causing datetime COLUMN_DEFAULT values to gain quotes after subsequent column changes. Resolve defaults in the current schema before rewriting, preserving literal metadata and existing multi-column ALTER behavior. Adds shared engine coverage for metadata, SHOW CREATE, and default insertion. All 50 Dolt default-value BATS cases, Dolt MODIFY tests, and relevant GMS suites pass; expectations were checked against MySQL 8.4.11. Addresses the Lambda BATS failure in Dolt [#11994].
  • 3970: Support PostgreSQL UPDATE row counts Add an engine override to support PostgreSQL UPDATE row count behavior, where all matched rows are counted. Also simplifies INSERT ON DUPLICATE UPDATE handling. Addresses https://github.com/dolthub/doltgresql/issues/3113. Doltgres PR: https://github.com/dolthub/doltgresql/pull/3468.
  • 3967: IN expr: compare every element of the right tuple this changes the previous assumption of all tuple elements being of the same type. Fixes: [#11968]
  • 3965: Reject out-of-range INET_NTOA arguments Returns NULL with a warning for INET_NTOA arguments outside the IPv4 range. Fixes https://github.com/dolthub/dolt/issues/11510
  • 3964: Validate twelve-hour STR_TO_DATE inputs Validates twelve-hour STR_TO_DATE inputs and normalizes midnight and noon consistently with MySQL. Fixes https://github.com/dolthub/dolt/issues/11544
  • 3963: Reset regular expressions between window partitions Reinitializes disposed regular expressions when they are reused across window partitions. Fixes https://github.com/dolthub/dolt/issues/11550
  • 3962: Clamp unsigned MEDIUMINT serialization to its maximum value Clamps unsigned MEDIUMINT serialization to 16777215.
  • 3961: Store binary collation metadata explicitly Stores binary collation metadata explicitly instead of deriving it from collation names. Fixes https://github.com/dolthub/go-mysql-server/issues/3838
  • 3960: Preserve NULL semantics for indexed NOT IN subqueries Avoids lookup and merge joins that discard NULL semantics in nullable NOT IN subqueries.
  • 3959: Recompute stored generated columns after definition changes Recomputes stored generated columns and their dependents when MODIFY or CHANGE alters their definitions. Fixes https://github.com/dolthub/dolt/issues/11781
  • 3958: Reject malformed UTF-8 in CONVERT USING utf8mb4 Returns NULL with a warning when CONVERT USING utf8mb4 receives malformed UTF-8. Fixes https://github.com/dolthub/go-mysql-server/issues/3837
  • 3957: Preserve unsigned bits when casting to SIGNED Reinterprets BIGINT UNSIGNED values as signed integers when evaluating CAST AS SIGNED. Fixes https://github.com/dolthub/dolt/issues/11906
  • 3956: Preserve NOT IN predicates that cannot be unnested Preserves negation on residual NOT IN predicates when sibling subqueries become anti joins. Fixes https://github.com/dolthub/dolt/issues/11913
  • 3955: Convert STR_TO_DATE arguments to strings Accepts binary and numeric arguments to STR_TO_DATE using MySQL-compatible string conversion. Fixes https://github.com/dolthub/dolt/issues/11919
  • 3954: Respect context cancellation errors during group by aggregation Cancels blocked grouping producers when the grouping consumer returns an error.
  • 3953: Allow grouped expressions without column dependencies Allows column-free expressions and correlated subqueries that reference only grouped columns under ONLY_FULL_GROUP_BY.
  • 3952: Account for COUNT DISTINCT memory usage Tracks COUNT DISTINCT allocations through the session memory manager after the grouping cancellation fix in [#3954].
  • 3951: Validate temporal cast precision Validates temporal cast precision before constructing the target type.
  • 3950: Fix correlated subquery dependencies in grouped joins Preserves correlated subquery column dependencies when grouping over joins.
  • 3949: Fix column statistics queries without initialized privileges Returns an empty iterator when column statistics are queried without initialized session privileges.
  • 3948: Implement numeric converts to TIME with precision Implement conversion for numeric types to TIME including precision parameters. Also includes conversion logic for boolean types and small fixes for string conversions.
  • 3947: Execute duplicate-key update triggers Executes duplicate-key update triggers, with import regression coverage in https://github.com/dolthub/dolt/pull/11980 and DoltgreSQL compatibility changes in https://github.com/dolthub/doltgresql/pull/3469. Fixes https://github.com/dolthub/dolt/issues/5925
  • 3941: Resolved table and CTE authorization Fixes a bug where subqueries could bypass permissions in some instances (test cases are now returning errors), and also adds an interface for:
  • https://github.com/dolthub/doltgresql/pull/3451
  • 3940: Require UPDATE privileges for duplicate-key inserts INSERT ... ON DUPLICATE KEY UPDATE could rewrite rows without UPDATE privileges. Require UPDATE authorization and return the MySQL-compatible error code when access is denied.
  • 3918: Support escaped LIKE wildcard in analyzer prefix extraction and pattern matching Fix [#11903] Fix [#11910] Blocked by dolthub/vitess#497 Block [#11937] Close dolthub/go-mysql-server#3972

vitess

Closed Issues

  • 11911: ONLY_FULL_GROUP_BY: uncorrelated scalar subqueries in grouped SELECT lists — intended behavior or oversight?
  • 11995: Creating a table that matches a dolt_nonlocal_tables rule fails on the rule's target branch, depending on how the primary key is declared
  • 12011: sql-server: git remotes with the same URL but different --ref share one ref — a push from one database overwrites another database's data
  • 11558: Dolt ignores default backslash escaping for wildcard characters in a window child
  • 11907: IN predicate ignores utf8mb4_unicode_ci for accent-insensitive comparisons
  • 5925: Update triggers do not fire on INSERT INTO...ON DUPLICATE KEY UPDATE...
  • 11968: WHERE returns a row for an IN predicate that evaluates to FALSE
  • 10567: GREATEST and LEAST functions should return decimal type when args are decimal types
  • 8961: Generated Columns deleted the VECTOR index.
  • 11949: git remote: since v2.1.2 a pull can re-download the whole database, because each process deletes its fetch ref
  • 11910: LIKE does not honor MySQL's default backslash escape
  • 11903: String literals drop the backslash in \% and _, so LIKE '%_%' matches every row (differs from MySQL)
  • 9315: dolt log takes really long time.
  • 11916: GitBlobstore: every ranged read re-inflates the git object from byte 0 — pulls from git remotes are O(reads × part size) (40 min → 2 min with an OID cache)
  • 11781: ALTER TABLE MODIFY COLUMN does not recompute a STORED generated column, leaving rows and indexes stale
  • 11984: License link is broken
  • 11550: Dolt returns a wrong result for REGEXP_LIKE across partitions
  • 11913: Planner drops the NOT from the first of two ANDed NOT IN (subquery) predicates when its subquery is a UNION — query returns exactly the excluded rows
  • 11919: STR_TO_DATE() with BLOB argument errors with "invalid type: []uint8"
  • 11906: Incorrect CAST from BIGINT UNSIGNED to SIGNED
  • 8657: Vector index lookup errors when index is non-covering.
  • 3838: Add explicit metadata flag on Collation for binary collations
  • 3837: Emit ER_INVALID_CHARACTER_STRING on malformed multi-byte character strings instead of returning ErrCollationMalformedString
Source: README.md, updated 2026-10-02