Skip to main content

v1.0.0-beta.1

Β· 17 min read

Release date: November 11, 2025

🚨 Breaking changes​

  • refactor(pipeline)!: change dispatch table name format by @paomian in #6901
  • feat!: improve greptime_identity pipeline behavior by @waynexia in #6932
  • refactor!: add enable_read_cache config to support disable read cache explicitly by @zyy17 in #6834
  • refactor!: remove pb_value to json conversion, keep json output consistent by @sunng87 in #7063
  • refactor!: unify the API of getting total cpu and memory by @zyy17 in #7049
  • refactor!: add a opentelemetry_traces_operations table to aggregate (service_name, span_name, span_kind) to improve query performance by @zyy17 in #7144
  • feat(metric)!: enable sparse primary key encoding by default by @WenyXu in #7195

πŸ‘ Highlights​

Dashboard v0.11.7 Released​

  • Metrics UI optimization: separated table and chart tabs, independent instant/range queries, support for time picker and multi-value display.
  • Timezone optimization: support for timezone validation and local storage persistence.
  • Flow management: UI for flow task CRUD operations.

Bulk Memtable​

For scenarios with high cardinality primary keys, this release introduces experimental Bulk Memtable and a new data organization format (flat format). Both must be used together. Bulk Memtable offers lower memory usage when dealing with high cardinality primary keys. When primary key cardinality exceeds two million, memory usage can be reduced by more than 75%. Currently, Bulk Memtable performs better with larger write batch sizes, and we recommend setting batch sizes to 1024 rows or more when using Bulk Memtable. Additionally, the new data organization format provides better query performance in high cardinality scenarios compared to the original format.

Users can enable the new data format and Bulk Memtable by specifying sst_format as flat when creating tables.

CREATE TABLE flat_format_table(
request_id STRING,
content STRING,
greptime_timestamp TIMESTAMP TIME INDEX,
PRIMARY KEY (request_id))
WITH ('sst_format' = 'flat');

Additionally, for tables using the old format, you can switch to the flat format and Bulk Memtable using an ALTER statement.

ALTER TABLE old_format_table SET 'sst_format' = 'flat';

Tables using the flat format cannot be converted back to the old format. We will gradually switch the default format to the new format in future releases.

Independent Index File Caching​

This release implements independent local caching for index files on object storage, allowing index files to be cached in local disk cache as much as possible, reducing the probability of accessing object storage during index queries. By default, the database allocates 20% of disk cache space to index files. Users can adjust this ratio by setting the index_cache_percent parameter.

In previous versions, when users increased the local disk cache size, only newly generated data files could enter the local write cache, providing limited improvement for querying historical data. In this version, the database loads index files from object storage to local storage in the background after startup, reducing the time required for historical data queries.

Read-Write Permission Control Mode​

This release introduces permission mode support for the static user provider, implementing read-write access control with support for read-only, write-only, and read-write permissions. This enhancement enables administrators to create users with specific access levels, improving security and data governance.

The static user provider now accepts the format username:permission_mode=password, where the optional permission_mode can be:

  • rw (read-write): Full access to read and write operations
  • ro (read-only): Restricted to read operations only
  • wo (write-only): Restricted to write operations only

Examples:

# Read-write user (default, backward compatible)
greptime_user=greptime_pwd
# Or explicitly specified
greptime_user:rw=greptime_pwd

# Read-only user
greptime_user:ro=greptime_pwd

# Write-only user
greptime_user:wo=greptime_pwd

This feature is fully backward compatible with the old format - users without an explicitly specified permission mode default to read-write access (rw).

TQL Supports Value Aliasing​

TQL now supports AS aliases for clearer column names and easier SQL integration.

TQL EVAL (0, 30, '10s') http_requests_total AS requests;

New objbench Subcommand (Datanode)​

This release adds the greptime datanode objbench subcommand for conducting read/write performance benchmarks on specified SST files in object storage. This tool can be used to analyze storage layer performance, troubleshoot slow queries or I/O latency issues, and supports generating flame graphs for deeper performance diagnostics. Main Features

  • Perform read/write performance tests on individual SST files
  • Support detailed output (-v/--verbose)
  • Support generating SVG flame graphs (--pprof-file)
  • Can load datanode configuration files (--config)
# Basic test
greptime datanode objbench --config datanode.toml --source <path>.parquet

# Generate flame graph
greptime datanode objbench --config datanode.toml --source <path>.parquet --pprof-file flamegraph.svg

πŸš€ Features​

