v1.0.0-rc.1
Release date: February 02, 2026
π Highlightsβ
Region Repartition RC.1 introduces Region Repartition, allowing users to dynamically adjust partition rules and redistribute data at runtime, without rebuilding tables or performing manual migrations.
- Split Partitions Split a large or hotspot partition into multiple smaller ones:
ALTER TABLE sensor_readings SPLIT PARTITION (
device_id < 100
) INTO (
device_id < 100 AND area < 'South',
device_id < 100 AND area >= 'South'
);
- Merge Partitions Merge multiple small partitions into a single one:
ALTER TABLE sensor_readings MERGE PARTITION (
device_id < 100 AND area < 'South',
device_id < 100 AND area >= 'South'
);
- Execution Control with WITH Clause
Users can control procedure behavior via
WITHoptions:
ALTER TABLE sensor_readings SPLIT PARTITION (
device_id < 100
) INTO (
device_id < 100 AND area < 'South',
device_id < 100 AND area >= 'South'
) WITH (
TIMEOUT = '5m',
WAIT = false
);
- When
WAIT = false, the statement returns immediately with aprocedure_id. Progress can be checked viaADMIN procedure_state(procedure_id); - TIMEOUT sets an overall time limit for the operation.
Note: Region repartitioning is currently supported only when:
- Running in distributed cluster mode
- Using object storage and GC are enabled
Metric Engine Primary Key Filter Acceleration
RC.1 introduces a fast-path optimization for primary key filtering in the Metric Engine. Instead of decoding and materializing values row by row, the engine now performs direct comparisons on memcomparable-encoded primary key bytes, significantly reducing CPU overhead.
- Dense codec: 20β90Γ faster
- Sparse codec: 3β11Γ faster
This improvement greatly boosts query performance for high-cardinality metric workloads.
Breaking changesβ
- feat!: make heartbeat config only in metasrv by @fengjiachun in #7510
β οΈ Compatibility noticeβ
In the new version, the TableMeta.region_numbers field has been removed.
As older versions still depend on this field, downgrading from the new version to an older version may introduce compatibility issues. Specifically, an older version may fail or throw errors when reading data generated by the new version, since the region_numbers field is no longer present.
π Featuresβ
- feat: impl vector index building by @killme2008 in #7468
- feat: update
ApplyStagingManifestRequestto fetch manifest from central region by @WenyXu in #7493 - feat: impl
json_get_intfor new json type by @MichaelScofield in #7495 - feat(meta-srv): fallback to non-TLS connection when etcd TLS prefer mode fail by @WenyXu in #7507
- feat: implement
RemapManifestandApplyStagingManifestfor repartition procedure by @WenyXu in #7509 - feat: ingest jsonbench data through pipeline by @MichaelScofield in #7312
- feat: repartition grammar candy by @waynexia in #7518
- feat: adjust some args to gc worker by @discord9 in #7469
- feat(repartition): implement region deallocation for repartition procedure by @WenyXu in #7522
- feat: bump promql-parser to v0.7.1 by @waynexia in #7521
- feat: tune query traces by @waynexia in #7524
- feat: update special remote write label name by @sunng87 in #7527
- feat(repartition): implement region allocation for repartition procedure by @WenyXu in #7534
- feat(repartition): implement validation logic for repartition table by @WenyXu in #7538
- feat: integrate repartition procedure into
DdlManagerby @WenyXu in #7548 - feat: make grpc can handle metric engine request by @fengjiachun in #7508
- feat: always canonicalize partition expr by @waynexia in #7553
- feat: gc schd update repart mapping by @discord9 in #7517
- feat: impl vector index scan in storage by @killme2008 in #7528
- feat: add per-partition convert, result cache metrics by @evenyag in #7539
- feat(cli): support RaftEngine store backend for metadata snapshot operations by @WenyXu in #7467
- feat: enable pruning for manipulate plans by @waynexia in #7565
- feat: add sync region instruction for repartition procedure by @WenyXu in #7562
- feat: flush region before close when skip-wal is enabled by @v0y4g3r in #7549
- feat: support for types of series identifier in series divide plan by @waynexia in #7583
- feat: export import v2 rfc by @fengjiachun in #7499
- feat: debug/mem/symbol by @discord9 in #7573
- feat(meta): add repartition timeouts and metrics by @WenyXu in #7587
- feat: exact partition filter by @discord9 in #7571
- feat: add ddl timeout/wait options, repartition
WITHparsing, meta-client startup refactor by @WenyXu in #7589 - feat: gc worker on dropped region by @discord9 in #7537
- feat: use tsid on promql planner by @waynexia in #7590
- feat: implement view-based vector types by @waynexia in #7600
- feat: ser/de for HistogramFold&UnionDistinctOn by @discord9 in #7601
- feat: support TQL parsing in CREATE TRIGGER by @fengys1996 in #7599
- feat: UDF json_get with user specified return type by @sunng87 in #7554
- feat: ensure datanode plan's dist and ordering for tsid col by @waynexia in #7614
- feat: add
partial_droptoDropRequestby @WenyXu in #7597 - feat: partition rule simplifier by @waynexia in #7622
- feat: use arrow-pg for postgres data encoding by @sunng87 in #7591
- feat: impl vector index query by @killme2008 in #7564
- feat: BulkMemtable compact parts without encoding into Parquet by @evenyag in #7617
- feat: flow last non null by @discord9 in #7646
- feat: add recover_sync to ManifestCache::new by @evenyag in #7652
π Bug Fixesβ
- fix: align backend_tls default value with example config by @WenyXu in #7496
- fix: fix sqlness test error about double precision by @Standing-Man in #7476
- fix: dist planner rm col req when rm sort by @discord9 in #7512
- fix: pipeline loading issue by @shuiyisong in #7491
- fix: remove log_env_flags by @fengjiachun in #7529
- fix: simp expr recursively by @discord9 in #7523
- fix: precise filter time index if not in projection by @evenyag in #7531
- fix: incorrect timestamp index inference by @waynexia in #7530
- fix: fix SQL table identifier quoting for election by @WenyXu in #7541
- fix: fix topic region mapping sync and handle
region_not_foundin migration by @WenyXu in #7552 - fix: vector index metadata missing by @killme2008 in #7575
- fix: correctly parse json string that contain unicode code point literal by @MichaelScofield in #7520
- fix: fix nightly ci by @WenyXu in #7588
- fix(datanode): fetch region engine via
get_enginefor sync/remap operations by @WenyXu in #7594 - fix: read filter's column by @discord9 in #7579
- fix: clear unused range builders eagerly by @evenyag in #7569
- fix: unit tests for export module by @fengys1996 in #7607
- fix: correct histogram result by @waynexia in #7608
- fix: use phy table when need filter by tsid/table id by @discord9 in #7609
- fix: unit tests when enterprise feature is enabled by @fengys1996 in #7618
- fix: flaky compaction test by @v0y4g3r in #7627
- fix: unit tests when enterprise feature is enabled by @fengys1996 in #7625
- fix(repartition): improve physical region allocation and compaction read path correctness by @WenyXu in #7621
- fix: gc update repart map properly by @discord9 in #7606
- fix: wrong relation used in promql planner time cast by @fengys1996 in #7624
- fix: clean up staging blob directory on clear by @WenyXu in #7642
- fix: get correct table info when insert create/alter table by @discord9 in #7641
- fix: send get file ref to all regions by @discord9 in #7640
- fix: subtract overflow in identity pipeline by @shuiyisong in #7656
- fix(copy): treat null inferred columns as Utf8 to preserve later values by @WenyXu in #7658
π Refactorβ
- refactor: remove
region_numbersfromTableMetaandTableInfoby @WenyXu in #7519 - refactor: refactor
CreateTableProcedureto extract reusable components by @WenyXu in #7526 - refactor: remove duplications from mito by @waynexia in #7632
- refactor: SQL and gRPC server handlers by @waynexia in #7637
β‘ Performanceβ
- perf: avoid boundary checks on accessing array items by @waynexia in #7570
- perf: accelerate pk filter by @waynexia in #7584
- perf: skip unnecessary label columns in promql query by @waynexia in #7602
- perf(mito2): merge last_non_null within memtable batches by @waynexia in #7653
π¨ Stylingβ
π§ͺ Testingβ
- test(cli): fix snapshot test paths on Windows by @WenyXu in #7574
- test: add integration tests for repartition by @WenyXu in #7560
βοΈ Miscellaneous Tasksβ
- ci: update breaking change title level by @evenyag in #7497
- chore: add tests to comment column on information_schema by @waynexia in #7514
- chore: check for redundant pre-commit hooks by @Standing-Man in #7506
- chore: add grafana dashboard about trigger by @fengys1996 in #7536
- chore: add information extension to the plugins in frontend by @shuiyisong in #7542
- chore: sqlness redact time properly by @discord9 in #7543
- chore: sqlness fmt by @discord9 in #7551
- chore: upgrade DataFusion family by @MichaelScofield in #7558
- chore: batch requests in metric engine by @fengjiachun in #7535
- chore: aggr wrapper use return_field by @discord9 in #7582
- chore: add timestamp range to flight meta by @v0y4g3r in #7513
- chore: not ignore error now bug is fixed in #7579 by @discord9 in #7596
- ci: release only large page size binary for ARM platform by @MichaelScofield in #7593
- ci: run database connector tests for every PR by @sunng87 in #7612
- chore: skip database driver test when building nightly binary by @sunng87 in #7630
- ci: upgrade GCC in centos dev-builder for cxx crate compatibility by @killme2008 in #7643
- chore: bump version rc.1 by @WenyXu in #7645
- ci: remove db driver test from release as well by @sunng87 in #7650
- chore: adjust manifest cache log level by @evenyag in #7655
All Contributorsβ
We would like to thank the following contributors from the GreptimeDB community:
@MichaelScofield, @Standing-Man, @WenyXu, @discord9, @evenyag, @fengjiachun, @fengys1996, @killme2008, @shuiyisong, @sunng87, @v0y4g3r, @waynexia