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 likedolt_cloneanddolt_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_REPLACEon a largeTEXTcolumn inside aGROUP BYpanic withSIGSEGV.- Add a
ScriptTestandRegexScriptTestsfor similar regressions onREGEXP_REPLACE,REGEXP_SUBSTR,REGEXP_LIKE, andREGEXP_INSTR.
Depends on dolthub/go-icu-regex#13
- Add a
- 3581: Fix
LIKE 'prefix%'dropping rows with multibyte text
LIKE 'prefix%'is rewritten into an index range for speed, but the upper bound used byte255 (U+00FF), which is not the largest character. Any value after prefix aboveU+00FFfalls outside the range and was silently dropped as aWHERE/JOINfilter. Instead, we build the bound per collation:utf8mb4_0900_binmatches are an exact code-point range, so emitGTE 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 retainedLIKEkeeps 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
CachedResultsnode andcachedResultsIterto not useMemoryManager
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 theCachedResultsnode, the real issue was that acachedResultsIterthat never wrote to theCachedResultsnode was never disposed of in theMemoryManagerif it was never closed.
This PR rewrites theCachedResultsnode andcachedResultsIterto never actually make use of theMemoryManager. Since we do not make use of parallel partitions, there's no need to have a locking cache. Instead, the results of thecachedResultsIterare stored directly in theCachedResultsnode. This greatly simplifies both theCachedResultsnode and thecachedResultsIter.
This PR also moves theemptyCacheIterandEmptyIterout of theplanpackage 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_connectionscounts sessions whose client socket is already gone (pegs atmax_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