Releases: GreptimeTeam/greptimedb
Release list
Release v1.3.0-nightly-20260824
What's Changed
- feat(event): add event context to procedure events by @WenyXu in #8734
- fix(prometheus): custom column remote reads by @grezzko in #8659
- docs: refine coding agent maps by @killme2008 in #8790
- feat: update opentelemetry family to 0.32 series by @sunng87 in #8776
- chore(ci): warn when a member has too many open pull requests by @killme2008 in #8813
- fix(mito2): avoid region worker panic when building a WAL entry fails by @fengjiachun in #8810
- perf: reduce cold workspace compile time by @shuiyisong in #8801
- feat: add riscv64 cross-build support by @v0y4g3r in #8820
- feat(auth): support HTTP bearer-token authentication by @sunng87 in #8719
- feat(promql): support mixed sample ranges by @shuiyisong in #8784
- fix(meta): validate leaders before enabling skip_wal by @fengjiachun in #8823
- refactor: share query channel definition by @WenyXu in #8825
- feat: declared edges and the derivation contract for the entity graph by @killme2008 in #8794
- feat: add admin function to discard unflushed data by @evenyag in #8768
- ci: update dev-builder image tag by @github-actions[bot] in #8831
- fix(ci): identify team members by repository permission by @killme2008 in #8822
- fix(mito): re-encode bulk WAL entry after filling missing columns by @fengjiachun in #8808
- test: fix unknown channel event context expectation by @WenyXu in #8832
- fix(query): ignore field metadata in MergeScan remote schema validation by @discord9 in #8818
- fix(tests): make two Windows CI failures deterministic (Nightly CI #8837) by @discord9 in #8840
- feat(servers): stamp prometheus remote write v2 metadata as semantic table options by @killme2008 in #8797
- fix(event): preserve procedure lifecycle locators by @WenyXu in #8787
- chore(deps): bump datafusion to 452cb4b (support Dictionary literals in substrait) by @discord9 in #8839
- feat(promql): support native histogram vector operators by @shuiyisong in #8798
- fix(ci): grant pull-requests write and stop counting drafts by @killme2008 in #8844
- refactor(operator): split semantic_graph relationship builders into a submodule by @killme2008 in #8841
- ci: update code owners by @evenyag in #8843
- feat!: update native histogram unsigned int types by @sunng87 in #8824
- refactor(procedure): centralize event context handling by @WenyXu in #8834
- feat(event): record admin function executions by @WenyXu in #8835
- fix: harden permission checks and process visibility by @shuiyisong in #8852
- feat: complete the derived-edge vocabulary of the entity graph by @killme2008 in #8836
- feat(servers): expose native histograms over Prometheus HTTP by @shuiyisong in #8850
- fix(metric-engine): handle Utf8View tag/label columns without panicking by @discord9 in #8772
- feat(promql): support native histogram aggregations by @shuiyisong in #8848
- chore: remove iceberg read by @shuiyisong in #8858
- feat: update to pgwire 0.40.7 by @sunng87 in #8860
- feat: embedded convention pack for the entity graph (prom/k8s, gen_ai naming) by @killme2008 in #8854
- fix(mito2): publish committed sequence only after rows are installed by @discord9 in #8862
- refactor(event): separate procedure submission context by @WenyXu in #8856
- perf(mito2): optimize dictionary primary key sorting by @lyang24 in #8767
- perf(query): choose bounded CTE as hash join build side by @fengjiachun in #8807
- chore: update mysql test drivers and lru by @sunng87 in #8868
- refactor: remove trivial tests by @v0y4g3r in #8877
- fix(mito2): keep deletion markers when compacting part of a window by @fengjiachun in #8872
- test(mito2): isolate sequence publication barrier by @discord9 in #8876
- perf: optimize Prometheus remote write v2 decoding by @shuiyisong in #8873
- refactor(json2): push down json2 type hints to parquet reads by @fengys1996 in #8833
- feat(mito2): introduce two-phase metric series scans by @evenyag in #8826
- fix(query): respect query timezone in timestamp casts by @fzlzjerry in #8859
- feat: add json_object function and use it in the entity-graph derivation by @killme2008 in #8870
- feat: update dashboard to v0.13.12 by @sunchanglong in #8882
- feat(procedure): record event actor by @WenyXu in #8849
- chore: add v2 version label to prom metrics by @shuiyisong in #8885
- docs: refresh README product copy by @killme2008 in #8886
- feat: add incremental primary key index writer by @evenyag in #8788
- refactor(udaf): replace uddsketch implementation by @v0y4g3r in #8867
- refactor(mito2): rename pk index to series index by @evenyag in #8893
- feat: manage semantic table options via ALTER TABLE SET/UNSET by @killme2008 in #8880
- fix(query): preserve timestamp literal semantics in inserts by @killme2008 in #8889
- refactor(json2): support JSON2 storage layout settings in DDL by @MichaelScofield in #8895
- feat: update dashboard to v0.13.13 by @sunchanglong in #8898
- refactor(json2): add JSON2 v2 physical layout primitives by @MichaelScofield in #8901
- refactor: remove open metrics parser by @sunng87 in #8905
- feat(otlp): report the cause of rejected trace spans by @killme2008 in #8897
- fix: cap default runtime sizes to a minimum of 2 threads by @v0y4g3r in #8908
- fix(meta): avoid blocking runtime on stats cache lock by @WenyXu in #8910
- refactor(json2): add bounded auto-expansion to the JSON2 vector builder by @MichaelScofield in #8909
- fix(query): restore columnar group-by for dictionary-encoded tags by @discord9 in #8902
- refactor(json2): optimize JSON2 building without auto-expanded paths by @MichaelScofield in #8928
- fix(mito2): fence checkpoints during region transitions by @WenyXu in #8847
New Contributors
- @grezzko made their first contribution in #8659
- @fzlzjerry made their first contribution in #8859
Full Changelog: v1.3.0-70470bafb-20260807-1786098766...v1.3.0-nightly-20260824
Release v1.2.0-beta.2
v1.2.0-beta.2
Release date: August 21, 2026
GreptimeDB v1.2.0-beta.2 is the second beta of the v1.2 line. It focuses on safer table administration, better Flow and procedure observability, continued JSON2 preparation, and query and storage correctness fixes.
👍 Highlights
-
One-way
skip_walchanges withALTER TABLE— You can enableskip_walon supported tables withALTER TABLE, and the change is validated against the table's leader routes before the irreversible metadata update. The transition is intentionally one-way: changingskip_walback tofalseis rejected (#8817, #8838). -
JSON2 extension and layout preparation — JSON2 now has a separate extension type, type hints can be pushed down to Parquet reads, and DDL accepts JSON2 storage-layout settings. The v2 physical-layout primitives are prepared, but the v2 physical layout is not activated by this release (#8745, #8833, #8895, #8901).
-
Procedure and administration event observability — Procedure events now carry structured context, lifecycle locators, submission context, and the actor; admin function executions are recorded as events, and the shared query-channel definition keeps event protocol information consistent (#8734, #8787, #8834, #8835, #8856, #8849, #8825).
-
Safer discard-unflushed operations — The frontend heartbeat is extensible and lifecycle-safe, while storage can discard unflushed region data while preserving persisted SST files and expose the operation through an admin function (#8726, #8600, #8768).
-
Dictionary tag group-by path restored — The columnar group-by path works again for dictionary-encoded tag columns (#8902).
Dashboard
The bundled GreptimeDB dashboard was updated from v0.13.10 to v0.13.13 (#8898). The update includes:
- Better table sizing, horizontal scrolling, and cell expansion, including virtual-list tables (dashboard#638).
- Full-screen query results (dashboard#639).
- Trace-table selection and edition/build information (dashboard#640, dashboard#641).
- A command palette (dashboard#642).
- Removal of the guided tour (dashboard#643).
- A fix for connections after changing hosts (dashboard#644).
Breaking changes
-
Soft-drop and recovery are enterprise-only again in beta2. PR #8747 gates soft-drop tables,
UNDROP TABLE,ADMIN purge_table(),information_schema.recycle_bin, and expired soft-drop garbage collection behind the enterprise feature. This reverses the beta1 behavior that made these operations available in OSS. An OSS beta2 metasrv rejectsgc.experimental_soft_drop.enable = trueduring startup, so remove that setting before upgrading. OSS beta2 also cannot recover or purge tables already soft-dropped in beta1 and does not run their expired-tombstone cleanup; recover any tables you may need before upgrading, or use Enterprise Edition to continue the soft-drop lifecycle. This is by @v0y4g3r. -
Native histogram persisted fields change signedness. PR #8824 changes persisted native-histogram span-length list elements from
UInt32toInt32and integer count fields fromUInt64toInt64, including renamingcount_u64/zero_count_u64tocount_i64/zero_count_i64. Existing native-histogram Struct data written with the previous schema may be unreadable in beta2, and rolling binaries back does not restore or convert data written with the changed fields. There is no migration, downgrade, or mixed-version compatibility layer; do not run mixed versions, and establish a migration or reingestion plan before upgrading. This is by @sunng87.
🚀 Features
- Add
information_schema.flow_statisticsandSHOW FLOW STATUSfor Flow runtime observability; in distributed Flow,start_timeanduptime_secondsremain unavailable (NULL) in this release (#8392) by @onepizzateam. - Safely discard unflushed region data while retaining persisted SST files (#8600) by @evenyag.
- Make the frontend heartbeat extensible and lifecycle-safe (#8726) by @fengjiachun.
- Add structured event context to procedure events (#8734) by @WenyXu.
- Separate the JSON2 extension type from the legacy JSON extension type (#8745) by @MichaelScofield.
- Add an admin function to discard unflushed data (#8768) by @evenyag.
- Support enabling
skip_walwithALTER TABLE(#8817) by @evenyag. - Share the query-channel definition across components while preserving its wire values (#8825) by @WenyXu.
- Push JSON2 type hints down to Parquet reads (#8833) by @fengys1996.
- Centralize procedure event-context handling (#8834) by @WenyXu.
- Record admin function executions as events (#8835) by @WenyXu.
- Record the actor for procedure events (#8849) by @WenyXu.
- Separate procedure submission context (#8856) by @WenyXu.
- Update to pgwire 0.40.7 (#8860) by @sunng87.
- Support JSON2 storage-layout settings in DDL (#8895) by @MichaelScofield.
- Add JSON2 v2 physical-layout primitives; the v2 layout is not activated by this release (#8901) by @MichaelScofield.
🐛 Bug Fixes
- Avoid unsafe
count(*)wildcard rewrites (#8522) by @discord9. - Validate remote schemas in
MergeScan(#8579) and ignore field metadata during that validation (#8818), both by @discord9. - Resolve custom timestamp and value columns in Prometheus remote reads (#8659) by @grezzko.
- Limit compaction picker threads and provide a bounded compact-runtime blocking pool (#8704) by @v0y4g3r.
- Fail open when Bloom-filter
INpredicates contain non-literal or unencodable members (#8709) by @discord9. - Add a public compactor constructor (#8724) by @sunng87.
- Fix Flow statistics aggregation and quoting in
df_plan_to_sql(#8729) by @discord9. - Remove gRPC DDL panics for
DropViewand non-timestamp time indexes (#8739) by @discord9. - Release region guards after a drop rollback (#8751) by @WenyXu.
- Handle
Utf8Viewtag and label columns without panicking (#8772) by @discord9. - Cache physical-table metadata lookups (#8777) by @shuiyisong.
- Preserve procedure lifecycle locators ([#8787](https://github.com/Gre...
Release v1.3.0-70470bafb-20260807-1786098766
What's Changed
- fix: stream remote analyze metrics while pending by @discord9 in #8405
- fix: preserve leader cache configuration and record cache hits by @WenyXu in #8576
- feat(mito2): expose adaptive batch APIs by @evenyag in #8578
- feat: grant creators access to newly created databases by @shuiyisong in #8566
- fix: enforce table-aware permissions across query and ingest protocols by @shuiyisong in #8552
- feat(flow): handle time_ranges in DirtyWindowRequest by @v0y4g3r in #8582
- feat: add mysql object store backend by @fengys1996 in #8560
- feat: add a region hook for gc cleanup by @sunng87 in #8547
- fix(query): preserve bare plan names in analyze json by @discord9 in #8519
- fix: stabilize remote analyze stage ordering by @discord9 in #8584
- test: stabilize ttl instant sqlness case by @v0y4g3r in #8595
- fix(flow): lower routine batching messages to debug by @discord9 in #8592
- fix: ignore dropping marker during GC by @v0y4g3r in #8588
- ci: gate releases on compat and query regression by @discord9 in #8469
- feat(json2): support JSON2 nested path fallback reads by @fengys1996 in #8540
- fix: bind Prom remote read schema per query by @discord9 in #8591
- fix(flow): downgrade disabled incremental checkpoint log by @discord9 in #8572
- fix: qualify scalar-subquery tables in persisted views by @discord9 in #8581
- fix(pipeline)!: check integer narrowing by @discord9 in #8589
- fix: convert literals in joins and subqueries by @discord9 in #8501
- fix(query): harden range time conversion by @discord9 in #8515
- chore: pin DataFusion cardinality effect by @discord9 in #8562
- fix(json2): treat empty object as null when insert by @MichaelScofield in #8602
- feat: update flow windows after metric batch flush by @v0y4g3r in #8544
- perf: optimize OTLP trace ingestion by @shuiyisong in #8604
- feat: make parquet row group size configurable by @evenyag in #8446
- fix: demote expected remote dynamic filter misses by @discord9 in #8574
- docs: add entity relationships and graph query RFC by @killme2008 in #8605
- fix: prevent credential leaks in sanitize_connection_string by @raphaelroshan in #8539
- feat(mito): add candidate series scanner by @evenyag in #8586
- fix(json2): encode deeply nested values as jsonb by @fengys1996 in #8612
- feat: invoke gc hook for offline region cleanup by @sunng87 in #8613
- fix(mito2): remove stale compaction status when next compaction is throttled by @v0y4g3r in #8618
- fix(meta): configure gRPC message limits by @WenyXu in #8616
- fix: enforce COPY FROM row limit by @discord9 in #8551
- perf(servers): optimize PromQL read conversion by @lyang24 in #8587
- fix(flow): avoid duplicate incremental planning warnings by @discord9 in #8611
- fix: fail closed on malformed password assignments by @fengjiachun in #8622
- fix(metric-engine): validate logical projection indices by @discord9 in #8535
- feat(procedure): support trigger-aware procedure events by @WenyXu in #8549
- chore: enlarge fuzz failover test timeout waiting for datanodes online by @v0y4g3r in #8633
- fix(datatypes): replicate nested list and struct vectors by @shuiyisong in #8638
- Support unquoted postgres intervalstyle by @yimeng in #8637
- ci: add OTLP trace ingestion regression testing by @shuiyisong in #8631
- fix: honor default prefix for all metric columns by @shuiyisong in #8640
- fix(servers): validate remote write native histograms by @shuiyisong in #8654
- ci: add heavy query regression label by @discord9 in #8619
- ci: keep prereleases off stable release channels by @discord9 in #8653
- fix(promql): preserve query-aligned range tail by @discord9 in #8650
- fix(partition): avoid panic on missing route columns by @discord9 in #8645
- refactor: simplify scan projection to root column indices by @fengys1996 in #8629
- feat(event-recorder): configure lifecycle event recording by @WenyXu in #8648
- fix(prometheus): make remote write timeout retryable by @v0y4g3r in #8639
- feat: add database DDL procedure events by @WenyXu in #8623
- feat(common-query): add native histogram runtime model by @shuiyisong in #8656
- fix: configure datanode client gRPC message limits by @evenyag in #8642
- feat: add procedure events for Flow DDL by @WenyXu in #8632
- fix: scope live analyze metrics to streaming requests by @discord9 in #8644
- feat: add extra http router provider in metasrv plugin by @MichaelScofield in #8662
- feat: update dashboard to v0.13.8 by @sunchanglong in #8666
- fix(mito2): suppress empty compaction skip logs by @v0y4g3r in #8667
- feat(promql): add native histogram functions by @shuiyisong in #8664
- perf(mito2): make compaction picker asynchronous to avoid blocking the region worker by @v0y4g3r in #8624
- feat: add events for create and drop view by @WenyXu in #8626
- feat: add a dedicated http api server port by @sunng87 in #8657
- feat: record metrics for timed out explain analyze by @v0y4g3r in #8668
- fix(mysql): fail closed on unrepresentable timestamps by @discord9 in #8580
- feat: update dashboard to v0.13.9 by @sunchanglong in #8674
- fix: enforce permissions for restricted HTTP endpoints by @shuiyisong in #8672
- chore(deps): bump quinn-proto from 0.11.14 to 0.11.16 by @dependabot[bot] in #8675
- fix(repartition): enforce GC across lifecycle by @killme2008 in #8678
- feat(metasrv): add repartition lifecycle events by @WenyXu in #8665
- feat: support time range in manual compaction by @v0y4g3r in #8669
- chore: update nix flake to 26.05 by @sunng87 in #8681
- feat: update dashboard to v0.13.10 by @sunchanglong in #8687
- chore(deps): pin timestamp widening preimage fix by @discord9 in #8686
- feat: add table DDL procedure events by @WenyXu in #8627
- fix(json2): standardize widening and projection cast semantics by @fengys1996 in #8661
- fix: preserve dictionary regex filter semantics by @discord9 in #8688
- fix(query): use physical partition types for metric route pruning by @discord9 in #8590
- perf(query): prune RangeSelect input projections by @discord9 in #8570
- ci: limit fuzz test parallelism by @WenyXu in #8690
- refactor(mito2): add prerequisites for range-based series reads by @evenyag in https://gith...
Release v1.2.0-beta.1
v1.2.0-beta.1
Release date: July 31, 2026
GreptimeDB v1.2.0-beta.1 is the first beta of the v1.2 line. It brings the JSON2 type system to maturity, large query performance improvements via dictionary-encoded series keys, Prometheus Remote Write v2 native histogram support, and a large set of correctness and stability fixes.
👍 Highlights
-
JSON2 type system maturity — Variant payloads are now encoded as JSONB instead of serde JSON bytes, with type hints, write-time validation (rejecting non-object values and validating append mode), and a fix for selecting whole JSON2 columns (#8247, #8381, #8434, #8435, #8683).
CREATE TABLE t (id INT, doc JSON2); INSERT INTO t VALUES (1, '{"a": 1, "b": [1, 2]}'); SELECT doc FROM t; -- returns the full JSON document
-
Faster queries with dictionary-encoded series keys — In-memory primary key columns now use dictionary arrays to alleviate series key expansion, gaining ~24% end-to-end query performance (#8541); dictionary-encoded regex filters also get correct semantics and the fast path back (#8688).
SELECT * FROM metrics WHERE job = 'node' AND path ~ '/api/.*'; -- regex filters on dictionary-encoded columns are now semantically correct and fast
-
Security hardening and access control — Local-file SQL access is sandboxed and datanode local-file access is disabled in distributed deployments (#8708 — breaking change, see below and the migration guide); table-level permission checks are enforced across query and write protocols (#8552), database ACL gaps are closed and creators get access to newly created databases (#8492, #8566), restricted HTTP endpoints require authentication (#8672), Postgres now supports SCRAM-SHA-256 (#8304), and an optional dedicated API server port (
http.enable_api_server, defaultfalse;http.api_server_addr, default127.0.0.1:4006) exposes only/v1and the dashboard (#8657). -
Prometheus Remote Write v2 with native histograms — Support for the Remote Write v2 protocol (#8361), persistence and validation of native histograms (#8382, #8654), and PromQL native histogram functions (#8664). Prometheus sends v1 unless
protobuf_messageis set; native histogram ingestion is experimental and disabled by default (experimental_enable_prometheus_native_histogramunder[http]).remote_write: - url: http://greptimedb:4000/v1/prometheus/write protobuf_message: io.prometheus.write.v2.Request -
Splunk HEC ingestion — New Splunk HEC-compatible endpoints at
/v1/splunk/services/collector/eventand/v1/splunk/services/collector/raw, with health probes, gzip support, and pipeline override via thex-greptime-pipeline-nameheader (#8321, #8491). Vector'ssplunk_hec_logssink, the OpenTelemetry Collectorsplunk_hecexporter, and Fluent Bit can point at GreptimeDB by changing URL and token; when authentication is enabled the token must be formatted asusername:password. -
Cluster lifecycle events — The event recorder now covers table, database, flow, and view DDL events on top of region migration, plus WAL prune, batch GC, and repartition events (#8549, #8623, #8626, #8627, #8632, #8648, #8665, #8673, #8677). Configure with
[event_recorder] ttl(default 90 days) andevent_types(omitted = record all,[]= disabled); docs: docs#2678. -
Streaming EXPLAIN ANALYZE —
POST /v1/sql/analyze/streamstreams per-stage metrics while a distributed query is still running, instead of waiting for completion; slow queries also record metrics on timeout. Enabled by default (http.experimental_enable_explain_analyze_stream, defaulttrue) (#8380, #8405, #8584, #8644, #8668). -
PromQL semantics aligned with Prometheus — Ordinary NaN samples are preserved,
ormatching handles missing labels and empty operands, range queries align to range tails, and remote read schemas are bound per query (#8494, #8502, #8504, #8650, #8591); promql-parser updated to v0.10 (#8457). -
Finer control over flush and compaction — Table-level
auto_flush_intervalwithALTER TABLE SET(#8357, #8403), per-region write buffer limits (#8473), configurable parquet row group size (#8446),ADMIN COMPACT_TABLEwithstart_time/end_timeranges (#8669), and cancelable flush jobs (#8685). -
RangeSelect projection pruning — Range queries now prune unused input columns before the RangeSelect plan, reducing scanned columns and I/O (#8570).
EXPLAIN SELECT ts, value FROM metrics WHERE ts > now() - INTERVAL '1 hour'; -- only the needed columns are scanned
-
Parallel, resumable export/import v2 — The snapshot-based export/import v2 gained concurrent chunk export (
--chunk-parallelism), parallel import tasks (--task-parallelism), and progress reporting (--progress auto|always|never); resume works by re-running the same command, which skips completed chunks and tasks instead of starting over. See the export/import v2 guide.greptime cli data export-v2 create \ --addr 127.0.0.1:4000 \ --to file:///tmp/greptime-snapshots/demo \ --chunk-parallelism 4 # rerun the same command to resume from existing progress -
Also notable — MySQL as an object store backend (#8560; repartition unsupported on it), Flow scheduling and window-update stability fixes (#8360, #8544, #8582, #8389, #8409, #8611), and repartition polish (#8291, #8497, #8678).
Dashboard
The bundled GreptimeDB dashboard was updated to v0.13.10:
- Save dashboards as self-contained snapshots (time range, variables, and panel data) that open read-only without querying live data sources (dashboard#627).
- Result tables support column resizing for easier inspection, including trace queries, with a dedicated table resize mode (dashboard#628, #632, #635, #636).
- New prominent support menu and refreshed icon/status styling (dashboard#629).
- PromQL editor fixes (query header, Prometheus plugin sync) and all supported Perses plugins (dashboard#630, #631, #633)....
Release v1.1.4
v1.1.4
Release date: July 24, 2026
GreptimeDB v1.1.4 is a focused maintenance release improving correctness for streaming Flow expiration and timestamp presentation over MySQL. It also includes stability, query-validation, metadata-client, and storage fixes.
We recommend users on earlier v1.1 releases upgrade to v1.1.4.
👍 Highlights
- Streaming Flow
EXPIRE AFTERvalues are now converted to the correct time unit, preventing state from expiring too early. Negative values are rejected while0remains valid. - MySQL timestamp results now respect the column's configured precision, avoiding padded millisecond values and truncated nanosecond values.
- MetaSrv leader caching is now enabled correctly after leader election, restoring leader-side metadata-cache performance.
- Compaction scheduling now removes stale status after throttling, so later compaction work can continue normally.
🐛 Bug Fixes
- fix(query): validate DistAnalyzeExec child count by @discord9 in #8510
- fix: avoid panic when negating MIN-valued literals by @raphaelroshan in #8484
- fix: preserve nulls in timestamp arrays by @discord9 in #8508
- fix: timestamp display precision should respect column schema (#8227) by @divyansh-1009 in #8238
- fix(mito): chunk manifest object writes by @WenyXu in #8567
- fix: display codes in metasrv client errors by @evenyag in #8558
- fix(mito): notify bulk writes on WAL error by @v0y4g3r in #8563
- fix: ignore dropping marker during GC by @v0y4g3r in #8588
- fix(query): preserve bare plan names in analyze json by @discord9 in #8519
- fix(flow): lower routine batching messages to debug by @discord9 in #8592
- fix(flow): downgrade disabled incremental checkpoint log by @discord9 in #8572
- fix: demote expected remote dynamic filter misses by @discord9 in #8574
- fix: prevent credential leaks in sanitize_connection_string by @raphaelroshan in #8539
- fix(mito2): remove stale compaction status when next compaction is throttled by @v0y4g3r in #8618
- fix(meta): configure gRPC message limits by @WenyXu in #8616
- fix(flow): convert streaming expiration to milliseconds by @QuakeWang in #8481
- fix: qualify scalar-subquery tables in persisted views by @discord9 in #8581
- fix: preserve leader cache configuration and record cache hits by @WenyXu in #8576
All Contributors
We would like to thank the following contributors from the GreptimeDB community:
@QuakeWang, @WenyXu, @discord9, @divyansh-1009, @evenyag, @raphaelroshan, @v0y4g3r
Release v1.2.0-d1e61a4ad-20260720-1784560249
What's Changed
- test(perf): add remote write storage inspection by @discord9 in #8444
- chore: update star history link by @killme2008 in #8483
- test: add json2 variant payload compat case by @discord9 in #8459
- chore!: update promql-parser to v0.10.0, remove
holt_wintersby @shuiyisong in #8457 - ci: increase Kafka resource requests by @WenyXu in #8482
- feat: more region lifecycle hooks by @sunng87 in #8467
- refactor: suppress region hook notifications for staging-only manifest writes by @sunng87 in #8471
- fix: Use prepared file locations for CSV strict headers integration test by @evenyag in #8493
- feat: prepare soft-drop WAL retirement by @v0y4g3r in #8475
- chore: add development Docker image skill by @WenyXu in #8477
- fix: disable WAL index creation by default by @WenyXu in #8505
- fix(flow): convert streaming expiration to milliseconds by @QuakeWang in #8481
- fix: honor exclusive end in log queries by @discord9 in #8495
- feat: skip oversized compaction tasks by @fengjiachun in #8466
- refactor: optimize json2 write, again by @MichaelScofield in #8498
- feat: clean up soft-dropped regions offline by @v0y4g3r in #8458
- feat: enlarge file meta cache by @waynexia in #8499
- chore(skill): Add ca-certificates to Dockerfile by @WenyXu in #8507
- fix: account logical record batch slice memory by @fengjiachun in #8480
- fix: require metasrv GC for repartition by @WenyXu in #8497
- fix: reject datanode startup on GC config mismatch by @discord9 in #8509
- fix: preserve distributed topk merge ordering by @discord9 in #8432
- fix: close database ACL gaps in permission checks by @shuiyisong in #8492
- ci: add persistent query regression cache by @discord9 in #8474
- fix: avoid panic when negating MIN-valued literals by @raphaelroshan in #8484
- fix(promql): preserve ordinary NaN samples by @discord9 in #8494
- fix(query): validate DistAnalyzeExec child count by @discord9 in #8510
- fix: reject out-of-range PostgreSQL numeric UInt64 by @discord9 in #8517
- test: add legacy JSON2 non-append compat case by @discord9 in #8513
- fix(log-store): deduplicate Kafka WAL multipart records by @WenyXu in #8514
- fix: apply log query limit after expressions by @discord9 in #8496
- ci: nightly jsonbench test 100m dataset by @MichaelScofield in #8529
- feat: support per-region write buffer limits by @evenyag in #8473
- feat!: remove configuration of sparse_primary_key_encoding by @sunng87 in #8470
- feat: support SCRAM auth for Postgres by @killme2008 in #8304
- fix(query): delegate merge sort cardinality effect by @discord9 in #8532
- fix(promql): handle missing labels in or matching by @discord9 in #8504
- fix(ci): harden query regression runner by @discord9 in #8534
- fix: preserve nulls in timestamp arrays by @discord9 in #8508
- fix: count Postgres SCRAM auth failures and correct auth config docs by @killme2008 in #8538
- feat(meta): add retention GC for soft-dropped tables by @v0y4g3r in #8526
- refactor: reconcile OTLP trace schemas request-wide by @shuiyisong in #8485
- perf: reduce parquet metadata cache footprint by @waynexia in #8527
- fix: timestamp display precision should respect column schema (#8227) by @divyansh-1009 in #8238
- fix(ci): summarize query regression in one table by @discord9 in #8536
- feat: support soft-drop recycle bin and UNDROP TABLE by @v0y4g3r in #8546
- feat: support splunk HEC raw endpoint by @agrawalx in #8491
- perf: preserve dictionary-encoded query labels by @waynexia in #8541
- chore: ignore mysql connection reset error by @shuiyisong in #8556
- fix: display codes in metasrv client errors by @evenyag in #8558
- feat: enable soft-drop table lifecycle by @v0y4g3r in #8554
- fix(mito2): adapt batch size for wide rows by @evenyag in #8543
- fix(mito): notify bulk writes on WAL error by @v0y4g3r in #8563
- feat: allow unknown PluginOptions with a warning message by @sunng87 in #8550
- ci: split export import v2 e2e test by @WenyXu in #8564
- refactor: add field id and extension type to histogram by @sunng87 in #8528
- chore(deps): bump serde_with from 3.1.0 to 3.21.0 by @dependabot[bot] in #8565
- fix(mito): chunk manifest object writes by @WenyXu in #8567
- test: gate pluginoption test for oss repo only by @sunng87 in #8569
New Contributors
- @divyansh-1009 made their first contribution in #8238
Full Changelog: v1.1.2-0783225e0-20260710-1783671342...v1.2.0-d1e61a4ad-20260720-1784560249
Release v1.1.3
v1.1.3
Release date: July 17, 2026
GreptimeDB v1.1.3 is a patch release for the v1.1 line. It improves query correctness,
storage stability, and the bundled dashboard.
We recommend users on earlier v1.1 releases upgrade to v1.1.3.
👍 Highlights
- Scalar-subquery rewrites preserve global ordering for
ORDER BY ... DESC LIMIT 1branches, avoiding a region-local latest row when the branch becomes an intermediate join input. - PromQL range and instant selectors can now push cast-based time filters to datanodes for metric tables using
TIMESTAMP(6)orTIMESTAMP(9), improving scan pruning.
Dashboard
- The embedded GreptimeDB dashboard was updated to v0.13.7. Table views are easier to resize
and inspect, and the support menu is more prominent. - Dashboard snapshots can now capture the current time range, variable values, and panel query
results in a self-contained, read-only dashboard that can be saved, exported, and opened
without querying live data sources.
🚀 Features
- feat: use scan output bytes for read costing by @v0y4g3r in #8276
- feat: update dashboard to v0.13.7 by @sunchanglong in #8431
- feat: skip oversized compaction tasks by @fengjiachun in #8466
🐛 Bug Fixes
- fix(query): push down PromQL cast filters by @discord9 in #8407
- fix: update datafusion-pg-catalog by @sunng87 in #8417
- fix: global limit for distributed inspect streams by @fengjiachun in #8412
- fix: upgrade datafusion fork by @fengjiachun in #8438
- fix: preserve repartitioned file refs during GC by @discord9 in #8445
- fix: repartition subset partition key joins by @discord9 in #8460
- fix: honor exclusive end in log queries by @discord9 in #8495
- fix: account logical record batch slice memory by @fengjiachun in #8480
- fix: preserve distributed topk merge ordering by @discord9 in #8432
- fix: reject out-of-range PostgreSQL numeric UInt64 by @discord9 in #8517
- fix(log-store): deduplicate Kafka WAL multipart records by @WenyXu in #8514
- fix: apply log query limit after expressions by @discord9 in #8496
- fix(query): delegate merge sort cardinality effect by @discord9 in #8532
All Contributors
We would like to thank the following contributors from the GreptimeDB community:
@WenyXu, @discord9, @fengjiachun, @sunchanglong, @sunng87, @v0y4g3r
Release v1.1.2-0783225e0-20260710-1783671342
What's Changed
- fix: update datafusion-pg-catalog by @sunng87 in #8417
- chore: pin datafusion to merged branch commit by @discord9 in #8422
- fix: global limit for distributed inspect streams by @fengjiachun in #8412
- fix(meta): configure heartbeat message size by @discord9 in #8411
- feat: persist Prometheus remote write v2 native histograms by @shuiyisong in #8382
- ci: run query regression on self-hosted runners by @discord9 in #8423
- test: add comment metadata compat case by @discord9 in #8402
- test: add ssts limit compat case by @discord9 in #8427
- chore: add sqlness regression for timestamp precision comparison by @fengys1996 in #8424
- feat(query): add runtime provider interface by @discord9 in #8386
- feat: support ALTER TABLE SET auto_flush_interval by @srivtx in #8403
- feat: add Prom remote-write query regression scenario by @discord9 in #8413
- fix(flow): rebind stale snapshot fence by @discord9 in #8409
- fix: spawn read operations on query runtime by @v0y4g3r in #8433
- chore(ci): stabilize remote wal fuzz tests by @WenyXu in #8436
- feat: update dashboard to v0.13.7 by @sunchanglong in #8431
- feat(json2): validate append mode for tables with JSON2 columns by @fengys1996 in #8434
- fix: upgrade datafusion fork by @fengjiachun in #8438
- fix: collect lightweight query-load metrics by @v0y4g3r in #8437
- fix: preserve repartitioned file refs during GC by @discord9 in #8445
- feat(json2): encode json2 variant payloads as jsonb by @fengys1996 in #8435
- test: add auto flush interval compat case by @discord9 in #8448
- fix: preserve close-time flush responses by @fengjiachun in #8443
- refactor: optimize json2 write by @MichaelScofield in #8393
- chore: make OTLP trace ingest chunk size configurable by @shuiyisong in #8455
- feat: add fuzz CI failure investigation skill by @WenyXu in #8456
- fix: pause GC during maintenance mode by @discord9 in #8450
- feat: add strict CSV header validation by @QuakeWang in #8426
- fix: compare all LoggingOptions fields in PartialEq by @raphaelroshan in #8449
- fix: repartition subset partition key joins by @discord9 in #8460
- ci: check kafka readiness before fuzz tests by @WenyXu in #8461
- refactor: model distributed inspect fan-in as exec by @fengjiachun in #8447
New Contributors
Full Changelog: v1.2.0-nightly-20260706...v1.1.2-0783225e0-20260710-1783671342
Release v1.2.0-nightly-20260706
What's Changed
- fix: stream tables for prometheus label discovery by @RitwijParmar in #8341
- feat: add remote dynamic filter metrics by @discord9 in #8309
- chore: client_ip error logs skip internal API by @shuiyisong in #8362
- feat: Add support for splunk HEC endpoints by @agrawalx in #8321
- docs: add project-level AGENTS.md as the shared agent guide by @killme2008 in #8358
- test: add sqlness compatibility runner by @discord9 in #8334
- chore: declare GreptimeDB Enterprise License for enterprise-gated sources by @killme2008 in #8364
- fix(mito): failed to compact memtable with json2 by @fengys1996 in #8297
- feat: update dashboard to v0.13.6 by @sunchanglong in #8369
- fix: account parquet metadata cache size by @v0y4g3r in #8368
- feat:
prw_v2initial commit with sample ingestion by @shuiyisong in #8361 - ci: add cargo.lock changeset size check by @sunng87 in #8348
- feat: accept x-greptime-pipeline-name header on /events/logs by @BootstrapperSBL in #8371
- ci: add sqlness compat smoke by @discord9 in #8370
- feat(flow): stabilize eval interval scheduling by @discord9 in #8360
- feat(json2): type hint by @fengys1996 in #8247
- feat: support table-level auto_flush_interval by @raphaelroshan in #8357
- feat: support structured instruction reply errors by @WenyXu in #8335
- chore: use ENV for building dashboard by @shuiyisong in #8384
- refactor: extract region hook function for extension by @sunng87 in #8375
- feat(json2): reject non-object JSON values on write by @fengys1996 in #8381
- fix: respect gc mailbox timeout for admin gc by @discord9 in #8363
- test: choose compat runner cli args by version by @discord9 in #8376
- fix: record catalog and schema in slow queries by @v0y4g3r in #8387
- fix: invalidate comment DDL cache and lock by object ID by @WenyXu in #8390
- fix(flow): bind scheduled now in dist plan by @discord9 in #8389
- test: add recent sqlness compat cases by @discord9 in #8395
- perf(mito): skip manifest-pruned file ranges by @discord9 in #8366
- feat: stream explain analyze metrics over http by @discord9 in #8380
- fix: handle PromQL time binary aggregation by @fengjiachun in #8398
- fix(mito): honor unknown file lingering time by @discord9 in #8365
- feat: report region query stats in heartbeat by @WenyXu in #8401
- test: add flow scheduled now compat case by @discord9 in #8400
- feat: add query regression perf harness by @discord9 in #8406
- fix(query): push down PromQL cast filters by @discord9 in #8407
- feat: add soft-drop table recovery procedures by @v0y4g3r in #8061
New Contributors
- @RitwijParmar made their first contribution in #8341
- @agrawalx made their first contribution in #8321
- @sunchanglong made their first contribution in #8369
- @raphaelroshan made their first contribution in #8357
Full Changelog: v1.2.0-8513d8d6b-20260625-1782368704...v1.2.0-nightly-20260706
Release v1.1.2
v1.1.2
Release date: July 02, 2026
GreptimeDB v1.1.2 is a patch release for the v1.1 line. It fixes scheduled Flow runtime semantics, improves slow-query context, and refreshes the bundled dashboards.
We recommend users on v1.1.0 and v1.1.1 upgrade to v1.1.2.
👍 Highlights
Scheduled Flow execution now uses stable logical time. Flows with EVAL INTERVAL now bind now() and current_timestamp() to the scheduled runtime, including distributed plans. This keeps scheduled windows stable instead of depending on when a worker happens to plan the query.
CREATE TABLE flow_input (
ts TIMESTAMP(3) TIME INDEX,
v DOUBLE,
PRIMARY KEY(v)
);
CREATE FLOW flow_eval
SINK TO flow_eval_sink
EVAL INTERVAL '1s'
AS
SELECT
date_bin(INTERVAL '1 second', ts) AS window_start,
count(v) AS value_count,
now() AS scheduled_at
FROM flow_input
WHERE ts >= date_trunc('second', now()) - INTERVAL '1 second'
AND ts < date_trunc('second', current_timestamp())
GROUP BY date_bin(INTERVAL '1 second', ts);Slow query records include schema context. Slow query entries now carry the schema name for SQL, logical plan, and PromQL slow-query paths. This makes it easier to find which tenant or workload produced a slow query when multiple schemas share a cluster.
USE greptime_private;
SELECT schema_name, cost, threshold, query, timestamp
FROM slow_queries
ORDER BY timestamp DESC
LIMIT 10;Dashboard
- Bundled Grafana metrics dashboards were reorganized for cluster and standalone deployments. The update fixes histogram bucket queries and counter-rate normalization, separates latency panels, and collapses flush/compaction sections to make troubleshooting easier.
- The embedded GreptimeDB dashboard was updated to v0.13.6. This dashboard release refines metric views and fixes SQL execution from the editor when the cursor is after a SQL line.
🚀 Features
- feat: update dashboard to v0.13.6 by @sunchanglong in #8369
- feat(flow): stabilize eval interval scheduling by @evenyag in #8378
🐛 Bug Fixes
- fix: improve Grafana metrics dashboards by @evenyag in #8298
- fix: redact Kafka SASL password in debug output by @v0y4g3r in #8337
- fix(query): run optimizer rules before MergeScan by @discord9 in #8339
- fix: preserve bulk write grpc error details by @fengjiachun in #8349
- fix: include index files in GC listing by @discord9 in #8327
- fix: stream tables for prometheus label discovery by @RitwijParmar in #8341
- fix: account parquet metadata cache size by @v0y4g3r in #8368
- fix: respect gc mailbox timeout for admin gc by @discord9 in #8363
- fix: record catalog and schema in slow queries by @v0y4g3r in #8387
- fix: invalidate comment DDL cache and lock by object ID by @WenyXu in #8390
- fix: handle PromQL time binary aggregation by @fengjiachun in #8398
- fix(flow): bind scheduled now in dist plan by @discord9 in #8396
⚡ Performance
- perf(mito): prune files by manifest time range by @discord9 in #8352
- perf(mito): skip manifest-pruned file ranges by @discord9 in #8366
⚙️ Miscellaneous Tasks
- chore: client_ip error logs skip internal API by @shuiyisong in #8362
- chore: use ENV for building dashboard by @shuiyisong in #8384
New Contributors
- @RitwijParmar made their first contribution in #8341
All Contributors
We would like to thank the following contributors from the GreptimeDB community:
@discord9, @evenyag, @fengjiachun, @RitwijParmar, @shuiyisong, @sunchanglong, @v0y4g3r, @WenyXu