MatrixOne v26.4.0.0-rc1 发布说明¶
发布日期:2026 年 7 月 9 日 MatrixOne 版本:v26.4.0.0-rc1
MatrixOne 4.0.0-rc1 是一个重大特性版本。此版本引入了快照和数据分支的资源配额管理系统、用于行级安全的基于角色的 SQL 改写规则、面向分析查询的 sidecar GPU 卸载支持、面向 CDC 消费者的 CHECK SNAPSHOT FLUSHED 语句,以及自 v3.0.13 以来累积的大量稳定性和性能改进。
新功能¶
特性限制系统:资源配额管理¶
新增系统函数 mo_feature_registry_upsert() 和 mo_feature_limit_upsert(),允许 sys 账户管理员注册特性并为每个账户每个作用域设置配额。支持的内置特性:
SNAPSHOT(作用域:account、database、table)— 控制CREATE SNAPSHOT配额。BRANCH(无作用域)— 控制DATA BRANCH CREATE TABLE和DATA BRANCH CREATE DATABASE配额。
配额值:-1(无限制)、0(禁用)、1..32767(上限)。非 sys 账户默认为 50。配额强制在运行时执行而非解析时;更改立即生效;删除资源释放配额。两个函数均仅限 sys 账户调用。
角色改写规则:CREATE RULE / DROP RULE / SHOW RULES¶
新增基于角色的 SQL 转换 DDL。管理员可以定义规则,为特定角色自动注入 SELECT ... WHERE <条件> 包装,实现行级安全。核心能力:
ALTER ROLE <角色> ADD RULE "<sql>" ON TABLE <库>.<表>— 添加改写规则。ALTER ROLE <角色> DROP RULE ON TABLE <库>.<表>— 移除规则。SHOW RULES ON ROLE <角色>— 列出角色的规则。内联
/*+ remap(...) */提示支持逐查询的表和数据库重映射(remapdb)。多角色规则合并:活跃次要角色的规则通过 WHERE-OR 合并,实现行可见性联合。
继承的角色通过角色授权层次贡献规则。
通过
remap_rewrites会话变量提供会话级覆盖。
Sidecar GPU 卸载:CALL gpu_execution()¶
/*+ SIDECAR */ 和 /*+ SIDECAR GPU */ 查询提示允许将 SELECT 查询卸载到外部 DuckDB sidecar 加速执行。使用 /*+ SIDECAR GPU */ 时,查询会额外包装在 CALL gpu_execution(...) 中以启用 Sirius GPU 加速。表引用自动重写为指向通过 debug HTTP 端点提供的 TAE manifest 的 tae_scan() 调用。通过 sidecar_url 会话变量或 TOML 配置文件进行配置。
CHECK SNAPSHOT FLUSHED 语句¶
新增 CHECK SNAPSHOT FLUSHED <快照> <账户> <发布> 语句,验证快照数据是否已完全写入(flush)持久存储,确认 CDC 或跨账户订阅消费者可以安全读取。支持 account、database 和 table 三个粒度级别。通过发布/订阅模型进行授权。
内部跨账户工具¶
通过内部命令调度和发布认证可访问的新内部工具:
GET OBJECT:从分布式文件服务中按块检索原始对象文件数据,用于跨账户数据同步。
OBJECT LIST:列出指定时间范围内属于表的数据对象文件,支持基于快照的差分查询。
GET DDL:通过发布授权提取 CREATE TABLE SQL,用于跨账户 DDL 复制。
所有三个工具都需要发布权限验证,并在授权账户的上下文中运行。
发布内部授权¶
发布相关 DDL(CREATE CDC、CREATE PITR 等)上的 INTERNAL 标志将执行限制为仅系统租户。非 sys 租户将收到明确的错误信息:tenant <X> user <Y> is not allowed to execute publication internal command <Z>。
改进¶
数据分支:DIFF 中的 COLUMNS 投影(#24115)¶
DATA BRANCH DIFF ... COLUMNS (c1, c2, ...) 将每行 diff 的可见值列限制为指定子集。主键仍参与内部匹配和排序,但只有显式请求时才会显示。在宽表上使用可减少负载大小。
数据分支:跨任意深度 DAG 的 Diff/Merge(#24371、#24378)¶
LCA(最低公共祖先)解析和 collect-range 计算现在跨任意 DAG 深度的分支工作,而不仅限于直接父子关系。支持包含数千个中间祖先的大型 DAG 拓扑。
导出:SELECT INTO OUTFILE 的 Parquet 格式支持¶
SELECT ... INTO OUTFILE 现在支持 FORMAT 'parquet' 并可配置 SPLITSIZE。所有 MatrixOne 数据类型均支持 Parquet 导出,包括 decimal、JSON、UUID、enum 和向量类型。日期/时间和 decimal 值以字符串形式序列化以保证兼容性。
数据分支:分支保护快照(#24313)¶
DATA BRANCH CREATE TABLE 和 DATA BRANCH CREATE DATABASE 现在自动在 mo_catalog.mo_snapshots 中创建内部分支保护快照(__mo_branch_<child_table_id>)。这些快照在克隆时间戳处固定父表数据,防止被垃圾回收。分支快照对 SHOW SNAPSHOTS 不可见,被 DROP SNAPSHOT 拒绝,并在整个 DAG 子树被删除时自动回收。
Bug 修复¶
事务中的 LOCK TABLES(#24422)¶
修复了显式事务(BEGIN ... COMMIT)中 LOCK TABLES 被错误拒绝的问题。LOCK TABLES 现在允许在事务块内使用。
数据分支:Merge 通道竞态(#24582)¶
修复了数据分支 merge 通道中的一个竞态条件,该条件可能导致错误的 merge 结果。
数据分支:GC + 重启后 Diff 返回错误结果(#24010)¶
修复了垃圾回收和 CN 重启后 DATA BRANCH DIFF 可能返回错误结果的问题。
DROP TABLE 外键清理(#24132)¶
修复了 DROP TABLE 外键级联清理中缺失子表处理的问题。
SHOW CREATE TABLE 中的 CHECK 约束(#24134)¶
修复了 CHECK 约束在 SHOW CREATE TABLE 输出中未保留的问题。
显式事务长持有泄漏修复(#24105)¶
修复了后端故障后显式事务可能长时间持有资源的内存泄漏问题。
数据分支:Create Table + DROP DATABASE 竞态(#23788)¶
修复了 DATA BRANCH CREATE TABLE 和 DROP DATABASE 之间的竞态条件,该条件可能导致孤儿快照记录。
测试与基础设施更新¶
以下变更为内部基础设施或测试覆盖改进,无新的用户可见 SQL 语法:
CDC 状态机 (
cdc_state_machine):用于 CDC 任务执行器生命周期管理的内部 Go 状态机组件(ExecutorStateMachine)。定义状态(Idle、Starting、Running、Pausing、Paused、Restarting、Cancelling、Cancelled、Failed)和转换。无用户可见 SQL 面。字符集/排序规则测试覆盖 (
charset_collation):全面的回归测试用例,测试CHARACTER SET/COLLATE语法在CREATE DATABASE、CREATE TABLE、ALTER TABLE、SHOW CHARSET、SHOW COLLATION及相关字符串操作中的使用。这些功能已有文档记录;测试验证了已有功能。TPCDS 基准回归测试 (
benchmark):TPCDS 查询正确性问题的测试用例修复(#24208 GROUP BY NULL 分组,#24219 连接合并正确性)。无新 SQL 语法;底层引擎 Bug 已修复。
兼容性说明¶
mo_feature_registry_upsert()和mo_feature_limit_upsert()是新的 sys 专用函数,无 MySQL 等价物。CHECK SNAPSHOT FLUSHED是 MatrixOne 专有语句,无 MySQL 等价物。角色改写规则(
CREATE RULE/DROP RULE)是 MatrixOne 专有的,无 MySQL 等价物;MySQL 使用基于视图的不同模型来实现行级安全。CDC/PITR DDL 上的
INTERNAL标志将部分命令限制为仅 sys 租户。非 sys 租户携带此标志调用时将收到明确错误。Sidecar GPU 卸载需要配置外部 DuckDB 和可选的 Sirius GPU 基础设施。
文档同步说明¶
本文档由文档同步 Agent 根据 MatrixOne v3.0.13 到 v4.0.0-rc1 的源码 diff 自动生成,并通过 PR 进行人工审核。
完整变更日志¶
v3.0.13 到 v4.0.0-rc1 之间的完整变更列表,请参阅: https://github.com/matrixorigin/matrixone/compare/v3.0.13…v4.0.0-rc1