v1.1.0
Release date: June 14, 2026
v1.1.0 adds online partitioning for previously unpartitioned tables, an experimental
incremental read mode for batching flows, and new CSV import options, along with a number of
performance and stability fixes.
๐ Highlights
Partition an existing table. Previously only tables created with PARTITION ON COLUMNS
could be repartitioned, via SPLIT PARTITION and MERGE PARTITION. v1.1.0 supports
partitioning a table that has no partition rules, splitting its single region into multiple
partitions with ALTER TABLE ... PARTITION ON COLUMNS:
ALTER TABLE sensor_readings PARTITION ON COLUMNS (device_id, area) (
device_id < 100 AND area < 'South',
device_id < 100 AND area >= 'South',
device_id >= 100 AND area <= 'East',
device_id >= 100 AND area > 'East'
);The layout can then be adjusted further with SPLIT PARTITION and MERGE PARTITION.
Repartitioning requires a distributed cluster with shared object storage and GC enabled.
Experimental incremental read for flows. Batching flows re-execute the full source query
on every evaluation. With incremental read enabled, a flow only reads source rows appended
since its last run, lowering overhead for large append-only sources. It is disabled by
default; enable it in the flownode config:
[flow.batching_mode]
experimental_enable_incremental_read = trueIt can also be set per flow with WITH (experimental_enable_incremental_read = 'true'). The
source table must be append-only (append_mode = 'true'); otherwise the flow falls back to
full-snapshot queries.
CSV import options. COPY FROM adds two options for CSV. SKIP_BAD_RECORDS = 'true'
skips rows that fail to parse or cast instead of aborting the import, and HEADERS = 'false'
imports files without a header row, mapping columns by position to the table schema:
COPY tbl FROM '/path/to/file.csv' WITH (
FORMAT = 'csv',
SKIP_BAD_RECORDS = 'true',
HEADERS = 'false'
);Dashboard
- The built-in Perses dashboard now supports trace visualization: a trace list and a
per-trace detail/Gantt view from the trace table, using the GreptimeDB Perses data-source
plugin.
Breaking changes
- fix!: align gRPC CLI option names with config naming by @QuakeWang in #8021
- refactor(mito2)!: remove PartitionTreeMemtable by @evenyag in #8080
- fix!: correct information_schema index metadata by @killme2008 in #8275
- fix!: fence scoped flow repair snapshots by @discord9 in #8277
๐ Features
- feat: tune constants by @waynexia in #7851
- feat: execution timeout for prepared statement by @sunng87 in #7932
- feat: add parquet nested leaf projection by @fengys1996 in #7900
- feat: use partition range cache in scan by @evenyag in #7873
- feat: allow customizing trace table partitions by @sunng87 in #7944
- feat(cli): implement import-v2 data import pipeline by @fengjiachun in #7898
- feat: implement trace type whitelist by @shuiyisong in #7930
- feat: introducing "JSON2" type by @MichaelScofield in #7965
- feat: update dashboard to v0.12.1 by @ZonaHex in #7969
- feat: add more range check and test for parsing postgres parameters by @sunng87 in #7962
- feat(flow): inc query scan bind seq by @discord9 in #7879
- feat: json2 insert by @MichaelScofield in #7981
- feat(mito2): add PK-range-aware TWCS overlap handling by @v0y4g3r in #7954
- feat: prune bulk memtable parts by first tag by @evenyag in #7911
- feat: expose flownode addrs in information_schema flows by @QuakeWang in #7992
- feat: update dashboard to v0.12.2 by @ZonaHex in #8010
- feat: json2 flush by @MichaelScofield in #8011
- feat(cli): add metadata put key and table commands by @WenyXu in #7989
- feat(cli): add retry and import state fundations by @fengjiachun in #8007
- feat: tune range cache by @evenyag in #8006
- feat: support gRPC-Web on frontend gRPC server by @onepizzateam in #8027
- feat: add seq watermark in record batch metrics by @discord9 in #8015
- feat(flow): parse defer on miss src table by @discord9 in #7980
- feat: allow detailed index config in pipeline by @QuakeWang in #8036
- feat(meta): add dropped table tombstone metadata helpers by @v0y4g3r in #8040
- feat: add read column abstraction by @fengys1996 in #8038
- feat: support prefiltering any columns in flat format by @evenyag in #7972
- feat: persist our column_id to parquet field_id by @sunng87 in #8032
- feat: json expr planner by @MichaelScofield in #8066
- feat(operator): allow last_row merge mode with append mode by @v0y4g3r in #8065
- feat: support nested projection in mito2 read path by @fengys1996 in #7959
- feat: support env vars in heartbeat by @v0y4g3r in #8064
- feat: concretize json type from query by @MichaelScofield in #8081
- feat: flow inc query terminal metrics transport by @discord9 in #8045
- feat: import resume part2 by @fengjiachun in #8070
- feat: add export-v2 snapshot listing by @fengjiachun in #8096
- feat: some optimistic paths for instant manipulate by @waynexia in #7812
- feat: remote dyn filter basics by @discord9 in #7979
- feat: bump datafusion to 53 by @waynexia in #8107
- feat: start environments in parallel by @waynexia in #8101
- feat: expose node info for placement selectors by @v0y4g3r in #8095
- feat: add otlp to prometheus naming translation options by @shuiyisong in #8113
- feat: add export-v2 snapshot verification by @fengjiachun in #8111
- feat: add InfluxDB default merge mode config by @v0y4g3r in #8134
- feat: show sst primary key range in information_schema by @MichaelScofield in #8137
- feat(meta-srv): add selector factory plugin hook by @v0y4g3r in #8140
- feat: use and cache page index from sst meta by @waynexia in #8139
- feat: inc query join rewrite helper by @discord9 in #8108
- feat: compact json2 data by @MichaelScofield in #8103
- feat: merge files to add in one region edit by @MichaelScofield in #8141
- feat: implement a cache for the prefilter by @evenyag in #8102
- feat: update some interceptor to carry more information by @sunng87 in #8090
- feat(cli): add export-v2 delete command by @fengjiachun in #8162
- feat: initial implementation for range cache with time filters by @evenyag in #8130
- feat: add flow query-context plumbing for terminal watermarks by @discord9 in #8154
- feat: support alter table partition syntax by @WenyXu in #8177
- feat: update project status and architecture by @killme2008 in #8182
- feat(meta-srv): support repartition for unpartitioned tables by @WenyXu in #8186
- feat(flow): support incremental read checkpoints by @discord9 in #8179
- feat: support pending flow metadata with defer_on_missing_source by @discord9 in #8124
- feat: global switch for creating tables automatically by @killme2008 in #8203
- feat: table semantic layer identity (Phase 1) by @killme2008 in #8210
- feat: check open region requirements by @WenyXu in #8194
- feat(datanode): hold query permit for stream and expose limiter timeout by @evenyag in #8215
- feat: validate batching flow sink schema on create by @discord9 in #8176
- feat: support CSV copy skip bad records by @QuakeWang in #8198
- feat: look up cache with range calculation by @waynexia in #8123
- feat: join simplifier for promql binary op by @waynexia in #8211
- feat: support headerless CSV copy from by @QuakeWang in #8233
- feat: add remote dynamic filter frontend registration by @discord9 in #8148
- feat: table semantic layer per-table enrichment (Phase 2) by @killme2008 in #8218
- feat: table semantic layer information_schema view (Phase 3) by @killme2008 in #8240
- feat: identify noneffective binary modifiers by @waynexia in #8230
- feat: introduce plugin setup functions with richer context by @sunng87 in #8256
- feat: pgwire 0.40 by @sunng87 in #8257
- feat: fan out remote dynamic filter updates from FE by @discord9 in #8241
- feat: add information_schema statistics table by @killme2008 in #8253
- feat: add tools for development by @evenyag in #8260
- feat: separate datanode query and ingestion runtimes by @v0y4g3r in #8246
- feat: support remote WAL logical pruning by @WenyXu in #8259
- feat: decouple region edit and compaction by @MichaelScofield in #8272
- feat(cli): add export import progress abstraction by @fengjiachun in #8270
- feat: apply remote dynamic filters on datanode scans by @discord9 in #8262
- feat: json2 field access pushdown to parquet by @MichaelScofield in #8267
- feat: pass snapshot read bounds over flight by @discord9 in #8279
- feat(security): add password verifier formats by @killme2008 in #8251
- feat: flush hook extension point by @sunng87 in #8145
- feat: add field_id for internal fields by @sunng87 in #8284
- feat(cli): add import-v2 progress mode by @fengjiachun in #8283
- feat: support repartition with target partition columns by @WenyXu in #8278
- feat(cli): add import-v2 progress UI by @fengjiachun in #8289
- feat: support create region requirements by @WenyXu in #8281
- feat: add per-partition timings to merge scan partition metrics by @evenyag in #8293
- feat: add password hash generation command by @killme2008 in #8288
๐ Bug Fixes
- fix: nested projection missing roots by @fengys1996 in #7993
- fix: make sure interceptor is called for plan execution by @sunng87 in #8041
- fix: win cli lock by @fengjiachun in #8049
- fix(mito): queue writes during region edit by @v0y4g3r in #8079
- fix: revoke meta kv writes outside metasrv leader by @QuakeWang in #8060
- fix: remove unparsed [heartbeat] sections from node example configs by @kimjune01 in #8092
- fix(mito2): schema-safe inverted index pruning by @fengys1996 in #8089
- fix: add standalone flag in standalone tests by @shuiyisong in #8100
- fix: expose flight timestamp range metadata by @v0y4g3r in #8104
- fix: stabilize ssts sqlness datetime redaction by @fengjiachun in #8110
- fix(mito): allow compaction publish during editing by @v0y4g3r in #8097
- fix: classify WAL prune Kafka retry errors by @WenyXu in #8119
- fix: optimize sorted run picking by @v0y4g3r in #8128
- fix: flaky sqlness result ordering by @fengys1996 in #8136
- fix: skip flush when closing follower region by @v0y4g3r in #8143
- fix: track INSERT SELECT in process manager by @QuakeWang in #8138
- fix: skip sst cache preload for staging manifest by @WenyXu in #8147
- fix(mysql): infer LIMIT placeholders in prepare by @discord9 in #8149
- fix: reject physical metric table writes by @WenyXu in #8153
- fix(mysql): keep unknown prepare placeholders by @discord9 in #8150
- fix: close heartbeat streams on metasrv leader stepdown by @WenyXu in #8156
- fix: qualify HistogramFold schema by @evenyag in #8157
- fix: faster jieba by @yihong0618 in #8158
- fix(mito2): schema-safe skipping index pruning by @fengys1996 in #8122
- fix: update RPC bind address in README by @rogierlommers in #8168
- fix: divide series for subquery output by @evenyag in #8173
- fix: reset procedure manager state on stop by @WenyXu in #8174
- fix(mito): count owned SSTs in region stats by @WenyXu in #8191
- fix: classify InsertInto as write request by @waynexia in #8200
- fix(flow): harden incremental read correctness by @discord9 in #8196
- fix: nightly jsonbench test by @MichaelScofield in #8212
- fix: format detected IPv6 grpc address by @WenyXu in #8221
- fix: run eval-interval flow without time window by @discord9 in #8231
- fix: align bulk insert schema handling by @v0y4g3r in #8222
- fix: improve remote WAL replay checkpoint handling by @WenyXu in #8225
- fix: avoid stale metadata cache after invalidation by @WenyXu in #8235
- fix: reset region detector after migration by @WenyXu in #8234
- fix: accept JSONB OTLP logs against existing schema by @v0y4g3r in #8250
- fix(flow): support complex SQL full-query flows by @discord9 in #8242
- fix(config): align scan memory limit default with code by @fengjiachun in #8228
- fix(ci): retry repartition chaos row validation by @WenyXu in #8271
- fix: pin tonic below 0.14.5 to avoid max connection age panic (#8265) by @evenyag in #8287
- fix(mito): collect index apply metrics in pruner verbose mode by @evenyag in #8290
๐ Refactor
- refactor(mito2): remove dead scan code by @evenyag in #7925
- refactor: introduce the ProjectInput structure by @fengys1996 in #7908
- refactor(mito): remove
Compactor::compactmethod by @v0y4g3r in #7968 - refactor(mito2): remove PrimaryKey variants by @evenyag in #7982
- refactor: update SqlPlan for more cleaner variants by @sunng87 in #7966
- refactor: unify frontend discovery with active peer discovery by @WenyXu in #8031
- refactor(mito2): reshape extension range API by @evenyag in #8004
- refactor: make InsertForwarder use shared metasrv database operator by @WenyXu in #8033
- refactor: make
json_getadapted with JSON2 by @MichaelScofield in #8043 - refactor: propagate flush reasons through FlushRegions path by @QuakeWang in #8051
- refactor: extract functions for building mysql/pg's kvbackend and electionref by @shuiyisong in #8076
- refactor: store the schema of flat source by @MichaelScofield in #8091
- refactor: remove async file reader adapter layer by @waynexia in #8120
- refactor: use node info for active discovery by @WenyXu in #8121
- refactor: clarify region flush reasons by @WenyXu in #8146
- refactor: use structured pusher key by @WenyXu in #8155
- refactor: split repartition region descriptors by @WenyXu in #8172
- refactor: use last compaction scheduled time instead of finished time by @MichaelScofield in #8190
- refactor: optimize compaction's pick time by @MichaelScofield in #8197
- refactor: give instance to start plugin functions by @sunng87 in #8208
- refactor(cli): split export-v2 verify into plan/scan/reconcile by @fengjiachun in #8206
- refactor: streamline pipeline ingestion row building by @shuiyisong in #8236
- refactor: loki ingestion by @shuiyisong in #8266
- refactor(cli): stream export-v2 verify data listing by @fengjiachun in #8268
- refactor: skip prefilter for expr with functions by @MichaelScofield in #8280
๐ Documentation
- docs: rfc for remote dyn filter by @discord9 in #7931
- docs: update project status by @killme2008 in #7976
โก Performance
- perf: optimize extrapolated rate op family by @waynexia in #7880
- perf: join metrics tables on the tsid key whenever possible by @waynexia in #7927
- perf(mito-codec): optimize SparseValues decode and lookup by @evenyag in #8057
- perf(mito): split record batches on equal timestamps by @evenyag in #8163
- perf: collect narrow binary join by @waynexia in #8193
- perf: read primary key as binary if it overflows the dictionary by @evenyag in #8187
- perf(mito): cached-size single-pass WAL entry encoder by @lyang24 in #8254
๐งช Testing
- test: add repartition chaos target by @WenyXu in #7924
- test(cli): harden import state lock test by @fengjiachun in #8030
- test: use standalone flag in test by @shuiyisong in #8068
- test: cover standalone user provider config by @Detachm in #8067
- test: verify KILL cancels INSERT SELECT by @QuakeWang in #8151
- test: add jsonbench tests by @MichaelScofield in #8165
- test: fuzz unpartitioned repartition by @WenyXu in #8195
- test: move CSV skip bad records coverage to integration by @WenyXu in #8237
- test: add rebuild index coverage by @discord9 in #8175
- test: redact dynamic filter in order_by sqlness by @discord9 in #8286
โ๏ธ Miscellaneous Tasks
- chore: move Tantivy fulltext search to blocking thread pool by @lyang24 in #7919
- ci: add standalone workflows for bumping helm charts and homebrew by @evenyag in #7941
- chore: add build info in panic message by @v0y4g3r in #8000
- chore: update the opendal to 0.56 rc2 by @shuiyisong in #8003
- chore: sqlness redact datetime by @discord9 in #8058
- chore: add trait for creating meta kvbackend in standalone by @shuiyisong in #8063
- chore: update opendal's version to official 0.56 by @shuiyisong in #8069
- chore: wrap standalone runtime with trait by @shuiyisong in #8083
- chore: update dashboard by @WenyXu in #8098
- chore: update dashboards by @WenyXu in #8106
- chore: use opendal main branch by @shuiyisong in #8118
- chore: bump version to v1.1.0 by @evenyag in #8131
- chore: pub some functions by @MichaelScofield in #8133
- chore: introduce user cache invalidation api by @shuiyisong in #8129
- ci: add PostgreSQL and MySQL dependency setup steps to sqlness job by @Copilot in #8185
- chore: add
LeaderServicesContextcontrol to standalone by @shuiyisong in #8164 - chore: expose region info inspection table by @v0y4g3r in #8178
- ci: add nightly jsonbench test by @MichaelScofield in #7750
- chore: update opendal to 0.57 by @shuiyisong in #8204
- chore: update vrl to 0.33 by @shuiyisong in #8219
- chore: remove
HttpConfiguratorby @shuiyisong in #8224 - ci: update arm64 runner by @daviderli614 in #8226
- chore: align OTLP logs with existing table schemas by @shuiyisong in #8229
- ci: revert arm64 runner default to 4xlarge by @evenyag in #8243
- chore: remove auth in flownode by @shuiyisong in #8244
- chore: add repartition debug logs by @WenyXu in #8245
- chore: Increase GreptimeDB cluster setup timeout for distributed fuzz CI by @Copilot in #8263
- ci: notify jsonbench result by @MichaelScofield in #8273
- chore: load page index in opener by @evenyag in #8269
RFC
- RFC: Table Semantic Layer by @killme2008 in #8199
New Contributors
- @QuakeWang made their first contribution in #8233
- @rogierlommers made their first contribution in #8168
- @kimjune01 made their first contribution in #8092
- @Detachm made their first contribution in #8067
- @onepizzateam made their first contribution in #8027
All Contributors
We would like to thank the following contributors from the GreptimeDB community:
@Copilot, @daviderli614, @Detachm, @discord9, @evenyag, @fengjiachun, @fengys1996, @killme2008, @kimjune01, @lyang24, @MichaelScofield, @onepizzateam, @QuakeWang, @rogierlommers, @shuiyisong, @sunng87, @v0y4g3r, @waynexia, @WenyXu, @yihong0618, @ZonaHex