πŸ› Bug Fixes​

  • fix: staging mode with proper region edit operations by @waynexia in #6962
  • fix: print the output message of the error in admin fn macro by @evenyag in #6994
  • fix: make EXPIRE (keyword) parsing case-insensitive, when creating flow by @Shyamnatesan in #6997
  • fix: promql range function has incorrect timestamps by @waynexia in #7006
  • fix: incorrect timestamp resolution in information_schema.partitions table by @waynexia in #7004
  • fix: match promql column reference in case sensitive way by @waynexia in #7013
  • fix: group by expr not as column in step aggr by @discord9 in #7008
  • fix(cli): fix FS object store handling of absolute paths by @WenyXu in #7018
  • fix: skip placeholder when partition columns by @discord9 in #7020
  • fix: not step when aggr have order by/filter by @discord9 in #7015
  • fix: step aggr merge phase not order nor filter by @discord9 in #6998
  • fix: fix test_resolve_relative_path_relative on windows by @paomian in #7039
  • fix: fix panic and limit concurrency in flat format by @evenyag in #7035
  • fix: use instance labels to fetch greptime_memory_limit_in_bytes and greptime_cpu_limit_in_millicores metrics by @zyy17 in #7043
  • fix: various typos reported by CI by @sunng87 in #7047
  • fix: build_grpc_server visibility by @sunng87 in #7054
  • fix: only skips auto convert when encoding is sparse by @evenyag in #7056
  • fix: show proper error msg, when executing non-admin functions as admin functions by @Shyamnatesan in #7061
  • fix: support dictionary in regex match by @evenyag in #7055
  • fix: correct impl Clear for &[u8] by @v0y4g3r in #7081
  • fix: part cols not in projection by @discord9 in #7090
  • fix: fix build warnings by @WenyXu in #7099
  • fix: list inner type for json and valueref, refactor type to ref for struct/list by @sunng87 in #7113
  • fix: prom ql logical plan use column index not name by @discord9 in #7109
  • fix: unit test about trigger parser by @fengys1996 in #7132
  • fix: fix index and tag filtering for flat format by @evenyag in #7121
  • fix: correct test_index_build_type_compact by @SNC123 in #7137
  • fix: count_state use stat to eval&predicate w/out region by @discord9 in #7116
  • fix: add delays in reconcile tests for async cache invalidation by @WenyXu in #7147
  • fix: cache estimate methods by @waynexia in #7157
  • fix: missing flamegraph feature in pprof dependency by @WenyXu in #7158
  • fix: memtable value push result was ignored by @MichaelScofield in #7136
  • fix: initializer container not work by @daviderli614 in #7152
  • fix: avoid filtering rows with delete op by fields under merge mode by @evenyag in #7154
  • fix: potential failure in tests by @killme2008 in #7167
  • fix: stabilize test results by @shuiyisong in #7182
  • fix(mito): append mode in flat format not working by @v0y4g3r in #7186
  • fix(mito): avoid shortcut in picking multi window files by @v0y4g3r in #7174
  • fix: add serde defaults for MetasrvNodeInfo by @WenyXu in #7204
  • fix: allow case-insensitive timezone settings by @sunng87 in #7207
  • fix: correct leader state reset and region migration locking consistency by @WenyXu in #7199
  • fix(mito): allow region edit in writable state by @v0y4g3r in #7201
  • fix: deregister failure detectors on rollback and improve timeout handling by @WenyXu in #7212

🚜 Refactor​

  • refactor: use DataFusion's Signature directly in UDF by @MichaelScofield in #6908
  • refactor: use DataFusion's return_type in our function trait directly by @MichaelScofield in #6935
  • refactor: refactor PeerLookupService and simplify Selector implementations by @WenyXu in #6939
  • refactor: rewrite h3 functions to DataFusion style by @MichaelScofield in #6942
  • refactor: region follower management with unified interface by @WenyXu in #6986
  • refactor: put FileId to store-api by @discord9 in #6988
  • refactor: rewrite some UDFs to DataFusion style (part 2) by @MichaelScofield in #6967
  • refactor: rewrite some UDFs to DataFusion style (part 3) by @MichaelScofield in #6990
  • refactor(cli): refactor object storage config by @WenyXu in #7009
  • refactor: rewrite some UDFs to DataFusion style (part 4) by @MichaelScofield in #7011
  • refactor: cleanup datafusion-pg-catalog dependencies by @sunng87 in #7025
  • refactor: rewrite some UDFs to DataFusion style (final part) by @MichaelScofield in #7023
  • refactor: make Function trait a simple shim of DataFusion UDF by @MichaelScofield in #7036
  • refactor: add cgroup metrics collector by @zyy17 in #7038
  • refactor: remove duplicated valueref to json by @sunng87 in #7062
  • refactor: restructure sqlness to support multiple envs and extract common utils by @WenyXu in #7066
  • refactor: remove unused grpc-expr module and pb conversions by @sunng87 in #7085
  • refactor: add peer_hostname field in information_schema.cluster_info table by @zyy17 in #7050
  • refactor: update valueref coerce function name based on its semantics by @sunng87 in #7098
  • refactor: convert to mysql values directly from arrow by @MichaelScofield in #7096
  • refactor: convert to postgres values directly from arrow by @MichaelScofield in #7131
  • refactor: refactor instruction handler and adds support for batch region downgrade operations by @WenyXu in #7130
  • refactor: use generic for heartbeat instruction handler by @discord9 in #7149
  • refactor: add test feature gate to numbers table by @shuiyisong in #7148
  • refactor: convert to prometheus values directly from arrow by @MichaelScofield in #7153
  • refactor: add support for batch region upgrade operations part1 by @WenyXu in #7155
  • refactor: add support for batch region upgrade operations part2 by @WenyXu in #7160
  • refactor: convert to influxdb values directly from arrow by @MichaelScofield in #7163

