Skip to content

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] VIEWALTER VIEW 支持可选的 SQL SECURITY { DEFINER | INVOKER } 子句。视图元数据中保存的安全类型决定校验底层表权限时使用视图 owner 角色(DEFINER,默认;支持角色继承)还是使用调用者的当前角色(INVOKER)。
  • 视图上的 WITH GRANT OPTION 只允许对该视图对象进行二次授权,不会扩散到基于相同底层表构建的其他视图。
  • SHOW CREATE VIEW 的输出在 CREATEVIEW 关键字之间始终渲染 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 <= 0N 大于参数个数、或任一操作数为 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。

行为变更

  • 标量布尔表达式(=<>><<=>ISIS NOTLIKEREGEXP_LIKE 等)的结果集显示从 true / false / NULL 改为 1 / 0 / NULL,与 MySQL 对齐。BOOL 列类型与实际存储数据不受影响,仅显示层变化。
  • SHOW CREATE VIEW 输出始终带有 SQL SECURITY DEFINERSQL SECURITY INVOKER,解析其输出的工具需容忍 CREATEVIEW 之间多出的这段关键字。

改进

  • 执行计划优化:在 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_ADDDAYOFWEEKDAYOFYEARTIMEDIFF 等函数的兼容性缺口(#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

详细更新日志

v26.3.0.10-v26.3.0.11 变更记录