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)
GRANTandREVOKEnow accept aVIEWobject type; privileges on views are managed independently of the underlying base tables.CREATE [OR REPLACE] VIEWandALTER VIEWaccept an optionalSQL 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 forDEFINERviews.WITH GRANT OPTIONon a view only authorizes onward grants on that same view object.SHOW CREATE VIEWnow always rendersCREATE SQL SECURITY DEFINER VIEW ...(orINVOKER) regardless of whether the DDL specified a security type.
Comparison / arithmetic operators
- New
<=>NULL-safe equal operator returning1/0(neverNULL), matching MySQL semantics (#24196). DIVoperator now acceptsDECIMAL(64)andDECIMAL(128)operands and performs truncating integer division on aligned scales (#24160).
New datetime and string functions
ADDTIME(expr1, expr2)andSUBTIME(expr1, expr2): add or subtract a time expression from a time / datetime / timestamp; string-input forms returnDATETIMEwith scale 6 (#24214 / #24189).CURTIME([precision])/CURRENT_TIME([precision]): return the current time as aTIMEvalue 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; returnsNULLwhenN <= 0,Nis greater than the argument count, or any operand isNULL.AES_ENCRYPT/AES_DECRYPT: two- and three-argument forms are supported. The three-argument form is honored whenblock_encryption_modeis set to a CBC mode; otherwise the IV argument is ignored.
JSON arrow operators
column -> 'json_path'is rewritten tojson_extract(column, 'json_path').column ->> 'json_path'is rewritten tojson_unquote(json_extract(column, 'json_path')).
New window functions
CUME_DIST()andPERCENT_RANK()window functions are now parsed and executed.DISTINCTis rejected for both.
DDL improvements
DROP TABLE [IF EXISTS] t1, t2, t3;now drops multiple tables in one statement. Privileges are checked per target; withoutIF EXISTSthe statement fails the first time a missing table is encountered.
System variables
view_security_type(session scope,DEFINER/INVOKER, defaultDEFINER): selects the security type stored on new views when the DDL does not include aSQL SECURITYclause.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 as1/0/NULLin result sets, aligning with MySQL. Stored data and theBOOLcolumn type are not affected; only display of scalar expression results changed. SHOW CREATE VIEWoutput always includesSQL SECURITY DEFINERorSQL SECURITY INVOKER; tooling that parses the output should expect the extra tokens betweenCREATEandVIEW.
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:
TASKis 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-servicegains--block-profile-rateand--mutex-profile-fractionflags (0disables either profile). - Sys log filter: accept hash-delimited usernames (#24171).
- Prepared-statement binary protocol: backport fixes for
TIMESTAMPADDreturn-type handling (#24186 / #24191).
Bug fixes
- Function: optimize
serial_extracton 3.0 to avoid a regression inGROUP 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 VIEWstatements keep working. Views created before v3.0.11 are treated asSQL SECURITY DEFINERwhen their metadata does not record an explicit type. GRANT ... ON TABLE db.von a view now has no effect; useGRANT ... ON VIEW db.vinstead. 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/0instead oftrue/false.