πŸ“š Documentation​

πŸ§ͺ Testing​

βš™οΈ Miscellaneous Tasks​

Build​

New Contributors​

All Contributors​

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

@MichaelScofield, @SNC123, @Shyamnatesan, @Standing-Man, @WaterWhisperer, @WenyXu, @ZonaHex, @aaraujo, @cscnk52, @daviderli614, @discord9, @evenyag, @fengjiachun, @fengys1996, @github-actions[bot], @killme2008, @linyihai, @paomian, @shuiyisong, @sunng87, @v0y4g3r, @waynexia, @zhongzc, @zyy17

v0.17.2

Β· 2 min read

Release date: September 28, 2025

If you are using v0.17.1 or v0.17.0, we recommend upgrading to v0.17.2.

v0.17.2 enhances overall reliability, resolves critical query bugs, and introduces support for expressions within TQL parameters.

πŸš€ Features​

πŸ› Bug Fixes​

  • fix: step aggr merge phase not order nor filter by @discord9 in #6998
  • fix: not step when aggr have order by/filter by @discord9 in #7015
  • fix: skip placeholder when partition columns by @discord9 in #7020
  • fix: group by expr not as column in step aggr by @discord9 in #7008
  • fix: match promql column reference in case sensitive way by @waynexia in #7013
  • fix: incorrect timestamp resolution in information_schema.partitions table by @waynexia in #7004
  • fix: promql range function has incorrect timestamps by @waynexia in #7006
  • fix: make EXPIRE (keyword) parsing case-insensitive, when creating flow by @shyam in #6997
  • fix: print the output message of the error in admin fn macro by @evenyag in #6994

βš™οΈ Miscellaneous Tasks​

New Contributors​

All Contributors​

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

@ZonaHex, @killme2008, @discord9, @waynexia, @Shyamnatesan, @evenyag, @shuiyisong

v0.17.1

Β· 2 min read

Release date: September 17, 2025

If you are using v0.17.0, we recommend upgrading to v0.17.1.

v0.17.1 improves overall reliability and includes important bug fixes, addressing critical issues such as SST metadata truncation that could lead to process panics, deadlocks during OpenTelemetry ingestion, and correcting SubqueryAlias pushdown to resolve subquery alias performance issues.

πŸš€ Features​

πŸ› Bug Fixes​

πŸ§ͺ Testing​

βš™οΈ Miscellaneous Tasks​

New Contributors​

All Contributors​

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

@WenyXu, @ZonaHex, @cscnk52, @daviderli614, @discord9, @evenyag, @fengys1996, @killme2008, @shuiyisong, @v0y4g3r, @waynexia, @zhongzc, @zyy17

v0.17.0

Β· 10 min read

Release date: September 03, 2025

🚨 Breaking Changes​

  • Ordered-set aggregate functions
    • Now require a WITHIN GROUP (ORDER BY …) clause (e.g., old: approx_percentile_cont(latency, 0.95), new: approx_percentile_cont(0.95) WITHIN GROUP (ORDER BY latency)).
  • MySQL protocol
    • Incorrect comment styling is no longer allowed; comments must start with -- instead of ---.

