Skip to content

Releases: GreptimeTeam/greptimedb

Release v1.0.0-beta.2-8af1ab0ff-20251209-1765256263

09 Dec 04:58
8b26a98

Choose a tag to compare

Release v1.0.0-beta.2-8af1ab0ff-20251208-1765190404

08 Dec 11:41
7199823

Choose a tag to compare

What's Changed

Full Changelog: v1.0.0-beta.2...v1.0.0-beta.2-8af1ab0ff-20251208-1765190404

Release v1.0.0-beta.2

03 Dec 04:14
0177f24

Choose a tag to compare

v1.0.0-beta.2

Release date: December 03, 2025

Breaking changes

  • fix!: align numeric type aliases with PostgreSQL and MySQL by @killme2008 in #7270
  • feat!: improve mysql/pg compatibility by @killme2008 in #7315
  • perf(metric-engine)!: Replace mur3 with fxhash for faster TSID generation by @v0y4g3r in #7316

👍 Highlights

🚀 Key New Features

  • Region Migration:
    • Introduced batch region migration
  • JSON Handling:
    • New UDF: json_get_object.
  • Operations:
    • Supported dynamic enabling or disabling of tracing.
    • Enabled parallel table operations in COPY DATABASE.
    • Supported the ability to alter database compaction options.

⚡ Performance Improvements

  • Enhanced efficiency by parallelizing file source region and building partition sources in parallel.
  • Optimized query execution by avoiding unnecessary merge sort.
  • Implemented tracking for the query memory pool.

🐛 Notable Bug Fixes

  • Fixed a critical write stall issue that prevented recovery due to flush logic problems.
  • Resolved a deadlock in the metric engine when altering a group of tables.
  • Fixed multiple compatibility issues, including corrections for PostgreSQL extended query parameter parsing, timezone settings, and MySQL binary date type handling.

🚀 Features

🐛 Bug Fixes

  • fix: obtain system time after fetching lease values by @WenyXu in #7223
  • fix: clone the page before putting into the index cache by @evenyag in #7229
  • fix: correct signature of current_schemas function by @sunng87 in #7233
  • fix: allow compacting L1 files under append mode by @evenyag in #7239
  • fix: dynamic reload tracing layer loses trace id by @waynexia in #7257
  • fix: log not print by @killme2008 in #7272
  • fix: return sqlalchemy compatible version string in version() by @sunng87 in #7271
  • fix: postgres extended query paramater parsing and type check by @sunng87 in #7276
  • fix: unlimit trace_id query in jaeger API by @shuiyisong in #7283
  • fix: postgres show statement describe and timestamp text parsing by @sunng87 in #7286
  • fix: postgres timezone setting by default by @killme2008 in #7289
  • fix: pre-commit all files failed by @yihong0618 in #7290
  • fix: mysql binary date type and multi-lang ci tests by @killme2008 in #7291
  • fix: partition tree metric should the delta by @evenyag in #7307
  • fix: implement bulk write for time partitions and bulk memtable by @evenyag in #7293
  • fix: metric engine deadlock when altering a group of tables by @waynexia in #7308
  • fix: request limiter test case fix by @fengjiachun in #7323
  • fix: fix write stall that never recovers due to flush logic issues by @WenyXu in #7322

