Release date: December 15, 2025
Improvements
- Supports dumping plan node IDs in BE crash logs to speed up locating problematic operators. #66454
- Optimized scans on the system views in
information_schemato reduce the overhead. #66200 - Added two histogram metrics (
slow_lock_held_time_msandslow_lock_wait_time_ms) to provide better observability for slow lock scenarios and distinguish between long-held locks and high lock contention. #66027 - Optimized replica lock handling in tablet report and clone flows by switching the lock from database level to table level, reducing lock contention and improving scheduling efficiency. #61939
- Avoided outputting columns in BE storage, and pushed down predicate computation to BE storage. #60462
- Improved query profile accuracy when deploying scan ranges in background threads. #62223
- Improved profile accounting when deploying additional tasks, so CPU time is not repetitively counted. #62186
- Added more detailed error messages when a referenced partition does not exist, making failures easier to diagnose. #65674
- Made sample-type cardinality estimation more robust in corner cases to improve row-count estimates. #65599
- Added a partition filter when loading statistics to prevent INSERT OVERWRITE from reading stale partition statistics. #65578
- Splited pipeline CPU
execution_timemetrics into separate series for queries and loads, improving observability by workload type. #65535 - Supported
enable_statistic_collect_on_first_loadat table granularity for finer-grained control over statistics collection on the first load. #65463 - Renamed the S3-dependent unit test from
PocoClientTestto an S3-specific name to better reflect its dependency and intent. #65524
Bug Fixes
The following issues have been fixed:
- libhdfs crashes when StarRocks is started with an incompatible JDK. #65882
- Incorrect query results caused by
PartitionColumnMinMaxRewriteRule. #66356 - Rewrite issues due to the materialized view metadata not refreshed when resolving materialized views by AST keys. #66472
- The trim function crashes or produces wrong results when trimming specific Unicode whitespace characters. #66428, #66477
- Failures in load metadata and SQL execution that still referenced a deleted warehouse. #66436
- Wrong results when group execution Join is combined with window functions. #66441
- A possible FE null pointer in
resetDecommStatForSingleReplicaTabletUnlocked. #66034 - Missing Join runtime filter pushdown optimization in shared-data clusters for
LakeDataSource. #66354 - Parameters are inconsistent for runtime filter transmit options (timeouts, HTTP RPC limits, etc.) because they are not forwarded to receivers. #66393
- Automatic partition creation fails when partition values already exist. #66167
- Inaccurate scan statistics in audit logs when predicates have high selectivity. #66280
- Incorrect query results because non-deterministic functions are pushed below operators. #66323
- Exponential growth in the number of expressions caused by CASE WHEN. #66324
- Materialized view compensation bugs when the same table appears multiple times in a query with different partition predicates. #66369
- BE becomes unresponsive when using fork in subprocesses. #66334
- CVE-2025-66566 and CVE-2025-12183. #66453, #66362
- Errors caused by nested CTE reuse. #65800
- Issues due to the lack of validation on conflicting schema-change clauses. #66208
- Improper rowset GC behavior when rowset commit fails. #66301
- A potential use-after-free when counting down pipelines. #65940
- The
W``arehousefield is NULL ininformation_schema.loadsfor Stream Load. #66202 - Issues with materialized view creation when the referenced view has the same name as its base table. #66274
- The global dictionary is not updated correctly under some cases. #66194
- Incorrect query profile logging for queries forwarded from Follower nodes. #64395
- BE crash when caching SELECT results and reordering schema. #65850
- Shadow partitions are dropped when dropping partitions by expression. #66171
- DROP tasks run when a CLONE task exists for the same tablet. #65780
- Stability and observability issues because RocksDB log file options were not properly set. #66166
- Incorrect materialized view compensation that could produce NULL results. #66216
- BE reported as alive even after receiving
SIGSEGV. #66212 - Bugs in Iceberg scans. #65658
- Regression coverage and stability issues for Iceberg view SQL test cases. #66126
- Unexpected behavior because
set_collectoris invoked repetitively. #66199 - Ingestion failures when column-mode partial updates are used together with conditional updates. #66139
- Temporary partition value conflicts under concurrent transactions. #66025
- An Iceberg table cache bug where Guava LocalCache could retain stale entries even when
cache.size() == 0, causing refresh to be ineffective and queries to return outdated tables. #65917 - Incorrect format placeholder in
LargeInPredicateException, causing the actual number of LargeInPredicate occurrences to be incorrectly reported in the error message. #66152 - NullPointerException in
ConnectScheduler’stimeout checker when connectContext is null. #66136 - Crashes caused by unhandled exceptions thrown from threadpool tasks. #66114
- Data loss when pushing down DISTINCT LIMIT in certain plans. #66109
multi_distinct_countnot updatingdistinct_sizeafter the underlying hash set is converted to a two-level hash set, which could lead to incorrect distinct counts. #65916- A race condition when an exec group submits the next driver which could trigger
Check failed: !driver->is_in_blocked()and abort the BE process. #66099 - INSERT failures when running ALTER TABLE ADD COLUMN with a default value concurrently with INSERT, due to mismatched types for the newly added column’s default expression. #65968
- An issue where
MemoryScratchSinkOperatorcould remain inpending_finishafterRecordBatchQueuewas shut down when SparkSQL exited early, causing the pipeline to hang. #66041 - A core dump when reading Parquet files that contain empty row groups. #65928
- Recursive calls and potential stack overflow at high DOP because the event scheduler’s readiness check is complicated. #66016
- Asynchronous materialized view refresh skips updates when the Iceberg base table contains expired snapshots. #65969
- Potential issues in predicate reuse and rewrite because the optimizer relies solely on hashCode to distinguish differences in predicates. #65999
- In the refresh of an asynchronous materialized view with multi-level partitioned base tables, only the parent partition metadata was checked, while sub-partition updates were skipped. #65596
- Statistics collection issues where AVG(ARRAY_LENGTH(...)) could return NULL for empty result sets. #65788
- Runtime profile counters are not correctly updating or clearing their min/max values during incremental updates on both BE and FE. #65869
- Incorrect logic to obtain the image journal ID when creating a cluster snapshot to ensure the snapshot uses the correct log position. #65970
- Results are misreported when the cleanup fails due to incorrect status checking logic in file cleanup error handling. #65709
- A possible infinite loop in certain plans isVariable() in DictMappingOperator. #65743
- Failures and missing audit/profile data because ConnectContext is not passed into scan-range deployment threads. #63544
- A use-after-free issue in the local Primary Key index manager when the storage engine is stopped. #65534
- Statistics collection issues for INSERT OVERWRITE with dynamic overwrite. #65657
- Concurrency issues caused by coarse-grained locks in DiskAndTabletLoadReBalancer. #65557
- Slow locks cannot be detected and reported correctly for the lack of slow-lock detection for critical locks. #65559
- NullPointerException when replaying upsert transaction state after the target database has been dropped. #65595
- Stale statistics were used because outdated partition statistics are not dropped after statistics collection triggered by INSERT OVERWRITE. #65586
- Data race in partition ID allocation that could lead to ID conflicts under concurrency. #65608
- Missing tablet IDs when retrieving initial tablet metadata. #65550
- Incorrect record information for PREPARE/EXECUTE statements in audit and profile logs. #65448
- Potential crashes because the non–thread-safe has_output function is called from multiple threads. #65514
- MemTable finalize tasks cannot be properly tracked because the
memtable_finalize_task_totalcounter metric is lacking. #65548 - Query ID collisions in Arrow Flight, causing multiple queries no longer share the same query ID. #65558
- Lock conflicts for
TabletChecker.doCheck()with other operations. #65237 - Scan behavior is inconsistent between shared-data and shared-nothing clusters, causing query semantics to differ. #61100