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 missing 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 cleanup issues by @sunng87 in #7928
- fix(repartition): harden repartition rollback paths by @WenyXu in #7918
π Refactorβ
- refactor: customize standalone instance build by @MichaelScofield in #7807
- refactor: unify flush and compaction to always use FlatSource by @evenyag in #7799
- refactor: remove Memtable::iter by @v0y4g3r in #7809
- refactor: move election trait and implementations to the
common-metacrate by @shuiyisong in #7820 - refactor: simplify scan memory tracking by @fengjiachun in #7827
- refactor(metric-engine): Refactor PendingRowsBatcher for better testability and benchmarking by @v0y4g3r in #7902
- refactor: extract otel helper by @shuiyisong in #7910
π Documentationβ
- docs: update year to 2026 by @yihong0618 in #7787
- docs: flow inc query rfc by @discord9 in #7816
- docs(metric-engine): update prom_store example configs by @v0y4g3r in #7920
β‘ Performanceβ
- perf: support group accumulators for state wrapper by @waynexia in #7826
- perf: optimize promql range functions by @waynexia in #7878
- perf: no longer window sort when limit by @discord9 in #7912
π§ͺ Testingβ
- test(fuzz): add metric table repartition fuzz target by @WenyXu in #7754
- test: filter on region_peers table by @waynexia in #7864
βοΈ Miscellaneous Tasksβ
- ci: upload artifacts use s3 proxy by @daviderli614 in #7800
- chore: update visibility of BatchToRecordBatchAdapter::new by @sunng87 in #7817
- chore: remove GrpcQueryHandler::put_record_batch by @v0y4g3r in #7844
- ci: remove redundant directory level when uploading artifacts to S3 by @daviderli614 in #7852
- chore: remove unused rexpect dev-dependency by @fengys1996 in #7865
- chore: refine track memory metrics semantics by @fengjiachun in #7874
- chore: update rust toolchain to 2026-03-21 by @sunng87 in #7849
- chore: update ignore list for AI related by @shuiyisong in #7896
- chore: Update Dockerfile by @daviderli614 in #7893
- ci: update dev-builder image tag by @github-actions[bot] in #7894
- chore: remove unused deps using udeps by @shuiyisong in #7906
- chore: memory limit comment by @fengjiachun in #7914
- chore: bump version to 1.0.0 by @evenyag in #7935
New Contributorsβ
- @ynachi made their first contribution in #7882
- @cuiweixie made their first contribution in #7866
- @Boudewijn26 made their first contribution in #7857
- @maximk777 made their first contribution in #7503
All Contributorsβ
We would like to thank the following contributors from the GreptimeDB community:
@Boudewijn26, @MichaelScofield, @WenyXu, @YZL0v3ZZ, @ZonaHex, @cuiweixie, @daviderli614, @discord9, @evenyag, @fengjiachun, @fengys1996, @github-actions[bot], @killme2008, @maximk777, @shuiyisong, @sunng87, @v0y4g3r, @waynexia, @yihong0618, @ynachi