github dolthub/dolt v2.1.7
2.1.7

5 hours ago

Merged PRs

dolt

  • 11200: fix: Improve remote interactions against file remotes from within long-lived processes.
    Dolt currently has a singleton cache which can cache file remotes across calls to things like dolt_clone and dolt_fetch. This change ensures that Dolt Rebases the store when it is interacting with the remote so that it always sees the latest novelty.
  • 11198: go/utils/publishrelease/buildindocker.sh: Bump CC toolchain. gcc 16.1.0, musl 1.2.6, binutils 2.46.0, mimalloc 3.3.2.
  • 11197: bug fix for blame view
    Recent change made results start including working set changes, which we don't want
  • 11135: fix: make findCommonCommit deterministic for criss-cross merges
  • 10976: fix(sql): use LEFT JOIN in blame view to handle schema-only reverts

go-mysql-server

  • 3587: go.mod: Bump github.com/lestrrat-go/strftime to v1.2.0. Fixes a lock leak which can deadlock queries in Dolt.
  • 3582: fix: panic in regexp functions over large text in group by
    REGEXP_REPLACE on a large TEXT column inside a GROUP BY panic with SIGSEGV.
    • Add a ScriptTest and RegexScriptTests for similar regressions on REGEXP_REPLACE, REGEXP_SUBSTR, REGEXP_LIKE, and REGEXP_INSTR.
      Depends on dolthub/go-icu-regex#13
  • 3581: Fix LIKE 'prefix%' dropping rows with multibyte text
    LIKE 'prefix%' is rewritten into an index range for speed, but the upper bound used byte 255 (U+00FF), which is not the largest character. Any value after prefix above U+00FF falls outside the range and was silently dropped as a WHERE/JOIN filter. Instead, we build the bound per collation:
    • utf8mb4_0900_bin matches are an exact code-point range, so emit GTE prefix AND LT next (prefix and last character incremented by one skipping the surrogate code points).
    • Any other collation GTE prefix AND <LIKE> so the index still narrows the scan while the retained LIKE keeps results correct. These collations may not sort by raw character numbers, or have unique rules (i.e., treating trailing spaces as nothing, so "ab" and "ab " count as equal).
    • Fix TPCH and IMDB plan expectations with old baked-in bound.
      Fix #11182
      Close #11188
  • 3572: Rewrite CachedResults node and cachedResultsIter to not use MemoryManager
    This PR is a follow-up to #3561 and further addresses the memory leak mentioned in #3560. While the initial fix in #3561 made it seem like the issue was that we were not properly disposing of the CachedResults node, the real issue was that a cachedResultsIter that never wrote to the CachedResults node was never disposed of in the MemoryManager if it was never closed.
    This PR rewrites the CachedResults node and cachedResultsIter to never actually make use of the MemoryManager. Since we do not make use of parallel partitions, there's no need to have a locking cache. Instead, the results of the cachedResultsIter are stored directly in the CachedResults node. This greatly simplifies both the CachedResults node and the cachedResultsIter.
    This PR also moves the emptyCacheIter and EmptyIter out of the plan package and de-dupes any code related to empty iters.

Closed Issues

  • 11131: Dolt 2.0.8: adaptive out-of-line TEXT written via migration is unreadable — "invalid hash length: 19" on read (regression vs 2.0.4)
  • 11037: Allow passing --date to DOLT_MERGE (as is the case for DOLT_COMMIT)
  • 11196: GC kill-connections safepoint leaks connection slots: dss_concurrent_connections counts sessions whose client socket is already gone (pegs at max_connections)
  • 7996: Dolt does not support CREATE TABLE ... AS ... with a table definition
  • 3154: Undefined behavior for dolt checkout <remote branch> when two remote branches have the same name
  • 10802: bug: DOLT_CHECKOUT -b ignores --no-overwrite-ignore when called directly via SQL
  • 11042: dolt_merge_base is non-deterministic on multi-LCA criss-cross merges
  • 11183: REGEXP_REPLACE over a TEXT column in a parallel GROUP BY grouping key SIGSEGVs in go-icu-regex (ICU not thread-safe)
  • 11180: 3-way DOLT_MERGE fails on table with VECTOR INDEX: expected prollyIndex, found: durable.proximityIndex
  • 11182: LIKE 'prefix %' gives wrong results in WHERE filter vs projection when matching rows have multibyte chars after the prefix

Don't miss a new dolt release

NewReleases is sending notifications on new releases.