Skip to content

MatrixOne v26.3.0.11 Release Notes

Release Date: May 8, 2026 MatrixOne Version: v26.3.0.11

MatrixOne 3.0.11 brings MySQL compatibility backports across GRANT/REVOKE on views, new datetime/string/window functions, a NULL-safe equal operator, and multi-target DROP TABLE. Below are the major updates.

New features

GRANT / REVOKE on VIEW, SQL SECURITY DEFINER / INVOKER (#24195)

  • GRANT and REVOKE now accept a VIEW object type; privileges on views are managed independently of the underlying base tables.
  • CREATE [OR REPLACE] VIEW and ALTER VIEW accept an optional SQL SECURITY { DEFINER | INVOKER } clause. The stored security type controls whether the base-table privileges are checked against the view owner (DEFINER, default) or against the caller (INVOKER). Role inheritance is honored for DEFINER views.
  • WITH GRANT OPTION on a view only authorizes onward grants on that same view object.
  • SHOW CREATE VIEW now always renders CREATE SQL SECURITY DEFINER VIEW ... (or INVOKER) regardless of whether the DDL specified a security type.

Comparison / arithmetic operators

  • New <=> NULL-safe equal operator returning 1 / 0 (never NULL), matching MySQL semantics (#24196).
  • DIV operator now accepts DECIMAL(64) and DECIMAL(128) operands and performs truncating integer division on aligned scales (#24160).

New datetime and string functions

  • ADDTIME(expr1, expr2) and SUBTIME(expr1, expr2): add or subtract a time expression from a time / datetime / timestamp; string-input forms return DATETIME with scale 6 (#24214 / #24189).
  • CURTIME([precision]) / CURRENT_TIME([precision]): return the current time as a TIME value with up to microsecond precision.
  • GET_FORMAT({DATE | TIME | DATETIME | TIMESTAMP}, region): returns the MySQL format string for a given locale (USA, JIS, ISO, EUR, INTERNAL).
  • TIMESTAMPADD(unit, interval, datetime): add an interval of the specified unit to a date / datetime / timestamp; the return type is aligned with the input type.
  • ELT(N, str1, str2, ...): return the N-th string argument; returns NULL when N <= 0, N is greater than the argument count, or any operand is NULL.
  • AES_ENCRYPT / AES_DECRYPT: two- and three-argument forms are supported. The three-argument form is honored when block_encryption_mode is set to a CBC mode; otherwise the IV argument is ignored.

JSON arrow operators

  • column -> 'json_path' is rewritten to json_extract(column, 'json_path').
  • column ->> 'json_path' is rewritten to json_unquote(json_extract(column, 'json_path')).

New window functions

  • CUME_DIST() and PERCENT_RANK() window functions are now parsed and executed. DISTINCT is rejected for both.

DDL improvements

  • DROP TABLE [IF EXISTS] t1, t2, t3; now drops multiple tables in one statement. Privileges are checked per target; without IF EXISTS the statement fails the first time a missing table is encountered.

System variables

  • view_security_type (session scope, DEFINER / INVOKER, default DEFINER): selects the security type stored on new views when the DDL does not include a SQL SECURITY clause.
  • server_id (global, read-only): reports the CN service's UUID so sessions can identify the CN that served them.

Behavior changes

  • Boolean scalar expressions (=, <>, >, <, <=>, IS, IS NOT, LIKE, REGEXP_LIKE, ...) now render as 1 / 0 / NULL in result sets, aligning with MySQL. Stored data and the BOOL column type are not affected; only display of scalar expression results changed.
  • SHOW CREATE VIEW output always includes SQL SECURITY DEFINER or SQL SECURITY INVOKER; tooling that parses the output should expect the extra tokens between CREATE and VIEW.

Improvements

  • Plan optimizer: cut proto-text marshalling during filter rewrite and normalize per-column IN / NOT IN / = / <> domains before composite-key folding (#24261, #24229).
  • Parser: TASK is now a non-reserved keyword, so it can be used as a bare identifier outside of SQL-task statements (#24173).
  • Remote lock service: avoid stale-bind hangs on remote lock acquisition (#24206).
  • Insert / delete path: narrow the pessimistic insert table-lock window and restore the LOAD DATA pre-lock path (#24201, #24226).
  • CN service: delay task-runner startup until the service has fully initialized (#24176).
  • Malloc / Pyroscope: harden pprof output for continuous profiling on 3.0-dev (#24224). mo-service gains --block-profile-rate and --mutex-profile-fraction flags (0 disables either profile).
  • Sys log filter: accept hash-delimited usernames (#24171).
  • Prepared-statement binary protocol: backport fixes for TIMESTAMPADD return-type handling (#24186 / #24191).

Bug fixes

  • Function: optimize serial_extract on 3.0 to avoid a regression in GROUP BY serial_extract(...) queries (#24241 / #24255).
  • Function compatibility: backport SQL syntax / operator compatibility fixes (#24196) and window / aggregate function compatibility (#24185 / #24194).
  • Temporal: close compatibility gaps around DATE_ADD, DAYOFWEEK, DAYOFYEAR, TIMEDIFF, and other temporal functions (#24189 / #24214).

Compatibility notes

  • Existing CREATE VIEW / ALTER VIEW statements keep working. Views created before v3.0.11 are treated as SQL SECURITY DEFINER when their metadata does not record an explicit type.
  • GRANT ... ON TABLE db.v on a view now has no effect; use GRANT ... ON VIEW db.v instead. Existing table-typed grants on views created before this release are still respected for backwards compatibility.
  • Applications that parse scalar boolean output from MatrixOne must accept 1 / 0 instead of true / false.

Full Changelog

v26.3.0.10-v26.3.0.11