MatrixOne v26.3.0.11 发布报告
发布日期:2026 年 5 月 8 日
MatrixOne 版本:v26.3.0.11
MatrixOne 3.0.11 围绕视图权限(GRANT/REVOKE ON VIEW 与 SQL SECURITY DEFINER/INVOKER)、新的日期时间/字符串/窗口函数、NULL 安全等值运算符以及多表 DROP TABLE 等方向做了 MySQL 兼容性回合并。以下是主要更新内容:
新特性
GRANT / REVOKE ON VIEW 与 SQL SECURITY DEFINER / INVOKER(#24195)
GRANT/REVOKE新增VIEW对象类型,视图权限与底层表权限相互独立管理。CREATE [OR REPLACE] VIEW与ALTER VIEW支持可选的SQL SECURITY { DEFINER | INVOKER }子句。视图元数据中保存的安全类型决定校验底层表权限时使用视图 owner 角色(DEFINER,默认;支持角色继承)还是使用调用者的当前角色(INVOKER)。- 视图上的
WITH GRANT OPTION只允许对该视图对象进行二次授权,不会扩散到基于相同底层表构建的其他视图。 SHOW CREATE VIEW的输出在CREATE与VIEW关键字之间始终渲染SQL SECURITY DEFINER(或INVOKER),无论原始 DDL 是否显式指定。
比较 / 算术运算符
- 新增
<=>NULL 安全等值运算符,返回1/0(不会返回NULL),与 MySQL 语义一致(#24196)。 DIV运算符原生支持DECIMAL(64)/DECIMAL(128),先对齐 scale 再做截断整数除法(#24160)。
新日期时间与字符串函数
ADDTIME(expr1, expr2)/SUBTIME(expr1, expr2):向 time / datetime / timestamp 加减一个 time 表达式;字符串入参形式返回DATETIME(scale 6)(#24214 / #24189)。CURTIME([precision])/CURRENT_TIME([precision]):返回当前时间的TIME值,支持最高微秒精度。GET_FORMAT({DATE | TIME | DATETIME | TIMESTAMP}, region):返回指定地区(USA/JIS/ISO/EUR/INTERNAL)的 MySQL 格式字符串。TIMESTAMPADD(unit, interval, datetime):按指定单位把 interval 加到 date / datetime / timestamp 上,返回类型与输入类型保持一致。ELT(N, str1, str2, ...):返回第 N 个字符串;当N <= 0、N大于参数个数、或任一操作数为NULL时返回NULL。AES_ENCRYPT/AES_DECRYPT:支持两参数和三参数形式。三参数形式仅在block_encryption_mode设置为 CBC 模式时生效,否则 IV 参数被忽略。
JSON 箭头运算符
column -> 'json_path'改写为json_extract(column, 'json_path')。column ->> 'json_path'改写为json_unquote(json_extract(column, 'json_path'))。
新增窗口函数
- 新增
CUME_DIST()与PERCENT_RANK()窗口函数,DISTINCT会被拒绝。
DDL 增强
DROP TABLE [IF EXISTS] t1, t2, t3;支持单条语句删除多张表,每个目标表独立校验权限。未带IF EXISTS时,遇到首个不存在的表即整体失败。
系统变量
view_security_type(session 作用域,DEFINER/INVOKER,默认DEFINER):当 DDL 未显式包含SQL SECURITY子句时,决定新视图写入元数据的安全类型。server_id(global 作用域,只读):会话可通过该变量获取所连接 CN 的 UUID。
行为变更
- 标量布尔表达式(
=、<>、>、<、<=>、IS、IS NOT、LIKE、REGEXP_LIKE等)的结果集显示从true/false/NULL改为1/0/NULL,与 MySQL 对齐。BOOL列类型与实际存储数据不受影响,仅显示层变化。 SHOW CREATE VIEW输出始终带有SQL SECURITY DEFINER或SQL SECURITY INVOKER,解析其输出的工具需容忍CREATE与VIEW之间多出的这段关键字。
改进
- 执行计划优化:在 filter rewrite 路径上减少 proto 文本序列化开销;在复合索引折叠前统一归一化每列的
IN/NOT IN/=/<>域(#24261、#24229)。 - 解析器:
TASK改为非保留关键字,可作为普通标识符使用(#24173)。 - 远端锁服务:修复远端加锁时出现过期 bind 导致的 hang(#24206)。
- 插入 / 删除路径:收窄悲观事务下的 insert table-lock 窗口;恢复 LOAD DATA 的预先加锁路径(#24201、#24226)。
- CN 服务:延迟 task runner 启动,直到服务初始化完成(#24176)。
- Malloc / Pyroscope:强化 pprof 输出以适配连续性能分析(#24224)。
mo-service新增--block-profile-rate与--mutex-profile-fraction参数(0关闭对应 profile)。 - 系统日志过滤:接受带哈希分隔符的用户名(#24171)。
- Prepared statement 二进制协议:回合并
TIMESTAMPADD返回类型处理等修复(#24186 / #24191)。
Bug 修复
- 函数:优化
serial_extract的 3.0 实现,修复GROUP BY serial_extract(...)查询的性能回退(#24241 / #24255)。 - 函数兼容性:回合并 SQL 语法 / 运算符兼容性修复(#24196),以及窗口与聚合函数的兼容性(#24185 / #24194)。
- 时间日期:修复
DATE_ADD、DAYOFWEEK、DAYOFYEAR、TIMEDIFF等函数的兼容性缺口(#24189 / #24214)。
兼容性说明
- 现有
CREATE VIEW/ALTER VIEW语句可继续使用。v3.0.11 之前创建、元数据中没有显式安全类型的视图,行为默认等同SQL SECURITY DEFINER。 - 对视图使用的
GRANT ... ON TABLE db.v不再生效,请改用GRANT ... ON VIEW db.v;在本版本之前授出的表类型视图授权仍被兼容保留。 - 业务代码如解析标量布尔输出,需要把
true/false改为接受1/0。