Release 4.1.5
New Features
Lakehouse
- Support static partition overwrite for Hive tables. (#68181)
AI and Search
- Support
ik_smartandik_max_wordtokenizers in custom inverted-index analyzers. (#68550) - Add a
normsindex property and a BE configuration for skipping norms on VARIANT paths. (#68140) - Support dedicated embedding properties in AI RESOURCE. (#68384)
Cloud and Job Management
- Allow Routine Load jobs and asynchronous materialized views to bind explicitly to a compute group through the
compute_groupproperty. (#67010) - Add dry-run mode for FE-to-MetaService and BE-to-MetaService RPC rate limiting. (#67421, #67240)
Improvements
Lakehouse and Cloud
- Batch Hive Metastore partition access to reduce metadata requests. (#68197)
- Support lazy HDFS file opening for Iceberg and propagate delete-file sizes. (#67842)
- Reduce object allocations and reuse boxed IDs in cloud tablet indexes; release scheduling indexes after balancing. (#67278, #67248, #67290)
- Optimize deletion of delete bitmap keys during rowset recycling. (#67854, #67936)
- Register the watershed transaction ID only once when a BE enters the decommissioning state. (#67632)
Ingestion and Storage
- Improve write performance through better backpressure control. (#67728)
- Skip redundant
createLocationoperations in the Group Commit Stream Load sink. (#63685) - Adjust CDC request timeout and snapshot split batch defaults. (#67684)
- Avoid copying segment key bounds during primary-key lookups and release unused storage-path memory earlier. (#67698, #67956)
Query and Execution
- Optimize the join orientation for
MERGE INTOby placing the target table on the probe side. (#67279) - Improve mark-join slot inference to eliminate redundant mark joins. (#67280)
- Add a dictionary fast path for day and week arithmetic. (#67233)
- Optimize
powfor squares while preserving exact integer results. (#68443) - Avoid redundant partition version requests during SQL cache validation. (#67415)
- Support row-ID fetch in FileScannerV2. (#67922)
Operations and Diagnostics
- Include usernames in HTTP request logs for auditing. (#67319)
- Improve audit logs for S3 streaming insert jobs. (#67756)
- Reduce duplicate query cancellation logs and avoid per-file-descriptor
statcalls when collecting process file descriptor counts. (#67548, #68046)
Bug Fixes
Query Optimization and Correctness
- Fix join amplification caused by WinMagic subquery rewrites. (#67288)
- Retain sliding-window rows until they can be safely evicted and respect window frames when simplifying window functions. (#67329, #67743)
- Preserve nullability in DISTINCT window rewrites and cast comparisons, and preserve session guards during common expression extraction. (#67721, #67843, #67863)
- Preserve weighted averages when eliminating GROUP BY and correct participation checks in aggregate inference. (#67832, #68175)
- Normalize projected COUNT slots before NULL-safety checks. (#68068)
- Prevent runtime filters from being pushed below Repeat when the target slot is absent from any grouping set. (#67992)
- Reject storage-level
MINandMAXpushdown through unsafe casts. (#67980) - Fix partial TopN pushdown through joins, preserve required slots during TopN lazy materialization, and disable TopN lazy materialization for tables without light schema change. (#68235, #68072, #67928)
- Preserve UNION constant rows across rewrites and retain Generate child outputs required by subqueries. (#68172, #68173)
- Resolve correlated qualified columns before dereference expressions. (#68062)
- Hide internal HAVING helper columns from query output. (#68075)
- Preserve duplicate output column positions in table-valued functions. (#67829)
- Align constant folding and interval folding with BE execution. (#68071, #68174)
- Track user variables in the SQL cache and apply
sql_select_limitto materialized CTE results. (#68069, #68077) - Propagate constants out of one-row relations to enable partition pruning. (#67400)
- Improve error messages for unsupported subqueries. (#67693)
Functions and Data Types
- Fix execution of
topn_arrayandtopn_weightedon BOOLEAN inputs while preserving BOOLEAN array result types. (#68409) - Fix candidate loss in
topn,topn_array, andtopn_weightedwhenspace_expand_rateis zero. Non-positive values now allow unlimited intermediate candidate retention;top_numstill limits the final result. (#68545) - Return NULL from
TRY_CASTon arithmetic overflow. (#67985) - Fix overflow, batch integer output, and NULL-argument row handling in
array_range. (#67689, #68644) - Fix nested
array_maplambda captures, appending to constant NULL arrays, and array functions operating on outer-NULL containers with hidden nested data. (#68471, #68442, #68696) - Preserve the leading NULLs of each row in
array_cum_sum. (#68605) - Fix Decimal rounding with zero decimal places and rounding overflow at scale boundaries. (#68412, #68415)
- Fix
LIKEmatches with extra trailing characters and avoid using NGram Bloom Filter indexes when patterns may contain escapes. (#68159, #68319) - Fix empty constant regular expression patterns, UTF-8 splitting with an empty regular expression, and extended regular expression fallback for non-constant patterns. (#68179, #68417, #68591)
- Fix argument-count validation for
json_set,json_insert, andjson_replace, and fix constant nullable JSON path evaluation. (#67914, #68525) - Prevent JSON text from being truncated at
U+0000inside a string and preserve NUL bytes in count-by-enum keys. (#68735, #68419) - Preserve NULL propagation in date floor functions and account for microseconds in week floor and ceil operations. (#68423, #68416)
- Fix range checks for oversized Unix timestamps and correct the aliases of
next_dayandprevious_day. (#68364, #68542) - Fix odd-byte IPv6 truncation and zero-address IPv4 CIDR handling. (#68414, #68420)
- Fix NULL handling in
parse_data_sizeandMAKE_SET. (#68413, #68411) - Fix BIGINT overflow during base conversion in
conv. (#68424) - Preserve all samples when merging percentile states, align NULL ordering in complex aggregates, and restore BOOLEAN support in
linear_histogram. (#68475, #68422, #68676) - Fix crashes when reading zero-length serialized BITMAP, HLL, or QuantileState cells. (#68497)
Lakehouse Reads and External Metadata
- Fix historical Iceberg scans after schema evolution, V2 reads across nested schema evolution, and schema binding for historical scans. (#67479, #67690, #68568)
- Support fractional timestamps correctly in Iceberg time travel. (#67704)
- Fix planning failures for Iceberg VARIANT subpaths and preserve nullability in schema metadata. (#68121, #67856)
- Report errors for missing Iceberg snapshot files and invalid name mappings instead of returning incorrect data. (#68143, #68003)
- Fix equality-delete key matching after schema type promotion and preserve file partition specifications when tables evolve to an unpartitioned layout. (#68383, #68481)
- Run Iceberg execute actions in the corresponding catalog authentication context. (#67695)
- Preserve Paimon CAST predicate semantics, estimate row counts from snapshot metadata, and invalidate the SDK cache on metadata refresh. (#67933, #68155, #68238)
- Scope Hive file cache entries by table and fix name and row-count cache invalidation after external metadata changes. (#68575, #67417, #68196)
- Release Iceberg FileIO and Hudi fsView resources on cache eviction. (#66913)
- Align Parquet and ORC timestamp semantics and fix external binary and timestamp mappings and binary value ownership. (#68441, #68532, #68297)
- Preserve safe predicate ordering for Parquet VARIANT metadata pruning and enforce a Parquet metadata size limit. (#68144, #68047)
- Fix lost and duplicate rows when splitting CSV and JSON files using multi-character line delimiters. (#68600)
- Clamp HTTP range reads to the file size and keep S3 response streams usable when an error body exceeds the read buffer. (#67683, #68544)
- Fix BE access to AWS in EKS Pod Identity environments. (#67555)
- Select Lance vector indexes compatible with the requested distance metric and fix Lance JNI compatibility with glibc 2.17. (#67553, #67862)
Arrow Flight SQL and Client Protocols
- Prevent Arrow Flight connections from using the point-query short-circuit path or replaying MySQL SQL cache results. (#67557, #67556)
- Release Flight coordinators promptly after query completion and cancel queries when result streams close early. (#67558, #68630)
- Deduplicate parallel result endpoints by backend. (#68642)
- Validate Arrow result arrays before publishing batches and reject out-of-range timestamps. (#68596, #68604)
- Fix year-zero DATE conversion, preserve nested logical type metadata, and return analyzed query schemas and table type metadata. (#68649, #68614, #68631)
- Fix MySQL Connector/J cursor fetches hanging on empty results. (#68064)
Ingestion and Job Lifecycle
- Handle incomplete WAL records during replay and stop rejecting WAL data containing VARIANT columns as an unsupported file format. (#67420, #68242)
- Fix Group Commit routing for virtual compute groups. (#67590)
- Return transactional INSERT execution errors to clients. (#67925)
- Fix strict-load crashes when direct slot mappings are absent. (#67953)
- Use the streaming job creator's identity for CDC operations. (#67937)
- Preserve active export jobs and label mappings during history cleanup. (#67833)
- Fix
SET_VARsettings leaking into subsequent statements after INSERT audit logging. (#68108)
Materialized Views and Metadata
- Prevent snapshot reads from using current materialized views. (#67729)
- Fix compensation for invalid partition buckets in partitioned rollup rewrites. (#68067)
- Avoid unnecessary full refreshes of asynchronous materialized views when a base table adds a partition without an existing snapshot. (#68249)
- Preserve the original statement in asynchronous materialized view refresh tasks. (#68272)
- Restore rollup display state after metadata reload and keep rollup jobs waiting when aborting a conflicting transaction fails. (#67596, #68055)
- Skip dangling views when querying
information_schema.view_dependencyand fix quoting of view column names and comments in exported DDL. (#67377, #67398, #68076) - Treat invalid column statistics as UNKNOWN instead of failing the entire ANALYZE job, and fix null-pointer errors when querying a missing ANALYZE job ID. (#68061, #68493)
- Commit FE type state only after the transition completes. (#68325)
Storage and Compaction
- Treat unparseable or reversed zone map bounds as invalid, preserve every byte of STRING and VARCHAR bounds, and fix NaN handling for legacy FLOAT and DOUBLE zone maps. (#67528, #67550, #67998, #68102)
- Fix cumulative point advancement during parallel cumulative compaction and correct compaction thread accounting. (#67425, #67662)
- Keep the latest 10 versions unmerged during schema change and release exhausted segment contexts promptly during vertical compaction. (#67589, #67599)
- Classify cumulative compaction tasks by row count, avoid repeatedly compacting large rowsets, and include empty rowsets in approximate compaction scores. (#66938, #65601, #66656)
- Persist empty inverted-index files and stop writing orphan index files. (#68082)
- Preserve VARIANT subpath order and prevent integer
element_atindexes from being interpreted as subcolumn paths. (#68284, #68041) - Do not cache failures to load segment row counts in BetaRowset, allowing subsequent retries. (#68683)
- Fix concurrent access to the rowset map in the backend tablets scanner. (#68316)
File Cache and Cloud
- Keep File Cache monitoring off the LRU recorder lock and count evicted bytes only for blocks that were actually downloaded. (#67495, #68157)
- Unify File Cache TTL deadlines, restore TTL block types when an expired TTL is extended, and set TTL on cloud schema change output. (#68313, #68092, #67686)
- Preserve tablet IDs during synchronous File Cache writes. (#68347)
- Trigger periodic cloud checkpoints through edit log rolls. (#67422)
- Fix warm-up job scheduling starvation, release destinations on initialization failure, and restore destination locks after FE recovery. (#67643, #68107, #68105)
- Avoid conflicts when recycling transactions with the same label and return the existing rowset for concurrent commits. (#67478, #67660)
- Exclude stale rowsets from temporary cloud schema change tablets and exclude covered rowsets from compaction minimum timestamps. (#67383, #67751)
- Refresh metadata for continuously ingested tablets and repair tablet indexes missing
db_idduring transaction commit. (#68044, #68127) - Invalidate version caches on visible transaction commit retries. (#68650)
- Respect recycle types when deleting partial-update rowsets and preserve clone source mappings for deleted instances. (#68665, #68570)
- Fix packed-slice location lifetimes, guard rowset statistics synchronization with task context, and decode transaction IDs safely through Versionstamp. (#67973, #67964, #67954)
- Correct the FDB size limit configuration for delete bitmap V2 and fix lookup of prepared transactions by coordinator. (#67938, #68059)
Authentication and Authorization
- Unify
driver_urlvalidation across JDBC, Iceberg JDBC, and Paimon JDBC catalogs, including ALTER CATALOG operations. (#68164) - Mask sensitive configuration values in
SHOW FRONTEND CONFIG. (#67920) - Apply consistent checks to HTTP Basic and cookie requests on
/rest/v1. (#68635) - Treat only
root@'%'as the root identity inSET PASSWORDandALTER USER. (#68634) - Check the grantor's column privileges in GRANT and REVOKE, and reject privilege object names with more than three parts. (#68629, #68682)
- Restrict AI resource creation by user identity and modifications to AI resources created by root. (#68265, #67782)
Stability and Platform Compatibility
- Allocate a fresh StatementContext for each prepared-statement execution to prevent unbounded FE memory growth in long-lived prepared statements. (#67926)
- Fix ReadListener leaks when workers reject tasks and prevent concurrent historical profile loaders. (#67990, #67069)
- Fix runtime filter RPC callback reuse and memory release, and resolve an AutoReleaseClosure data race. (#67912, #67340)
- Fix bvar sampling access to freed thread-local objects, timer callback destruction races, and races between adaptive flush callbacks and thread-pool teardown. (#68045, #68523, #68326)
- Initialize the bthread context key before first use and avoid repeated peer connection failures. (#67722, #67647)
- Prevent BE crashes on malformed AI adapter responses and correctly extract final text from Responses API output. (#68333, #67795)
- Fix double-free errors during PHDR unwinding under ASAN and
getentropycrashes on glibc 2.17 under ASAN. (#68229, #67849) - Upgrade libunwind to 1.8.3 to fix aarch64 BE startup crashes on Linux systems with 64 KiB memory pages. (#68339)
- Fix dyld cache crashes with large BE binaries on macOS and stop background workers before exiting on startup failure. (#68218, #68653)
- Update dependencies including Thrift, AWS SDK, Nimbus, and gRPC, and remove unused LZ4 dependencies. (#67356, #67554, #67847, #68060, #67148, #68557)