MatrixOne-v3.0.9
Release date: Apr 1 2026
MatrixOne version: v3.0.9
MatrixOne 3.0.9 introduces improvements and bug fixes that enhance usability. Below are the major updates.
Key Improvements
Vector Search & AI Features
*IVF-FLAT build parity: Port IVF-FLAT index build from main for consistent behavior across branches (#23737).
*IVF create plan: Remove cross apply from ivf_create on 3.0-dev to simplify the plan (#23780).
*IVF runtime robustness: Harden InMem IVF paths against distVec issues in multi-batch reads and persisted data (#23783, #23812).
*IVF memory: Move IVFFLAT-related allocations to heap to avoid stack / escape issues (#23837).
*Vector parsing: Restore dimension validation in strToArray for safer string-to-vector ingestion (#23878).
Lock Service & Transactions
*Lock mode on promotion: When a waiter becomes a holder, keep lock mode in sync; fix range lock mode not synced on the paired entry (#23787, #23809).
*Snapshot / ordering experiments: Revert refreshSnapshotAfterLock (#23794); a clone+drop race fix was merged then reverted *before the final pairing fix (#23799, #23802).
*Lock retry lifecycle: Exit lock retry cleanly when context is done (#23907).
*Message / apply cleanup: Harden cleanup for abandoned JoinMap and nil table functions (#23932).
*Parallel executor: Fix dirty lockcount under concurrency (#23928).
Data Branch, Snapshot & Storage (3.0)
*CI / quality: Fix flaky TestIssue19551 caused by race conditions (#23773).
*Stale read after merge + GC: Correct immediate branch merge interactions after GC (#23827).
*Data branch diff: Improve diff correctness, memory control, and summary output (#23811).
*Full-text + snapshot: Harden fulltext snapshot restore (#23867).
*PK / tombstones: Make tombstone checks PK-aware in PKPersistedBetween on 3.0 (#23869).
*Object I/O metadata: Keep zonemap for hidden rowid and ts columns after refactor (#23850).
*DDL / conflicts: Mitigate intermittent ww_conflict / duplicate key after drop primary key on 3.0 (#23890).
*Multi-CN retry: Detect duplicate keys during multi-CN retry paths (#23917).
*Dedup / snapshot: In dedupjoin, return ErrTxnNeedRetry from checkSnapshotAdvancedDuplicates to avoid false-positive duplicate errors (#23952).
SQL,** Plan & Execution
*Prepared statements: Fix PREPARE with ON DUPLICATE KEY UPDATE when NULL is written to an UNSIGNED column (#23888).
*ODKU semantics: Fix VALUES() returning stale values instead of NULL in multi-row INSERT … ON DUPLICATE KEY UPDATE (#23896).
*Vectors / JSON: Reset vector class to FLAT in ResetWithSameType to fix prepared statement + NULL JSON panic (3.0-dev) (#23865).
*Foreign keys: Support repeated delete plan merges for FK cascade on 3.0 (#23900).
*Windows & HAVING: Support HAVING filters on window aliases (#23951); fix window + ORDER BY on non-numeric types with RANGE UNBOUNDED frame (#23945).
*Dedup join + prepare: Fix prepare interaction with dedup join (#23926).
*Information schema: INDEX_TYPE in statistics should use idx.algo instead of NULL (#23933).
Cluster & Infrastructure
*HAKeeper client: Retry EOF errors for resilience (#23903).
*CDC: Address flaky CDC tests / behavior (#23908).
*Scans: Make protectedScans suspend/resume defer-safe (#23920).
*Object storage: GC / fileservice compatibility fixes for OBS-like S3 backends (#23922).
Key Bug Fixes
Critical Panics & Crashes
*IVF-FLAT InMem paths: distVec / NULL vector scan panics (#23783, #23812, #23835).
*Prepared statement path: NULL JSON + vector reset panic (#23865).
*Data Consistency & Concurrency
*Lock-service waiter/holder and range lock pairing (#23787, #23809).
*Stale read after branch merge and GC (#23827).
*Tombstone vs PK in persisted paths (#23869).
*False duplicates / retry semantics in dedupjoin and multi-CN (#23952, #23917).
CDC & Replication
*Flaky CDC stabilization (#23908).
###SQL & Query Fixes
*ON DUPLICATE KEY UPDATE with UNSIGNED and VALUES() correctness (#23888, #23896).
*Window frames and HAVING on window expressions (#23951, #23945).
*Information_schema INDEX_TYPE (#23933).
Infrastructure & Compatibility
*HAKeeper EOF retries (#23903).
*S3 / OBS-like backend quirks in GC (#23922).
*protectedScans and defer safety (#23920).
*JoinMap / pipeline cleanup (#23932).
What's Changed
- ivfflat index build port from main by @cpegeric in #23737
- to 3.0: fix: resolve
TestIssue19551flaky test due to race conditions by @gouhongshen in #23773 - fix: prevent distVec panic in multi-batch IVFFLAT InMem reads by @iamlinjunhong in #23783
- fix(lockservice): sync lock mode when waiter is promoted to holder by @LeftHandCold in #23787
- revert refreshSnapshotAfterLock by @LeftHandCold in #23794
- remove cross apply from ivf_create 3.0-dev by @cpegeric in #23780
- lockservice,txn: fix clone+drop race by syncing range lock mode and reordering doWrite defers by @LeftHandCold in #23799
- Revert "lockservice,txn: fix clone+drop race by syncing range lock mode and reordering doWrite defers (#23799)" by @LeftHandCold in #23802
- lockservice: fix range lock mode not synced to paired entry on waiter promotion by @LeftHandCold in #23809
- fix persisted without deal with distVec by @iamlinjunhong in #23812
- To 3.0 by @gouhongshen in #23819
- to 3.0: fix: handle stale read on immediate branch merge after GC by @gouhongshen in #23827
- fix: panic on IVF-Flat entries table scan with NULL vectors in InMem … by @iamlinjunhong in #23835
- to 3.0: fix(data-branch): improve diff correctness, memory control, and output summary support by @gouhongshen in #23811
- ivfflat memory escape to heap (3.0-dev) by @cpegeric in #23837
- to 3.0: fix: harden fulltext snapshot restore by @gouhongshen in #23867
- fix: make tombstone check PK-aware in PKPersistedBetween 3.0 by @aptend in #23869
- fix: reset vector class to FLAT in ResetWithSameType to fix prepared stmt null json panic (3.0-dev) by @ck89119 in #23865
- to 3.0: refactor(objectio): keep zonemap for hidden rowid and ts columns by @gouhongshen in #23850
- fix: restore vector dimension validation in strToArray for … by @iamlinjunhong in #23878
- Fix PREPARE with ON DUPLICATE KEY UPDATE for NULL on UNSIGNED column by @jiangxinmeng1 in #23888
- fix: support repeated delete plan merges for fk cascade 3.0 by @aptend in #23900
- fix: retry EOF errors from HAKeeper client by @robll-v1 in #23903
- to 3.0: fix: resolve intermittent ww_conflict duplicate key after drop primary key on 3.0 by @gouhongshen in #23890
- Fix lock retry exit on done context by @LeftHandCold in #23907
- fix: flaky cdc by @XuPeng-SH in #23908
- fix VALUES() returning stale data instead of NULL in multi-row INSERT ON DUPLICATE KEY UPDATE by @jiangxinmeng1 in #23896
- fix: catch duplicate keys during multi-CN retry by @gouhongshen in #23917
- fileservice/gc: fix S3 compatibility issues for OBS-like backends by @LeftHandCold in #23922
- fix: make suspend/resume of protectedScans defer-safe by @XuPeng-SH in #23920
- fix: prepare and dedup join by @XuPeng-SH in #23926
- fix: dirty lockcount by @XuPeng-SH in #23928
- fix(message,apply): harden cleanup for abandoned JoinMap and nil table functions by @LeftHandCold in #23932
- fix(information_schema): statistics INDEX_TYPE should use idx.algo instead of NULL by @ck89119 in #23933
- fix(plan): support HAVING filters on window aliases by @iamlinjunhong in #23951
- to 3.0: fix(dedupjoin): return ErrTxnNeedRetry in checkSnapshotAdvancedDuplicates to fix false-positive duplicate entry (#23943) by @gouhongshen in #23952
- fix: window function with ORDER BY on non-numeric type errors for RANGE UNBOUNDED frame by @ck89119 in #23945
Full Changelog: v3.0.8...v3.0.9