What databendlabs/databend shipped
Written by FoxPlug from the repository's own releases; not affiliated with Databend. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/databendlabs/databend; Databend did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- Fuse tables gain a snapshot-level segment zone map built by recluster, so segments can be pruned before they are read. Pull request #21021
- UNION ALL no longer loses rows when a branch reads stage files. Pull request #21011
- Runtime TopN pruning now works across UNION ALL branches, including views defined as unions. Pull request #20967
- Ordinary-table and materialized-view reclustering are unified under OPTIMIZE TABLE, with the legacy ALTER spellings kept as aliases. Pull request #20979
- Local Python scalar and aggregate script UDFs can now make HTTP(S) calls gated by NETWORK RULE and EXTERNAL ACCESS INTEGRATION usage checks. Pull request #20898
- Snapshot hints are published only after an explicit transaction commits, so attached tables no longer read uncommitted metadata. Pull request #20827
- CSV loading and output preserve empty STRING and BINARY values, quote empty values, and produce valid empty binary values in nullable columns. Pull request #20946
- A materialized view can be created in a different database from its source table. Pull request #20906
- The admin API exposes node-local cache statistics through a caches endpoint. Pull request #21013
- Direct materialized view reads are authorized by the view's own SELECT grant, following the regular view access boundary. Pull request #20940
Why it matters
This week tightens correctness in places users hit directly: UNION ALL over stage files, CSV empty values, transaction visibility for attached tables, and materialized view access. Query execution also gets cheaper work to do, with segment zone maps, TopN pruning across union branches, and better aggregate and join handling. The admin surface grows with cache statistics and on-demand flamegraph endpoints.
Changelog entry
- Add a snapshot-level segment zone map for fuse tables, built by recluster. Pull request #21021
- Fix data loss in UNION ALL when a branch reads stage files. Pull request #21011
- Support runtime TopN pruning across UNION ALL. Pull request #20967
- Unify recluster under OPTIMIZE TABLE, keeping ALTER spellings as aliases. Pull request #20979
- Control Python UDF HTTP(S) egress with network rules and external access integrations. Pull request #20898
- Publish snapshot hints only after transaction commit. Pull request #20827
- Preserve CSV empty values and correct quote styles on load and output. Pull request #20946
- Allow creating a materialized view from a source table in a different database. Pull request #20906
- Expose node-local cache statistics on the admin API. Pull request #21013
- Prune runtime TopN by the first of several sort keys. Pull request #20964
- Remove experimental privilege check settings; connection and sequence authorization is now always enforced. Pull request #20933
- Infer string statistics truncation by character count in fuse tables. Pull request #21015
This week: segment zone maps for fuse tables, TopN pruning across UNION ALL, recluster unified under OPTIMIZE TABLE, UNION ALL over stage files fixed, CSV empty values preserved, and snapshot hints published only after commit.
This week in Databend: fuse tables gained a segment zone map built by recluster so segments can be pruned before reading; runtime TopN pruning now reaches UNION ALL branches; ordinary-table and materialized-view reclustering are unified under OPTIMIZE TABLE. Fixes include data loss in UNION ALL when a branch reads stage files, CSV empty string and binary values, and snapshot hints being published before an explicit transaction commits. Materialized views can now be created from a source table in a different database, direct MV reads use the view's own SELECT grant, Python UDF egress is controlled through network rules and external access integrations, and the admin API exposes node-local cache statistics.
Week of October 26, 2026
What shipped
- Functions, grouping and aggregates now evaluate on encoded dictionary columns when
enable_encoded_columnsis set, avoiding per-row decoding. Pull request #20873 - Float-to-decimal casts and decimal
quantile_contare now exact, so values like 415210.34 cast to DECIMAL no longer come back with extra digits. Pull request #20897 - Decimal arithmetic, casts and rounding were made exact near precision and storage limits and now raise errors instead of panicking on integer overflow. Pull request #20848
- Join runtime filters are no longer applied below LIMIT, windows, scalar-subquery checks or other row-sensitive expressions, where removing rows could change results. Pull request #20805
- Vector index storage was reworked with optional FP16 refine data, plus REFRESH and VACUUM support for vector indexes. Pull request #20832
- Python script UDF workers are sandboxed and script UDF resources bounded, so user code no longer inherits node environment credentials or files. Pull request #20830
- Thread-level hash shuffle memory is now bounded independently of cluster size. Pull request #20778
- Runtime bloom filters are folded to the target false-positive rate after build, so filters stay correctly sized when build keys repeat. Pull request #20869
- CSV ESCAPE is now load-only, so quoting CSV output ignores the input escape setting and keeps backslashes literal. Pull request #20863
- System.users and system.queries access was restricted and credentials are redacted in query history, logs, diagnostics and UDF metadata. Pull request #20833
Why it matters
This week tightened a broad set of correctness edges: decimal casts and arithmetic, integer column loads, year-one timestamp bounds, CSV and TEXT delimiter handling, and CSV output escaping. Query execution also got more predictable, with bounded shuffle memory, safer runtime filter placement, deduplicated segment decoding in row fetch and dictionary-encoded evaluation. Vector indexes gained storage changes plus REFRESH and VACUUM, and Python UDFs now run sandboxed with bounded resources.
Changelog entry
- Evaluate functions, grouping and aggregates on encoded dictionary columns. Pull request #20873
- Make float-to-decimal casts and decimal
quantile_contexact. Pull request #20897 - Make decimal arithmetic, casts and rounding exact and report overflow instead of panicking. Pull request #20848
- Block runtime filters across row-sensitive probe paths such as LIMIT and windows. Pull request #20805
- Rework vector index storage, add FP16 refine data, and support REFRESH and VACUUM. Pull request #20832
- Sandbox Python UDF workers and bound script UDF resources. Pull request #20830
- Bound hash shuffle memory independent of cluster size. Pull request #20778
- Fold runtime bloom filters to the target false-positive rate after build. Pull request #20869
- Treat CSV ESCAPE as load-only so CSV output quoting ignores it. Pull request #20863
- Decode each segment once in row fetch. Pull request #20894
- Preserve year-one timestamp boundaries and text round trips. Pull request #20853
- Parse non-integer text into integer columns exactly. Pull request #20851
This week: exact float-to-decimal casts, exact decimal arithmetic and rounding, dictionary-encoded function evaluation, balanced hash shuffle memory, safer runtime filter placement, vector index REFRESH and VACUUM, and sandboxed Python UDFs.
This week's work focused on correctness and predictability. Float-to-decimal casts and decimal arithmetic, casts and rounding are now exact near precision limits and raise errors instead of panicking. Numeric text loaded into integer columns is parsed exactly, and timestamp boundaries and text round trips were fixed. On the execution side, functions, grouping and aggregates can evaluate on encoded dictionary columns, thread-level hash shuffle memory is bounded regardless of cluster size, row fetch decodes each segment once, and runtime filters are no longer pushed below row-sensitive paths like LIMIT and windows. Vector indexes gained a new storage format with optional FP16 refine data plus REFRESH and VACUUM, and Python UDF workers are now sandboxed.
Week of October 19, 2026
What shipped
- Remote UDF server access can now be managed with SQL integrations, including network rules and USAGE authorization. Pull request #20787
- Database defaults and table-level S3 storage-class overrides were added for non-temporary external FUSE tables. Pull request #20689
- S3 locations without a region now detect the region through the AWS_REGION regional endpoint. Pull request #20815
- A
min_scalefunction for decimals was added, returning the fewest fractional digits that represent a value exactly. Pull request #20701 - Scalar Python scripts now run in isolated bounded workers so concurrent SQL does not share interpreter state. Pull request #20808
- Time_slice with constant slice arguments no longer rebuilds its slice spec on every row. Pull request #20727
- The optimizer no longer rewrites expression-key outer joins into anti joins when that would drop rows incorrectly. Pull request #20804
- REPLACE INTO now detects duplicated keys before pruning, so duplicate on-conflict keys are rejected. Pull request #20799
- Single-key hash shuffle computes partition ids directly instead of going through the expression evaluator. Pull request #20812
- Embedded meta-service code is generated once instead of in every crate, shortening the clean-build path. Pull request #20814
Why it matters
This week adds SQL management for remote UDF access and more control over S3 storage classes for external tables, alongside several correctness fixes for REPLACE INTO, the optimizer and Python UDF isolation. Users also get faster time_slice and hash shuffle paths and a shorter clean build.
Changelog entry
- Add SQL integrations to manage remote UDF server access with network rules and USAGE authorization. Pull request #20787
- Add database defaults and table-level S3 storage-class overrides for non-temporary external FUSE tables. Pull request #20689
- Detect S3 region via the AWS_REGION regional endpoint when a location has no region. Pull request #20815
- Add
min_scalefor decimals. Pull request #20701 - Isolate scalar Python UDF scripts with bounded workers. Pull request #20808
- Optimize
time_slicewith constant slice arguments. Pull request #20727 - Avoid incorrect anti joins for expression keys in the optimizer. Pull request #20804
- Detect duplicated REPLACE INTO keys before pruning. Pull request #20799
- Accelerate single-key hash shuffle partition id computation. Pull request #20812
- Generate embedded meta-service code once in databend-common-meta-store. Pull request #20814
- Keep float DEFAULT values exact across SQL text by rounding decimal-to-float conversion once. Pull request #20779
- Reclaim metadata of dropped tables with retired engines during VACUUM. Pull request #20797
This week in Databend: remote UDF access managed with SQL integrations, S3 storage-class overrides for external tables, S3 region detection via AWS_REGION, a new min_scale for decimals, and fixes for REPLACE INTO duplicate keys and expression-key anti joins.
This week in Databend: remote UDF server access can be managed with SQL integrations, including network rules and USAGE authorization. S3 storage classes now support database defaults and table-level overrides for external tables, and locations without a region can detect it via the AWS_REGION regional endpoint. A min_scale function was added for decimals. Fixes include REPLACE INTO detecting duplicated keys before pruning, the optimizer avoiding incorrect anti joins for expression keys, and isolated bounded workers for scalar Python UDFs. time_slice and single-key hash shuffle were also made faster.
Week of October 12, 2026
What shipped
- Added experimental zero-copy CREATE TABLE... CLONE for managed FUSE tables in the same tenant and catalog, including across databases, behind an experimental setting. Pull request #20454
- Added ALTER TABLE MATERIALIZE TTL to synchronously clean up expired rows in persistent Fuse tables through the existing DELETE mutation pipeline. Pull request #20597
- Added
send_notificationas a SQL entry point for sending a notification through an existing notification integration. Pull request #20656 - ATTACH TABLE now requires the ATTACH TABLE privilege in addition to CREATE; ordinary table creation is unchanged. Pull request #20683
- Fixed Iceberg reads for files whose physical schema needs name mapping, such as decimal stored as FIXED_LEN_BYTE_ARRAY, which could fail with a Parquet decode error. Pull request #20594
- Decimal modulo now evaluates exactly instead of casting through Float64. Pull request #20693
- Fixed view table references resolving to an outer CTE that shares the same name instead of the base table. Pull request #20655
- Bounded memory when restoring a spilled window partition instead of reading back and sorting the whole partition at once. Pull request #20650
- VACUUM TEMPORARY FILES now vacuums expired spill directories and list manifests concurrently with adaptive concurrency instead of one at a time. Pull request #20647
- Fixed transaction commit retry leaving insert statistics behind after a concurrent write. Pull request #20719
Why it matters
This week brings new capabilities people can use directly: zero-copy table clone, synchronously materializing row-level TTL through DELETE, and a SQL call to send notifications. It also tightens correctness and privileges across Iceberg reads, decimal modulo, view name resolution, and ATTACH TABLE, while reducing memory growth in window restore and speeding up temporary-file vacuum.
Changelog entry
- Add experimental zero-copy CREATE TABLE... CLONE for managed FUSE tables, including across databases. Pull request #20454
- Add ALTER TABLE MATERIALIZE TTL to clean up expired rows via the DELETE mutation pipeline. Pull request #20597
- Add
send_notificationSQL entry point for notification integrations. Pull request #20656 - Require ATTACH TABLE privilege in addition to CREATE for attaching tables. Pull request #20683
- Fix Iceberg reads using name mapping and file physical schema. Pull request #20594
- Evaluate decimal modulo exactly instead of through Float64. Pull request #20693
- Isolate view name scope from outer CTEs with the same name. Pull request #20655
- Bound memory when restoring a spilled window partition. Pull request #20650
- Vacuum spill directories concurrently in VACUUM TEMPORARY FILES. Pull request #20647
- Merge transaction statistics on commit retry. Pull request #20719
- Advance stream offsets when no-op DML skips commit. Pull request #20671
- Skip unreadable tables during database-wide table listing. Pull request #20663
This week in Databend: experimental zero-copy CREATE TABLE... CLONE, ALTER TABLE MATERIALIZE TTL, send_notification SQL, ATTACH TABLE privilege, Iceberg name mapping fix, exact decimal modulo, bounded window restore memory, faster VACUUM TEMPORARY FILES.
This week in Databend: experimental zero-copy CREATE TABLE... CLONE for managed FUSE tables across databases; ALTER TABLE MATERIALIZE TTL to synchronously clean up expired rows through the DELETE mutation pipeline; send_notification for delivery through an existing notification integration; and a required ATTACH TABLE privilege alongside CREATE. Fixes include Iceberg reads with name mapping and file physical schemas, exact decimal modulo instead of Float64, view names no longer resolving to an outer CTE of the same name, bounded memory when restoring spilled window partitions, and transaction statistics merged on commit retry. VACUUM TEMPORARY FILES now processes expired spill directories concurrently.
Week of October 5, 2026
What shipped
- The nightly release adds horizontal recluster and inverted-index multiway merge, applies hash write layout to replace, insert all and merge, and supports DROP PARTITION KEY. Release
- Append write parallelism now increases after block and layout preparation, which improves Fuse serialization and write parallelism when upstream has few streams. Pull request #20621
- A rank limit pushed down above an aggregate now follows the ORDER BY key order instead of the aggregate grouping order. Pull request #20643
- Static value-statistics TopN pruning was removed because it could drop blocks containing top-N rows under ORDER BY with LIMIT. Pull request #20619
- Context-dependent functions like
current_database,current_user, getvariable,last_query_idand timezone are now rejected in persisted expressions instead of being folded into literals. Pull request #20595 - Logical optimization was decoupled from physical planning, separating logical semantics from execution-stage and CBO work. Pull request #20604
- The final sort run left in the buffer is now spilled under memory pressure instead of being merged entirely in memory. Pull request #20624
- Ordered aggregates under ROLLUP, CUBE and GROUPING SETS now sort using original grouping-column values rather than the dummy NULLs introduced by AggregateExpand. Pull request #20614
- Hash initialization now covers singleton group keys, fixing duplicate groups such as GROUP BY NULL, CAST(7 AS INT) when input arrived in multiple blocks. Pull request #20616
- Python UDF initialization no longer holds the global venv cache write lock while occupying query runtime workers, avoiding worker starvation. Pull request #20613
Why it matters
This week fixes several correctness issues that could quietly return wrong results, including dropped top-N rows in ORDER BY with LIMIT, wrong ordering in grouping sets, and duplicate groups for constant keys. It also adds storage capabilities such as DROP PARTITION KEY and horizontal recluster merge, while reducing metadata overhead for frequent segment compaction. Together these changes make queries more reliable and write-heavy tables cheaper to maintain.
Changelog entry
- Release v1.2.952-nightly: horizontal recluster and inverted-index multiway merge, hash write layout for replace, insert all and merge, DROP PARTITION KEY support. Release
- COMPACT SEGMENT LIMIT n now selects the newest input window in snapshot order before reading segment metadata. Pull request #20579
- Fuse append write parallelism resized after block and layout preparation for upstreams with few streams. Pull request #20621
- ALTER TABLE... DROP PARTITION KEY is supported for FUSE tables without rewriting existing data. Pull request #20638
- Rank limit pushdown follows ORDER BY key order when pre-filtering input rows above an aggregate. Pull request #20643
- Removed static value-statistics Top-N pruning that could drop blocks containing top-N rows. Pull request #20619
- Context functions such as
current_database,current_userand timezone are rejected in persisted expressions. Pull request #20595 - Hash write layout applied to REPLACE INTO, INSERT ALL / INSERT FIRST and MERGE INTO on tables using
write_distribution_mode= 'hash'. Pull request #20602 - Logical optimization decoupled from physical planning in the query frontend. Pull request #20604
- Final sort run spills under memory pressure instead of merging entirely in memory. Pull request #20624
- Ordered aggregates in ROLLUP, CUBE and GROUPING SETS sort using original grouping-column values. Pull request #20614
- Singleton group keys now initialize hashes, fixing duplicate groups for keys like NULL and a constant. Pull request #20616
Tonight's build: horizontal recluster and inverted-index multiway merge, hash write layout for replace/insert all/merge, and DROP PARTITION KEY. Fixes landed for top-N pruning, rank limit ordering, grouping sets, singleton group keys, and Python UDF worker starvation.
This week's work covers storage and query correctness. The storage side adds horizontal recluster and inverted-index multiway merge, applies the hash write layout to REPLACE INTO, INSERT ALL and MERGE INTO, supports ALTER TABLE DROP PARTITION KEY for FUSE tables, and reduces metadata overhead when compacting recent segments on write-heavy tables. The query side fixes results that could be wrong: static value-statistics TopN pruning no longer drops top-N blocks, rank limit pushdown follows the ORDER BY key order, ordered aggregates in ROLLUP, CUBE and GROUPING SETS use original grouping values, singleton group keys hash correctly, and the final sort run spills under memory pressure. Context functions are rejected in persisted expressions, scalar number formats are cached per batch, and Pyth
Week of September 28, 2026
What shipped
- Released v1.2.951-nightly with column scope validation in the planner, distributed data rewriting for ALTER TABLE MODIFY COLUMN, and Azure Blob presigning with user delegation SAS. Release
- ALTER TABLE MODIFY COLUMN now correctly distributes data rewrite across nodes instead of concentrating work on a single node. Pull request #20593
- Planner now validates column scope after each optimizer pass to catch a recurring class of bugs earlier with clearer error messages. Pull request #20536
- Iceberg tables on Azure (abfs/abfss) can now be read after fixing file IO construction. Pull request #20590
- PRESIGN on Azure Blob internal stages now works with Azure Workload Identity authentication. Pull request #20600
- Query planner no longer incorrectly pushes rank limit aggregates below joins. Pull request #20599
- Scalar aggregates are now kept out of inner and cross joins during eager aggregation. Pull request #20592
- String date arithmetic functions now preserve the time component when adding or subtracting hours, minutes, or seconds. Pull request #20585
- Parser now accepts and ignores LIMIT in VACUUM DROP TABLE for backward compatibility. Pull request #20586
- CREATE TASK and ALTER TASK now parse syntax errors inside EXECUTE IMMEDIATE script bodies. Pull request #20466
Why it matters
This week addresses planner correctness issues that cause incorrect query results or execution errors, improves data rewrite performance for schema changes, and extends Azure storage support. The column scope validation catches a recurring class of planner bugs earlier with better diagnostics.
Changelog entry
- V1.2.951-nightly: validate column scope of plan after every optimizer, distribute data rewrite of ALTER TABLE MODIFY COLUMN, presign azblob internal stage with user delegation SAS Release
- ALTER TABLE MODIFY COLUMN rewrite now places DistributedInsertSelect correctly to distribute work across all nodes Pull request #20593
- Planner validates column scope after each optimizer to catch field reference bugs earlier Pull request #20536
- Iceberg catalog can now load tables on Azure abfs/abfss schemes Pull request #20590
- PRESIGN operation on Azure Blob internal stages now works with Azure Workload Identity Pull request #20600
- RulePushDownRankLimitAggregate no longer places rank limit below joins Pull request #20599
- RuleEagerAggregation no longer pushes scalar aggregates below inner or cross joins Pull request #20592
- Add_hours,
add_minutes,add_seconds,subtract_hours,subtract_minutes,subtract_secondsnow preserve time component for string arguments Pull request #20585 - VACUUM DROP TABLE parser accepts LIMIT clause for backward compatibility Pull request #20586
- CREATE TASK and ALTER TASK now parse syntax inside EXECUTE IMMEDIATE script bodies Pull request #20466
- Lateral correlation keys with NULL values now match correctly Pull request #20583
- CTAS staging tables are protected from being collected by vacuum during execution Pull request #20581
V1.2.951-nightly: column scope validation in planner, distributed ALTER TABLE MODIFY COLUMN rewrites, Azure Blob presigning, Iceberg on Azure support, and multiple query optimizer fixes.
V1.2.951-nightly ships this week with improvements to query correctness and Azure support. Planner now validates column scope after each optimizer pass to catch bugs earlier. ALTER TABLE MODIFY COLUMN rewrites now distribute work across nodes. Iceberg tables on Azure and PRESIGN with Azure Workload Identity are now supported. Multiple query optimizer fixes address scalar aggregates and rank limit pushdown issues.
Week of September 21, 2026
What shipped
- Release v1.2.949-nightly with CURRENT_TENANT_ID() context function, distributed query leak timeout configuration, and lineage capture for materialized views. Release
- Tuple IN now supports multi-column subqueries with row-comparison semantics for comparing multiple columns against subquery results. Pull request #20570
- Float zero and NaN values are now canonicalized in hashes and equality keys to prevent mismatches in Bloom indexes, DISTINCT, and hash joins. Pull request #20547
- Webhook notifications now support WEBHOOK_BODY_TEMPLATE to wrap messages in caller-defined JSON body for Feishu, Slack, and DingTalk style bots. Pull request #20539
- Row-level TTL DDL and metadata support added for writable persistent FUSE tables. Pull request #20496
- Table locks are now released before ANALYZE and statistics regeneration to prevent blocking concurrent maintenance operations on large tables. Pull request #20551
- Delta Lake table engine and its dependencies have been removed. Pull request #20558
- Experimental virtual column support is now enabled by default for tables where virtual column option is set. Pull request #20566
- Meta gRPC command-line clients now support TLS with --grpc-tls-ca-cert and --grpc-tls-domain-name flags. Pull request #20555
- Three-valued logic fixes in equivalence folding and LIKE operations on constant operands prevent silent wrong results. Pull request #20545
Why it matters
This week delivers critical correctness fixes for float semantics, query correlation, and three-valued logic that prevent silent wrong results. Feature additions include row-level TTL, webhook templating, and tuple IN with multi-column subqueries. Infrastructure improvements like virtual column defaults and TLS support enhance usability and security.
Changelog entry
- Feat(query): add CURRENT_TENANT_ID() context function Release
- Fix(query): make distributed query leak timeout configurable Release
- Feat(query): capture lineage for materialized views Release
- Feat(query): support tuple IN with multi-column subqueries Pull request #20570
- Chore(query):
enable_experimental_virtual_columndefault value is now true Pull request #20566 - Fix(query): canonicalize float zero and NaN in hashes and equality keys Pull request #20547
- Feat(query): support WEBHOOK_BODY_TEMPLATE for notification Pull request #20539
- Feat(query): add row-level TTL DDL and metadata support Pull request #20496
- Fix(query): release table locks before analyze and rebase statistics Pull request #20551
- Fix(query): match nullable scalar correlation keys Pull request #20408
- Fix(query): three-valued logic in equivalence folding and LIKE on constant operands Pull request #20545
- Feat(meta): support gRPC TLS in command-line clients Pull request #20555
- Refactor(query): remove delta lake table engine and its dependencies Pull request #20558
V1.2.949-nightly ships tuple IN multi-column subqueries, float canonicalization in hashes, row-level TTL, and webhook body templates. Float zero and NaN fixes prevent silent mismatches in joins and aggregates.
Databend v1.2.949-nightly includes critical correctness fixes and new capabilities. Float zero and NaN values are now properly canonicalized in hash operations, preventing silent mismatches in Bloom indexes and hash joins. Tuple IN now supports multi-column subqueries with SQL row-comparison semantics. Row-level TTL provides automatic data lifecycle management for FUSE tables. Webhook notifications gain templating support for integration with Feishu, Slack, and DingTalk. Meta clients now support gRPC TLS endpoints. Infrastructure improvements include virtual column defaults and fixes to correlation key matching.
Week of September 14, 2026
What shipped
- V1.2.947-nightly released with support for indexes on materialized views, inverted index bundles referencing sibling objects, and inverted index writing during block construction. Release
- Inverted indexes now stream large components out of memory during block construction instead of assembling in memory. Pull request #20538
- Inverted index segments can be merged without re-tokenizing, enabling recluster to carry inverted indexes efficiently. Pull request #20546
- Materialized views now support inverted, NGRAM, vector, and spatial indexes with synchronous index creation. Pull request #20361
- Fixed interval aggregate keys and nested column statistics through type-aware dispatch paths. Pull request #20544
- Window RANGE INTERVAL frames now correctly use the session time zone instead of always using UTC. Pull request #20533
- Dynamic tables are now supported as an independent Fuse-backed engine for multi-table derived results with explicit REFRESH. Pull request #20445
- Sleep function moved to async pipeline using Tokio timers, removing the three-second duration limit. Pull request #20493
- Block metadata is reshuffled after pruning to improve read parallelism for distributed Fuse scans. Pull request #20400
- Inverted index storage refactored to use Tantivy with quickwit feature for better performance and scalability. Pull request #20513
Why it matters
The week focused heavily on inverted index improvements across storage and query layers, enabling indexes on materialized views and more efficient index management during writes and merges. Several query execution fixes ensure correctness in window functions, aggregate operations, and materialized view rewrites. New capabilities like dynamic tables and async sleep expand functionality while storage optimizations like block metadata reshuffling improve distributed query performance.
Changelog entry
- Support indexes on materialized views (inverted, NGRAM, vector, spatial) Release
- Stream inverted index components during block construction instead of buffering in memory Pull request #20538
- Merge inverted index segments without re-tokenizing Pull request #20546
- Fix interval aggregate keys and nested column statistics in type dispatch Pull request #20544
- Fix window RANGE INTERVAL frames to use session time zone Pull request #20533
- Add dynamic table support with explicit REFRESH on Fuse engine Pull request #20445
- Make sleep asynchronous and remove duration limit Pull request #20493
- Reshuffle block metadata after pruning to improve read parallelism Pull request #20400
- Refactor inverted index storage to use Tantivy with quickwit Pull request #20513
- Expose aggregate function documentation in system.functions Pull request #20522
V1.2.947-nightly ships indexes on materialized views, streaming inverted index construction, and efficient index merging without re-tokenizing. Window functions now respect session timezones.
V1.2.947-nightly brings substantial improvements to indexing infrastructure. Inverted indexes now stream construction out-of-memory, merge without re-tokenizing, and work on materialized views. Query fixes ensure correct behavior in window RANGE INTERVAL frames and nested column statistics. Storage optimizations reshuffle block metadata post-pruning for better distributed read parallelism. Dynamic tables now supported as Fuse-backed multi-table derived results.