v0.15.0
Release date: July 04, 2025
👍 Highlights
-
Process Management: Implements complete process management system with
ProcessManager
,information_schema.process_list
table, process killing functionality, and MySQL clientCtrl+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).
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
- feat: introduce
RegionStatAwareSelector
trait by @WenyXu in #5990 - feat: uddsketch_merge udaf by @discord9 in #5992
- feat: remove own greatest fn by @killme2008 in #5994
- feat: flush leader region before downgrading by @WenyXu in #5995
- feat: implement batch region opening in metric engine by @WenyXu in #6017
- feat: enhance maintenance mode API and handling by @WenyXu in #6022
- feat: optimize region migration concurrency with fine-grained table lock by @WenyXu in #6023
- feat(pipeline): auto transform by @shuiyisong in #6013
- feat: cast strings to numerics automatically in mysql connections by @evenyag in #6015
- feat(meta): enhance region lease handling with operating status by @WenyXu in #6027
- feat: bridge bulk insert by @v0y4g3r in #5927
- feat(pipeline): select processor by @shuiyisong in #6019
- feat: flow add static user/pwd auth by @discord9 in #6048
- feat: try cast timestamp types from number string by @waynexia in #6060
- feat: scan with sst minimal sequence by @MichaelScofield in #6051
- feat: update pgwire to 0.29 by @sunng87 in #6058
- feat: impl bulk memtable and bridge bulk inserts by @v0y4g3r in #6054
- feat: set read-preference for grpc client by @MichaelScofield in #6069
- feat: mem prof can gen flamegraph directly by @discord9 in #6073
- feat: add datanode workloads support by @WenyXu in #6055
- feat: implement PlainBatch struct by @evenyag in #6079
- feat(meta): add pusher deregister signal to mailbox receiver by @WenyXu in #6072
- feat: implement commutativity rule for prom-related plans by @waynexia in #5875
- feat(bulk): write to multiple time partitions by @v0y4g3r in #6086
- feat: don't hide atomic write dir by @waynexia in #6109
- feat: New scanner
SeriesScan
to scan by series for querying metrics by @evenyag in #5968 - feat: export to s3 add more options by @discord9 in #6091
- feat: Prometheus remote write with pipeline by @shuiyisong in #5981
- feat: implement clamp_min and clamp_max by @waynexia in #6116
- feat: introduce index result cache by @zhongzc in #6110
- feat: accommodate default column name with pre-created table schema by @waynexia in #6126
- feat: update dashboard to v0.9.1 by @ZonaHex in #6132
- feat: support altering multiple logical table in one remote write request by @waynexia in #6137
- feat: update dashboard to v0.9.2 by @ZonaHex in #6140
- feat(flow): support prom ql(in tql) in flow by @discord9 in #6063
- feat: add CLI tool to export metadata by @paomian in #6150
- feat: support parsing trigger create sql by @fengys1996 in #6197
- feat: supports @@session.time_zone for mysql by @killme2008 in #6210
- feat(wal): support bulk wal entries by @v0y4g3r in #6178
- feat(http): lossy string validation in prom remote write by @v0y4g3r in #6213
- feat: update pgwire to 0.30 by @sunng87 in #6209
- feat: support SQL parsing for trigger show by @fengys1996 in #6217
- feat: supports select @@session.time_zone by @killme2008 in #6212
- feat: bloom filter index applier support or eq chain by @zhongzc in #6227
- feat: pipeline with insert options by @shuiyisong in #6192
- feat: add trigger ddl manager by @fengys1996 in #6228
- feat(flow): flow streaming mode in list expr support by @discord9 in #6229
- feat: don't allow creating logical table with partitions by @waynexia in #6249
- feat(pipeline): vrl processor by @shuiyisong in #6205
- feat: add the gauge to indicate the CPU and Memory limit in the cgroups environment by @zyy17 in #6238
- feat: Support export cli export to OSS by @zqr10159 in #6225
- feat: add some metasrv metrics to grafana dashboard by @WenyXu in #6264
- feat: disable compression for
do_get
API by @v0y4g3r in #6254 - feat: refactor grpc options of metasrv by @fengjiachun in #6275
- feat(cli): add metadata get commands by @WenyXu in #6299
- feat: implement process manager and information_schema.process_list by @v0y4g3r in #5865
- feat: support using expressions as literal in PromQL by @waynexia in #6297
- feat: introduce file group in compaction by @v0y4g3r in #6261
- feat: organize EXPLAIN ANALYZE VERBOSE's output in JSON format by @waynexia in #6308
- feat: parallelism hint in grpc by @discord9 in #6306
- feat: process id for session, query context and postgres by @sunng87 in #6301
- feat: update dashboard to v0.9.3 by @ZonaHex in #6311
- feat: support killing process by @v0y4g3r in #6309
- feat: bulk support flow batch by @v0y4g3r in #6291
- feat: support arbitrary constant expression in PromQL function by @waynexia in #6315
- feat: support special labels parsing in prom remote write by @shuiyisong in #6302
- feat: handle
Ctrl-C
command in MySQL client by @v0y4g3r in #6320 - feat: Add
DROP DEFAULT
by @linyihai in #6290 - feat: introduce CLI tool for repairing logical table metadata by @WenyXu in #6322
- feat: support setting FORMAT in TQL ANALYZE/VERBOSE by @waynexia in #6327
- feat(cli): add metadata del commands by @WenyXu in #6339
- feat: support execute sql in frontend_client by @fengys1996 in #6355
- feat: dist auto step aggr pushdown by @discord9 in #6268
- feat(storage): Add skip_ssl_validation option for object storage HTTP client by @rgidda in #6358
- feat: update dashboard to v0.10.0 by @ZonaHex in #6368
- feat(pipeline): introduce pipeline doc version 2 for combine-transform by @shuiyisong in #6360
- feat: supports CsvWithNames and CsvWithNamesAndTypes formats by @killme2008 in #6384
- feat: introduce /v1/health for healthcheck from external by @sunng87 in #6388
- feat: update dashboard to v0.10.1 by @ZonaHex in #6396
- feat: add
granularity
andfalse_positive_rate
options for indexes by @zhongzc in #6416 - feat: override logical table's partition key indices by @fengjiachun in #6385
- feat(pipeline): support Loki API by @shuiyisong in #6390
- feat:
Collider
for playing withPartitionRule
by @waynexia in #6399 - feat: skip rule checker on ingestion by @waynexia in #6453
🐛 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¬ 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
andSchema
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 useValue
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
- perf: avoid some atomic operation on array slice by @waynexia in #6101
- perf: optimize bulk encode decode by @v0y4g3r in #6161
⚙️ Miscellaneous Tasks
- chore: bump main branch version to 0.15 by @zhongzc in #5984
- ci: read next release version from toml by default by @sunng87 in #5986
- chore: update rust toolchain by @shuiyisong in #5818
- chore: update nix for new toolchain by @sunng87 in #5991
- chore: make txn_helper pub by @fengys1996 in #6002
- ci: update dev-builder image version to 2025-04-15-1a517ec8-202504280… by @daviderli614 in #6003
- chore: only retry when retry-able in flow by @discord9 in #5987
- ci: fix the bugs of release-dev-builder-images and add update-dev-builder-image-tag by @zyy17 in #6009
- chore: rename parameter from "table" to "flow_name" by @fengys1996 in #6020
- chore: upgrade hydroflow depend by @discord9 in #6011
- ci: nix action update by @sunng87 in #6025
- docs: refine readme by @killme2008 in #6038
- chore: add logs dashboard by @zyy17 in #6028
- ci: update website greptimedb version when releasing automatically by @killme2008 in #6037
- chore: rm unnecessary depend for flow by @discord9 in #6047
- ci: run only in the
GreptimeTeam/greptimedb
repository by @daviderli614 in #6064 - chore: support rename syntax in field by @shuiyisong in #6065
- ci: only trigger downstream when release success by @sunng87 in #6074
- ci: automatically update helm-charts when release by @daviderli614 in #6071
- chore: mv anyhow depend out of cfg by @discord9 in #6081
- ci: update homebrew greptime version when release by @daviderli614 in #6082
- chore: more cfg stuff on windows by @discord9 in #6083
- chore: fix clippy error by feature-gating Query import by @WenyXu in #6085
- chore: bump rskafka version by @WenyXu in #6090
- ci: update nix build linker by @sunng87 in #6103
- chore: modify default
slow_query.threshold
from 5s to 30s by @zyy17 in #6107 - ci: fix release job dependencies by @sunng87 in #6125
- chore: remove etcd from acknowledgement as not recommended by @waynexia in #6127
- chore: Add more data format support to the pipeline dryrun api. by @paomian in #6115
- ci: add pull requests permissions to semantic check job by @evenyag in #6130
- chore: enable github folder typo check and fix typos by @yinheli in #6128
- chore: update toolchain to 2025-05-19 by @shuiyisong in #6124
- chore: reduce unnecessary txns in alter operations by @fengjiachun in #6133
- chore: update flush failure metric name and update grafana dashboard by @v0y4g3r in #6138
- chore: remove stale wal config entries by @waynexia in #6134
- docs: change docker run mount directory by @daviderli614 in #6142
- ci: add issues write permission by @daviderli614 in #6145
- chore: add the missing
v
prefix forNEXT_RELEASE_VERSION
variable by @zyy17 in #6160 - ci: turn off fail fast strategy by @waynexia in #6157
- chore: metasrv starting not blocking by @discord9 in #6158
- chore: change info to debug for scanning physical table by @killme2008 in #6180
- docs: nit from github -> GitHub by @yihong0618 in #6199
- chore: correct some CAS ordering args by @fengjiachun in #6200
- chore: add metrics for rds kv backend by @paomian in #6201
- chore: switch nix index to 25.05 release by @sunng87 in #6181
- chore: fix feature gates for pg and mysql kvbackend by @WenyXu in #6211
- chore: fix rds kv backend test by @paomian in #6214
- chore: example of http config in metasrv by @fengjiachun in #6218
- chore: clear metadata filed after updating metadata by @fengjiachun in #6215
- chore: shared pipeline under same catalog with compatibility by @shuiyisong in #6143
- docs: fix bad link by @daviderli614 in #6222
- chore: add some metrics to grafana dashboard by @v0y4g3r in #6169
- chore: add pg mysql be default feature in cli by @paomian in #6230
- ci: add option to choose whether upload artifacts to S3 in the development build by @daviderli614 in #6232
- chore: test sleep longer by @discord9 in #6247
- chore: allow numeric values in alter statements by @v0y4g3r in #6252
- chore: pub flow info by @discord9 in #6253
- ci: increase upload s3 retry times by @daviderli614 in #6263
- chore: support table suffix in hint by @shuiyisong in #6223
- ci: refactor bump downstream versions workflow and adds demo-scene by @killme2008 in #6171
- chore: improve CI debugging and resource configuration by @WenyXu in #6274
- ci: add signature information when updating downstream repository by @daviderli614 in #6282
- chore: add option for arrow flight compression mode by @v0y4g3r in #6283
- chore: silence clippy by @discord9 in #6298
- chore: add failover cache for pipeline table by @paomian in #6284
- ci: use the new meta backendStorage etcd structure by @daviderli614 in #6303
- chore: add connection info to
QueryContext
by @v0y4g3r in #6319 - ci: add pr label workflow by @daviderli614 in #6316
- chore: add skip error for pipeline skip error log by @paomian in #6318
- chore: clean up unused impl &standalone use mark dirty by @discord9 in #6331
- chore: add metrics for active series and field builders by @v0y4g3r in #6332
- chore: print series count after wal replay by @v0y4g3r in #6344
- chore(deps): switch greptime-proto to official repository by @fengys1996 in #6347
- chore: security updates by @sunng87 in #6351
- docs: added YouTube link to documentation by @Olexandr88 in #6362
- chore: prints a warning when skip_ssl_validation is true by @evenyag in #6367
New Contributors
- @omahs made their first contribution in #6084
- @yinheli made their first contribution in #6128
- @zqr10159 made their first contribution in #6225
- @Arshdeep54 made their first contribution in #6300
- @rgidda made their first contribution in #6358
- @Olexandr88 made their first contribution in #6362
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