πŸ‘ Highlights​

  • Flow Support TQL(PromQL):
    • TQL (Time Query Language) now integrates seamlessly with Flow, enabling advanced time-series computations such as rate calculations, moving averages, and other complex time-window operations. For more details, see Using TQL with Flow for Advanced Time-Series Analysis.
  • Performance:
    • Optimize sparse encoder with a 235% performance boost (#6809)
    • Introduced region pruning (#6729, #6752).
  • Procedure:
    • Introduced table reconciliation procedures to automatically detect and repair metadata inconsistencies between Metasrv and Datanode. For more information, refer to the table reconciliation documentation.
  • Remote WAL:

πŸš€ Features​

*feat: add metrics for reconciliation procedures by @WenyXu in #6652

  • feat(metric-engine): add metadata region cache by @WenyXu in #6657
  • feat: update pgwire to 0.32 by @sunng87 in #6674
  • feat: Implements an iterator to merge RecordBatches by @evenyag in #6666
  • feat: able to set read preference to flownode by @MichaelScofield in #6696
  • feat: new HTTP API for formatting SQL by @waynexia in #6691
  • feat: Implements last row dedup strategy for flat format by @evenyag in #6695
  • feat: mito region staging state by @waynexia in #6664
  • feat: Projection mapper for flat schema by @evenyag in #6679
  • feat: add all partition column to logical table automatically by @waynexia in #6711
  • feat: add integration tests for table reconciliation procedures part1 by @WenyXu in #6705
  • feat(log-query): try infer and cast type for literal value by @waynexia in #6712
  • feat: introduce PeriodicTopicStatsReporter by @WenyXu in #6730
  • feat(metasrv): implement topic statistics collection by @WenyXu in #6732
  • feat: Store partition expr in RegionMetadata by @zhongzc in #6699
  • feat: improve slow queries options deserialization by @killme2008 in #6734
  • feat: predicate extractor (region prune part 1) by @waynexia in #6729
  • feat: persist manifest, SST and index files to staging dir by @waynexia in #6726
  • feat: mysql add prepared_stmt_cache_capacity by @sunheyi6 in #6639
  • feat: Implements last-non-null dedup strategy for flat format by @evenyag in #6709
  • feat: flownode grpc client to frontend tls option by @discord9 in #6750
  • feat: add RateMeter for tracking memtable write throughput by @WenyXu in #6744
  • feat: Implements async FlatMergeReader and FlatDedupReader by @evenyag in #6761
  • feat: update opentelemetry family by @sunng87 in #6762
  • feat: derive macro ToRow by @WenyXu in #6768
  • feat: disable month in trigger interval expr by @fengys1996 in #6774
  • feat: Implements FlatCompatBatch to adapt schema in flat format by @evenyag in #6771
  • feat: region prune part 2 by @waynexia in #6752
  • feat: simplify more regex patterns in promql by @waynexia in #6747
  • feat: add IntoRow and Schema derive macros by @WenyXu in #6778
  • feat: introduce PersistStatsHandler by @WenyXu in #6777
  • feat: optimize CreateFlowData with lightweight FlowQueryContext by @aaraujo in #6780
  • feat: support for custom headers in otel exporter by @sunng87 in #6773
  • feat: frontend internal grpc port by @discord9 in #6784
  • feat: provide plan info when flow exec by @discord9 in #6783
  • feat: update dashboard to v0.11.0 by @ZonaHex in #6794
  • feat(mito): list SSTs from manifest and storage by @zhongzc in #6766
  • feat: bump opendal to v0.54 by @killme2008 in #6792
  • feat: add limit to label value api by @sunng87 in #6795
  • feat: add cli option for internal grpc by @sunng87 in #6806
  • feat: add FlatConvertFormat to convert record batches in old format to the flat format by @evenyag in #6786
  • feat: name label regex matcher in label values api by @sunng87 in #6799
  • feat: only show prometheus logical tables for name values query by @sunng87 in #6814
  • feat: update dashboard to v0.11.1 by @ZonaHex in #6824
  • feat: resolve unused dependencies with cargo-udeps (#6578) by @Arshdeep54 in #6619
  • feat: add support for TWCS time window hints in insert operations by @WenyXu in #6823
  • feat: functions and structs to scan flat format file and mem ranges by @evenyag in #6817
  • feat: add replay checkpoint to reduce overhead for remote WAL by @WenyXu in #6816
  • feat(metasrv): support tls for etcd client by @codephage2020 in #6818
  • feat(flow): add eval interval option by @discord9 in #6623
  • feat: rename region_statistics to region_statistics_history by @WenyXu in #6837
  • feat: add event ts to region manifest by @discord9 in #6751
  • feat: add optional schema for Postgres metadata tables by @zqr10159 in #6764
  • feat: update dashboard to v0.11.2 by @ZonaHex in #6843
  • feat: flow prom ql auto sink table is also promql-able by @discord9 in #6852
  • feat: make etcd store max codec size configurable by @fengjiachun in #6859
  • feat: Support more key types for the DictionaryVector by @evenyag in #6855
  • feat: update rate limiter to use semaphore that will block without re… by @sunng87 in #6853
  • feat: update dashboard to v0.11.3 by @ZonaHex in #6864
  • feat: add schema and recordbatch builder for sst entry by @zhongzc in #6841
  • feat: Update parquet writer and indexer to support the flat format by @evenyag in #6866
  • feat: flow full aggr only trigger on new data by @discord9 in #6880

πŸ› Bug Fixes​

  • fix: correctly set extension range source index by @MichaelScofield in #6692
  • fix: TQL CTE parser take raw query string by @waynexia in #6671
  • fix: metrics without physical partition columns query push down by @discord9 in #6694
  • fix: unit test about trigger labels parse by @fengys1996 in #6716
  • fix: http and tql should return the same value for unknown by @yihong0618 in #6718
  • fix: update pgwire to fix windows timeout issue by @sunng87 in #6710
  • fix: correct offset's symbol by @waynexia in #6728
  • fix: label_join should work with unknown by @yihong0618 in #6714
  • fix: two label_replace different from promql by @yihong0618 in #6720
  • fix: support unknown for timestamp function by @yihong0618 in #6708
  • fix: truncate manifest action compat by @discord9 in #6742
  • fix: refine shadowrs dependency, remove libgit2, libz and potentially libssl by @sunng87 in #6748
  • fix: partition tree's dict size metrics mismatch by @waynexia in #6746
  • fix: time() function should the same as behavior prometheus by @yihong0618 in #6704
  • fix: time unit mismatch in lookup_frontends function by @WenyXu in #6798
  • fix: plan disorder from upgrading datafusion by @waynexia in #6787
  • fix: follow promql rule for hanndling label of aggr by @waynexia in #6788
  • fix: correct heartbeat stream handling logic by @WenyXu in #6821
  • fix: prevent stale physical table route during procedure retries by @WenyXu in #6825
  • fix: use actual buf size as cache page value size by @evenyag in #6829
  • fix: gRPC auth by @shuiyisong in #6827
  • fix: correct config doc by @WenyXu in #6836
  • fix: no need to early lookup DNS for kafka broker by @MichaelScofield in #6845
  • fix: use configured kv_client in etcd multi-transaction operations by @WenyXu in #6871
  • fix: fix incorrect timestamp precision in information_schema.tables by @WenyXu in #6872
  • fix(flow): promql auto create table by @discord9 in #6867
  • fix: ignore reserved column IDs and prevent panic on chunk_size is zero by @WenyXu in #6882
  • fix: prune intermediate dirs on index finish and region pruge by @zhongzc in #6878
  • fix: initialize remote WAL regions with correct flushed entry IDs by @WenyXu in #6856
  • fix: move prune_region_dir to region drop by @zhongzc in #6891

🚜 Refactor​

  • refactor: refine error status code mappings by @WenyXu in #6678
  • refactor: unify the event recorder by @zyy17 in #6689
  • refactor: use DummyCatalog to construct query engine for datanode by @zhongzc in #6723
  • refactor: split node manager trait by @zhongzc in #6743
  • refactor: simplify WAL pruning procedure and introduce region flush trigger by @WenyXu in #6741
  • refactor: enhanced trigger interval by @fengys1996 in #6740
  • refactor: change plugin option type from &[PluginOptions] to Option<&PluginOptions> for understandability by @zyy17 in #6763
  • refactor: refactor admin functions with async udf by @killme2008 in #6770
  • refactor: use DataFusion's UDAF implementation directly by @MichaelScofield in #6776
  • refactor: simplify WAL Pruning procedure part2 by @WenyXu in #6782
  • refactor(meta): refactor admin service to use modern axum handlers by @WenyXu in #6833
  • refactor: add stop methods for LocalFilePurger and CompactionRegion by @zyy17 in #6848
  • refactor: query config options by @killme2008 in #6781

πŸ“š Documentation​

⚑ Performance​

πŸ§ͺ Testing​

βš™οΈ Miscellaneous Tasks​

New Contributors​

All Contributors​

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

@Arshdeep54, @MichaelScofield, @SNC123, @WaterWhisperer, @WenyXu, @ZonaHex, @aaraujo, @codephage2020, @daviderli614, @discord9, @evenyag, @fengjiachun, @fengys1996, @github-actions[bot], @killme2008, @paomian, @shuiyisong, @sunheyi6, @sunng87, @v0y4g3r, @waynexia, @yihong0618, @zhongzc, @zqr10159, @zyy17

v0.16.0

Β· 6 min read

Release date: August 06, 2025

πŸ‘ Highlights​

  • PromQL:

    • Adds absent() function for missing series detection (#6618).
    • Enhances PromQL compatibility with OLTP metrics (#6543).
    • Supports querying label values from internal labels __schema__ and __database__ (#6631).
  • Observability Improvements: Provides a panic logger, HTTP API to toggle heap profiling (enabled by default), and more verbose logs/metrics in EXPLAIN ANALYZE VERBOSE (#6633, #6593, #6575).

Breaking changes​

  • refactor: replace pipeline::value with vrl::value

    If you used greptime_identity to write positive integer data before version 0.16.0, in the following two cases:

    • Writing in nd-json format (vector greptimedb_logs sink),
    • Writing in json format, with values in the range between i64::MAX and u64::MAX

    The integer type would be recognized as u64. After version 0.16.0, however, greptime_identity will recognize this data as i64 (please note not to write data greater than i64::MAX). This may cause a mismatch between the written data and the table schema, or an overflow leading to write failures. You can use desc table_name to confirm the actual data type. You can directly modify the table structure to fix this issue, or use Transform in version 2 for custom type conversion.

πŸ“Š Dashboard v0.10.6​

  • Sidebar Controls – Toggle visibility from left menu and persist tables sidebar width.
  • Data View Fullscreen Mode - Query results can be displayed in fullscreen for enhanced data analysis experience.
  • Refactored Log/Trace View - Improved log and trace viewing functionality with better user interface and performance.

πŸš€ Features​

  • feat: add RegionId to FileId by @waynexia in #6410
  • feat: move metasrv admin to http server while keep tonic for backward compatibility by @lyang24 in #6466
  • feat(mito): replace Memtable::iter with Memtable::ranges by @v0y4g3r in #6549
  • feat: supports more db options by @killme2008 in #6529
  • feat: allow ignoring nonexistent regions in recovery mode by @WenyXu in #6592
  • feat: impl some promql scalar functions by @killme2008 in #6567
  • feat: poll result stream more often by @discord9 in #6599
  • feat: fallback when failed to push down using DistPlanner by @discord9 in #6574
  • feat: add SET DEFAULT syntax by @linyihai in #6421
  • feat: struct vector by @discord9 in #6595
  • feat: trigger alter parse by @fengys1996 in #6553
  • feat: update dashboard to v0.10.5 by @ZonaHex in #6604
  • feat: allow setting next table id via http api by @WenyXu in #6597
  • feat: ignore internal keys in metadata snapshots by @WenyXu in #6606
  • feat: introduce reconcile table procedure by @WenyXu in #6584
  • feat: more logs and metrics under explain verbose mode by @evenyag in #6575
  • feat: introduce reconcile database procedure by @WenyXu in #6612
  • feat: introduce reconcile logical tables procedure by @WenyXu in #6588
  • feat: HTTP API to activate/deactive heap prof (activate by default) by @evenyag in #6593
  • feat: Implement a converter to converts KeyValues into BulkPart by @evenyag in #6620
  • feat: introduce reconcile catalog procedure by @WenyXu in #6613
  • feat: panic logger by @discord9 in #6633
  • feat: update dashboard to v0.10.6 by @ZonaHex in #6632
  • feat: support __schema__ and __database__ in Prom Remote Read by @waynexia in #6610
  • feat: support tls for pg backend by @waynexia in #6611
  • feat: absent function in PromQL by @waynexia in #6618
  • feat: Add option to limit the files reading simultaneously by @evenyag in #6635
  • feat: introduce reconciliation interface by @WenyXu in #6614
  • feat: add partial truncate by @discord9 in #6602
  • feat: schema/database support for label_values by @sunng87 in #6631
  • feat: implements FlatReadFormat to project parquets with flat schema by @evenyag in #6638
  • feat: use real data to truncate manipulate range by @waynexia in #6649
  • feat: Implements an iterator to read the RecordBatch in BulkPart by @evenyag in #6647
  • feat: register all aggregate function to auto step aggr fn by @discord9 in #6596
  • feat: use column expr with filters in LogQuery by @waynexia in #6646
  • feat: record the migration events in metasrv by @zyy17 in #6579
  • feat: support TQL CTE in planner by @waynexia in #6645
  • feat(log-query): support binary op, scalar fn & is_true/is_false by @waynexia in #6659
  • feat: EncodedBulkPartIter iters flat format and returns RecordBatch by @evenyag in #6655
  • feat: count underscore in English tokenizer and improve performance by @waynexia in #6660

πŸ› Bug Fixes​

  • fix: aggr group by all partition cols use partial commutative by @discord9 in #6534
  • fix: close issue #6555 return empty result by @yihong0618 in #6569
  • fix: ignore target files in make fmt-check by @yihong0618 in #6560
  • fix: close issue #6586 make pg also show error as mysql by @yihong0618 in #6587
  • fix: add map datatype conversion in copy_table_from (#6185) by @Arshdeep54 in #6422
  • fix(test): concurrency issue in compaction tests by @v0y4g3r in #6615
  • fix: only return the name label when there is one by @waynexia in #6629
  • fix: bump greptime-sqlparser to avoid convert statement overflow by @kemingy in #6634
  • fix: show create flow's expire after by @discord9 in #6641
  • fix: fix sequence peek method to return correct values when sequence is not initialized by @WenyXu in #6643
  • fix: sequence peek with remote value by @fengjiachun in #6648
  • fix: not mark all deleted when partial trunc by @discord9 in #6654
  • fix: box Explain node in Statement to reduce stack size by @waynexia in #6661
  • fix: unable to record slow query by @zyy17 in #6590

🚜 Refactor​

  • refactor: refactor partition mod to use PartitionExpr instead of PartitionDef by @zhongzc in #6554
  • refactor: remove unused PartitionDef by @zhongzc in #6573
  • refactor: explicitly accept path type as param by @zhongzc in #6583
  • refactor(otlp_metric): make otlp metric compatible with promql by @shuiyisong in #6543
  • refactor: remove procedure executor from DDL manager by @WenyXu in #6625

πŸ“š Documentation​

⚑ Performance​

βš™οΈ Miscellaneous Tasks​

  • chore(otlp_metric): support attr list in header opts by @shuiyisong in #6617
  • chore(otlp_metric): update metric and label naming by @shuiyisong in #6624
  • chore: refine metrics tracking the flush/compaction cost time by @v0y4g3r in #6630
  • chore: update jieba tantivy-jieba and tantivy version by @yihong0618 in #6637
  • chore: add limit in resources panel and Cache Miss panel by @zyy17 in #6636
  • chore: add methods to catalog manager by @v0y4g3r in #6656

New Contributors​

All Contributors​

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

@Arshdeep54, @WenyXu, @ZonaHex, @discord9, @evenyag, @fengjiachun, @fengys1996, @kemingy, @killme2008, @linyihai, @lyang24, @shuiyisong, @sunng87, @v0y4g3r, @waynexia, @yihong0618, @zhongzc, @zyy17

v0.15.4

Β· One min read

Release date: August 04, 2025

πŸš€ Features​

  • feat: support __schema__ and __database__ in Prom Remote Read by @waynexia in #6610
  • feat: absent function in PromQL by @waynexia in #6618
  • feat: schema/database support for label_values by @sunng87 in #6631
  • feat: Add option to limit the files reading simultaneously by @evenyag in #6635

πŸ› Bug Fixes​

  • fix: only return the name label when there is one by @waynexia in #6629

All Contributors​

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

@evenyag, @sunng87, @waynexia

v0.15.3

Β· 2 min read

Release date: July 24, 2025

πŸš€ Features​

πŸ› Bug Fixes​

🚜 Refactor​

πŸ§ͺ Testing​

βš™οΈ Miscellaneous Tasks​

All Contributors​

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

@codephage2020, @discord9, @evenyag, @fengys1996, @killme2008, @shuiyisong, @v0y4g3r, @waynexia, @yihong0618, @zhongzc

v0.15.2

Β· One min read

Release date: July 11, 2025

πŸš€ Features​

πŸ› Bug Fixes​

  • fix(metric-engine): handle stale metadata region recovery failures by @WenyXu in #6395
  • fix: stricter win sort condition by @discord9 in #6477
  • fix: empty statements hang by @killme2008 in #6480
  • fix: range query returns range selector error when table not found by @evenyag in #6481
  • fix: skip nan in prom remote write pipeline by @shuiyisong in #6489
  • fix: correctly update partition key indices during alter table operations by @WenyXu in #6494
  • fix: expand on conditional commutative as well by @waynexia in #6484

βš™οΈ Miscellaneous Tasks​

All Contributors​

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

@WenyXu, @discord9, @evenyag, @killme2008, @paomian, @shuiyisong, @sunng87, @waynexia

v0.15.1

Β· One min read

Release date: July 05, 2025

πŸ› Bug Fixes​

  • fix: add backward compatibility for SkippingIndexOptions deserialization by @zhongzc in #6458
  • fix: filter empty batch in bulk insert api by @v0y4g3r in #6459

All Contributors​

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

@v0y4g3r, @zhongzc

v0.15.0

Β· 17 min read

Release date: July 04, 2025

It is recommended to upgrade to v0.15.1

πŸ‘ Highlights​

  • Process Management: Implements complete process management system with ProcessManager, information_schema.process_list table, process killing functionality, and MySQL client Ctrl+C support for query termination (#5865, #6309, #6320).

  • Bulk Insert Performance: Introducing SimpleBulkMemtable for tables without primary keys to accelerate bulk write operations (#6054).

  • Partition Rule Checker: Introduces a robust point matrix-based partition rule checker that ensures completeness and uniqueness, eliminating false negatives and providing better error messages with specific uncovered/overlapped value ranges (#6431).

  • Pipeline Integration: Adds pipeline support for Prometheus remote write and Loki API (#5981, #6390).

  • VRL Processing: Introduces Vector Remap Language (VRL) processor for advanced data transformation within pipelines, allowing users to write VRL scripts for flexible data processing (#6205).

Dashboard​

  • Supports trace view
  • Supports writing logs in the ingest panel

Breaking changes​

  • fix!: disable append mode in trace services table by @zyy17 in #6066
  • feat!: revise compaction picker by @v0y4g3r in #6121
  • refactor(cli)!: reorganize cli subcommands by @paomian in #6265
  • feat!: point matrix based partition rule checker by @waynexia in #6431

πŸš€ Features​

πŸ› Bug Fixes​

  • fix: check if memtable is empty by stats by @v0y4g3r in #5989
  • fix: prune primary key with multiple columns may use default value as statistics by @evenyag in #5996
  • fix: only consider the datanode that reports the failure by @WenyXu in #6004
  • fix: sanitize_connection_string by @fengjiachun in #6012
  • fix: disable recursion limit in prost by @waynexia in #6010
  • fix: always create mito engine by @v0y4g3r in #6018
  • fix: force streaming mode for instant source table by @discord9 in #6031
  • fix: do not add projection to cast timestamp in label_values by @evenyag in #6040
  • fix: improve region migration error handling and optimize leader downgrade with lease check by @WenyXu in #6026
  • fix: reset tags when creating an empty metric in prom call by @evenyag in #6056
  • fix: ensures logical and physical region have the same timestamp unit by @evenyag in #6041
  • fix: csv format escaping by @killme2008 in #6061
  • fix: alter table modify type should also modify default value by @discord9 in #6049
  • fix: flownode chose fe randomly&not starve lock by @discord9 in #6077
  • fix: typos by @omahs in #6084
  • fix: promql regex escape behavior by @waynexia in #6094
  • fix: table metadata collection by @WenyXu in #6102
  • fix: clean files under the atomic write dir on failure by @evenyag in #6112
  • fix: append noop entry when auto topic creation is disabled by @WenyXu in #6092
  • fix: fast path for single region bulk insert by @v0y4g3r in #6104
  • fix: update promql-parser for regex anchor fix by @waynexia in #6117
  • fix: flow update use proper update by @discord9 in #6108
  • fix: update dev-build image tag by @daviderli614 in #6136
  • fix: flaky prom gateway test by @v0y4g3r in #6146
  • fix: region worker stall metrics by @v0y4g3r in #6149
  • fix(flow): flow task run interval by @discord9 in #6100
  • fix: ident value in set search_path by @sunng87 in #6153
  • fix: require input ordering in series divide plan by @waynexia in #6148
  • fix: invalid table flow mapping cache by @discord9 in #6135
  • fix: bulk insert case sensitive by @v0y4g3r in #6165
  • fix: set column index can't work in physical table by @killme2008 in #6179
  • fix: add simple test for rds kv backend by @paomian in #6167
  • fix(promql): handle field column projection with correct qualifier by @WenyXu in #6183
  • fix: alter table update table column default by @discord9 in #6155
  • fix: remove poison key before retrying procedure on retryable errors by @WenyXu in #6189
  • fix: remove stale region failover detectors by @WenyXu in #6221
  • fix(mito): revert initial builder capacity for TimeSeriesMemtable by @v0y4g3r in #6231
  • fix: do not accommodate fields for multi-value protocol by @evenyag in #6237
  • fix: add missing features by @MichaelScofield in #6245
  • fix: add "query" options to standalone by @MichaelScofield in #6248
  • fix: ignore incomplete WAL entries during read by @WenyXu in #6251
  • fix: convert JSON type to JSON string in COPY TABLE TO statement by @WenyXu in #6255
  • fix: skip wal replay when opening follower regions by @WenyXu in #6234
  • fix(mito): use 1day as default time partition duration by @v0y4g3r in #6202
  • fix: export metrics settings in sample config by @killme2008 in #6170
  • fix(meta): enhance postgres election client with timeouts and reconnection by @WenyXu in #6276
  • fix: null value handling on PromQL's join by @waynexia in #6289
  • fix: config docs by @v0y4g3r in #6294
  • fix: doc links by @nicecui in #6304
  • fix: check for zero parallelism by @discord9 in #6310
  • fix: always use linux path style in windows platform unit tests by @zyy17 in #6314
  • fix: event api content type only check type and subtype by @paomian in #6317
  • fix: handle corner case in catchup where compacted entry id exceeds region last entry id by @WenyXu in #6312
  • fix: ignore missing columns and tables in PromQL by @evenyag in #6285
  • fix: override logical table's partition column with physical table's by @waynexia in #6326
  • fix: carry process id in query ctx by @v0y4g3r in #6335
  • fix: revert string builder initial capacity in TimeSeriesMemtable by @v0y4g3r in #6330
  • fix(metric): prevent setting memtable type for metadata region by @WenyXu in #6340
  • fix(jaeger-api): incorrect find_traces() logic and multiple api compatible issues by @zyy17 in #6293
  • fix: add path exist check in copy_table_from (#6182) by @Arshdeep54 in #6300
  • fix: reordered write cause incorrect kv by @v0y4g3r in #6345
  • fix(metric-engine): properly propagate errors during batch open operation by @WenyXu in #6325
  • fix(meta): enhance mysql election client with timeouts and reconnection by @WenyXu in #6341
  • fix: test test_tls_file_change_watch by @killme2008 in #6366
  • fix: complete partial index search results in cache by @zhongzc in #6403
  • fix: skip failing nodes when gathering process info by @v0y4g3r in #6412
  • fix: fix dest_keys chunks bug in TombstoneManager by @WenyXu in #6432
  • fix: correct MAX_EXECUTION_TIME timeout calculation by @evenyag in #6444
  • fix: remap column indices on overriding logical table partitions by @waynexia in #6446
  • fix: label_replace and label_join functions when used as sub‐expressions by @killme2008 in #6443
  • fix: enable max_execution time for other read only statements by @evenyag in #6454

🚜 Refactor​

  • refactor: datanode instance builder by @MichaelScofield in #6034
  • refactor: remove the "mode" configuration item completely by @MichaelScofield in #6042
  • refactor: remove some async in ServerHandlers by @MichaelScofield in #6057
  • refactor: introduce row group selection by @zhongzc in #6075
  • refactor: add SlowQueryRecorder to record slow query in system table and refactor slow query options by @zyy17 in #6008
  • refactor: replace FlightMessage with arrow RecordBatch and Schema by @v0y4g3r in #6175
  • refactor: extract some common functions and structs in election module by @CookiePieWw in #6172
  • refactor(flow): limit the size of query by @discord9 in #6216
  • refactor: respect data_home as root data home directory by @zyy17 in #6050
  • refactor: support to get trace id with time range by @zyy17 in #6236
  • refactor: unify function registry (Part 1) by @zhongzc in #6262
  • refactor: remove PipelineMap and use Value instead by @shuiyisong in #6278
  • refactor: Extract mito codec part into a new crate by @evenyag in #6307
  • refactor: make flownode gRPC services able to be added dynamically by @fengys1996 in #6323
  • refactor: make finding leader in metasrv client dynamic by @MichaelScofield in #6343
  • refactor: make metadata region option opt-in by @sunng87 in #6350
  • refactor: make scanner creation async by @MichaelScofield in #6349
  • refactor(cli): simplify metadata command parameters by @WenyXu in #6364
  • refactor: pass pipeline name through http header and get db from query context by @zyy17 in #6405
  • refactor: avoid adding feature to parameter by @fengys1996 in #6391

⚑ Performance​

βš™οΈ Miscellaneous Tasks​

New Contributors​

All Contributors​

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

@Arshdeep54, @CookiePieWw, @MichaelScofield, @Olexandr88, @WenyXu, @ZonaHex, @daviderli614, @discord9, @evenyag, @fengjiachun, @fengys1996, @killme2008, @linyihai, @nicecui, @omahs, @paomian, @rgidda, @shuiyisong, @sunng87, @v0y4g3r, @waynexia, @yihong0618, @yinheli, @zhongzc, @zqr10159, @zyy17