MatrixOne v25.3.0.9 发布报告
发布日期:2026 年 4 月 01 日
MatrixOne 版本:v26.3.0.9
MatrixOne 3.0.9 引入了一系列改进和错误修复,以提升系统的易用性。以下是主要更新内容:
关键改进
向量搜索 & AI 功能
- IVF-FLAT 构建一致性:从主分支移植 IVF-FLAT 索引构建逻辑,保证各分支行为一致(#23737)
- IVF 创建计划:在 3.0-dev 中移除 ivf_create 的 cross apply,简化执行计划(#23780)
- IVF 运行时健壮性:增强 InMem IVF 路径,在多批次读取和持久化数据场景下处理 distVec 问题(#23783, #23812)
- IVF 内存优化:将 IVFFLAT 相关内存分配迁移到堆上,避免栈溢出或逃逸问题(#23837)
- 向量解析:在 strToArray 中恢复维度校验,提高字符串转向量的安全性(#23878)
锁服务 & 事务
- 锁升级模式同步:当等待者变为持有者时保持锁模式一致;修复 range lock 在配对项中未同步的问题(#23787, #23809)
- 快照 / 顺序实验:回滚 refreshSnapshotAfterLock;之前为修复 clone+drop 竞争问题的改动在最终配对修复前被回滚(#23794, #23799, #23802)
- 锁重试生命周期:在 context 结束时正确退出锁重试(#23907)
- 消息 / 执行清理:增强对被遗弃的 JoinMap 和空 table function 的清理(#23932)
- 并行执行器:修复并发场景下 lockcount 脏数据问题(#23928)
数据分支、快照 & 存储(3.0)
- CI / 质量:修复由于竞态导致的 flaky 测试 TestIssue19551(#23773)
- 合并 + GC 后的脏读:修复 GC 后立即分支合并导致的读取异常(#23827)
- 数据分支 diff:提升 diff 正确性、内存控制和摘要输出(#23811)
- 全文索引 + 快照:增强全文索引快照恢复能力(#23867)
- 主键 / 墓碑:在 3.0 中让 PKPersistedBetween 的 tombstone 检查支持主键感知(#23869)
- 对象 I/O 元数据:重构后保留隐藏列 rowid 和 ts 的 zonemap(#23850)
- DDL / 冲突:缓解 3.0 中 drop primary key 后出现的间歇性写写冲突 / 重复键问题(#23890)
- 多 CN 重试:在多 CN 重试路径中检测重复键(#23917)
- 去重 / 快照:在 dedupjoin 中,从 checkSnapshotAdvancedDuplicates 返回 ErrTxnNeedRetry,避免误判重复(#23952)
SQL、执行计划 & 执行引擎
- 预编译语句:修复 PREPARE + ON DUPLICATE KEY UPDATE 在向 UNSIGNED 列写 NULL 时的问题(#23888)
- ODKU 语义:修复多行 INSERT…ODKU 中 VALUES() 返回旧值而不是 NULL 的问题(#23896)
- 向量 / JSON:在 ResetWithSameType 中将 vector class 重置为 FLAT,修复 prepared statement + NULL JSON panic(3.0-dev)(#23865)
- 外键:支持 3.0 中 FK 级联删除的重复 delete plan 合并(#23900)
- 窗口函数 & HAVING:
- 支持对窗口别名使用 HAVING 过滤(#23951)
- 修复非数值类型 + RANGE UNBOUNDED frame + ORDER BY 的问题(#23945)
- dedup join + prepare:修复 prepare 与 dedup join 的交互问题(#23926)
- information_schema:statistics 中的 INDEX_TYPE 应使用 idx.algo 而不是 NULL(#23933)
集群 & 基础设施
- HAKeeper 客户端:增加 EOF 错误重试,提高可靠性(#23903)
- CDC:修复不稳定的 CDC 测试 / 行为(#23908)
- 扫描:让 protectedScans 的 suspend/resume 支持 defer 安全(#23920)
- 对象存储:修复 GC / 文件服务在类 OBS 的 S3 后端上的兼容性问题(#23922)
错误修复
严重崩溃 / Panic
- IVF-FLAT InMem 路径:修复 distVec / NULL 向量扫描导致的 panic(#23783, #23812, #23835)
- 预编译路径:修复 NULL JSON + vector reset 导致的 panic(#23865)
数据一致性 & 并发
- 锁服务 waiter/holder 与 range lock 配对问题(#23787, #23809)
- 分支合并 + GC 后的脏读(#23827)
- 持久化路径中 tombstone 与主键的处理(#23869)
- dedupjoin 与多 CN 中的误判重复 / 重试语义问题(#23952, #23917)
CDC & 复制
- 修复 CDC 不稳定问题(#23908)
SQL & 查询修复
- ODKU 在 UNSIGNED 和 VALUES() 场景下的正确性问题(#23888, #23896)
- 窗口函数与 HAVING 支持及修复(#23951, #23945)
- information_schema 的 INDEX_TYPE 问题(#23933)
基础设施 & 兼容性
- HAKeeper EOF 重试(#23903)
- S3 / OBS 类后端在 GC 中的兼容性问题(#23922)
- protectedScans 的 defer 安全(#23920)
- JoinMap / pipeline 清理(#23932)