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
NgramIndexforFuseTable, improve like query performance by @KKould in #17852 - chore:
VirtualColumnBind by @KKould in #17862 - feat: support using fragment forest to execute additional broadcast operations. by @SkyFan2002 in #17872
- feat: new table option
enable_auto_vacuumby @dantengsky in #17884 - feat: new settings
data_retention_num_snapshots_to_keepby @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_columnfunction 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_decimalfunction 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 anyby @KKould in #18099 - feat(query): Add
regexp_split_to_tablefunction 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 <escape>forLIKE/NOT LIKE/LIKE ANYby @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
agefunction 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 Indexby @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_numberfor 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&databasepushdown scan forsystem.indexesby @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 perfsupport 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
PutSequentialoperation 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.tablesby @b41sh in #18411 - feat(executor): add query execution stats by @dqhl76 in #18345
- feat(query): Support vector functions
inner_product,vector_dimsandvector_normby @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
WarehouseOptionsfor 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_aggfunction as an alias ofjson_array_aggby @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_binarywith 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
RuleFilterFlattenOrby @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
startandincrementoptions 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 BETWEENby @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_schemaexpands 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
AUTOINCREMENTby @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_attracking 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
TimestampTzby @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_arrayfunction 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_dictionaryby @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_aggby @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
KvListgRPC API for listing keys by prefix by @drmingdrmer in #19235 - feat: add
limitparameter toKVApi::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.stagesandshow stagesby @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_hilbertfunction 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_dwithinfunction 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_displayby @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_updateshould 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_idandundrop_databaseoperations 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
InferFilterOptimizerby @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_memoryby @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.testby @dantengsky in #18038 - fix: when the WithIn Function arguments all are not
Nullable,OrderByfails by @KKould in #18041 - fix:
explain analyzemissing 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
BindContextmissing 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 TABLEstatement 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
Decimal64support 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_cardinalityby @dantengsky in #18287 - fix: transient should ignore retention period settings and table options by @dantengsky in #18295
- fix:
create temp table as selectnot 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_cursorto 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_aggparameter 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_executionoutput 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_historymissing 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_nameduring 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:
vacuum2all 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
PLAINto 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 replacestatement 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_filterswill 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_executoris 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 policycolumn 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=truefor 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
ByNumOfSnapshotsToKeepby @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
FLATTENfunction 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-cachecrate 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_apitests 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_INSERTand 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
MarkedandSeqMarkedinto 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::Parserfrom 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
IdempotentKVTxnSenderby @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_aggfunction 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()insteadblocking_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_threadsby @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
DerivedColumnby @forsaken628 in #18938 - refactor(query): optimized
UnaryStatedesign and simplifiedstring_aggimplementation 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_aggregateby @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_lenlazy. 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 filesalso 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
ListOptionsstruct by @drmingdrmer in #19242 - refactor(optimizer): refactor
SelectivityEstimatorby @forsaken628 in #19186 - refactor(meta): remove unused KVApi wrappers and traits by @drmingdrmer in #19251
- refactor: rename
get_kv_streamtoget_many_kvwith 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<MetaError> for ErrorCodetrait by @drmingdrmer in #19275 - refactor: simplify
Poolstruct and retry loop by @drmingdrmer in #19276 - refactor: replace
BuildInfoRefwithsemver::Versionin meta-client by @drmingdrmer in #19277 - refactor: simplify KVAppError handling with into_nested() by @drmingdrmer in #19280
- refactor: replace local
uniq_idanddrop_callbackwithdatabend-baseby @drmingdrmer in #19279 - refactor: replace
BuildInfoRefwithsemver::VersioninRpcClientConfby @drmingdrmer in #19281 - refactor: simplify Runtime by extracting common spawn and builder logic by @drmingdrmer in #19282
- refactor: use
anyhow::Resultfor 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
MetaStorageErrorand deletestoerrcrate by @drmingdrmer in #19322 - refactor: use
DatabendRuntime::spawnin 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-adminby @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-basedependency from raft-store by @drmingdrmer in #19341 - refactor: move CLI fields out of
MetaServiceConfigintoMetaConfigby @drmingdrmer in #19342 - refactor: replace local count module with databend-base counter by @drmingdrmer in #19343
- refactor: add
trace_requesttoSpawnApifor 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

