Summary
September 2026 · 2026-09-01 – 2026-09-30
What landed this month:
- GreptimeDB v1.2.0 is GA, v1.2.1 fixes possible JSON2 data loss in manual compaction, and v1.3.0-beta.1 is out.
- Trace V2 stores OTLP span attributes in JSON2 columns, with Jaeger and Semantic Graph support.
- Native histogram ingestion from Remote Write v2 and OTLP is enabled by default.
GreptimeDB v1.2.0 went GA on September 8, with the structured JSON2 type, Prometheus Remote Write v2 and Splunk HEC ingestion (release post). Before upgrading from v1.1, check three breaking changes: local COPY and external-table paths are restricted to the copy root in standalone and disabled in distributed deployments (migration guide); holt_winters is removed in favor of double_exponential_smoothing; and non-append tables using the early JSON2 type can fail during flush or compaction, so test them with representative data first.
v1.2.1 followed on September 16. On JSON2 tables, Parquet statistics could be read from the wrong column, so time-range queries could return wrong results and a manually triggered strict-window compaction (SWCS) could drop rows (db#9129). Automatic compaction is not affected. The release also fixes mixed JSON2 types during compaction (db#9135), wrong count(*) after repartition (db#9154), and PromQL rate windows across counter resets (db#9089). If you run v1.2.0 with JSON2 columns, upgrade.
v1.3.0-beta.1 shipped on September 29 with the Trace V2, native histogram and compaction changes below, plus an experimental series index that is not for production. Before trying it, check:
- The query engine moves to DataFusion 55.1.0 (db#8555, db#9177). Integer-input
median,approx_medianandapprox_percentile_contreturn floats,REPLACE(s, '', replacement)returnssunchanged, and generated structunnestcolumn names change. Review views and Flow sinks with fixed result schemas. - JSON2 type hints no longer accept
nullableordefault; remove them from DDL and pipeline configs (db#9213). - Streaming Flow now accepts only single-source projection and filter queries (db#8976).
CREATE FLOWrejects aggregations over source tables withttl = 'instant', and joins without aggregation. Aggregations over persisted sources still run as batching Flow. Check existing flows of these shapes before upgrading.
Contributors
Over the past month, 24 contributors merged a total of 285 PRs. Among them, 11 community contributors contributed 18 PRs. Welcome to our new contributors: @Tyagiquamar, @DeviousCardi, @lczllx, @Minghan2005, @houyuwushang, @sainad2222, @immanuwell, @LiuQhahah!
Thanks to the community contributors who shipped this month:
- @dhruvxvaishnav db#9286 db#9191 db#9130 db#8941 db#8896
- @Tyagiquamar db#9059 db#9058 db#9032
- @DeviousCardi db#9365 db#9364
- @lczllx db#9374
- @houyuwushang db#9295
- @lyang24 db#9148
- @immanuwell db#9142
- @sainad2222 db#9060
- @LiuQhahah db#8967
- @Xuanwo db#8742
- @Minghan2005 db#8701
Highlights
db#9192 feat(otlp): add trace v2 ingestion with JSON2 attributes
Trace V2 is an opt-in storage model for OTLP traces. The greptime_trace_v2 pipeline stores span, scope and resource attributes in three JSON2 columns instead of one column per attribute key. Select it with the x-greptime-pipeline-name: greptime_trace_v2 header on OTLP trace requests, write to a different table from your Trace V1 data, and query typed attributes by path:
SELECT
trace_id,
span_attributes."http.status_code"::BIGINT AS http_status,
resource_attributes."service.name"::STRING AS service_name
FROM traces_v2;Jaeger queries and Semantic Graph derivation work on the new model (db#9257, db#9278), and span events and links are kept as JSON arrays (db#9232). Existing Trace V1 tables are not migrated. The JSON2 type is covered in the JSON2 deep dive.
db#9301 feat: enable native histogram ingestion by default
Ingestion of Prometheus Remote Write v2 native histograms and cumulative OTLP/HTTP exponential histograms is enabled by default, with no feature switch. Querying them was covered in August's report. For Prometheus, select Remote Write 2.0:
remote_write:
- url: http://localhost:4000/v1/prometheus/write?db=public
protobuf_message: io.prometheus.write.v2.RequestThe experimental_enable_prometheus_native_histogram and experimental_enable_exponential_histogram options are removed and ignored, including when set to false. Remote Write v1 native histograms, native histogram Remote Read and OTel Arrow exponential histograms remain unsupported.
db#9165 feat: use exact sequence ranges for incremental Flow reads
Batching Flow can run more aggregations incrementally, processing only rows written since the last run instead of a full snapshot. On append-only source tables with the new preserve_row_sequence option (db#8865), Flow reads exactly the rows written after its checkpoint, including data that has already been flushed. In the sink, aggregate state columns from HLL, UDDSketch, stddev_state and avg_state are merged with the state already stored there (db#9168, db#9235).
EVAL OFFSET sets when a scheduled flow runs within its interval. EVAL INTERVAL '1 hour' EVAL OFFSET '17 minutes' runs at minute 17 of every hour (UTC), regardless of creation time or retries (db#8878).
db#9224 feat(query): implement PromQL @ modifier on vector and matrix selectors
PromQL now supports the @ modifier. Previously some_metric @ 300 parsed, but returned step-following values instead of the samples at the fixed timestamp. Absolute timestamps, @ start(), @ end() and @ combined with offset follow Prometheus semantics.
Other PromQL changes reduce query cost. Instant queries read only the last row of each series for second- and millisecond-precision time indexes (db#9034). Label matchers on one side of a binary operation or grouped join now filter the other side's scan (db#9202, db#9280). Range query responses are built batch by batch instead of holding the whole result in memory (db#9229), and response building skips an output sort and defers value formatting (db#9090, db#9091, db#9092).
Also this month
- Object store WAL is in progress (RFC). With
[wal] provider = "experimental_object_store", a standalone instance keeps its WAL on object storage (db#9386). It is experimental, standalone-only, and not included in v1.3.0-beta.1. - Compaction's multiway merge uses a tournament tree, which cuts comparisons when merging overlapping files. TWCS uses separate file-count thresholds for active and inactive time windows.
compaction.twcs.trigger_file_numremains an alias forcompaction.twcs.active_window.trigger_file_num(db#8989, db#9064, db#9011). - MySQL and PostgreSQL clients can authenticate with a bearer token: use
*as the username and the token as the password. The user provider must support token validation (db#8899). - From the community: an HDFS object storage backend,
type = "Hdfs", built on OpenDAL's native HDFS client (db#8701);ALTER TABLE ... SET 'skip_wal' = 'false're-enables WAL on tables created with a Raft Engine or Kafka WAL (db#9130); CORS for gRPC-Web through[grpc] enable_cors(db#9374); andmin_timestamp/max_timestampininformation_schema.region_statistics(db#9060).
Ecosystem Updates
Ingesters
Six ingesters added JSON2 writes this month: Go v0.7.5, Java v0.16.0, Rust v0.19.0, TypeScript v0.3.0, .NET v0.4.0 and Erlang v0.3.0. Upgrade notes:
- Rust v0.19.0: TLS is opt-in. Enable the
tls-ringfeature to keep encrypted connections. - Java v0.16.0: gRPC 1.78 with keepalive on by default. Bulk write timeouts are bounded, and timed-out streams are cancelled.
- .NET v0.4.0: JSON2 columns require GreptimeDB 1.2.1+ and are rejected by bulk writes. Write hints can be passed through the
x-greptime-hintsheader. - Erlang v0.3.0: tables with JSON2 columns must be append-only.
connect_timeout,request_timeoutandhealth_check_timeoutare configurable.
MCP Server
v0.6.0 requires MCP Python SDK 2.x; stay on v0.5.2 if you depend on the v1 FastMCP API. New search_table_semantics and query_semantic_graph tools let an agent find tables by observability concept and read the service dependency graph. The semantic graph features require GreptimeDB 1.3.
Dashboard
v0.13.15, bundled with v1.3.0-beta.1, adds a per-column toggle to hide null fields in JSON results and fixes metric query input overflow.
Helm Charts
greptimedb-cluster 0.8.35 moves to GreptimeDB v1.2.0. greptimedb-cluster 0.8.36 and greptimedb-standalone 0.4.15 move to v1.2.1.
Good First Issues
This issue is scoped for a first contribution. Comment on it to pick it up.
Issue#7603 Support WITH (timeout/wait) for DDL statements
Only ALTER TABLE repartition accepts WITH (timeout = '...', wait = ...) today. The issue is split into per-statement subtasks, such as CREATE TABLE, DROP TABLE, CREATE FLOW and TRUNCATE TABLE, and each one can be picked up separately.
Keywords: SQL, DDL
Difficulty: Medium
Get Involved
- Docs: https://docs.greptime.com
- GitHub: https://github.com/GreptimeTeam/greptimedb
- X: https://x.com/Greptime
Open an issue for bugs and feature requests, or drop into the community channel.


