Releases: GreptimeTeam/greptimedb
Release v1.0.0
Release date: April 08, 2026
This is GreptimeDB v1.0.0 — our first GA release! We couldn't have gotten here without the community. Thank you to everyone who filed issues, submitted PRs, and ran GreptimeDB in your environments. Your feedback helped us improve every step of the way. This is a big milestone, and we'll continue making GreptimeDB better.
GreptimeDB v1.0.0 switches the default SST format to flat for better performance under high-cardinality workloads, improves metric engine ingestion with bulk inserts, adds partial success support for trace ingestion, introduces built-in Perses dashboard support, and includes several PostgreSQL compatibility fixes.
👍 Highlights
Flat SST is now the default storage format. New tables use the flat format by default. Existing tables using primary_key format continue to work, and the flat scan path supports both formats. To explicitly use the old format:
ALTER TABLE my_table SET 'sst_format' = 'primary_key';Or via HTTP ingestion header:
x-greptime-hints: sst_format=primary_key
OTLP
- Partial success in trace ingestion so partial errors no longer fail the entire batch.
- Auto alter table during trace ingestion from int to float types.
Dashboard
- Built-in Perses dashboard support. GreptimeDB now ships with built-in visualization powered by Perses.
- Dashboard updated to v0.12.0.
PostgreSQL Compatibility
- Fix extended query optimization and format issues.
- Fix
ParameterDescriptionsize limit handling. - Fix 8-bit int mapped to
smallint. - Fix sync cleanup issues with PostgreSQL format.
Breaking changes
- feat!: switch default sst format to flat by @evenyag in #7909
- refactor!: update arrow-ipc output to stream format by @sunng87 in #7922
🚀 Features
- feat(procedure): detect potential deadlock when parent/child procedures share lock keys by @YZL0v3ZZ in #7752
- feat: introduce APIs for storing perses dashboard definition by @sunng87 in #7791
- feat: track unlimited usage in memory manager by @fengjiachun in #7811
- feat(http): improve error logging with client IP by @maximk777 in #7503
- feat(mito2): add partition range cache infrastructure by @evenyag in #7798
- feat: add flat last row reader to the final stream by @evenyag in #7818
- feat(metric-engine): support bulk inserts with put fallback by @v0y4g3r in #7792
- feat: update dashboard to v0.12.0 by @ZonaHex in #7823
- feat: cache decoded region metadata alone with parquet metadata by @waynexia in #7813
- feat: export import v2 pr1 by @fengjiachun in #7785
- feat(mito): flat scan for time series memtable by @v0y4g3r in #7814
- feat: avoid some vector-array conversions on flat projection by @waynexia in #7804
- feat: supports sst_format for x-greptime-hints and database options by @killme2008 in #7843
- feat: add parquet pk prefilter helpers by @evenyag in #7850
- feat: implement partition range cache stream by @evenyag in #7842
- feat: use ArrowReaderBuilder instead of the RowGroups API by @evenyag in #7853
- feat: simplify nested aggr inside count query by @waynexia in #7859
- feat: update postgres ParameterDescription size limit by @sunng87 in #7861
- feat: add incremental read context and scan boundaries by @discord9 in #7848
- feat: add common_version customization by @sunng87 in #7869
- feat: pending rows batching for metrics by @v0y4g3r in #7831
- feat(partition): add expression split utility by @WenyXu in #7822
- feat: implement prefilter framework and primary key prefilter by @evenyag in #7862
- feat: implement export-v2 chunked data export flow by @fengjiachun in #7841
- feat: auto-align Prometheus schemas in pending rows batching by @v0y4g3r in #7877
- feat: implement prefilter for bulk memtable by @evenyag in #7895
- feat: partial success in trace ingestion by @shuiyisong in #7892
- feat: always use flat scan path for both format by @evenyag in #7901
- feat: auto alter table during trace ingestion from int to float by @shuiyisong in #7871
🐛 Bug Fixes
- fix: make pipeline table ttl forever by @sunng87 in #7795
- fix: rm useless analyzer by @discord9 in #7797
- fix: allow empty string for env values by @killme2008 in #7803
- fix: correct unicode representation for jsonb_to_string by @sunng87 in #7810
- fix: resolve optimization issue for extended query by @sunng87 in #7824
- fix: windows file path by @fengjiachun in #7839
- fix: prevent stale in-flight cache refill after invalidation in CacheContainer by @WenyXu in #7825
- fix: prom cast to f64 by @discord9 in #7840
- fix: update 8-bit int to smallint in postgres by @sunng87 in #7854
- fix(mito2): accept post-truncate flush for skip-wal tables by @v0y4g3r in #7858
- fix: nested views not working by @Boudewijn26 in #7857
- fix: fix SeriesScan verbose mode mising metrics by @evenyag in #7872
- fix(datatypes): correct ConstantVector rhs comparison in vector equality by @cuiweixie in #7866
- fix: correct app-name for dashboard by @sunng87 in #7884
- fix: allow auto type upscale conversion in trace ingestion by @shuiyisong in #7870
- fix: avoid cloning serialized view plans on resolve by @ynachi in #7882
- fix: incorrect prefilter check by @evenyag in #7886
- fix: return empty when promql gets non-exist label name by @shuiyisong in #7899
- fix: windows ci by @fengjiachun in #7905
- fix: add overflow check before interleave() by @evenyag in #7921
- fix: resolve postgres format and sync cleanu...
Release v1.0.0-rc.2-nightly-20260406
What's Changed
- chore: update rust toolchain to 2026-03-21 by @sunng87 in #7849
- fix: avoid cloning serialized view plans on resolve by @ynachi in #7882
- fix: incorrect prefilter check by @evenyag in #7886
- chore: update ignore list for AI related by @shuiyisong in #7896
- feat: implement export-v2 chunked data export flow by @fengjiachun in #7841
- chore(deps): bump rustls-webpki from 0.103.3 to 0.103.10 by @dependabot[bot] in #7891
- chore: Update Dockerfile by @daviderli614 in #7893
- chore(deps): bump tar from 0.4.44 to 0.4.45 by @dependabot[bot] in #7890
- ci: update dev-builder image tag by @github-actions[bot] in #7894
- feat: auto-align Prometheus schemas in pending rows batching by @v0y4g3r in #7877
- feat: implement prefilter for bulk memtable by @evenyag in #7895
- feat: partial success in trace ingestion by @shuiyisong in #7892
- fix: return empty when promql gets non-exist label name by @shuiyisong in #7899
- chore: remove unused deps using udeps by @shuiyisong in #7906
- feat: always use flat scan path for both format by @evenyag in #7901
- feat: auto alter table during trace ingestion from int to float by @shuiyisong in #7871
- fix: windows ci by @fengjiachun in #7905
- refactor(metric-engine): Refactor PendingRowsBatcher for better testability and benchmarking by @v0y4g3r in #7902
- feat!: switch default sst format to flat by @evenyag in #7909
- refactor: extract otel helper by @shuiyisong in #7910
New Contributors
Full Changelog: v1.0.0-rc.2-a8fe6b5e4-20260330-1774862317...v1.0.0-rc.2-nightly-20260406
Release v1.0.0-rc.2-a8fe6b5e4-20260330-1774862317
What's Changed
- fix(datatypes): correct ConstantVector rhs comparison in vector equality by @cuiweixie in #7866
- chore: refine track memory metrics semantics by @fengjiachun in #7874
- feat: implement prefilter framework and primary key prefilter by @evenyag in #7862
- fix: correct app-name for dashboard by @sunng87 in #7884
- fix: allow auto type upscale conversion in trace ingestion by @shuiyisong in #7870
New Contributors
- @cuiweixie made their first contribution in #7866
Full Changelog: v1.0.0-rc.2-nightly-20260330...v1.0.0-rc.2-a8fe6b5e4-20260330-1774862317
Release v1.0.0-rc.2-nightly-20260330
What's Changed
- fix(mito2): accept post-truncate flush for skip-wal tables by @v0y4g3r in #7858
- fix: nested views not working by @Boudewijn26 in #7857
- feat: simplify nested aggr inside count query by @waynexia in #7859
- feat: update postgres ParameterDescription size limit by @sunng87 in #7861
- chore: remove unused rexpect dev-dependency by @fengys1996 in #7865
- refactor: simplify scan memory tracking by @fengjiachun in #7827
- feat: add incremental read context and scan boundaries by @discord9 in #7848
- test: filter on region_peers table by @waynexia in #7864
- feat: add common_version customization by @sunng87 in #7869
- fix: fix SeriesScan verbose mode mising metrics by @evenyag in #7872
- feat: pending rows batching for metrics by @v0y4g3r in #7831
- feat(partition): add expression split utility by @WenyXu in #7822
- perf: optimize promql range functions by @waynexia in #7878
New Contributors
- @Boudewijn26 made their first contribution in #7857
Full Changelog: v1.0.0-rc.2-13cdfa9b5-20260325-1774407105...v1.0.0-rc.2-nightly-20260330
Release v1.0.0-rc.2-13cdfa9b5-20260325-1774407105
What's Changed
- chore: remove GrpcQueryHandler::put_record_batch by @v0y4g3r in #7844
- feat(mito): flat scan for time series memtable by @v0y4g3r in #7814
- feat: avoid some vector-array conversions on flat projection by @waynexia in #7804
- feat: supports sst_format for x-greptime-hints and database options by @killme2008 in #7843
- chore(deps): bump rustls-webpki from 0.103.3 to 0.103.10 by @dependabot[bot] in #7847
- chore(deps): bump tar from 0.4.44 to 0.4.45 by @dependabot[bot] in #7846
- feat: add parquet pk prefilter helpers by @evenyag in #7850
- fix: prevent stale in-flight cache refill after invalidation in CacheContainer by @WenyXu in #7825
- fix: prom cast to f64 by @discord9 in #7840
- ci: remove redundant directory level when uploading artifacts to S3 by @daviderli614 in #7852
- feat: implement partition range cache stream by @evenyag in #7842
- refactor: move election trait and implementations to the
common-metacrate by @shuiyisong in #7820 - fix: update 8-bit int to smallint in postgres by @sunng87 in #7854
- feat: use ArrowReaderBuilder instead of the RowGroups API by @evenyag in #7853
Full Changelog: v1.0.0-rc.2-nightly-20260323...v1.0.0-rc.2-13cdfa9b5-20260325-1774407105
Release v1.0.0-rc.2-nightly-20260323
What's Changed
- fix: correct unicode representation for jsonb_to_string by @sunng87 in #7810
- feat: track unlimited usage in memory manager by @fengjiachun in #7811
- feat(http): improve error logging with client IP by @maximk777 in #7503
- refactor: remove Memtable::iter by @v0y4g3r in #7809
- chore: update visibility of BatchToRecordBatchAdapter::new by @sunng87 in #7817
- feat(mito2): add partition range cache infrastructure by @evenyag in #7798
- feat: add flat last row reader to the final stream by @evenyag in #7818
- feat(metric-engine): support bulk inserts with put fallback by @v0y4g3r in #7792
- feat: update dashboard to v0.12.0 by @ZonaHex in #7823
- docs: flow inc query rfc by @discord9 in #7816
- feat: cache decoded region metadata alone with parquet metadata by @waynexia in #7813
- feat: export import v2 pr1 by @fengjiachun in #7785
- perf: support group accumulators for state wrapper by @waynexia in #7826
- fix: resolve optimization issue for extended query by @sunng87 in #7824
- fix: windows file path by @fengjiachun in #7839
New Contributors
- @maximk777 made their first contribution in #7503
Full Changelog: v1.0.0-rc.2-nightly-20260316...v1.0.0-rc.2-nightly-20260323
Release v1.0.0-rc.2-nightly-20260316
What's Changed
- docs: update year to 2026 by @yihong0618 in #7787
- fix: make pipeline table ttl forever by @sunng87 in #7795
- feat(procedure): detect potential deadlock when parent/child procedures share lock keys by @YZL0v3ZZ in #7752
- fix: rm useless analyzer by @discord9 in #7797
- feat: introduce APIs for storing perses dashboard definition by @sunng87 in #7791
- fix: allow empty string for env values by @killme2008 in #7803
- chore(deps): bump quinn-proto from 0.11.12 to 0.11.14 by @dependabot[bot] in #7805
- test(fuzz): add metric table repartition fuzz target by @WenyXu in #7754
- refactor: customize standalone instance build by @MichaelScofield in #7807
- refactor: unify flush and compaction to always use FlatSource by @evenyag in #7799
- ci: upload artifacts use s3 proxy by @daviderli614 in #7800
Full Changelog: v1.0.0-rc.2...v1.0.0-rc.2-nightly-20260316
Release v1.0.0-rc.2
Release date: March 11, 2026
This release also includes several important bug fixes for repartition:
- Reject writes to deallocating regions during region merge
- Ensure entering the staging phase waits for compaction to complete
Upgrading to this version is recommended.
👍 Highlights
Performance Improvements
- Dynamic filter pushdown for TopK: Runtime dynamic filters are propagated from DataFusion into Mito region scans to reduce unnecessary IO/CPU; in #7545,
ORDER BY end_time DESC LIMIT 10improved from ~28.86s to ~0.21s on non-indexed timestamps. - Pruning improvements: Shared partition pruning and extension-range filter improvements improve scan selectivity by #7635 and #7693.
- Ingestion and scan path optimization: Prometheus decode and remote-write decode are optimized by #7737 and #7761, and Mito2 Parquet scan is accelerated via min-max caches by #7708.
Key New Features
- PostgreSQL COPY support for ADBC-postgres path: GreptimeDB supports
COPY (query) TO STDOUT WITH (format binary)on the PostgreSQL interface, enabling the ADBC-postgres COPY-optimized query path by #7709. - Flow TQL CTE support:
CREATE FLOWsupports simple TQL CTE patterns, improving flow authoring while preserving predictable execution semantics by #7702. - Prometheus 3.x behavior alignment: Selector, lookback, and matrix-selector behavior are aligned for more predictable upgrades and query compatibility by #7671 and #7688.
Notable Bug Fixes
- Repartition safety during region merge: Reject writes to deallocating regions during region merge by #7694.
- Staging transition correctness: Ensure entering the staging phase waits for compaction to complete by #7776.
Dashboard Updates
- Query experience: Added table query sidebar and toolbar/editor UI, with refined pagination.
- SQL and table-name handling: Improved SQL quoting and parsing for quoted/prefixed table names.
- Usability and stability: Added database selector support, log export limits, and bigint handling fixes.
🚀 Features
- feat: reduce unit test suite wall time by @waynexia in #7657
- feat: support group by op in promql by @waynexia in #7663
- feat(copy_to_json): add
date_format/timestamp_format/time_formatfor JSON format copy by @linyihai in #7633 - feat: Implement a shared pruner for partitions in the same scanner by @evenyag in #7635
- feat: adapt prometheus 3.x matrix selector behavior change by @waynexia in #7671
- feat: partition rule version validation for writes and staging by @WenyXu in #7628
- feat: cli tool to repair partition columns mismatch by @MichaelScofield in #7605
- feat: adapt prometheus 3.x selector and lookback behavior by @waynexia in #7688
- feat: track flow source tables for TQL and info schema by @waynexia in #7697
- feat: report flow stats from streaming and batching engines by @waynexia in #7701
- feat: update dashboard to v0.11.12 by @ZonaHex in #7707
- feat: add a fallback parameter type inference by reading cast type by @sunng87 in #7712
- feat: support changing table's append_mode to true by @evenyag in #7669
- feat: implements anomaly_score_iqr, anomaly_score_mad etc. by @killme2008 in #7681
- feat: implement postgres copy to stdout by @sunng87 in #7709
- feat: add a subcommand to bench scan by @evenyag in #7722
- feat(tracing): propagate mailbox trace context and refine procedure spans by @WenyXu in #7726
- feat: add extension range api for flat format by @evenyag in #7730
- feat: pull meta config in frontend during startup by @shuiyisong in #7727
- feat: improve filter support for scanbench by @evenyag in #7736
- feat: add COPY support for GCS/Azblob with OSS/GCS/Azblob integration coverage by @WenyXu in #7743
- feat: adapt new name of holt winters fn by @waynexia in #7700
- feat: flow tql cte by @discord9 in #7702
- feat: gc batch delete files by @discord9 in #7733
- feat: admin gc table/regions by @discord9 in #7619
- feat: implement last row cache reader for flat format by @evenyag in #7757
- feat: update dashboard to v0.11.13 by @ZonaHex in #7763
- feat: add function rewrite rule for json_get with cast by @sunng87 in #7631
- feat: fast path for empty selection files by @waynexia in #7780
- feat: flat read path support primary_key format memtables by @evenyag in #7759
- feat: replace shadow-rs with self-maintained version info by @waynexia in #7782
- feat: use dyn filter by @discord9 in #7545
🐛 Bug Fixes
- fix: incorrect column statistics of promql plans by @waynexia in #7662
- fix: drop rhs columns on promql filter join by @waynexia in #7665
- fix(meta-srv): force close postgres client on reset to release advisory l… by @YZL0v3ZZ in #7673
- fix: cargo nextest run -p query --features enterprise by @fengys1996 in #7683
- fix: bump prometheus to 0.14 by @evenyag in #7686
- fix: panic when querying slowlog by @MichaelScofield in #7689
- fix(mito2): filter extension ranges in pruner by @fengys1996 in #7693
- fix(mito2): introduce
PartitionExprChangein staging flow and keep memtables on metadata-only updates by @WenyXu in #7695 - fix: incorrect-tql-explain result by @fengys1996 in #7675
- fix: use full DDL of flow in information_schema.flows.flow_definition by @sunng87 in #7704
- fix: handle scalar result in MultiDimPartitionRule by @v0y4g3r in #7715
- fix(repartition): reject writes on deallocating regions during region merge by @WenyXu in #7694
- fix...
Release v1.0.0-rc.1-nightly-20260302
What's Changed
- chore: bump rsasl version by @evenyag in #7713
- chore: more gc metrics by @discord9 in #7661
- feat: add a fallback parameter type inference by reading cast type by @sunng87 in #7712
- fix: handle scalar result in MultiDimPartitionRule by @v0y4g3r in #7715
- feat: support changing table's append_mode to true by @evenyag in #7669
- chore(deps): bump axios from 1.12.2 to 1.13.5 in /.github/scripts by @dependabot[bot] in #7699
- feat: implements anomaly_score_iqr, anomaly_score_mad etc. by @killme2008 in #7681
- fix(repartition): reject writes on deallocating regions during region merge by @WenyXu in #7694
- fix: gc schd parallel send hb instr by @discord9 in #7716
- chore(deps): bump keccak from 0.1.5 to 0.1.6 by @dependabot[bot] in #7718
- chore(deps): bump time from 0.3.41 to 0.3.47 by @dependabot[bot] in #7717
- chore(deps): bump rsa from 0.9.8 to 0.9.10 by @dependabot[bot] in #7719
- chore(deps): bump bytes from 1.11.0 to 1.11.1 by @dependabot[bot] in #7721
- chore(deps): bump tracing-subscriber from 0.3.19 to 0.3.20 by @dependabot[bot] in #7720
- feat: implement postgres copy to stdout by @sunng87 in #7709
- chore: tracing for gc by @discord9 in #7723
- feat: add a subcommand to bench scan by @evenyag in #7722
- chore: remove dependency on "atty" by @MichaelScofield in #7725
- chore: remove old substrait dependency by @fengys1996 in #7724
- feat(tracing): propagate mailbox trace context and refine procedure spans by @WenyXu in #7726
- chore(ci): collect monitor logs and traces on fuzz test failures by @WenyXu in #7728
- docs: update project status and description by @killme2008 in #7731
- feat: add extension range api for flat format by @evenyag in #7730
Full Changelog: v1.0.0-rc.1-nightly-20260216...v1.0.0-rc.1-nightly-20260302
Release v1.0.0-rc.1-nightly-20260223
What's Changed
- fix(mito2): filter extension ranges in pruner by @fengys1996 in #7693
- feat: adapt prometheus 3.x selector and lookback behavior by @waynexia in #7688
- refactor: remove the
RawTableMetaandRawTableInfoto make codes more concise by @MichaelScofield in #7626 - fix(mito2): introduce
PartitionExprChangein staging flow and keep memtables on metadata-only updates by @WenyXu in #7695 - refactor: rename partition rule version to partition expr version by @WenyXu in #7696
- fix: incorrect-tql-explain result by @fengys1996 in #7675
- refactor: remove session from common meta by @sunng87 in #7698
- feat: track flow source tables for TQL and info schema by @waynexia in #7697
- feat: report flow stats from streaming and batching engines by @waynexia in #7701
- fix: use full DDL of flow in information_schema.flows.flow_definition by @sunng87 in #7704
- feat: update dashboard to v0.11.12 by @ZonaHex in #7707
Full Changelog: v1.0.0-rc.1-56629ec56-20260209-1770646305...v1.0.0-rc.1-nightly-20260223