MatrixOne v26.3.0.12 发布报告
发布日期:2026 年 5 月 19 日
MatrixOne 版本:v26.3.0.12
MatrixOne 3.0.12 引入了分支保护快照、Hive 风格分区 Parquet 外表、扩展的 MySQL 类型兼容性(YEAR、DECIMAL256、SET)、新的日期/时间函数以及几何子类型校验。以下是主要更新内容。
新功能
分支保护快照(Branch Protect Snapshot)(#24347)
DATA BRANCH CREATE TABLE和DATA BRANCH CREATE DATABASE现在会自动创建一个内部分支保护快照(kind=branch,名称=__mo_branch_<child_table_id>),在所有后代分支被删除之前保护父分支的数据免于 GC 回收。- 分支快照不会出现在
SHOW SNAPSHOTS和快照配额统计中。用户无法通过DROP SNAPSHOT直接删除它们——当整个 DAG 子树被删除时,系统会自动回收。 - 对分支子表执行
DROP TABLE或DATA BRANCH DELETE TABLE时,会同步回收关联的分支快照。
Hive 风格分区 Parquet 外表(#24329)
CREATE EXTERNAL TABLE现已支持 Hive 风格的目录分区 Parquet 文件读取。通过INFILE两个新选项启用:'hive_partitioning'='true'和'hive_partition_columns'='col1,col2,...'。- 支持单级和多级分区层级。分区列在表 schema 中声明为普通列,名称匹配不区分大小写。
- 等值(
=)和IN谓词作用于分区列时,会在文件扫描阶段进行分区裁剪,减少 I/O。__HIVE_DEFAULT_PARTITION__目录会映射为分区列的 SQLNULL。 - 虚拟列
__mo_filepath返回每行数据的源文件路径,所有外表均可使用。
新增 YEARWEEK() 函数(#24234)
YEARWEEK(date, [mode])返回给定日期或 datetime 表达式的年份和周数,以整数YYYYWW格式表示(例如202623)。- 可选参数
mode(0–7)控制周的编号方式,与 MySQL 语义一致。默认 mode 为 0(周日为起始,0–53 范围)。
WEEK() 支持 Mode 参数(#24236)
WEEK(date)现在支持可选的第二参数WEEK(date, mode),mode为 0–7 的整数,控制周的起始日和返回值范围,与 MySQL 行为一致。
MySQL 类型兼容性(YEAR、DECIMAL256、SET)(#24342、#24204)
- YEAR:重新实现,支持正确的 4 位年份显示(0001–9999),改进了两位年份的处理和转换语义。
- DECIMAL256:DECIMAL 类型扩展至最高 76 位精度(DECIMAL256),以 32 字节存储。此前最高为 38 位(DECIMAL128)。
- SET:新增
SET类型支持,用于存储预定义字符串值的集合。语法遵循 MySQL 惯例:SET('value1','value2',...)。 - ENUM:改进 ENUM 类型的校验和比较语义。
几何子类型校验(#24353)
- 对几何列的 INSERT 和 UPDATE 操作现在会在绑定时校验几何子类型(POINT、LINESTRING、POLYGON 等)。无效的几何数据将被拒绝并报错,而不会静默写入。
改进
Data Branch DIFF/MERGE 支持任意 DAG 深度(#24377)
DATA BRANCH DIFF和DATA BRANCH MERGE现在能正确计算任意深度 DAG 链和树形结构的 LCA(最低公共祖先)及变更范围,不再仅限于直接父子关系。复杂的多叉树分支历史能输出正确的结果。
LOAD DATA Parquet Decimal 兼容性(#24332)
LOAD DATA INFILE从 Parquet 文件加载数据时,现在能正确转换 Parquet 三种二进制 decimal 编码(INT32、INT64、FixedLenByteArray)为原生 DECIMAL 类型,覆盖 DECIMAL(5,2) 至 DECIMAL(24,4)。
INTERVAL 括号取模表达式支持(#24242)
INTERVAL表达式中带括号的取模运算(如INTERVAL (a % 5) DAY)现在能被正确解析和计算。
兼容性说明
SHOW SNAPSHOTS不再显示分支保护快照(kind=branch的内部快照)。这些快照由数据分支子系统自动管理。DROP SNAPSHOT对分支保护快照执行时会报错。应使用DATA BRANCH DELETE TABLE / DATABASE或DROP TABLE / DATABASE来回收分支数据。- 此前依赖查看全部
mo_snapshots行(包括内部快照)的应用,需更新查询添加WHERE kind != 'branch'条件或使用SHOW SNAPSHOTS命令。 - 扩展的 DECIMAL 范围(DECIMAL256)可能影响使用超过 38 位精度的应用的存储行为。