🚜 Refactor

  • refactor: remove export_metrics and related configuration by @WaterWhisperer in #7236
  • refactor: create JsonValue for json value by [@...
Read more

Release v1.0.0-beta.2-nightly-20251201

01 Dec 02:31
8346acb

Choose a tag to compare

Pre-release

What's Changed

New Contributors

Full Changelog: v1.0.0-beta.1-nightly-20251117...v1.0.0-beta.2-nightly-20251201

Release v1.0.0-beta.1-nightly-20251117

17 Nov 02:25
2bbc4bc

Choose a tag to compare

Pre-release

What's Changed

Full Changelog: v1.0.0-beta.1...v1.0.0-beta.1-nightly-20251117

Release v1.0.0-beta.1

11 Nov 15:29
8153068

Choose a tag to compare

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

  • feat: Update parquet writer and indexer to support the flat format by @evenyag in #6866
  • feat: unify FlushRegions instructions by @aaraujo in #6819
  • feat: implement basic write/read methods for bulk memtable by @evenyag in #6888
  • feat: Supports flat format in SeqScan and UnorderedScan by @evenyag in #6905
  • feat: put sqlness into a separated dir by @waynexia in #6911
  • feat: humanize analyze numbers by @waynexia in #6889
  • feat: file ref mgr by @discord9 in #6844
  • feat: add written_bytes_since_open column to region_statistics table by @WenyXu in #6904
  • feat: support function alias by @MichaelScofield in #6917
  • feat: add CPU, memory and node status info to cluster_info by @WenyXu in #6897
  • feat: add udtf (table function) registration by @sunng87 in #6922
  • feat(pipeline): generate create table sql from pipeline config by @shuiyisong in #6930
  • feat(mito): backfill partition expr on region open by @zhongzc in #6862
  • feat: add InformationExtension.inspect_datanode for datanode inspection by @zhongzc in #6921
  • feat: Implements compaction for bulk memtable by @evenyag in #6923
  • feat: add origin_region_id and node_id to sst entry by @zhongzc in #6937
  • feat: store partition expr per file in region manifest by @waynexia in #6849
  • feat: exiting staging mode on success case by @waynexia in #6913
  • feat: expose workload filter to selector options by @WenyXu in #6951
  • feat: support flat format for SeriesScan by @evenyag in #6938
  • feat: support flush and compact flat format files by @evenyag in #6949
  • feat: add visible to sst entry for staging mode by @zhongzc in #6964
  • feat: add an flag to enable the experimental flat format by @evenyag in #6976
  • feat: add TLS support for mysql backend by @WenyXu in #6979
  • feat: datanode side local gc worker by @discord9 in #6940
  • feat: extract standalone...
Read more

Release v0.18.0-nightly-20251110

10 Nov 02:27
62d109c

Choose a tag to compare

Pre-release

What's Changed

Full Changelog: v0.18.0-nightly-20251103...v0.18.0-nightly-20251110

Release v0.18.0-nightly-20251103

03 Nov 02:25
6172438

Choose a tag to compare

Pre-release

What's Changed

Full Changelog: v0.18.0-nightly-20251027...v0.18.0-nightly-20251103

Release v0.18.0-nightly-20251027

27 Oct 10:38
f2bc92b

Choose a tag to compare

Pre-release

What's Changed

  • fix: build_grpc_server visibility by @sunng87 in #7054
  • chore: rename the default ts column name to greptime_timestamp for influxdb line protocol by @shuiyisong in #7046
  • chore: add trigger querier factory trait by @fengys1996 in #7053
  • fix: only skips auto convert when encoding is sparse by @evenyag in #7056
  • feat: able to pass external service for sqlness test by @MichaelScofield in #7032
  • 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
  • feat: introduce IndexBuildTask for async index build by @SNC123 in #6927
  • refactor: remove duplicated valueref to json by @sunng87 in #7062
  • refactor!: remove pb_value to json conversion, keep json output consistent by @sunng87 in #7063
  • feat: align influxdb line timestamp with table time index by @MichaelScofield in #7057
  • feat: struct value and vector by @sunng87 in #7033
  • feat: supports value aliasing in TQL by @killme2008 in #7041
  • feat: divide subtasks from old/new partition rules by @waynexia in #7003
  • feat: explain custom statement by @discord9 in #7058
  • refactor: restructure sqlness to support multiple envs and extract common utils by @WenyXu in #7066
  • chore: update rust to nightly 2025-10-01 by @MichaelScofield in #7069
  • feat: remap SST files for partition change by @waynexia in #7071
  • feat: apply region partition expr to region scan by @waynexia in #7067
  • feat: support setting sst_format in table options by @evenyag in #7068
  • fix: correct impl Clear for &[u8] by @v0y4g3r in #7081
  • chore: add information extension to the plugins in standalone by @shuiyisong in #7079
  • refactor: remove unused grpc-expr module and pb conversions by @sunng87 in #7085
  • ci: update dev-builder image tag by @github-actions[bot] in #7073
  • feat: conversion between struct, value and json by @sunng87 in #7052
  • feat(parser): ALTER TABLE ... REPARTITION ... by @waynexia in #7082
  • feat: add updated_on to tablemeta with a default of created_on by @Standing-Man in #7072
  • feat: add Value::Json value type by @sunng87 in #7083
  • fix: part cols not in projection by @discord9 in #7090
  • feat: manual compaction parallelism by @v0y4g3r in #7086
  • feat: memtable seq range read by @discord9 in #6950
  • refactor: add peer_hostname field in information_schema.cluster_info table by @zyy17 in #7050
  • fix: fix build warnings by @WenyXu in #7099
  • chore: pub route_prometheus function by @v0y4g3r in #7101
  • refactor: update valueref coerce function name based on its semantics by @sunng87 in #7098
  • refactor!: unify the API of getting total cpu and memory by @zyy17 in #7049
  • feat: supports large string by @killme2008 in #7097
  • feat: add index cache eviction support by @zhongzc in #7064
  • feat(trigger): support "for" and "keep_firing_for" by @fengys1996 in #7087
  • feat: new create table syntax for new json datatype by @MichaelScofield in #7103
  • feat(mito2): expose puffin index metadata by @zhongzc in #7042
  • chore: remove unused deps by @fengys1996 in #7108
  • feat: introduce the Noop WAL provider for datanode by @WenyXu in #7105
  • refactor: convert to mysql values directly from arrow by @MichaelScofield in #7096
  • feat: expose SST index metadata via information schema by @zhongzc in #7044
  • chore: pr review reminder by @fengjiachun in #7120
  • feat: implement three build types for async index build by @SNC123 in #7029
  • test: run engine unit tests for flat format by @evenyag in #7119
  • feat: 14 days PRs review reminder by @fengjiachun in #7123
  • fix: list inner type for json and valueref, refactor type to ref for struct/list by @sunng87 in #7113
  • feat: introduce OpenRegions and CloseRegions instructions to support batch region operations by @WenyXu in #7122
  • feat: update pgwire to 0.34 for a critical issue on accepting connection by @sunng87 in #7127
  • fix: prom ql logical plan use column index not name by @discord9 in #7109
  • feat: writer mem limiter for http and grpc service by @fengjiachun in #7092
  • fix: unit test about trigger parser by @fengys1996 in #7132
  • feat: pr review reminder frequency by @fengjiachun in #7129
  • fix: fix index and tag filtering for flat format by @evenyag in #7121
  • chore: update datafusion to 50 by @MichaelScofield in #7076
  • feat: create table with new json datatype by @MichaelScofield in #7128
  • feat: add cpu_usage_millicores and memory_usage_bytes in information_schema.cluster_info table. by @zyy17 in #7051
  • fix: correct test_index_build_type_compact by @SNC123 in #7137
  • refactor: convert to postgres values directly from arrow by @MichaelScofield in #7131
  • feat: add a missing pg_catalog function current_database by @sunng87 in #7138
  • feat: store estimated series num in file meta by @evenyag in #7126
  • refactor: refactor instruction handler and adds support for batch region downgrade operations by @WenyXu in #7130
  • feat: adds regex_extract function and more type tests by @killme2008 in #7107
  • feat: add HTTP endpoint to control prof.gdump feature by @v0y4g3r in #6999
  • fix: count_state use stat to eval&predicate w/out region by @discord9 in #7116
  • feat: merge json datatype by @MichaelScofield in #7142
  • refactor!: add a opentelemetry_traces_operations table to aggregate (service_name, span_name, span_kind) to improve query performance by @zyy17 in #7144
  • feat: prefix option for timestamp index and value column by @shuiyisong in #7125
  • fix: add delays in reconcile tests for async cache invalidation by @WenyXu in #7147
  • refactor: use generic for heartbeat instruction handler by @discord9 in #7149

New Contributors

Full Changelog: v0.18.0-nightly-20251006...v0.18.0-nightly-20251027

Release v0.18.0-nightly-20251006

06 Oct 02:09
f7202bc

Choose a tag to compare

Pre-release

What's Changed

  • fix: fix panic and limit concurrency in flat format by @evenyag in #7035
  • chore: improve create trigger display by @fengys1996 in #7027
  • feat: add max_connection_age config to grpc server by @MichaelScofield in #7031
  • refactor: make Function trait a simple shim of DataFusion UDF by @MichaelScofield in #7036
  • fix: use instance lables to fetch greptime_memory_limit_in_bytes and greptime_cpu_limit_in_millicores metrics by @zyy17 in #7043
  • refactor: add cgroup metrics collector by @zyy17 in #7038
  • fix: various typos reported by CI by @sunng87 in #7047
  • feat: enable zstd for bulk memtable encoded parts by @evenyag in #7045
  • feat: pgwire 0.33 update by @sunng87 in #7048

Full Changelog: v0.18.0-nightly-20250929...v0.18.0-nightly-20251006