MatrixOne v26.3.0.12 Release Notes
Release Date: May 19, 2026 MatrixOne Version: v26.3.0.12
MatrixOne 3.0.12 brings branch protect snapshots, hive-style partitioned Parquet external tables, expanded MySQL type compatibility (YEAR, DECIMAL256, SET), and new date/time functions. Below are the major updates.
New features
Branch Protect Snapshot (#24347)
DATA BRANCH CREATE TABLEandDATA BRANCH CREATE DATABASEnow automatically create an internal branch-protect snapshot (kind=branch, name=__mo_branch_<child_table_id>) that shields the parent's data from garbage collection while any descendant branch remains alive.- Branch snapshots are excluded from
SHOW SNAPSHOTSand snapshot quota counts. They cannot be dropped directly viaDROP SNAPSHOT— they are reclaimed automatically when the entire DAG subtree is deleted. DROP TABLEandDATA BRANCH DELETE TABLEon a branch child reclaim the associated branch snapshot as part of the delete operation.
Hive-Style Partitioned Parquet External Tables (#24329)
CREATE EXTERNAL TABLEnow supports Hive-style directory-based partitioning for Parquet files. Two newINFILEoptions control the feature:'hive_partitioning'='true'and'hive_partition_columns'='col1,col2,...'.- Both single-level and multi-level partition hierarchies are supported. Partition columns are declared as regular columns in the table schema and matched case-insensitively.
- Equality (
=) andINpredicates on partition columns are pruned at the file-listing stage for reduced I/O.__HIVE_DEFAULT_PARTITION__directories map to SQLNULLfor the partition column. - A virtual column
__mo_filepathreturns the source file path for each row and is available on all external tables.
New YEARWEEK() Function (#24234)
YEARWEEK(date, [mode])returns the year and week number for a given date or datetime expression as an integer inYYYYWWformat (e.g.,202623).- An optional
modeparameter (0–7) controls week numbering, matching MySQL semantics. The default mode is 0 (Sunday-start, 0–53 range).
WEEK() Mode Parameter (#24236)
WEEK(date)now accepts an optional second argumentWEEK(date, mode)wheremodeis an integer 0–7 controlling the week start day and return value range, matching MySQL behavior.
MySQL Type Compatibility (YEAR, DECIMAL256, SET) (#24342, #24204)
- YEAR: Reimplemented with proper 4-digit display (0001–9999), improved two-digit year handling, and consistent conversion semantics.
- DECIMAL256: Extended the DECIMAL type to support precision up to 76 digits (DECIMAL256), stored in 32 bytes. The previous limit was 38 digits (DECIMAL128).
- SET: The
SETtype is now supported for storing sets of predefined string values. Syntax follows MySQL conventions:SET('value1','value2',...). - ENUM: Improved ENUM type validation and comparison semantics. See ENUM Type.
Improvements
Data Branch DIFF/MERGE Across Arbitrary DAG Depth (#24377)
DATA BRANCH DIFFandDATA BRANCH MERGEnow correctly compute the LCA (Lowest Common Ancestor) and collect-range across DAG chains and trees of arbitrary depth, not just direct parent-child relationships. Multi-fork trees with complex branching histories produce correct results.
Parquet Decimal Compatibility for LOAD DATA (#24332)
LOAD DATA INFILEfrom Parquet files now correctly converts all three Parquet binary decimal encodings (INT32, INT64, FixedLenByteArray) to the native DECIMAL type, covering DECIMAL(5,2) through DECIMAL(24,4).
Interval Parenthesized Modulo (#24242)
INTERVALexpressions with parenthesized modulo arithmetic (e.g.,INTERVAL (a % 5) DAY) are now parsed and evaluated correctly.
Compatibility notes
SHOW SNAPSHOTSno longer displays branch-protect snapshots (internal snapshots withkind='branch'). These snapshots are managed automatically by the data branch subsystem.DROP SNAPSHOTreturns an error if the target snapshot is a branch-protect snapshot. UseDATA BRANCH DELETE TABLE / DATABASEorDROP TABLE / DATABASEto reclaim branch data.- Applications that previously relied on seeing all
mo_snapshotsrows (including internal ones) should update their queries to addWHERE kind != 'branch'or use theSHOW SNAPSHOTScommand. - The extended DECIMAL range (DECIMAL256) may affect storage behavior for applications working with precision above 38 digits.
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.