MatrixOne v26.3.0.15 Release Notes

Release Date: July 6, 2026 MatrixOne Version: v26.3.0.15

MatrixOne 3.0.15 is a feature and stability release. It adds ten new SQL functions (RIGHT, QUOTE, DAYNAME, MAKETIME, MONTHNAME, QUARTER, TIME_FORMAT, and existing HOUR/MINUTE/SECOND with expanded test coverage), introduces the POSITION(substr IN str) syntax as a synonym for LOCATE(), supports COALESCE and BETWEEN with DECIMAL256, enhances GRANT privilege scope semantics, supports fulltext index rewrite for joins, improves CDC task pause reliability, fixes Parquet loading with STRING-to-DATETIME/VECTOR conversion, and includes several bug fixes.

New Features

New SQL Functions: RIGHT, QUOTE (#24694, #24753)

  • RIGHT(str, len) — Returns the rightmost len characters from the string str. Supports negative lengths (returns empty string) and Unicode multibyte characters.

  • QUOTE(str) — Quotes a string for safe use in SQL statements, escaping single quotes, backslashes, and control characters.

New Datetime Functions: DAYNAME, MAKETIME, MONTHNAME, QUARTER, TIME_FORMAT (#24757)

  • DAYNAME(date) — Returns the full weekday name (e.g., 'Monday', 'Saturday').

  • MAKETIME(hour, minute, second) — Constructs a TIME value with hours up to 838, matching MySQL behavior.

  • MONTHNAME(date) — Returns the full month name (e.g., 'January', 'December').

  • QUARTER(date) — Returns the quarter (1–4) for a given date.

  • TIME_FORMAT(time, format) — Formats a TIME value using specifiers (%H, %i, %s, %r, %T, %p, etc.).

POSITION(substr IN str) Syntax (#24775)

  • POSITION(substr IN str) is now supported as a synonym for LOCATE(substr, str), matching MySQL and standard SQL syntax. The POSITION form does not support a start position argument.

DECIMAL256 Support in COALESCE and BETWEEN (#24841)

  • COALESCE() now supports DECIMAL256 inputs and properly aligns decimal scales across all branches to avoid incorrect results when operands have different scales.

  • BETWEEN now supports DECIMAL256 comparison.

Improvements

GRANT Privilege Scope Semantics (#24752, #24936)

  • Global table GRANT OPTION now correctly cascades to narrower scopes (db.* and db.table). Previously, a user with GRANT OPTION ON *.* could not re-grant privileges on specific databases or tables.

  • View privilege checks now use exact object matching instead of broad scope lookups, preventing cross-database privilege leakage.

  • SET SECONDARY ROLE ALL no longer unintentionally changes the current primary role; it only activates secondary roles as documented.

Fulltext Index Rewrite for Joins (#24886)

  • Fulltext index rewrite rules now support join queries, enabling efficient fulltext search when combined with table joins.

CDC Task Pause Reliability (#24804)

  • Pausing an already-paused CDC task is now idempotent (returns success without errors).

  • Added a pause-complete hook that ensures catalog state is updated atomically when a CDC task pause completes.

  • CDC task pause uses a pausing intermediate state for better visibility and consistency.

Parquet Loading: STRING to DATETIME/VECTOR Conversion (#24938)

  • Fixed Parquet loading where optional STRING columns could not be loaded into nullable DATETIME or VECTOR (VECF32/VECF64) columns. Such columns now load correctly.

Better Error Messages

  • Database-not-found and table-not-found errors now use specific error codes (ErrBadDB, ErrNoSuchTable) instead of generic internal errors, improving error clarity for users.

Bug Fixes

Data Branch: Create Table Clone SQL (#24958)

  • Fixed an issue where DATA BRANCH CREATE TABLE ... CLONE SQL generation was incorrect on the 3.0 branch.

Data Branch: Result Conversion (#24876)

  • Fixed data branch result conversion issues on the 3.0 development branch.

Transaction: Cleanup Rollback (#24781)

  • Fixed an edge case where a transaction operator could leak state if rollback was called from connection cleanup with an already-canceled context.

Decimal Division Truncation (#24707)

  • Fixed an issue where decimal integer division could incorrectly truncate results.

System Variable Expression Folding (#24802)

  • Fixed an issue where system variable expressions (e.g., @@sql_mode) were not properly folded before remote execution, causing incorrect results in multi-CN deployments.

Compatibility Notes

  • SET SECONDARY ROLE ALL no longer changes the primary role. If you previously relied on this side effect, use SET ROLE <role_name> to explicitly switch the primary role.

  • Global table GRANT OPTION ON *.* now authorizes grants at narrower scopes, which may affect existing privilege configurations.

  • View privilege checks are now stricter; grants on views now require exact object-level permissions rather than broad-scope matches.

  • The COALESCE() decimal scale alignment fix may produce different (correct) result types when operands have significantly different decimal scales.

About This Document

This document is generated by the docs sync agent based on the MatrixOne source diff and reviewed by humans via pull request.

Full Changelog

v26.3.0.14-v26.3.0.15