Skip to content

Releases: GreptimeTeam/greptimedb

Release v1.3.0-nightly-20260824

Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Aug 08:59
a502dfd

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

Full Changelog: v1.3.0-70470bafb-20260807-1786098766...v1.3.0-nightly-20260824

Release v1.2.0-beta.2

Release v1.2.0-beta.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Aug 14:51

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_wal changes with ALTER TABLE — You can enable skip_wal on supported tables with ALTER TABLE, and the change is validated against the table's leader routes before the irreversible metadata update. The transition is intentionally one-way: changing skip_wal back to false is 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:

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 rejects gc.experimental_soft_drop.enable = true during 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 UInt32 to Int32 and integer count fields from UInt64 to Int64, including renaming count_u64/zero_count_u64 to count_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_statistics and SHOW FLOW STATUS for Flow runtime observability; in distributed Flow, start_time and uptime_seconds remain 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_wal with ALTER 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 IN predicates 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 DropView and non-timestamp time indexes (#8739) by @discord9.
  • Release region guards after a drop rollback (#8751) by @WenyXu.
  • Handle Utf8View tag 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...
Read more

Release v1.3.0-70470bafb-20260807-1786098766

Choose a tag to compare

@github-actions github-actions released this 07 Aug 11:46
6cd19e6

What's Changed

Read more

Release v1.2.0-beta.1

Release v1.2.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Aug 04:23

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, default false; http.api_server_addr, default 127.0.0.1:4006) exposes only /v1 and 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_message is set; native histogram ingestion is experimental and disabled by default (experimental_enable_prometheus_native_histogram under [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/event and /v1/splunk/services/collector/raw, with health probes, gzip support, and pipeline override via the x-greptime-pipeline-name header (#8321, #8491). Vector's splunk_hec_logs sink, the OpenTelemetry Collector splunk_hec exporter, and Fluent Bit can point at GreptimeDB by changing URL and token; when authentication is enabled the token must be formatted as username: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) and event_types (omitted = record all, [] = disabled); docs: docs#2678.

  • Streaming EXPLAIN ANALYZEPOST /v1/sql/analyze/stream streams 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, default true) (#8380, #8405, #8584, #8644, #8668).

  • PromQL semantics aligned with Prometheus — Ordinary NaN samples are preserved, or matching 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_interval with ALTER TABLE SET (#8357, #8403), per-region write buffer limits (#8473), configurable parquet row group size (#8446), ADMIN COMPACT_TABLE with start_time/end_time ranges (#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)....
Read more

Release v1.1.4

Choose a tag to compare

@WenyXu WenyXu released this 24 Jul 08:15
16e9abe

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 AFTER values are now converted to the correct time unit, preventing state from expiring too early. Negative values are rejected while 0 remains 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

Choose a tag to compare

@github-actions github-actions released this 20 Jul 16:20
e3d2864

What's Changed

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

Choose a tag to compare

@WenyXu WenyXu released this 17 Jul 03:46
63ef18a

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 1 branches, 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) or TIMESTAMP(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

🐛 Bug Fixes

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

Choose a tag to compare

@github-actions github-actions released this 10 Jul 09:23
03b3045

What's Changed

New Contributors

Full Changelog: v1.2.0-nightly-20260706...v1.1.2-0783225e0-20260710-1783671342

Release v1.2.0-nightly-20260706

Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Jul 02:57
3758911

What's Changed

New Contributors

Full Changelog: v1.2.0-8513d8d6b-20260625-1782368704...v1.2.0-nightly-20260706

Release v1.1.2

Choose a tag to compare

@WenyXu WenyXu released this 02 Jul 13:58
8ad2d24

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

🐛 Bug Fixes

⚡ Performance

⚙️ Miscellaneous Tasks

New Contributors

All Contributors

We would like to thank the following contributors from the GreptimeDB community:

@discord9, @evenyag, @fengjiachun, @RitwijParmar, @shuiyisong, @sunchanglong, @v0y4g3r, @WenyXu