跳到主要内容

Databend Releases

This page provides information about recent features, enhancements, and bug fixes for Databend.

Apr 17, 2026 (v1.2.881)

What's Changed

Exciting New Features ✨

  • feat(query): support create iceberg table with partition and properties by @TCeason in #17812
  • feat(query): support alter table/database refresh cache by @TCeason in #17841
  • feat(query): variant support extension types(Decimal, Binary, Date, Timestamp, Interval) by @b41sh in #17835
  • feat: Add sampled trace support by @Xuanwo in #17850
  • feat: unload preserve order if the source is ordered. by @youngsofun in #17864
  • feat(optimizer): part support decorrelating correlated subqueries in join conditions by @forsaken628 in #17871
  • feat(cluster): support fuzzy match for warehouse unassign node by @zhang2014 in #17877
  • feat(meta-client-semaphore): generate semaphore sequence using timestamps to reduce conflicts by @drmingdrmer in #17878
  • feat(query): atomic workload group metadata management by @zhang2014 in #17880
  • feat(query): support manage query workload through sql by @zhang2014 in #17881
  • feat(query): iceberg data cache by @sundy-li in #17787
  • feat: impl NgramIndex for FuseTable, improve like query performance by @KKould in #17852
  • chore: VirtualColumn Bind by @KKould in #17862
  • feat: support using fragment forest to execute additional broadcast operations. by @SkyFan2002 in #17872
  • feat: new table option enable_auto_vacuum by @dantengsky in #17884
  • feat: new settings data_retention_num_snapshots_to_keep by @dantengsky in #17893
  • feat(meta-service): add initialization complete flag for watch by @drmingdrmer in #17900
  • fix: avoid excessive concurrency in row fetch by @SkyFan2002 in #17885
  • feat(query): Support fuse_virtual_column function to show virtual column size by @b41sh in #17910
  • feat(base): allow exceeded memory limit if no workload by @zhang2014 in #17785
  • feat: Re-introduce Streaming Load API by @youngsofun in #17921
  • feat(query): support unset quota for workload group by @zhang2014 in #17924
  • feat: Supports reading table data from Iceberg ORC by @KKould in #17898
  • feat(parse): Simplify the matching pattern when parse function, avoid exponential backtracking by @KKould in #17942
  • feat(meta-client): add watch_with_initialization() method by @drmingdrmer in #17944
  • feat: support async function for merge not match clause by @SkyFan2002 in #17941
  • feat(query): UserOption add workload_group by @TCeason in #17913
  • feat(query): Independent system/information_schema database in different catalogs by @TCeason in #17863
  • feat: support select from AVRO files. by @youngsofun in #17953
  • feat(query): support show sequences and desc sequence by @TCeason in #17968
  • feat(meta-client): enable cache for listing ownership by @drmingdrmer in #17974
  • feat(query): Support show grants of role <role_name> by @TCeason in #17977
  • feat(query): Support auto Number-to-Boolean casting and improved Number-String comparison by @b41sh in #17954
  • feat: add cast from variant to binary/interval/decimal. by @youngsofun in #17978
  • feat: add time series statistics profile by @dqhl76 in #17809
  • feat: Iceberg Table supports delete positions of merge on read when reading by @KKould in #17982
  • feat(query): enable workload groups for resource control over the http handler by @zhang2014 in #17994
  • feat(query): Support as_decimal function for variant type by @b41sh in #17996
  • feat(query): add decode and to_char(timestamp, format) function by @sundy-li in #18008
  • feat: streaming load support parquet. by @youngsofun in #18017
  • chore(query): last_day support default interval type by @TCeason in #18022
  • feat: Iceberg Table supports equality delete of merge on read when reading by @KKould in #18015
  • feat(query): enhance datetime functions by @TCeason in #18027
  • feat: enhancing concurrent conflict resolution capability for multi-statement transactions by @SkyFan2002 in #17984
  • feat: support load/select parquet files into a single variant column. by @youngsofun in #18028
  • feat(query): support the new syntax "report issue" for quickly generating error details. by @zhang2014 in #18039
  • feat(query): Support Vector data type by @b41sh in #18044
  • feat: Implement Modify Table Connection by @Xuanwo in #18034
  • feat(query): support result_scan and last_query_id in http handler by @TCeason in #18043
  • feat: adjust syntax of streaming load insert SQL. by @youngsofun in #18062
  • feat: support runtime filter in shuffle join by @SkyFan2002 in #17952
  • feat(query): support max_concurrency quota for workload group by @zhang2014 in #18052
  • feat(query): Introducing Decimal64 by @forsaken628 in #18010
  • feat: adjust syntax of streaming load insert SQL. by @youngsofun in #18075
  • feat(query): Support create/drop Vector(HNSW) index by @b41sh in #18077
  • feat(meta-client): improve RPC error handling and observability by @drmingdrmer in #18094
  • feat: impl push down filter to join for eq by @KKould in #18057
  • feat: impl like any by @KKould in #18099
  • feat(query): Add regexp_split_to_table function by @TCeason in #18100
  • feat(query): Interval kin support iw and hh24 by @TCeason in #18114
  • feat: streaming load support values with placeholder. by @youngsofun in #18129
  • feat(query): Add regexp_split_to_array function by @TCeason in #18121
  • feat(query): support TRUNC(x [, d]) by @TCeason in #18133
  • feat: impl Escape &lt;escape&gt; for LIKE/NOT LIKE/LIKE ANY by @KKould in #18120
  • feat(meta-service): return current seq-value in txn-put response by @drmingdrmer in #18136
  • feat(query): add bool_and and bool_or agg functions by @sundy-li in #18132
  • feat: initialize support for access_history table by @dqhl76 in #18141
  • feat(query): support age function by @TCeason in #18142
  • feat(query): fix window binder work with group by expr alias by @sundy-li in #18148
  • feat: automatically materialize CTEs by @SkyFan2002 in #18123
  • feat(query): typeof(VariantType) will return internal field type by @TCeason in #18156
  • feat: impl Refresh Ngram Index by @KKould in #18128
  • feat: Use query id as trace id by @Xuanwo in #17947
  • feat(meta-service): add expirable keys stat to metrics and cluster-status API by @drmingdrmer in #18179
  • feat(query): when decimal is used as an aggregate group by column, decimal64 is used by @forsaken628 in #18171
  • feat: support show temp tables from all sessions by @SkyFan2002 in #18183
  • feat(query-cache): add config to toggle meta-service ownership cache on query by @drmingdrmer in #18197
  • feat(query): add new syntax to support only modify field comment by @TCeason in #18193
  • feat: impl to_number for Decimal by @KKould in #18175
  • feat: Add Operator Cache for databend by @Xuanwo in #18196
  • feat(meta-service): add metrics for watch stream by @drmingdrmer in #18209
  • feat(meta-service): add metrics for stream access operations by @drmingdrmer in #18210
  • feat(meta-service): add metrics for snapshot building by @drmingdrmer in #18212
  • feat(query): support imports and packages in python udf scripts by @sundy-li in #18187
  • feat: impl table & database pushdown scan for system.indexes by @KKould in #18191
  • feat(query): Array Functions Supporting ARRAY and VARIANT Types by @b41sh in #18213
  • feat(meta-service): Add feature flag system to meta service by @drmingdrmer in #18234
  • feat: parquet and avro add option USE_LOGIC_TYPE. by @youngsofun in #18232
  • feat: support external history tables by @dqhl76 in #18194
  • feat(meta-service): add FetchAddU64 command to txn by @drmingdrmer in #18243
  • feat(query): full support for decimal64 by @forsaken628 in #18198
  • feat: support asof join by @KKould in #18238
  • feat(query): support comment syntax by @TCeason in #18240
  • feat(meta-service): add FetchAddU64.match_seq by @drmingdrmer in #18258
  • feat: Add ZIP compression type by @KKould in #18257
  • feat: add explain perf support for query performance analysis by @dqhl76 in #18251
  • feat: insert with stage support from and file_format clause. by @youngsofun in #18256
  • feat(query): Enhance JSON Parsing with Decimal Support and Extended Syntax by @b41sh in #18252
  • feat(storage): analyze table noscan by @zhyass in #18254
  • feat(meta): Add conflict-free sequence generator v1 by @drmingdrmer in #18273
  • feat(rbac): User only support select or drop system_history by @TCeason in #18281
  • feat(optimize): rewrite LIKE '%' (e.g., '%%', '%%%') as IS NOT NULL by @chagelo in #18288
  • feat(meta-service): Add millisecond precision for expiration times by @drmingdrmer in #18303
  • feat(meta-service): Add PutSequential operation for ordered key generation by @drmingdrmer in #18312
  • feat(query): Virtual column support stream write by @b41sh in #18319
  • feat(query): enable memory percentage quota for the workload group by @zhang2014 in #18328
  • feat(storage): capture only changed rows in standard stream by @zhyass in #18330
  • feat(query): Enhance SET SECONDARY ROLES to Specify Role Lists by @TCeason in #18337
  • feat: enhance system.temporary_tables by @dantengsky in #18339
  • feat(query): Implement Vector Index with HNSW Algorithm by @b41sh in #18134
  • feat(query): Enhanced UDF Functionality with IMMUTABLE Support by @b41sh in #18369
  • feat: simplify function call parse by @KKould in #18386
  • feat(meta): add VoteV001 RPC with native protobuf types by @drmingdrmer in #18396
  • feat: impl Task for private by @KKould in #18311
  • feat(rbac): RBAC support connection object by @TCeason in #18382
  • feat(query): Add columns to display index sizes in system.tables by @b41sh in #18411
  • feat(executor): add query execution stats by @dqhl76 in #18345
  • feat(query): Support vector functions inner_product, vector_dims and vector_norm by @b41sh in #18414
  • feat: support query ORC file as rows of variants. by @youngsofun in #18415
  • feat(meta-service): Add comprehensive snapshot database metrics by @drmingdrmer in #18422
  • feat: support query metadata of ORC file. by @youngsofun in #18428
  • feat(metactl): add comprehensive test suite for all subcommands by @drmingdrmer in #18431
  • feat(query): add rule_grouping_sets_to_union by @sundy-li in #18413
  • feat(metactl): add lua subcommand with file and stdin support by @drmingdrmer in #18437
  • feat(metactl): add lua grpc client functionality by @drmingdrmer in #18438
  • feat(rbac): RBAC support Sequence object by @TCeason in #18423
  • feat: impl WarehouseOptions for Private Task by @KKould in #18404
  • feat(query): support shuffle sort by @forsaken628 in #17853
  • feat(meta): optimize expired key cleanup with time-range filtering by @drmingdrmer in #18441
  • feat(query): add settings enable_selector_executor by @sundy-li in #18434
  • feat(meta): add async Lua spawn and sleep support with tests by @drmingdrmer in #18445
  • feat: add Lua admin client support and metrics subcommand to metactl by @drmingdrmer in #18461
  • feat: enable block stream write by @zhyass in #18285
  • feat(query): Support json_agg function as an alias of json_array_agg by @b41sh in #18478
  • feat(query): add system.zero table && support empty result for empty stage by @sundy-li in #18453
  • feat: add header X-DATABEND-CLIENT-CAPS. by @youngsofun in #18475
  • feat(query): support create/drop/desc row policy by @TCeason in #18490
  • feat(meta-service): add timing monitoring for Raft-Log IO by @drmingdrmer in #18509
  • feat: streaming load support session. by @youngsofun in #18510
  • feat(query): support create or replace role by @TCeason in #18500
  • feat: support push down filter to materialized cte by @SkyFan2002 in #18493
  • feat(query): Vector index support filter pushdown by @b41sh in #18516
  • feat(query): add user agent and metrics for jwks request by @everpcpc in #18535
  • feat: support the to_binary with format by @KKould in #18525
  • feat(scripts): add databend-meta log collection tool by @drmingdrmer in #18539
  • feat(query): add rule_deduplicated_sort by @xiedeyantu in #18544
  • feat(query): ALTER TABLE Row Access Policy by @TCeason in #18540
  • feat: implement Tabular SQL UDFs by @KKould in #18511
  • feat: init support collecting meta node logs into history table by @dqhl76 in #18551
  • feat(meta-service): implement structured metrics parsing with label support by @drmingdrmer in #18555
  • feat(query): Vector index support refresh by @b41sh in #18537
  • feat(query): Enhance JSON parsing support extended json5 syntax by @b41sh in #18550
  • feat: implement Scalar UDF by @KKould in #18575
  • feat(query): support function time_slice(date_or_time_expr, slice_length, IntervalKind [, start_or_end]) by @TCeason in #18570
  • feat(telemetry): add meta endpoints information to telemetry data by @bohutang in #18591
  • feat(config): improve spill configuration with structured by @bohutang in #18593
  • feat(meta-service): add a node to cluster as learner: databend-meta --join ... --learner by @drmingdrmer in #18600
  • feat: auto-generate table statistics during write by @zhyass in #18548
  • feat(storage): show statistics by @zhyass in #18599
  • feat: support function 'or_filters' by @KKould in #18606
  • feat(query): Supports fixed-length sort fields encoding by @forsaken628 in #18584
  • feat(query): Hierarchical Grouping Sets Optimization by @sundy-li in #18616
  • feat(query): add rule_merge_limit by @xiedeyantu in #18636
  • feat: add compile-time API freezing macro for struct compatibility by @bohutang in #18632
  • feat: implement separate RPC delay metrics for read and write operations by @drmingdrmer in #18648
  • feat: Add RuleFilterFlattenOr by @KKould in #18621
  • feat: add settings to control analyze table by @zhyass in #18642
  • feat(query): Add SecureFilter for Row Access Policies and Stats Privacy by @TCeason in #18623
  • feat(query): support start and increment options for sequence creation by @TCeason in #18659
  • feat: support Check Constraint by @KKould in #18661
  • feat(parser): add intelligent SQL error suggestion system by @bohutang in #18670
  • feat: enhance resource scheduling logs with clear status and configuration details by @bohutang in #18684
  • feat(meta-semaphore): allows to specify timestamp as semaphore seq by @drmingdrmer in #18685
  • feat: support reset of worksheet session. by @youngsofun in #18688
  • feat: impl Date & Timestamp on RANGE BETWEEN by @KKould in #18696
  • feat: add pybend Python binding with S3 connection and stage support by @bohutang in #18704
  • feat(query): add api to list stream by @everpcpc in #18701
  • feat: infer_schema expands csv and ndjson support by @KKould in #18552
  • feat(query): support result set spilling by @forsaken628 in #18679
  • feat: add ANY_VALUE as alias for ANY aggregate function by @bohutang in #18728
  • feat: add Immutable::compact to merge two level by @drmingdrmer in #18731
  • feat(rbac): procedure object support rbac by @TCeason in #18730
  • feat: databend-metabench: benchmark list by @drmingdrmer in #18745
  • feat: /v1/status include last_query_request_at. by @youngsofun in #18750
  • feat(meta): add member-list subcommand to databend-metactl by @drmingdrmer in #18760
  • feat(meta-service): add snapshot V004 streaming protocol by @drmingdrmer in #18763
  • feat: /v1/status merge status of HttpQueryManager. by @youngsofun in #18778
  • feat(query): pivot support any order by expression by @sundy-li in #18770
  • feat(query): enable swap between tables by @TCeason in #18767
  • feat: impl Keyword AUTOINCREMENT by @KKould in #18715
  • feat: enable analyze hook after DML by @zhyass in #18754
  • feat(query): RoleInfo support comment by @TCeason in #18788
  • feat(query): decouple row access policy argument names from column names by @TCeason in #18799
  • feat: meta-service: add snapshot keys layout API with depth filtering by @drmingdrmer in #18807
  • feat(query): add copy_history table by @sundy-li in #18806
  • feat(query): Generate column statistics for virtual columns by @b41sh in #18801
  • feat: meta-service: add proposed_at tracking the time when a key is written by @drmingdrmer in #18812
  • feat: impl INNER/LEFT/RIGHT ANY JOIN by @KKould in #18779
  • feat(query): introduce BackpressureSpiller by @forsaken628 in #18802
  • feat: External UDF support STAGE_LOCATION param by @KKould in #18833
  • feat: support optional arg name for create function by @KKould in #18848
  • feat: implement irreversible vacuum drop table protection by @dantengsky in #18809
  • feat(query): Show Statistics add Virtual Column Stats and Min/Max Fields by @b41sh in #18849
  • feat: meta: add I/O timing tracking for log entry application by @drmingdrmer in #18854
  • feat: meta: add detailed version output for databend-meta -V by @drmingdrmer in #18856
  • feat: add isnan and isinf functions for float types by @RiversJin in #18858
  • feat: metactl: add dump-raft-log-wal subcommand by @drmingdrmer in #18865
  • feat(query): Inverted index support search Variant inner fields by @b41sh in #18861
  • feat(query): better script engine with dynamic schema support by @sundy-li in #18838
  • feat: enable geo and virtual column settings by default by @bohutang in #18873
  • feat: remove enable_experimental_merge_into setting by @camilesing in #18841
  • feat: optimize expression parse by @KKould in #18871
  • feat: remove useless optional fields in response of query_state_handler. by @youngsofun in #18876
  • feat: enhance s3 intelligent tiering storage class supporting by @dantengsky in #18863
  • feat(query): masking policy USING clause with multi-column support by @TCeason in #18884
  • feat(query): the HTTP protocol supports returning a body in arrow IPC format by @forsaken628 in #18890
  • feat: support DataType TimestampTz by @KKould in #18892
  • feat: support ANSI CURRENT_DATE/CURRENT_TIME keywords by @bohutang in #18902
  • feat: add has_data in system.streams by @zhyass in #18920
  • feat(query): BackpressureSpiller has been changed to a fully synchronous call by @forsaken628 in #18899
  • feat(query): add more info to /v1/verify by @everpcpc in #18882
  • feat(query): Support bitmap_to_array function by @b41sh in #18927
  • feat(query): prevent dropping in-use security policies by @TCeason in #18918
  • feat(mysql): add JDBC healthcheck regex to support SELECT 1 FROM DUAL by @yufan022 in #18933
  • feat: return timezone in HTTP handler. by @youngsofun in #18936
  • feat(query): support policy_reference table function by @TCeason in #18944
  • feat: improve runtime filter [Part 1] by @SkyFan2002 in #18893
  • feat: new fuse table option enable_parquet_dictionary by @dantengsky in #17675
  • feat: http handler return geometry_output_format with data. by @youngsofun in #18963
  • feat(query): add table statistics admin api by @zhang2014 in #18967
  • feat: upgrade nom to version 8.0.0 and accelerate expr_element using the first token. by @KKould in #18935
  • feat: impl UDTF Server by @KKould in #18947
  • feat(query):masking policy support rbac by @TCeason in #18982
  • feat: improve runtime filter [Part 2] by @SkyFan2002 in #18955
  • feat: support position column in common sql query by @KKould in #19012
  • feat: improve runtime filter [Part 3] by @SkyFan2002 in #19006
  • feat: enable Decimal64 handling in fuse table deserialization by @dantengsky in #19008
  • feat(query): Inverted Index Top-N Pruning for ORDER BY + LIMIT Queries by @b41sh in #19016
  • feat: add cost to explain pruning stats by @KKould in #19015
  • feat: add column update_on for user functions table by @KKould in #19018
  • feat(query): add DATE ± INTERVAL -> DATE function by @TCeason in #19022
  • feat: better display of retained identity by @camilesing in #19029
  • feat: improve runtime filter check via SIMD by @SkyFan2002 in #19039
  • feat: perf bitmap intersect by @KKould in #19041
  • feat(query): speed up string→timestamp/date/timestamptz parsing via DayLUT fast path by @TCeason in #19045
  • feat: improve scan IO profile metrics by @bohutang in #18975
  • feat: impl bitmap_construct_agg by @KKould in #19053
  • feat(query): row access policy support rbac by @TCeason in #19064
  • feat(query): add THROW support to SQL procedures by @TCeason in #19067
  • feat: perf small_union and small_symmetric_difference by @KKould in #19069
  • feat: add explicit FLUSH PRIVILEGES to refresh role cache for query node by @camilesing in #19066
  • feat: heuristic rule for fuse parquet dictionary page by @dantengsky in #19024
  • feat: spill profile metrics by @bohutang in #19075
  • feat(query): add metrics session_acquired_queries_total by @everpcpc in #19087
  • feat(query): tighten procedure overload resolution by @TCeason in #19084
  • feat: basic support of schema evolution in copy for parquet by @youngsofun in #19094
  • feat: extend join condition dedup to anti/semi joins by @SkyFan2002 in #19097
  • feat(query): add create_query to /v1/catalog/list_database_tables by @everpcpc in #19099
  • feat(query): Inverted Index and Vector Index support hybrid cache by @b41sh in #19124
  • feat: enhance table function fuse_encoding by @dantengsky in #19127
  • feat(query): support flight keepalive settings by @zhang2014 in #19141
  • feat(storage): organize storage credential configs for security by @bohutang in #19147
  • feat: clustering_statistics support specify snapshot by @zhyass in #19148
  • feat(query): Enhanced Inverted Index for VARIANT Type to precise matching Object within Arrays by @b41sh in #19096
  • feat: allow retry with the same query id when starting query. by @youngsofun in #19184
  • feat: add tag DDL support (CREATE/DROP/SHOW only) by @TCeason in #19109
  • feat(function): high performance bitmap_count,bitmap_intersect without deserialization by @forsaken628 in #19149
  • feat(query): Standardize Nested Type String Quoting and Variant Serialization for JSON Compatibility by @b41sh in #19164
  • feat: support self join elimination by @SkyFan2002 in #19169
  • feat: support variant cast to timestamp_tz by @KKould in #19190
  • feat: initial support for table branching and tagging by @zhyass in #19035
  • feat: to_decimal support more types by @KKould in #19195
  • feat(query): Variant timestamp_tz offset support seconds by @b41sh in #19194
  • feat(query): support ALTER <object> SET/UNSET TAG = value by @TCeason in #19197
  • feat: database level default connection configuration by @dantengsky in #18886
  • feat(formats): trim trailing zeros from decimal output in CSV/TSV exports by @sundy-li in #19211
  • feat: add request latency histogram tracking for meta service by @drmingdrmer in #19215
  • feat(query): support scalar subquery arguments in table functions by @sundy-li in #19213
  • fix: distinguish quoted and unquoted empty and null string when loading CSV by @youngsofun in #19207
  • feat(iceberg): bump iceberg-rust to v0.8.0 and add write support by @sundy-li in #19200
  • feat(query): support tag_reference table function by @TCeason in #19221
  • feat(meta): add KvList gRPC API for listing keys by prefix by @drmingdrmer in #19235
  • feat: add limit parameter to KVApi::list_kv() and related methods by @drmingdrmer in #19240
  • feat(meta): add KvGetMany gRPC API; refactor: split chained awaits by @drmingdrmer in #19244
  • feat: support alter stage. by @youngsofun in #19236
  • feat(ci): add sha input to release workflow for custom commit targeting by @bohutang in #19250
  • feat: add configurable connection TTL for meta client by @bohutang in #19259
  • feat: table branch support insert by @zhyass in #19225
  • feat: adjust columns of system.stages and show stages by @youngsofun in #19257
  • feat: add table function for inspecting Parquet pages by @SkyFan2002 in #19278
  • feat: introducing DataBlockVec to optimize multiple data block take by @forsaken628 in #19249
  • feat: eliminate constant subquery by @KKould in #19289
  • feat: enhance binary input and output format by @KKould in #19246
  • feat: enable lazy materialization across joins with outer-join NULL handling by @SkyFan2002 in #19295
  • feat(query): add nested loop join for new experimental hash join by @forsaken628 in #18961
  • feat: support prewhere for fuse parquet by @SkyFan2002 in #19209
  • feat(query): Support CREATE/DROP SPATIAL INDEX (Geometry/Geography types) by @b41sh in #19314
  • feat: support independent schema for table branches by @zhyass in #19269
  • feat: preliminary support for common subexpression elimination by @SkyFan2002 in #19351
  • feat: CSV support multi-bytes field delimiter. by @youngsofun in #19355
  • feat: support LATERAL for generate_series by @KKould in #19349
  • feat: Sandbox UDF by @KKould in #19301
  • feat(query): Support Geography functions by @b41sh in #19320
  • feat: support prune columns for materialized cte by @SkyFan2002 in #19362
  • feat(query): add procedure admin APIs by @everpcpc in #19396
  • feat: CSV/TSV encode tuple/map/array as JSON. by @youngsofun in #19393
  • feat: add query-meta version compatibility documentation by @drmingdrmer in #19421
  • feat(query): expression evaluator initially support the computation of column statistics by @forsaken628 in #19368
  • feat: add async function read_file. by @youngsofun in #19426
  • feat(query): add privilege check for system.procedures table by @TCeason in #19406
  • feat: add --decode-values flag to metactl dump-raft-log-wal by @drmingdrmer in #19448
  • feat(copy): support partition by for copy into location by @sundy-li in #19390
  • feat(meta): transparent zstd compression and typed serialization for meta KV values by @drmingdrmer in #19465
  • feat(query): extend tag support to view, udf, and procedure objects by @TCeason in #19447
  • feat: add default_warehouse option to user settings by @everpcpc in #19456
  • feat: add sandbox env injection case via cloud control by @KKould in #19383
  • feat(query): Support vacuum virtual column by @b41sh in #19459
  • feat(query): support USER/ROLE/STREAM object tagging and references by @TCeason in #19484
  • feat(query): restore prefetch for spilled sort blocks by @forsaken628 in #19409
  • feat(meta): add config setting to gate meta value compression by @drmingdrmer in #19496
  • feat(query): Support st_hilbert function by @b41sh in #19500
  • feat(query): Implement Spatial Index with R-Tree by @b41sh in #19411
  • feat: infer_schema() support TSV by @KKould in #19452
  • feat(query): reuse source sort key and compact spilled sort streams by @forsaken628 in #19490
  • feat(query): support Roman numeral format in to_char (RN/rn) by @forsaken628 in #19501
  • feat: support TSV FIELD_DELIMITER = '' for line-as-string loading by @KKould in #19492
  • feat(query): batch rank-limit sort with DataBlockVec and fix single-key LimitRank by @forsaken628 in #19510
  • feat(perf): add per-plan hardware performance counters to EXPLAIN PERF by @dqhl76 in #19493
  • feat: support copy into lance dataset. by @youngsofun in #19495
  • feat(query): Add spatial statistics to BlockMeta for geospatial range pruning by @b41sh in #19515
  • feat: optimize small bloom index reads by @SkyFan2002 in #19552
  • feat(query): Runtime Filter support spatial index join by @b41sh in #19530
  • feat: better case handling for query stage. by @youngsofun in #19566
  • feat: rename TSV to TEXT. by @youngsofun in #19580
  • feat(test): display query_id on sqllogictest failure by @dqhl76 in #19528
  • feat(query): reclaim memory on hash join finish by @zhang2014 in #19556
  • feat(stage): add TEXT file format params by @youngsofun in #19588
  • feat(http): add server-side parameter binding to /v1/query by @cliftonc in #19601
  • feat: enable TCP_NODELAY on gRPC listener sockets by @drmingdrmer in #19619
  • feat(query): support experimental table tags for FUSE table snapshots by @zhyass in #19549
  • feat: recursive cte support sudoku by @KKould in #19599
  • feat: add fast paths for substr and string column concat by @KKould in #19628
  • feat: add binary fuse32 bloom index option by @SkyFan2002 in #19621
  • feat: add http_json_result_mode and refactor HTTP result string encoding by @youngsofun in #19639
  • feat: speed up equi ASOF joins by @KKould in #19654
  • feat(sql): add AUTO datetime format detection by @TCeason in #19659
  • feat(storage): add fuse_tag table function to list snapshot tags by @zhyass in #19664
  • feat(query): Support Geometry aggregate functions by @b41sh in #19620
  • feat: CSV/TEXT support encoding. by @youngsofun in #19660
  • feat: return formated geo values in arrow format result. by @youngsofun in #19676
  • feat: CSV/TEXT support option trim_space. by @youngsofun in #19690
  • chore: gate prewhere row selection by selectivity by @SkyFan2002 in #19678
  • feat(query): Spatial index support prune by st_dwithin function by @b41sh in #19674
  • feat(bendpy): improve local embedded python api by @sundy-li in #19699
  • feat(query): local block_id repartition before RowFetch in MERGE INTO by @dantengsky in #19689
  • feat(query): Support refresh Spatial index by @b41sh in #19698
  • feat(ast): introduce new ast visitor APIs and migrate AST rewrites by @forsaken628 in #19724
  • feat(ast): support EXPLAIN VERBOSE alias (#16161) by @KKould in #19726

Thoughtful Bug Fix 🔧

  • fix(query): Default catalog can not create iceberg table engine by @TCeason in #17837
  • fix: wrong calc of #rows of page in http handler. by @youngsofun in #17839
  • fix: Forward list operations to runtime to avoid hang by @Xuanwo in #17842
  • fix(query): align roles api with table functions by @everpcpc in #17843
  • fix: string Scalar should be escaped in sql_display by @youngsofun in #17854
  • fix: prevent log table from logging its own logs by @dqhl76 in #17802
  • fix(query): Fix incorrect memory tracking in the HTTP handler by @zhang2014 in #17857
  • fix: recluster transient table failed with TransactionTimeout by @SkyFan2002 in #17868
  • fix(binder): nondeterministic_update should accept not nullable inputs by @forsaken628 in #17874
  • fix(optimizer): histogram calculations for string (Bytes) data types by @bohutang in #17873
  • fix(query): sort will still be OOM even if spill is enabled by @forsaken628 in #17883
  • fix(storage): Move timeout layer before to ensure cancel safety by @Xuanwo in #17902
  • fix(query): Fix the issue of the virtual column bind by @b41sh in #17907
  • fix: overflow error in get_partition_id() by @SkyFan2002 in #17906
  • fix: Handle concurrent gc_dropped_db_by_id and undrop_database operations safely by @dantengsky in #17901
  • fix(query): ignore system database in stats by @everpcpc in #17925
  • fix(query): ignore system tables in admin tables api by @everpcpc in #17931
  • fix(query): Prevent invalid filter expression generation in InferFilterOptimizer by @b41sh in #17929
  • fix(query): Ensure visibility of all columns in subqueries by @b41sh in #17934
  • fix(query): fix lazy topn in srf functions by @sundy-li in #17945
  • fix: Schema mismatch issue that may occur due to case insensitivity when loading StageTable by @KKould in #17949
  • fix(meta-service): evict cache for purge raft-log by @drmingdrmer in #17951
  • fix(query): allow window expr in group by query by @sundy-li in #17962
  • fix(query): use local time for query log by @everpcpc in #17963
  • fix(binder): fix external location table list check end with delimiter '/' by @bohutang in #17890
  • fix(meta-semaphore): deadlock between meta-service semaphores by @drmingdrmer in #17986
  • fix: flaky test test_release_cache_memory by @dantengsky in #18000
  • fix(meta-semaphore): skip dup seq semaphore permit by @drmingdrmer in #18003
  • fix(cache): fix improper config usage in cache manager by @dantengsky in #18002
  • fix: auto-vacuum switch to vacuum2 by @dantengsky in #18007
  • fix(meta-service): when setting up a watch stream, lock state machine by @drmingdrmer in #18005
  • fix: Fix duplicate metrics on different roots by @Xuanwo in #18014
  • fix(query): change default format_null_as_str to false by @everpcpc in #18026
  • fix: flay test 03_0004_auto_vacuum.test by @dantengsky in #18038
  • fix: when the WithIn Function arguments all are not Nullable, OrderBy fails by @KKould in #18041
  • fix: explain analyze missing partition information by @dqhl76 in #18040
  • fix(query): remove trailing spaces from test file names to enable windows cloning by @bikbov in #18046
  • fix: temp table cleaner not work. by @youngsofun in #18051
  • fix(sql): preserve quote information during identifier normalization by @dantengsky in #18033
  • fix: log table transform should keep UTC time by @dqhl76 in #18059
  • fix(query): reuse the left's column binding in union as possible by @sundy-li in #18053
  • fix(query): system.columns will return empty result when where database in (y,x) by @TCeason in #18063
  • fix: HTTP requests should only be logged the first time they occur by @dqhl76 in #18074
  • fix(storage): Allow change role_arn and external_id by @Xuanwo in #18076
  • fix: update failed with Unable to get field named... by @SkyFan2002 in #18078
  • fix(query): fix panic if before_partial shuffle in cluster mode by @zhang2014 in #18081
  • fix(query): fix replace into partial parse insert source by @b41sh in #18085
  • fix(query): fix rule_eager_aggregation replace column index bug by @sundy-li in #18079
  • fix(query): fix clone_expr_with_replacement by @sundy-li in #18088
  • fix(bind): parent BindContext missing when binding union by @forsaken628 in #18097
  • fix(query): fixed a panic issue in the aggregate spill logic under cluster by @zhang2014 in #18104
  • fix(query): cast expr in select_list use internal_expr as expr name by @TCeason in #18090
  • fix(query): add dynamic cast rules by @sundy-li in #18103
  • fix(storage): disable_credential_loader not been updated while role_arn set by @Xuanwo in #18115
  • fix(query): support count(t.*) by @sundy-li in #18113
  • fix(query): in system.tables catalog need to disable_table_info_refresh by @TCeason in #18137
  • fix(bind): disable the shrink constant when it is a generic type argument of a function by @forsaken628 in #18145
  • fix(storage): Fix presign is not spawned on IO runtime by @Xuanwo in #18149
  • fix(function): the add and minus functions of decimal do not select the correct precision by @forsaken628 in #18161
  • fix: transient table no work as expected inside explicit transaction by @dantengsky in #18160
  • fix: Bloom filter not updated after refresh by @KKould in #18170
  • fix(meta-service): watcher metrics should be updated when sender is created and dropped by @drmingdrmer in #18182
  • fix(query): alter column comment can not change column type by @TCeason in #18181
  • fix(query): check enterprise license embedded by @everpcpc in #18202
  • fix(query): add_months need to respect last day of month by @TCeason in #18201
  • fix(query): fix incorrect pushdown for grouping sets by @sundy-li in #18223
  • fix(query): fix recusive wrapper codes in python udf by @sundy-li in #18219
  • fix: wrong timestamp value when copy from avro. by @youngsofun in #18249
  • fix(query): Copy into CSV file support both CRLF and LF delimiter by @b41sh in #18250
  • fix: build runtime filter in cluster by @SkyFan2002 in #18247
  • fix: Use async lock in reqsign to prevent concurrent update by @Xuanwo in #18265
  • fix: check compression options when binding CREATE TABLE statement by @chagelo in #18261
  • fix(query): decimal64 not correct shrink_scalar by @forsaken628 in #18267
  • fix(query): add find_leveled_eq_filters function by @sundy-li in #18264
  • fix: skipping vacuum inside explicit transaction by @dantengsky in #18228
  • fix(query): view query should not cover the origin query by @TCeason in #18272
  • fix: add Decimal64 support for HLL cardinality calculation by @dantengsky in #18276
  • fix: fix AssumeRole Credential Caching by @Xuanwo in #18274
  • fix: transient table does not work as expected inside explicit transaction by @dantengsky in #18215
  • fix(query): add compatibility check for decimal64 by @sundy-li in #18280
  • fix: handle Decimal64 properly in column_update_hll_cardinality by @dantengsky in #18287
  • fix: transient should ignore retention period settings and table options by @dantengsky in #18295
  • fix: create temp table as select not work in HTTP handler. by @youngsofun in #18304
  • fix(query): attach table should not collect statistics in system.columns by @TCeason in #18310
  • fix(meta-service): Remove transient expire_cursor to prevent state inconsistency by @drmingdrmer in #18318
  • fix: should not modify client query_id. by @youngsofun in #18322
  • fix(query): fix union all project error by @sundy-li in #18323
  • fix(query): to_string(DateColumn, format) should success if date = 9999-12-31 by @TCeason in #18321
  • fix: wrong usage of compression_ratio in parquet table. by @youngsofun in #18333
  • fix(query): fix find_leveled_eq_filters works with not in by @sundy-li in #18334
  • fix(query): fix incorrect selectivity estimation under NOT column. by @zhang2014 in #18331
  • fix: external history tables config and env conflict by @dqhl76 in #18341
  • fix(script): fetch log script need use the timestamp by @dqhl76 in #18352
  • fix: remove temp table from global when drop m_cte temp tables. by @youngsofun in #18354
  • fix: cross join return wrong column by @SkyFan2002 in #18355
  • chore: refine external history tables by @dqhl76 in #18364
  • fix(query): Fix cast array to vector failed by @b41sh in #18375
  • fix(query): tracing was broken by @forsaken628 in #18376
  • fix: query_history missing some columns by @dqhl76 in #18381
  • fix(query): fix distinct hashset refer memory bug by @sundy-li in #18385
  • fix(query): Fix cast array to vector allow pushdown vector index by @b41sh in #18387
  • fix(query): the stage utilized by the history table needs to be restricted by @TCeason in #18380
  • fix: update with udf report error by @SkyFan2002 in #18397
  • fix: insert_stmt allow ; at the end of SQL. by @youngsofun in #18399
  • fix(query): AsyncFunctionCall::display_name should respect quota by @TCeason in #18412
  • fix: Replace unsafe unwrap() calls with proper error handling in inte… by @Mirza-Samad-Ahmed-Baig in #18418
  • fix: wrong percent_rank when no partition columns. by @youngsofun in #18417
  • fix: panic when the string_agg parameter is not of type string by @KKould in #18416
  • fix(query): fix profile graph broken for merge by @zhang2014 in #18436
  • fix(query): Some environment variable configurations do not work by @forsaken628 in #18384
  • fix: vacuum drop table with limit does not work by @SkyFan2002 in #18460
  • fix(query): only account_admin role can modify setting network_policy by @TCeason in #18456
  • fix(meta): export should log large chunk of snapshot cache data by @drmingdrmer in #18469
  • fix: collect statistics for MaterializeCTERef by @SkyFan2002 in #18470
  • fix: reduce CI error rate of test_private_task by @KKould in #18473
  • fix: attach table does not carry the indexes of the original table by @KKould in #18465
  • fix: make update table meta idempotent by @SkyFan2002 in #18466
  • fix(query): Fix vector distance function can not accept array nullable types by @b41sh in #18477
  • fix(query): refresh index lose data by @zhyass in #18482
  • fix(query): fix update set with udf and filter by @b41sh in #18487
  • fix: unload to zip support file larger than 4GB. by @youngsofun in #18485
  • fix(query): fix unable get column for join with rowfetch by @zhang2014 in #18486
  • fix(query): ignore group_by_shuffle_mode in grouping set query by @sundy-li in #18508
  • fix(query): fix the 'not found' error caused by heartbeat loss on the local by @zhang2014 in #18512
  • fix: collect stats fail with string starts with large unicodes. by @youngsofun in #18523
  • fix: improve error handling in history table by @dqhl76 in #18504
  • fix(query): panic if explaining complex joins by @dqhl76 in #18538
  • fix(meta-service): eliminate 250ms lock delay during snapshot compaction by @drmingdrmer in #18542
  • fix(query): the workload_group sort spill needs to be able to be forced to be turned off by @forsaken628 in #18561
  • fix(query): Support the release of the query queue after the client cancels the query by @zhang2014 in #18558
  • fix(query): table system.query_execution output data type does not match definition by @forsaken628 in #18554
  • fix: String type parameters will result in double quotes and the query will be empty by @KKould in #18569
  • fix: prevent history table's log loss during node startup by @dqhl76 in #18566
  • fix: should not use array contains to implement inlist runtime filter by @SkyFan2002 in #18574
  • fix: make create lock revision idempotent by @zhyass in #18576
  • fix(query): prevent stack overflow in CTE processing with recursive annotations by @bohutang in #18588
  • fix(query): prevent stack overflow in PhysicalPlan recursion by @bohutang in #18589
  • fix: login_history missing username when password incorrect by @dqhl76 in #18587
  • fix(query): domain calc for int64 to timestamp is incorrect by @TCeason in #18597
  • fix: replace linear OR chain with balanced binary tree in build_inlist_filter by @SkyFan2002 in #18605
  • fix: deserialization error of AdditionalStatsMeta.location by @zhyass in #18618
  • fix: drop table ownership while vacuuming by @dantengsky in #18613
  • fix(test): flaky test from history table permit guard by @dqhl76 in #18624
  • fix(query): try fix hang for cluster aggregate by @zhang2014 in #18655
  • fix(rbac): create or replace ownership_object should delete the old ownership key by @TCeason in #18667
  • fix(history-table): stop heartbeat when another node starts by @dqhl76 in #18664
  • fix: clean db_id_table_name during vacuuming dropped tables by @dantengsky in #18665
  • fix: forbid transform with where clause. by @youngsofun in #18681
  • fix(query): fix incorrect order of group by items with CTE or subquery by @sundy-li in #18692
  • fix(query): fix unable cast Variant Nullable type to Int32 type in MERGE INTO by @b41sh in #18687
  • fix: meta-semaphore: re-connect when no event recevied by @drmingdrmer in #18690
  • fix: collected profiles lost in cluster mode by @dqhl76 in #18680
  • fix(python-binding): complete Python binding CI configuration by @bohutang in #18686
  • fix(python-binding): resolve virtual environment permission conflicts in CI by @bohutang in #18708
  • fix: error when using materialized CTE in multi-statement transactions by @SkyFan2002 in #18707
  • fix(query): add config to the embed mode to clarify this mode by @zhang2014 in #18710
  • fix: error occurred when retrying transaction on empty table by @SkyFan2002 in #18703
  • fix(query): column default expr should not cause seq.nextval modify by @b41sh in #18694
  • fix: vacuum2 all should ignore SYSTEM dbs by @dantengsky in #18712
  • fix(meta-service): snapshot key count should be reset by @drmingdrmer in #18718
  • fix(meta-service): detach the SysData to avoid race condition by @drmingdrmer in #18722
  • fix(query): ensure jwt roles to user if not exists by @everpcpc in #18720
  • fix(query): Set Parquet default encoding to PLAIN to ensure data compatibility by @b41sh in #18724
  • fix: last query id not only contain those cached. by @youngsofun in #18727
  • fix(query): reduce redundant result-set-spill logs during query waits by @bohutang in #18741
  • fix: fuse_vacuum2 panic while vauuming empty table with data_retentio… by @dantengsky in #18744
  • fix: query dropped table in fuse_time_travel_size() report error by @SkyFan2002 in #18748
  • fix: auto commit of ddl not work when calling procedure in transaction by @SkyFan2002 in #18753
  • fix: vacuum tables that are dropped by create or replace statement by @dantengsky in #18751
  • fix(query): fix data lost caused by nullable in spill by @zhang2014 in #18766
  • fix: clean up temp table with external location by @SkyFan2002 in #18775
  • fix: the result of the first parameter of eval_or_filters will affect the subsequent parameters by @KKould in #18782
  • fix: /v1/status return stop time without start time. by @youngsofun in #18792
  • fix: prevent panic in multi-table insert commit by @SkyFan2002 in #18793
  • fix: remove incorrect assertion in collecting dropped table ids by @dantengsky in #18780
  • fix: forbid SRF in copy transform. by @youngsofun in #18795
  • fix(query): handle database ID properly in columns table permission check by @TCeason in #18798
  • fix: invalid sequence step by @KKould in #18800
  • fix(meta): use transaction instead of direct request for UpsertKV by @drmingdrmer in #18813
  • fix: copy from CSV OOM when file is large. by @youngsofun in #18830
  • fix: deserialize parquet error when stream's base table modify column type by @zhyass in #18828
  • fix: use compile-time cfg for platform-specific DMA flags by @drmingdrmer in #18846
  • fix: pipeline max_threads should use max width of Pipes. by @youngsofun in #18837
  • fix(query): optimize JWT key lookup to avoid unnecessary JWKS refresh by @everpcpc in #18845
  • fix(query): NULL constraint checking in column modification by @TCeason in #18855
  • fix: config rename for file logging max_size by @everpcpc in #18772
  • fix: memory size of string view should count views array. by @youngsofun in #18867
  • fix(storage): analyze table get out of index by @zhyass in #18877
  • fix(query): Preserve case for Variant MapAccess in computed columns by @b41sh in #18872
  • fix(query): fix set_null_schema by @sundy-li in #18880
  • fix(ci): fix tpcds spill tests that no longer work by @forsaken628 in #18869
  • fix: ignore group_by_shuffle_mode in grouping set query by @SkyFan2002 in #18881
  • fix: meta-service: watch stream should be atomically added by @drmingdrmer in #18888
  • fix(query): fix row access policy parameter order and case sensitivity by @TCeason in #18889
  • fix(query): fix panic if miss match empty data type by @zhang2014 in #18894
  • fix(query): prevent modification of columns with security policies by @TCeason in #18896
  • fix: hilbert recluster get parser error by @zhyass in #18904
  • fix: trim duplicated metrics suffix by @everpcpc in #18908
  • fix: decimal overflow check is inadequate by @forsaken628 in #18919
  • fix: FilterExecutor needs to handle projections when enable_selector_executor is turned off. by @forsaken628 in #18921
  • fix(query): fix Inverted/Vector index panic with Native Storage Format by @b41sh in #18932
  • fix(query): optimize the cost estimation of some query plans by @zhang2014 in #18926
  • fix: alter column with specify approx distinct by @zhyass in #18928
  • fix(query): fix query function parsing nested conditions by @b41sh in #18940
  • fix(query): handle complex types in procedure argument parsing by @TCeason in #18929
  • fix: error in multi statement transaction retry by @SkyFan2002 in #18934
  • fix: flaky test progress not updated in real time in cluster mode by @youngsofun in #18945
  • fix: return timezone when set in query level. by @youngsofun in #18952
  • fix(query): Skip sequence lookups when re-binding stored defaults by @TCeason in #18946
  • fix(query): build mysql tls config by @everpcpc in #18953
  • fix(query): defer MySQL session creation until the handshake completes by @everpcpc in #18956
  • fix: timestamp_tz display by @KKould in #18958
  • fix(query): or_filter get incorrectly result by @zhyass in #18965
  • fix(query): Fix copy into Variant field panic with infinite number by @b41sh in #18962
  • fix(query): count_distinct needs to handle nullable correctly by @forsaken628 in #18973
  • fix: Block::to_record_batch fail when a column is array of NULLs. by @youngsofun in #18989
  • fix: desc password policy column types must match schema types. by @youngsofun in #18990
  • fix: unable to get field on rank limit when rule_eager_aggregation applied by @KKould in #19007
  • fix: pivot extra columns on projection by @KKould in #18994
  • fix: load of large zip file. by @youngsofun in #19010
  • fix(rbac): forbiden grant create-ownership-object privilege to user by @TCeason in #18987
  • fix: fix memory_size of sliced string view. by @youngsofun in #19014
  • fix: runtime filters not work when probe keys are simple casts of non-nullable columns to nullable types by @SkyFan2002 in #19020
  • fix(query): Fix inverted index matched score caused panic by @b41sh in #19032
  • fix: implements bitmap comparison by @dantengsky in #19038
  • fix(query): fix stack overflow errors thrown during serialization by @zhang2014 in #19040
  • fix(query): fix filter bug with small block-size by @sundy-li in #19047
  • fix: Pruning multithreading without accumulating time by @KKould in #19044
  • fix: http handler cut block to pages using memory size after gc. by @youngsofun in #19071
  • fix: query error when stream_consume_batch_size_hint is not 0 by @zhyass in #19074
  • fix: udf args recursion crash and binding not found on table by @KKould in #19091
  • fix(query): fix stale indices in process_or by @sundy-li in #19085
  • fix: change history tables' clean operations timing check and update mechanism by @dqhl76 in #19095
  • fix(query): update opendal by @sundy-li in #19110
  • fix(query): Fix drop Aggregating index failed by @b41sh in #19131
  • fix: where comparing old and new bitmap versions occurred when directly comparing bytes in join and group by operations. by @KKould in #19082
  • fix: distinct_eliminated is rewritten as distinct_on_group_key by @KKould in #19142
  • fix(query): fix fragment not found in warehouse level table by @zhang2014 in #19152
  • fix: recluster final infinite loop by @zhyass in #19151
  • fix: allow credential chain for system_history tables by @dqhl76 in #19167
  • fix(query): Fix inverted index JSON array matched all rows by @b41sh in #19185
  • fix(query): enable role-based S3 credential chain by @everpcpc in #19188
  • fix: avoid committing new snapshot if table not changed by @dantengsky in #19174
  • fix: use full join keys for hash shuffle to avoid skew by @dqhl76 in #19198
  • fix(query): enable query result cache for queries with scalar subqueries by @TCeason in #19202
  • fix: auto-increment and computed columns in multi-table INSERT by @zhyass in #19205
  • fix(query): Ensure result cache keys include secure filter predicates by @TCeason in #19210
  • fix(query): fix parse float number error by @b41sh in #19223
  • fix(optimizer): add recursive identifier to prevent stack overflow by @sundy-li in #19228
  • fix(ci): make ci run databend query unit test by @TCeason in #19233
  • fix(query): fix rust-analyzer cyclic deps between common-functions and common-formats by @TCeason in #19227
  • fix(storage): prevent parquet page overflow by splitting large batches by @dantengsky in #19206
  • fix(query): normalize type names in DESC PROCEDURE by @TCeason in #19237
  • fix(test): ignore explain memo cost by @dqhl76 in #19238
  • fix(meta): vacuum dropped table cleans policy refs by @TCeason in #19239
  • fix(ci): increase pool_max_idle_per_host by @sundy-li in #19241
  • fix(test): force HTTP/1.1 for sqllogictests client by @sundy-li in #19243
  • fix: stream diff SQL alias generation for quoted columns by @zhyass in #19258
  • fix: roll back h2 upgrade and ineffective reset workarounds by @bohutang in #19264
  • fix: out of bound on recursive cte & coercion_types left right not match on recursive scan by @KKould in #19212
  • fix: send responses only after state machine commit by @drmingdrmer in #19286
  • fix: compile error by @SkyFan2002 in #19298
  • fix: add TrackingPayloadExt trait for ergonomic future tracking by @drmingdrmer in #19296
  • fix: drain gRPC stream in get_kv() to prevent h2 reset errors by @drmingdrmer in #19302
  • fix(cloud): clamp task run pagination by @sundy-li in #19297
  • fix: in_memory_table_data_cache should use memory size of array instead of buffer size. by @youngsofun in #19305
  • fix: cluster key consistency during ALTER TABLE column by @zhyass in #19300
  • chore(query): reapply iceberg bump by @sundy-li in #19304
  • ci(test): enable profile configuration during test runs by @dqhl76 in #19245
  • fix: preserve IO error kind in codec decoder for raft log recovery by @drmingdrmer in #19315
  • fix: drop/replace stage fail to delete files on OSS. by @youngsofun in #19321
  • fix(query): respect null ordering in topn pruner by @sundy-li in #19317
  • fix: enhance feature verification logic by @dqhl76 in #19359
  • fix: fix and polish format settings. by @youngsofun in #19373
  • fix: on_error_mode not work in transform. by @youngsofun in #19387
  • fix: empty database name by @SkyFan2002 in #19389
  • fix(mysql): set UNSIGNED_FLAG for unsigned integer columns by @TCeason in #19400
  • fix: upgrade raft-log: use pread to prevent race condition in concurrent chunk reads by @drmingdrmer in #19401
  • fix(query): fix lost data in new join spill by @zhang2014 in #19405
  • fix(query): try fix lost data when new join spilled by @dqhl76 in #19408
  • fix(mysql): avoid NOT_NULL for NULL columns by @dantengsky in #19416
  • fix(query): data lost in new hash join caused by spill by @dqhl76 in #19415
  • fix: upgrade databend-meta crates to v260205.3.0 by @drmingdrmer in #19438
  • fix: Eliminate RwLock in SequenceCounter to avoid read-write deadlock issues by @KKould in #19432
  • fix(proto-conv): replace silent u64->usize casts with checked conversion by @drmingdrmer in #19471
  • fix: condition should be || not && by @cuiweixie in #19461
  • fix: surface errors silently swallowed in log-storage config and grant entries by @drmingdrmer in #19474
  • fix: r_cte wrong/flaky results under concurrency by @KKould in #19439
  • fix: some queries print query log and profile twice by @dqhl76 in #19455
  • fix(query): replace regex-based block comment lexer with memchr scanner by @TCeason in #19487
  • fix(query): tolerate unknown TaggableObject variants in tag reference listing by @TCeason in #19497
  • fix(query): short-circuit runtime filter merge on threshold by @SkyFan2002 in #19509
  • fix: enable runtime filter for left semi join by @SkyFan2002 in #19511
  • fix: isolate recursive CTE internal table names per source by @KKould in #19504
  • fix(query): prune runtime inlists with block bloom by @SkyFan2002 in #19516
  • fix(query): improve EXPLAIN ANALYZE profiling for meta-only blocks by @forsaken628 in #19514
  • fix: trim CR for TSV CRLF record delimiter by @KKould in #19521
  • fix(query): try_to_timestamp should return null when convert error by @TCeason in #19527
  • fix(query): avoid merge-into unmatched panic (#16885) by @sundy-li in #19529
  • fix(query): support unquoted Unicode aliases and identifiers by @TCeason in #19526
  • fix(join): project build columns for fast returning left join by @zhang2014 in #19539
  • fix(query): avoid reinitializing nullable aggregate states during merge by @dqhl76 in #19544
  • fix(query): builtin function names should be case-insensitive regardless of unquoted_ident_case_sensitive by @TCeason in #19537
  • fix(http): skip S3 refresh for attached tables in HTTP catalog endpoints by @TCeason in #19548
  • fix(planner): decorrelate correlated scalar subquery limit (#13716) by @sundy-li in #19532
  • fix(sql): add missing SExpr import in type_check.rs by @zhang2014 in #19550
  • fix: flatten IN-list OR predicates by @SkyFan2002 in #19546
  • fix(query): scope runtime filter selectivity to bloom by @SkyFan2002 in #19547
  • fix(sql): implement recursive cte hooks in lite planner ctx by @KKould in #19558
  • fix(query): pass explicit data schema to spill reader instead of inferring from parquet metadata by @zhang2014 in #19564
  • fix: bendpy register csv column positions followup by @KKould in #19557
  • fix: unload allow include_query_id=true use_raw_path=true for compat. by @youngsofun in #19583
  • fix(storage): split oversized compact blocks during recluster by @zhyass in #19577
  • fix(query): preserve parentheses in UNION queries by @sundy-li in #19587
  • fix(query): avoid create or alter recursive views by @TCeason in #19584
  • fix(query): escape LIKE ESCAPE literals in display by @sundy-li in #19596
  • fix: clarify AGENTS.md guidance for conflicts and patterns by @forsaken628 in #19617
  • fix(query): enforce row access policy for Direct UPDATE and split predicate fields by @TCeason in #19625
  • fix: rename PanicError and fix executor OOM mapping by @sundy-li in #19614
  • fix: restore enable_merge_into_row_fetch by @dqhl76 in #19624
  • fix(query): fix variant cast to number by @b41sh in #19623
  • fix(sql): avoid uint ndv overflow in scan stats by @sundy-li in #19632
  • fix: skip on_finish in CommitMultiTableInsert on error to preserve stream by @zhang2014 in #19637
  • fix(docs): correct broken tests/ut link in SQL README by @dqhl76 in #19645
  • fix(query): use jiff to_zoned for naive datetime timezone resolution by @TCeason in #19647
  • fix(ast): parse X'...' as binary literal by @sundy-li in #19636
  • fix(ci): fix broken links checker by @dqhl76 in #19649
  • fix(query): handle repeated % in LIKE folding by @sundy-li in #19590
  • fix: handle empty IEJoin outer fill by @sundy-li in #19604
  • fix(storage): inflated block size estimation caused by shared string buffers by @zhyass in #19657
  • fix(query): guard metadata consistency for flashback, time travel, and DDL column operations by @zhyass in #19653
  • fix(query): SET_VAR hint write into the shared query_settings by @TCeason in #19663
  • fix(query): support IF NOT EXISTS for ALTER TABLE ADD COLUMN by @sundy-li in #19615
  • fix(query): fix hang when union and limit by @zhang2014 in #19665
  • fix: use spill depth partition bit in new final agg by @dqhl76 in #19626
  • fix(query): send Some(()) instead of None in runtime filter watcher by @zhang2014 in #19671
  • fix(query): return semantic error for invalid grouping() by @TCeason in #19670
  • fix(query): handle empty LIKE ESCAPE in planner by @sundy-li in #19595
  • fix(ast): avoid round-trip parser panic for nested joins by @sundy-li in #19605
  • fix: avoid single thread row fetch by @SkyFan2002 in #19677
  • fix: make runtime filter wait exit on finish or abort by @SkyFan2002 in #19669
  • fix(sql): handle correlated subqueries over union by @sundy-li in #19607
  • fix(storage): fix ORDER BY LIMIT pushdown and index misalignment in fuse table functions by @zhyass in #19680
  • fix(storage): clustering_statistics panic with limit by @zhyass in #19683
  • fix(config): rename local_writable_root by @dqhl76 in #19688
  • fix: vacuum temp files not respect duration by @dqhl76 in #19685
  • fix(grpc): stop setting per-request timeout from rpc_client_timeout_secs by @dantengsky in #19691
  • fix(query): improve view dependency validation and binding scope handling by @TCeason in #19673
  • fix(sql): clone_outer_scan drops bind-time Scan metadata during decorrelation by @TCeason in #19694
  • fix: normalize Utf8View strings before writing Lance datasets by @youngsofun in #19692
  • fix(bendpy): stabilize release builds and local publish by @sundy-li in #19700
  • fix(io): correct BitmapReader BITMAP_LENGTH from 1024 to 8192 by @zhang2014 in #19702
  • fix(bendpy): detect python3 in release wheel builds by @sundy-li in #19701
  • fix(query): drain pending queue on exchange sink buffer close to prevent permit leak by @zhang2014 in #19712
  • fix(query): fix hint table functions by @AlixMil in #19706
  • fix(ci): wire stage matrix size into runtime by @sundy-li in #19606
  • ci: truncate release notes when exceeding GitHub size limit by @everpcpc in #19730

Code Refactor 🎉

  • refactor(executor): refine physical hash join build by @bohutang in #17858
  • refactor(query): refactor physical plan organization in pipeline builder for better readability by @bohutang in #17866
  • refactor: new retention policy ByNumOfSnapshotsToKeep by @dantengsky in #17840
  • refactor: add more log to semaphore, add benchmark CLI by @drmingdrmer in #17875
  • refactor: start a meta-service as local meta for testing by @drmingdrmer in #17821
  • refactor(query): Optimize FLATTEN function with filter condition by @b41sh in #17892
  • refactor(meta-embedded): remove embedded meta-store by @drmingdrmer in #17888
  • refactor(query): introduces trait SimpleType to simplify the ValueType implementation. by @forsaken628 in #17909
  • refactor: Simplify dereferencing logic in MetaStore and update async methods for better clarity by @drmingdrmer in #17938
  • refactor(query): introduces ReturnType, ZeroSizeType, AccessType by @forsaken628 in #17935
  • refactor(query): Refactor and optimize virtual column refresh by @b41sh in #17950
  • refactor: columns support display other catalog column info by @TCeason in #17960
  • refactor(metactl): when restore without --initial-cluster, add default single node cluster config by @drmingdrmer in #17969
  • refactor: move transaction commit relevant code to interpreter by @SkyFan2002 in #17976
  • refactor: Harmonizing decimal128 and decimal256 into the same type by @forsaken628 in #17894
  • refactor(meta-semaphore): release meta semapore immediately after permit is dropped by @dqhl76 in #17999
  • refactor(meta): sleep a second before removing dir when cleaning up sled during upgrade by @drmingdrmer in #18018
  • refactor: bendsave should be able to output its built version by @drmingdrmer in #18020
  • refactor: Optimize PostgreSQL to strftime Format by @TCeason in #18042
  • refactor: refine system history tables and add login table by @dqhl76 in #17937
  • refactor: Separate the code logic for COPY INTO LOCATION/TABLE. by @youngsofun in #18060
  • refactor(query): remove min/max for report issue by @zhang2014 in #18061
  • refactor: support add new column for history table by @dqhl76 in #18067
  • refactor(metactl-import): when importing, also write the data version by @drmingdrmer in #18080
  • refactor(optimizer): refactor the optimizer tests by @bohutang in #18093
  • refactor: query_history table should only have one record per query by @dqhl76 in #18098
  • refactor(meta-server): remove TxnReply::error by @drmingdrmer in #18112
  • refactor(query): add max_aggregate_restore_worker setting by @zhang2014 in #18130
  • refactor: extract meta-client cache to standalone sub-cache crate by @drmingdrmer in #18152
  • refactor: simply management of tmp table in session. by @youngsofun in #18162
  • refactor(query): remove system.query_log and system.queries_profile_log by @zhang2014 in #18155
  • refactor(query-management): rewrite user_api tests without mock by @drmingdrmer in #18174
  • refactor: init to support external storage for history tables by @dqhl76 in #18185
  • refactor(query): use graphs to build pipelines by @zhang2014 in #18184
  • refactor(query): Enhance OBJECT_INSERT and Rename JSON Functions by @b41sh in #18199
  • refactor(query): refactor union all pipeline by @zhang2014 in #18203
  • refactor: implement cooperative state machine for range/list operations by @drmingdrmer in #18204
  • refactor(query): add row_count, ndv, null_count for system.columns by @zhang2014 in #18246
  • refactor: remove unused field step from sequence meta by @drmingdrmer in #18245
  • refactor: change default http_session_timeout_secs to 4 hour. by @youngsofun in #18270
  • refactor: String column like % can rewrite to true by @TCeason in #18263
  • refactor(meta-service): move kvapi-test-suite to separate crate by @drmingdrmer in #18279
  • refactor(meta-service): Drop support for versions before 1.2.547 by @drmingdrmer in #18284
  • refactor(executor): control queries executor via configuration by @dqhl76 in #18283
  • refactor: replace find_database_table_filter to extract_leveled_strings by @TCeason in #18297
  • refactor(meta-service): upgrade snapshot storage(rotbl) by @drmingdrmer in #18326
  • refactor: use header X-DATABEND-SESSION for client session info. by @youngsofun in #18301
  • refactor(meta-service): remove temp-snapshot during building snaphsot by @drmingdrmer in #18344
  • refactor(meta-service): merge Marked and SeqMarked into one by @drmingdrmer in #18350
  • refactor(meta-service): simplify StateMachineApi by @drmingdrmer in #18366
  • refactor(meta-service): simplify StateMachineApi, remove SMEventSender trait by @drmingdrmer in #18368
  • refactor(meta-service): normalize compactor by @drmingdrmer in #18373
  • refactor: move StateMachineApi to standalone crate by @drmingdrmer in #18388
  • refactor(meta-service): remove unused txid in raft log by @drmingdrmer in #18392
  • refactor(meta): replace manual struct instantiation with constructor methods by @drmingdrmer in #18393
  • refactor: splitting clap::Parser from Config by @forsaken628 in #18389
  • refactor(query): Gracefully handle unknown GrantEntry objects in UserGrantSet::from_pb by @TCeason in #18400
  • refactor: streaming load use header X-Databend-SQL. by @youngsofun in #18410
  • refactor(query): add warehouse_id config by @zhang2014 in #18407
  • refactor: Mutil Column Aggregate Function State Serialization Interface by @forsaken628 in #18398
  • refactor: Integrate the materialized CTE into the plan and pipeline by @SkyFan2002 in #18226
  • refactor(metactl): extract Lua runtime setup to dedicated module by @drmingdrmer in #18439
  • refactor: move some fields of session to internal. by @youngsofun in #18442
  • refactor(meta): add Lua API documentation and benchmarking tools by @drmingdrmer in #18458
  • refactor: optimize list some OwnershipObjects by @TCeason in #18455
  • refactor(query): Improve parse json performance by @b41sh in #18451
  • refactor(query): refactor row fetcher for avoid oom by @zhang2014 in #18440
  • refactor(query): adjust the serialization of each aggregate function state one by one by @forsaken628 in #18462
  • refactor: polish handling of fail in transaction by @youngsofun in #18497
  • refactor(query): use default verify if the feature is not included in the license by @zhang2014 in #18517
  • refactor: analyze table by @zhyass in #18514
  • refactor: polish session in HTTP handler by @youngsofun in #18527
  • refactor(meta): add state machine lock guards with debugging by @drmingdrmer in #18534
  • refactor(meta-service): optimize state machine block loading with early cache checks by @drmingdrmer in #18541
  • refactor(catalog): add ErrorCodeResultExt trait for cleaner error handling by @drmingdrmer in #18545
  • refactor(query): migrate physical plan from enum to trait-based architecture by @zhang2014 in #18268
  • refactor(query): merge memory、null、random、result_cache、view into storage_basic by @zhang2014 in #18547
  • refactor: schema-api test: consolidate Util usage and eliminate code duplication by @drmingdrmer in #18562
  • refactor: simplify database setup using Util across multiple test scenarios by @drmingdrmer in #18563
  • refactor: simplify session for worksheet. by @youngsofun in #18530
  • refactor: replace AsKVApi with KVApi in schema test suite by @drmingdrmer in #18564
  • refactor: replace manual database setup with Util across multiple test cases by @drmingdrmer in #18565
  • refactor(query): add local semaphore for reduce meta's request by @zhang2014 in #18572
  • refactor: consolidate schema_api_test_suite CreateTableReq patterns with enhanced create_table_with by @drmingdrmer in #18573
  • refactor(query): add lock for meta semaphore request by @zhang2014 in #18579
  • refactor: schema-api test: convert Get operations to use Util helper methods by @drmingdrmer in #18582
  • refactor: bring back temp table to cte by @SkyFan2002 in #18577
  • refactor: add IdempotentKVTxnSender by @dantengsky in #18585
  • refactor: avoid using RWlock, use semaphore instead by @drmingdrmer in #18601
  • refactor: add heartbeat to reduce meta requests for history tables by @dqhl76 in #18594
  • refactor(query): Optimize the array_agg function to reduce memory usage by @b41sh in #18607
  • refactor(meta-service): replace Vec with BTreeMap in ImmutableLevels by @drmingdrmer in #18608
  • refactor: restructure leveled map data architecture by @drmingdrmer in #18619
  • refactor(query): revert pr 18589 by @zhang2014 in #18638
  • refactor(query): Optimize set returning function result block max bytes by @b41sh in #18626
  • refactor(exception): enhance ErrorCodeResultExt with comprehensive error codes by @drmingdrmer in #18643
  • refactor(meta-api): consolidate schema API implementation by @drmingdrmer in #18646
  • refactor(meta-service): remove deprecated rpc_delay_seconds metric by @drmingdrmer in #18647
  • refactor(frozen-api): optimize API boundary protection by @bohutang in #18649
  • refactor(schema-api): extract DatabaseApi trait from SchemaApi by @drmingdrmer in #18650
  • refactor(schema-api): extract TableApi and IndexApi traits by @drmingdrmer in #18652
  • refactor: refactor inlist runtime filter with or_filters and add configurable runtime filter thresholds by @SkyFan2002 in #18622
  • refactor(schema-api): extract CatalogApi trait from SchemaApi by @drmingdrmer in #18654
  • refactor(schema-api): extract SecurityApi trait by @drmingdrmer in #18658
  • refactor(query): remove useless ee feature by @zhang2014 in #18660
  • refactor: extract garbage collection api to garbage_collection_api.rs by @drmingdrmer in #18663
  • refactor(meta): complete SchemaApi trait decomposition by @drmingdrmer in #18669
  • refactor(meta): extract utilities from monolithic util.rs by @drmingdrmer in #18678
  • refactor(query): split Spiller to provide more scalability by @forsaken628 in #18691
  • refactor(meta-semaphore): handle error occurs during new-stream, lease-extend by @drmingdrmer in #18695
  • refactor(meta-service): respond mget items in stream instead of in a vector by @drmingdrmer in #18716
  • refactor(meta-service0): rotbl: use spawn_blocking() instead blocking_in_place() by @drmingdrmer in #18717
  • refactor(raft-store): update trait interfaces and restructure leveled map by @drmingdrmer in #18719
  • refactor: raft-store: in-memory readonly level compaction by @drmingdrmer in #18736
  • refactor: new setting max_vacuum_threads by @dantengsky in #18737
  • refactor: compactor internal structure by @drmingdrmer in #18738
  • refactor(query): refactor the join partition to reduce memory amplification by @zhang2014 in #18732
  • refactor: Make the ownership key deletion and table/database replace in the same transaction by @TCeason in #18739
  • refactor(meta-service): separate raft-log-store and raft-state-machine store by @drmingdrmer in #18746
  • refactor: meta-service: simplify raft store and state machine by @drmingdrmer in #18749
  • refactor(query): stream style block writer for hash join spill by @zhang2014 in #18742
  • refactor(native): preallocate zero offsets before compression by @bohutang in #18756
  • refactor: meta-service: compact immutable levels periodically by @drmingdrmer in #18757
  • refactor(query): add async buffer for spill data by @zhang2014 in #18758
  • refactor(query): improve the readability of aggregate function hash table by @forsaken628 in #18747
  • refactor(query): Optimize Virtual Column Write Performance by @b41sh in #18752
  • refactor(meta-service): move raft to separate runtime by @drmingdrmer in #18777
  • refactor(user): redesign ALTER USER implementation with improved API consistency by @TCeason in #18804
  • refactor(query): add new experimental hash join for inner join by @zhang2014 in #18783
  • refactor(meta): extract TableMeta operations to dedicated ops module by @drmingdrmer in #18816
  • refactor: extract table identifier types to ident.rs by @drmingdrmer in #18817
  • refactor(meta): move get_db_id_or_err to DatabaseApi with nested Result by @drmingdrmer in #18818
  • refactor(meta): simplify stream metrics collection with Drop pattern by @drmingdrmer in #18820
  • refactor(query): add left join for experimental new hash join by @zhang2014 in #18814
  • refactor: meta-client: consolidate RPC timing into RpcHandler by @drmingdrmer in #18832
  • refactor: clarify the HTTP query lifecycle. by @youngsofun in #18787
  • refactor: simplify mask policy storage structure by @TCeason in #18836
  • refactor: meta: unify FetchAddU64 into FetchIncreaseU64 by @drmingdrmer in #18847
  • refactor: rewrite meta-meta compat test with python by @drmingdrmer in #18870
  • refactor(query): improve transforms directory organization (sorts, filters, blocks, columns) by @forsaken628 in #18883
  • refactor(query): enable grace hash join if force join spill data by @zhang2014 in #18878
  • refactor(query): experimental aggregate final with recursive spill support by @dqhl76 in #18866
  • refactor: include databend-metabench in release packages by @drmingdrmer in #18912
  • refactor: refine experimental final aggregate spill by @dqhl76 in #18907
  • refactor(query): AccessType downcasts now return Result so mismatches surface useful diagnostics by @forsaken628 in #18923
  • refactor(query): merge pipeline core, sources and sinks crate by @zhang2014 in #18939
  • refactor(binder): move the rewrite of ASOF JOIN to the logical plan and remove scalar_expr from DerivedColumn by @forsaken628 in #18938
  • refactor(query): optimized UnaryState design and simplified string_agg implementation by @forsaken628 in #18941
  • refactor(query): rename exchange hash to node to node hash by @zhang2014 in #18948
  • refactor(query): prevent masking/row access policy name conflicts by @TCeason in #18937
  • refactor(query): optimize visibility checker for large-scale deployments improved 10x by @TCeason in #18954
  • refactor: stream spill triggering for partial aggregation by @dqhl76 in #18943
  • chore: optimize ExprBloomFilter to use references instead of clones by @dantengsky in #18157
  • refactor(query): pass timezone by reference to avoid Arc churn by @TCeason in #18998
  • refactor(query): remove potential performance hotspots caused by fetch_add by @zhang2014 in #18995
  • refactor: bump crates arrow* and parquet to version 56 by @dantengsky in #18997
  • refactor(func): optimize function array_aggregate by @forsaken628 in #19005
  • refactor: move aggregation spill logic into partial aggregate by @dqhl76 in #18999
  • refactor(query): add the matcher id when calling the optimizer apply by @zhang2014 in #19017
  • refactor(query): decrease call tzdb parse by @TCeason in #19004
  • refactor: Optimize timestamp/timestamptz function by DayLUT by @TCeason in #19031
  • refactor: bytes view calc total_bytes_len lazy. by @youngsofun in #19056
  • refactor: try reduce aggregate hash index cost on hot path by @dqhl76 in #19072
  • refactor(query): supports parallel data transmission between nodes by @zhang2014 in #18984
  • refactor: build the runtime filter during the HashJoin block collection process by @SkyFan2002 in #19058
  • refactor: reduce the memory of the HashIndex in the AggregateHashTable by @forsaken628 in #19046
  • refactor(optimizer): simplify the implementation of rule eager aggregation by @forsaken628 in #19112
  • refactor: vacuum temporary files also cleans inactive temp table data by @dantengsky in #19092
  • refactor: system.build_options as key-value by @bohutang in #19137
  • refactor: release table lock earlier during DML execution by @dantengsky in #19113
  • refactor(query): window supports const columns by @forsaken628 in #19140
  • refactor: reduce max page size of http handler to 4MB. by @youngsofun in #19136
  • refactor(query): use unchecked utf8 for payload flush by @zhang2014 in #19159
  • refactor: prioritize table options for retention policy by @dantengsky in #19162
  • refactor(query): send runtime filter packets as data blocks by @zhang2014 in #19170
  • refactor(query): streamline flight exchange coordination by @zhang2014 in #19175
  • refactor(query): rename skip duplicate hash tables to unique by @zhang2014 in #19192
  • refactor(meta): upgrade openraft to v0.10.0-alpha.13 by @drmingdrmer in #19193
  • refactor(query): reduce string allocations in hot paths by @sundy-li in #19201
  • refactor: extract SchemaApiTestSuite to standalone crate by @drmingdrmer in #19219
  • refactor(query): use snapshot_location for DummyTableScan cache invalidation by @TCeason in #19214
  • refactor: split SchemaTestSuite into several sub tests by @drmingdrmer in #19224
  • refactor(query): restructure hash join memory implementations by @zhang2014 in #19199
  • refactor: encapsulate list parameters into ListOptions struct by @drmingdrmer in #19242
  • refactor(optimizer): refactor SelectivityEstimator by @forsaken628 in #19186
  • refactor(meta): remove unused KVApi wrappers and traits by @drmingdrmer in #19251
  • refactor: rename get_kv_stream to get_many_kv with streaming input by @drmingdrmer in #19254
  • refactor: support row/bucket shuffle for aggregation by @dqhl76 in #19155
  • refactor(meta): decouple meta crates and improve stream error handling by @drmingdrmer in #19263
  • refactor: simplify location capture in location_future by @drmingdrmer in #19267
  • refactor: move Pool from common-base to meta-client by @drmingdrmer in #19273
  • refactor: remove implicit From&lt;MetaError&gt; for ErrorCode trait by @drmingdrmer in #19275
  • refactor: simplify Pool struct and retry loop by @drmingdrmer in #19276
  • refactor: replace BuildInfoRef with semver::Version in meta-client by @drmingdrmer in #19277
  • refactor: simplify KVAppError handling with into_nested() by @drmingdrmer in #19280
  • refactor: replace local uniq_id and drop_callback with databend-base by @drmingdrmer in #19279
  • refactor: replace BuildInfoRef with semver::Version in RpcClientConf by @drmingdrmer in #19281
  • refactor: simplify Runtime by extracting common spawn and builder logic by @drmingdrmer in #19282
  • refactor: use anyhow::Result for test function return types by @drmingdrmer in #19283
  • refactor: simplify control flow in Runtime methods by @drmingdrmer in #19285
  • refactor: use hickory-resolver directly in raft-store for DNS resolution by @drmingdrmer in #19288
  • refactor: replace custom JoinHandle wrapper with From<JoinError> impl by @drmingdrmer in #19291
  • refactor(query): support pushdown rules with SecureFilter for row access policy by @TCeason in #19274
  • refactor: use io::Error instead of MetaStorageError in sled-store by @drmingdrmer in #19292
  • refactor(query): refactor hybrid hash join for new join by @zhang2014 in #19307
  • refactor(query): optimize system tables filter with lightweight permission check by @TCeason in #19293
  • refactor: decouple meta-service from databend-common-base runtime by @drmingdrmer in #19319
  • refactor: remove MetaStorageError and delete stoerr crate by @drmingdrmer in #19322
  • refactor: use DatabendRuntime::spawn in meta binaries by @drmingdrmer in #19324
  • refactor: make meta-client generic over RuntimeApi by @drmingdrmer in #19327
  • refactor: add SpawnApi::prepare_request() for gRPC metadata injection by @drmingdrmer in #19329
  • refactor: move 7 server-side meta crates to src/meta/core/ by @drmingdrmer in #19332
  • refactor: remove environment variable configuration for metasrv by @drmingdrmer in #19333
  • refactor: extract HTTP admin API to standalone crate databend-meta-admin by @drmingdrmer in #19335
  • refactor: group gRPC and admin config fields into nested structs by @drmingdrmer in #19336
  • refactor: use TlsConfig in HttpServiceConfig by @drmingdrmer in #19337
  • refactor: embed KvApiArgs in Config by @drmingdrmer in #19338
  • refactor: move CLI config parsing to separate crate by @drmingdrmer in #19339
  • refactor: remove databend-common-base dependency from raft-store by @drmingdrmer in #19341
  • refactor: move CLI fields out of MetaServiceConfig into MetaConfig by @drmingdrmer in #19342
  • refactor: replace local count module with databend-base counter by @drmingdrmer in #19343
  • refactor: add trace_request to SpawnApi for server-side tracing by @drmingdrmer in #19346
  • refactor: simplify port allocation in meta-store to use OS-assigned ports by @drmingdrmer in #19352
  • refactor(meta): reorganize tests and use lightweight runtime for meta service by @drmingdrmer in #19354
  • refactor: move HTTP endpoint tests to admin crate by @drmingdrmer in #19356
  • refactor: move module tag registration from client to store crate by @drmingdrmer in #19365
  • refactor: add connect method to SpawnApi for channel creation by @drmingdrmer in #19370
  • refactor: decouple meta core crates from databend dependencies by @drmingdrmer in #19372
  • refactor: remove databend-common-meta-api dependency from meta-service by @drmingdrmer in #19374
  • refactor(query): Refactor virtual columns storage & read planning by @b41sh in #19284
  • refactor(query): enable experimental new join by default by @zhang2014 in #19388
  • refactor: unify gRPC message size into single config value by @drmingdrmer in #19397
  • refactor(query): Refactor virtual columns refresh into prepare/commit phases by @b41sh in #19395
  • refactor(management): simplify UserApi using upsert_pb/get_pb patterns by @TCeason in #19413
  • refactor(config): dedup query config inner/outer by @dantengsky in #19446
  • refactor: meta/proto-conv: simplify conversions and reorganize into submodules by @drmingdrmer in #19453
  • refactor: reorganize meta/api into submodules by @drmingdrmer in #19454
  • refactor: extract fuse compat test matrix into test_cases.yaml by @dantengsky in #19441
  • refactor: merge external-meta-version into MetaClient/MetaService columns by @drmingdrmer in #19460
  • refactor: clean up meta crates — simplify Cargo.toml, remove unused deps, and deduplicate code by @drmingdrmer in #19462
  • refactor: move meta plugin crates and eliminate unnecessary clones in UserGrantSet by @drmingdrmer in #19466
  • refactor(meta): minor structural cleanups in process, control, admin, semaphore by @drmingdrmer in #19470
  • refactor(app): deduplicate IdGenerator constructors via new() helper by @drmingdrmer in #19475

> Note: changelog truncated due to GitHub size limits. See commit history for full details.

Apr 13, 2026 (v1.2.896-nightly)

What's Changed

Thoughtful Bug Fix 🔧

  • fix(bendpy): detect python3 in release wheel builds by @sundy-li in #19701

Others 📒

  • chore: upgrade databend-meta stack to land rotbl 0.2.10 by @drmingdrmer in #19703
  • chore: bump databend-meta to v260312.7.0 by @drmingdrmer in #19704

Full Changelog: https://github.com/databendlabs/databend/releases/tag/v1.2.896-nightly

Apr 11, 2026 (v1.2.895-nightly)

Apr 8, 2026 (v1.2.894-nightly)

Apr 7, 2026 (v1.2.893-nightly)

Apr 6, 2026 (v1.2.892-nightly)

Mar 31, 2026 (v1.2.888-patch-3)

Mar 29, 2026 (v1.2.891-nightly)

Mar 23, 2026 (v1.2.890-nightly)

Mar 15, 2026 (v1.2.889-nightly)

Mar 12, 2026 (v1.2.888-nightly)

Mar 8, 2026 (v1.2.887-nightly)

Mar 5, 2026 (v1.2.886-nightly)

Mar 4, 2026 (v1.2.885-nightly)

Mar 1, 2026 (v1.2.884-nightly)

Feb 27, 2026 (v1.2.883-nightly)

Feb 15, 2026 (v1.2.882-nightly)

Feb 9, 2026 (v1.2.881-nightly)

Feb 8, 2026 (v1.2.880-nightly)

Feb 5, 2026 (v1.2.879-nightly)

Feb 4, 2026 (v1.2.878-nightly)

Feb 4, 2026 (v1.2.877-nightly)

Feb 3, 2026 (v1.2.876-nightly)

Feb 3, 2026 (v1.2.875-nightly)

Feb 1, 2026 (v1.2.874-nightly)

Jan 25, 2026 (v1.2.873-nightly)

Jan 23, 2026 (v1.2.872-nightly)

Jan 21, 2026 (v1.2.871-nightly)

Jan 18, 2026 (v1.2.870-nightly)

Jan 15, 2026 (v1.2.869-nightly)

欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验