Release date: Aug 26 2025
MatrixOne version: v3.0.0
MatrixOne 3.0.0 introduces a improvement and bug fixes that enhance system performance, stability, and usability. Below are the major updates.
Key Improvements
1.Implement Fast-Shallow-Copy of table data
2.Support the new CLONE syntax, enabling rapid shallow copying of data at cluster, tenant, database, and table levels.
3.Schema changes now consume significantly less memory.
4.Implement RIGHT DEDUP join to reduce memory usage for big insert
5.Support strcmp function
6.Support make create index support partition
Bugfix
1.Fix cdc some bugs
2.Fix fuzzyfilter
3.Fix the snapshot some bugs
4.Fix SEMI join, shuffle join
5.Fix union all select fulltext
6.Fix some partition bugs
What's Changed
- fix data race in moerr & merge scheduler by @aptend in #21859
- Revert "s3fifo add ghost fifo (#21653)" main branch by @cpegeric in #21854
- [bug] logservice: fix the snapshot path by @volgariver6 in #21851
- for_debug by @XuPeng-SH in #21865
- fix Test_Replayer11 by @jiangxinmeng1 in #21873
- Bug fix: fix the panic by @Cabbage74 in #21868
- some code cleanup by @XuPeng-SH in #21828
- modify case(main) by @Ariznawlll in #21878
- add 2.2-dev to mergify by @aressu1985 in #21881
- fix rollup bvt tag by @iamlinjunhong in #21891
- remove stale compatibility code by @jiangxinmeng1 in #21883
- enable EXPLAIN to show analyze info for background SQLs by @aunjgr in #21858
- fileservice: make DiskCacheCallbacks a context.Context to eliminate usages of context.WithValue by @reusee in #21811
- introduce err2 as local variable to prevent race by @cpegeric in #21889
- colexec/external: ensure symlink is valid in TestReadDirSymlink by @reusee in #21906
- Fix bug: get error result in binary execute with nil by @XuPeng-SH in #21928
- fix mpool freed -1 by @jiangxinmeng1 in #21927
- fix tombstone vacuum check by @aptend in #21918
- [Bug]: Remove bvt tag by @Cabbage74 in #21937
- filter and prune of partition table by @iamlinjunhong in #21899
- Fix bug : can not alter user in some case by @ouyuanning in #21945
- fix 21952 for main by @XuPeng-SH in #21957
- fix bug: user can create user without permission by @ouyuanning in #21958
- [#21864] Fix bug by @triump2020 in #21944
- remove dummy prints by @XuPeng-SH in #21963
- update cdc sinker by @jiangxinmeng1 in #21969
- make create index support partition by @zhangxu19830126 in #21346
- fix the data race in
fulltextIndexMatch
. by @gouhongshen in #21983 - offline tool to handle checkpoint meta file by @XuPeng-SH in #21989
- change some interface of CompilerContext by @ouyuanning in #21984
- Feature: Support filter with T.TS by @Cabbage74 in #21992
- fix TestBuildMulti race by @XuPeng-SH in #22010
- checkpoint tool II by @XuPeng-SH in #22014
- Update transfer page by @jiangxinmeng1 in #21845
- add debug log by @jiangxinmeng1 in #22013
- Fix TestAppendAndGC2 by @LeftHandCold in #22027
- add debug tool by @jiangxinmeng1 in #21821
- show create partition table by @iamlinjunhong in #22028
- GC can be arbitrarily suspended and resumed by @LeftHandCold in #22012
- optimize cdc table detector by @XuPeng-SH in #22033
- cdc support truncate by @Cabbage74 in #22032
- ast string with quote identifier by @iamlinjunhong in #22046
- make runtime filter work on non-PK column by @aunjgr in #22045
- GC can be reset by @LeftHandCold in #22042
- db and table filter on scanloop in cdc by @Cabbage74 in #22048
- fulltext disable pushdown limit by @cpegeric in #22063
- bug fix index cache return index destroyed error when NewAlgo in one thread and Remove by another thread by @cpegeric in #22023
- make alter table index support partition by @zhangxu19830126 in #22047
- refactor alter inplace mode by @aptend in #22062
- Optimize update cdc watermark by @XuPeng-SH in #22066
- fix noop match arm in alter builder by @aptend in #22075
- removed the object expansion logic in the workspace. by @gouhongshen in #22080
- remove an unwanted typecast in binder by @aunjgr in #22069
- update code owners by @XuPeng-SH in #22079
- control sync frequency of cdc task by @Cabbage74 in #22082
- add case for replace by @Ariznawlll in #22085
- [fix] always assign column name to runtime filter by @aunjgr in #22091
- enable new DML plan for tables with vector columns by @aunjgr in #22092
- enhance expr format by @XuPeng-SH in #22089
- cdc frequency fix + createSql build bug fix by @Cabbage74 in #22093
- cdc truncate fix by @Cabbage74 in #22100
- do column-pruning for VALUE_SCAN node by @aunjgr in #22105
- add case for replace by @Ariznawlll in #22106
- cleanup log 1 by @XuPeng-SH in #22102
- BUG FIX: index generated by for loop didn't pass as go function argument leads to undetermined index and some race conditions by @cpegeric in #22118
- parse binary in strToSigned by @Cabbage74 in #22084
- make partition support index write by @zhangxu19830126 in #22124
- add case for #5763 #5762 #5345 by @Ariznawlll in #22127
- GC can handle different table share same object by @LeftHandCold in #22068
- fix prints. by @gouhongshen in #22133
- update usearch by @cpegeric in #22119
- fix create pitr if exists by @iamlinjunhong in #22132
- fix force gckp for main by @XuPeng-SH in #22145
- make internal sql executor support prepared statement by @zhangxu19830126 in #22136
- testutil: use testing.T.TempDir in NewFS by @reusee in #22128
- create database/table with shallow copy and replace the
insert into select
in the restore statement. by @gouhongshen in #22041 - enhance const fold pushdown by @Cabbage74 in #22152
- cleanup compact related code by @XuPeng-SH in #22160
- partitioned tables support index queries by @zhangxu19830126 in #22158
- Fix catalog gc by @LeftHandCold in #22169
- fix the logic TS missing when cloning tables across accounts. by @gouhongshen in #22162
- Refactor the alter implementation to better support non-copying scenarios. by @aptend in #22155
- ivfflat search better error handling by @cpegeric in #22138
- Bytes with atomic reference counter not guarantee to deallocate memory and memory still accessible even memory was deallocated. by @cpegeric in #22171
- CI: use ustc ubuntu mirror by @guguducken in #22088
- fix TestDedupSnapshot3 by @jiangxinmeng1 in #22181
- hashtable,hashmap: add MarshalBinary/UnmarshalBinary by @reusee in #22163
- fix rename column: delete table with old metadata by @aptend in #22182
- Fix Inconsistent SQL Query Results for the MO System Version. by @gouhongshen in #22176
- Update GC filter by @LeftHandCold in #22178
- colexec/aggexec: add AggFuncExec.Size by @reusee in #22187
- fix add cdc task by @jiangxinmeng1 in #22192
- Revert 22171 due to performance degradation by @XuPeng-SH in #22194
- fifocache: fix potential double-free by @reusee in #22196
- improvement: skip pk dedup in alter copy mode if pk is not changed by @aptend in #22189
- fix cdc with json by @XuPeng-SH in #22204
- colexec/external: log file system events in TestReadDirSymlink by @reusee in #22206
- Refactor show recovery window. by @gouhongshen in #22188
- Fix snapshot read in multiple statements. by @gouhongshen in #22209
- skip experimental index flag check in clone statements. by @gouhongshen in #22216
- add hashmap/hashtable.WriteTo/UnmarshalFrom by @reusee in #22220
- Add GCInMemoryTTL config for GC Catalog by @LeftHandCold in #22222
- resolve variable function passed from parent proc to internal sql exe and check index in Create Table by @cpegeric in #22190
- support strcmp by @Cabbage74 in #22221
- for cdc : inject some faults and fix some bugs by @Cabbage74 in #22186
- [opt] implement RIGHT DEDUP join by @aunjgr in #22179
- supports s3 write of index table data for partitioned tables by @zhangxu19830126 in #22228
- Adding basic starlark exec function. by @fengttt in #22167
- Fix TestPitrMeta by @LeftHandCold in #22229
- [opt] eliminate memory copy in RIGHT DEDUP join by @aunjgr in #22230
- change unsigned cast rule by @Cabbage74 in #22225
- rm tag 8848 by @Ariznawlll in #22235
- fix partition affected rows not work by @zhangxu19830126 in #22232
- Add DefaultGlobalVersionInterval config by @LeftHandCold in #22238
- Change starlark runtime function return to res, err by @fengttt in #22231
- adding more err msg for UT
TestIssue19551
by @gouhongshen in #22234 - Fix file is not found after clone database by @LeftHandCold in #22243
- rewrite the SQL in BVT to avoid full scanning of the
statement_info
. by @gouhongshen in #22233 - [opt] enable range shuffle for RIGHT DEDUP join by @aunjgr in #22244
- cleanup mo log 2 by @XuPeng-SH in #22245
- improvement: skip unique idx dedup in alter copy mode if those idxs remain unchanged by @aptend in #22224
- fix shuffle RIGHT DEDUP join by @aunjgr in #22253
- make sure the snapshot read TS greater than the TXN TS when create snapshot or clone. by @gouhongshen in #22252
- add debug log by @jiangxinmeng1 in #22257
- CN can flush small objects by fault injection. by @gouhongshen in #22223
- Clean mo log 3 by @XuPeng-SH in #22260
- trigger ON UPDATE for INSERT ON DUPLICATE UPDATE by @aunjgr in #22262
- Correct tombstone handling in merge simulator by @aptend in #22259
- fix some partition bugs by @iamlinjunhong in #22248
- colexec/external: use os temp dir in TestReadDirSymlink by @reusee in #22254
- fix Test_CheckpointChaos3 by @jiangxinmeng1 in #22269
- remove all table retention-related code. by @gouhongshen in #22261
- add debug log by @jiangxinmeng1 in #22268
- make sure the MO service started before running the MO stats task. by @gouhongshen in #22270
- Support 'where tuple in tupleList' by @Cabbage74 in #22249
- fifocache: add ghost queue by @reusee in #22247
- Generate_random_int64/float64 table functions. by @fengttt in #22267
- fix string bigint(20) unsigned by @iamlinjunhong in #22273
- fileservice: add FileService.NewReader/NewWriter by @reusee in #22240
- Fix Snapshot read by @LeftHandCold in #22279
- colexec/aggexec: implement marshal/unmarshal for distinctHash; export special agg ids by @reusee in #22237
- Optimize s3writer by @XuPeng-SH in #22281
- Fix runningTasks deadlock by @LeftHandCold in #22283
- add case for restore ignore experimental flags. by @Ariznawlll in #22289
- add release 3.0 to mergify by @heni02 in #22290
- Pick 22284 22293 to 3.0-dev by @XuPeng-SH in #22295
- fix shuffle join (cp #22282) by @aunjgr in #22305
- to 3.0: memory throttler for CN-flush-S3, workspace and merge. by @gouhongshen in #22306
- Fix 22307 pick to 3.0 by @XuPeng-SH in #22314
- add cases 18667 by @heni02 in #22311
- fix empty unique index after altering 3.0 by @aptend in #22315
- update GlobalVersionInterval for ut by @LeftHandCold in #22316
- fix 'db not selected' error in alter table 3.0 by @aptend in #22325
- to 3.0: Fix the foreign key reference mismatch in clone statements. by @gouhongshen in #22320
- flushing objects in chunks 3.0 by @aptend in #22331
- to 3.0: some simple restrictions on clone privilege. by @gouhongshen in #22330
- to 3.0: restrict MO_CTL execution of cn merge within explicit transactions by @gouhongshen in #22333
- container/hashtable: use longer than 16 bytes keys in tests by @reusee in #22355
- to 3.0: Fix the appendable tombstone object clone logic. by @gouhongshen in #22344
- pick Left/Inner join produces better chunks (#22351) to 3.0-dev by @XuPeng-SH in #22356
- fix obj list without tomestone by @iamlinjunhong in #22361
- optimize top operator's batch processing 3.0 by @aptend in #22403
- to 3.0: report the error when the subscription table fails. by @gouhongshen in #22406
- to 3.0: Try snapshot read if the subscription does not exist. by @gouhongshen in #22412
Full Changelog: v2.2.2...v3.0.0