StarRocks version 4.0
warning
降级说明
-
升级至 v4.0 后,请勿直接将集群降级至 v3.5.0 和 v3.5.1,否则会导致元数据不兼容和 FE Crash。您必须降级到 v3.5.2 或更高版本以避免出现此问题。
-
在将集群从 v4.0.2 降级到 v4.0.1、v4.0.0 以及 v3.5.2~v3.5.10 之前,请先执行以下语句:
SET GLOBAL enable_rewrite_simple_agg_to_meta_scan=false;重新升级至 v4.0.2及以上版本后,请执行以下语句:
SET GLOBAL enable_rewrite_simple_agg_to_meta_scan=true;
4.0.5
发布日期:2026 年 2 月 3 日
功能优化
- 将 Paimon 版本升级至 1.3.1。#67098
- 恢复 DP 统计信息估算中缺失的优化,减少冗余计算。#67852
- 改进 DP Join 重排序中的剪枝逻辑,更早跳 过代价高昂的候选执行计划。#67828
- 优化 JoinReorderDP 的分区枚举逻辑,减少对象分配,并新增原子数量上限(≤ 62)。#67643
- 优化 DP Join 重排序的剪枝逻辑,并在 BitSet 中增加检查以减少流式操作的开销。#67644
- 在 DP 统计信息估算过程中跳过谓词列的统计信息收集,以降低 CPU 开销。#67663
- 优化相关 Join 的行数估算,避免重复构建
Statistics对象。#67773 - 减少
Statistics.getUsedColumns中的内存分配。#67786 - 当仅更新行数时,避免冗余复制
Statistics映射。#67777 - 当查询中不存在聚合时,跳过聚合下推逻辑以减少开销。#67603
- 改进窗口函数中的 COUNT DISTINCT,新增对融合多 DISTINCT 聚合的支持,并优化 CTE 生成。#67453
- Trino 方言中支持
map_agg函数。#66673 - 在物理规划阶段支持批量获取 LakeTablet 位置信息,以减少存算分离集群中的 RPC 调用。#67325
- 在存算一体集群中为 Publish Version 事务新增线程池,以提升并发能力。#67797
- 优化 LocalMetastore 的锁粒度,将数据库级锁替换为表级锁。#67658
- 重构 MergeCommitTask 的生命周期管理,并新增任务取消支持。#67425
- 支持为自动化集群快照配置执行间隔。#67525
- 在 MemTrackerManager 中自动清理未使用的
mem_pool条目。#67347 - 在仓库空闲检查中忽略
information_schema查询。#67958 - 支持根据数据分布动态为 Iceberg 表写入启用全局 Shuffle。#67442
- 为 Connector Sink 模块新增 Profile 指标。#67761
- 改进 Profile 中加载(load)溢写指标的采集和展示,区分本地 I/O 与远端 I/O。#67527
- 将 Async-Profiler 的日志级别调整为 Error,避免重复打印警告日志。#67297
- 在 BE 关闭时通知 Starlet 向 StarMgr 上报 SHUTDOWN 状态。#67461
问题修复
已修复以下问题:
- 不支持包含连字符(
-)的合法简单路径。#67988 - 当聚合下推发生在包含 JSON 类型的分组键上时出现运行时错误。#68142
- JSON 路径重写规则错误地裁剪了分区谓词中引用的分区列。#67986
- 使用统计信息重写简单聚合时出现类型不匹配问题。#67829
- 分区 Join 中可能存在堆缓冲区溢出风险。#67435
- 在下推复杂表达式时引入了重复的
slot_ids。#67477 - 由于缺少前置条件检查,ExecutionDAG 中的 Fragment 连接可能出现除零错误。#67918
- 在单 BE 场景下,Fragment 并行准备可能导致潜在问题。#67798
- RawValuesSourceOperator 缺少
set_finished方法,导致算子异常终止。#67609 - 列聚合器中不支持 DECIMAL256 类型(精度 > 38)导致 BE 崩溃。#68134
- 存算分离集群在 DELETE 操作中未通过请求携带
schema_key,导致不支持 Fast Schema Evolution v2。#67456 - 存算分离集群在同步物化视图和传统 Schema 变更中不支持 Fast Schema Evolution v2。#67443
- 在 FE 降级且禁用文件打包时,Vacuum 可能误删文件。#67849
- MySQLReadListener 中优雅退出处理不正确。#67917
4.0.4
发布日期: 2026 年 1 月 16 日
功能优化
- 支持算子(Operator)和驱动(Driver)的并行 Prepare,以及单节点批量 Fragment 部署,以提升查询调度性能。#63956
- 对大分区表的
deltaRows计算引入惰性求值(Lazy Evaluation)机制,提升性能。#66381 - 优化 Flat JSON 处理逻辑,采用顺序迭代并改进路径派生方式。#66941 #66850
- 支持更早释放 Spill Operator 的内存,以降低 Group Execution 场景下的内存占用。#66669
- 优化逻辑以减少字符串比较开销。#66570
- 增强
GroupByCountDistinctDataSkewEliminateRule和SkewJoinOptimizeRule中的数据倾斜检测能力,支持基于直方图和 NULL 的策略。#66640 #67100 - 在 Chunk 中通过 Move 语义增强 Column 所有权管理,减少 Copy-On-Write 的开销。#66805
- 针对存算分离集群,新增 FE
TableSchemaService,并更新MetaScanNode,支持 Fast Schema Evolution v2 的 Schema 获取方式。#66142 #66970 - 支持多 Warehouse 的 Backend 资源统计及并行度(DOP)计算,提升资源隔离能力。#66632
- 支持通过 StarRocks 会话变量
connector_huge_file_size配置 Iceberg 的 Split 大小。#67044 QueryDumpDeserializer支持标签格式(Label-formatted)的统计信息。#66656- 新增 FE 配置项
lake_enable_fullvacuum(默认值:false),用于在存算分离集群中禁用 Full Vacuum。#63859 - 将 lz4 依赖升级至 v1.10.0。#67045
- 当行数为 0 时,为基于采样的基数估计增加回退 逻辑。#65599
- 验证
array_sort中 Lambda Comparator 的 Strict Weak Ordering 属性。#66951 - 优化外表(Delta / Hive / Hudi / Iceberg)元数据获取失败时的错误信息,展示根因。#66916
- 支持在查询超时时 Dump Pipeline 状态,并在 FE 中以
TIMEOUT状态取消查询。#66540 - SQL 黑名单错误信息中显示命中的规则索引。#66618
- 在
EXPLAIN输出中为列统计信息添加标签。#65899 - 过滤正常查询结束(如达到 LIMIT)时的 “cancel fragment” 日志。#66506
- 在 Warehouse 挂起时,减少 Backend 心跳失败日志。#66733
ALTER STORAGE VOLUME语法支持IF EXISTS。#66691
问题修复
修复了以下问题:
- 在 Low Cardinality 优化下,由于缺少
withLocalShuffle,导致DISTINCT和GROUP BY结果错误。#66768 - 带 Lambda 表达式的 JSON v2 函数在重写阶段报错。#66550
- 相关子查询中 Null-aware Left Anti Join 错误地应用了 Partition Join。#67038
- Meta Scan 重写规则中的行数计算错误。#66852
- 基于统计信息重写 Meta Scan 时,Union Node 的 Nullable 属性不一致。#67051
- 当 Ranking 窗口函数缺少
PARTITION BY和ORDER BY时,优化逻辑导致 BE 崩溃。#67094 - Group Execution Join 与窗口函数组合使用时可能产生错误结果。#66441
- 特定过滤条件下,
PartitionColumnMinMaxRewriteRule产生错误结果。#66356 - 聚合后 Union 操作中 Nullable 属性推导错误。#65429
percentile_approx_weighted在处理压缩参数时发生崩溃。#64838- 大字符串编码场景下 Spill 导致崩溃。#61495
- 下推本地 TopN 时,多次调用
set_collector触发崩溃。#66199 - LowCardinality 重写逻辑中的依赖推导错误。#66795
- Rowset 提交失败时发生 Rowset ID 泄漏。#66301
- Metacache 锁竞争问题。#66637
- 在使用列模式部分更新并带条件更新时,导入失败。#66139
- ALTER 操作期间 Tablet 被删除导致并发导入失败。#65396
- RocksDB 迭代超时导致 Tablet 元数据加载失败。#65146
- 存算分离集群中,建表和 Schema Change 时压缩配置未生效。#65673
- 升级过程中 Delete Vector 的 CRC32 兼容性问题。#65442
- Clone 任务失败后文件清理阶段的状态检查逻辑错误。#65709
INSERT OVERWRITE后统计信息收集逻辑异常。#65327 #65298 #65225- FE 重启后外键约束丢失。#66474
- 删除 Warehouse 后元数据获取失败。#66436
- 高选择性过滤条件下,审计日志扫描统计信息不准确。#66280
- 查询错误率指标的计算逻辑不正确。#65891
- 任务退出时可能发生 MySQL 连接泄漏。#66829
- SIGSEGV 崩溃后 BE 状态未能及时更新。#66212
- LDAP 用户登录过程中出现 NPE。#65843
- HTTP SQL 请求切换用户时错误日志不准确。#65371
- TCP 连接复用过程中发生 HTTP 上下文泄漏。#65203
- Follower 转发的查询在 Profile 日志中缺少 QueryDetail。#64395
- 审计日志中缺少 Prepare / Execute 的详细信息。#65448
- HyperLogLog 内存分配失败导致崩溃。#66747
trim函数的内存预留逻辑存在问题。#66477 #66428- 修复 CVE-2025-66566 和 CVE-2025-12183。#66453 #66362 #67053
- Exec Group Driver 提交过程中的竞态条件问题。#66099
- Pipeline 倒计时中的 use-after-free 风险。#65940
MemoryScratchSinkOperator在队列关闭时发生阻塞。#66041- 文件系统缓存 Key 冲突问题。#65823
SHOW PROC '/compactions'中子任务数量显示错误。#67209- Query Profile API 未返回统一的 JSON 格式。#67077
getTable异常处理不当,影响物化视图检查。#67224- 原生表与云原生表的
DESC语句中Extra列输出不一致。#67238 - 单节点部署场景下的竞态条件问题。#67215
- 第三方库日志泄漏问题。#67129
- REST Catalog 认证逻辑错误导致认证失败。#66861
4.0.3
发布日期:2025 年 12 月 25 日
功能优化
- 支持对 STRUCT 数据类型使用
ORDER BY子句。#66035 - 支持创建带属性的 Iceberg 视图,并在
SHOW CREATE VIEW的输出中显示这些属性。#65938 - 支持通过
ALTER TABLE ADD/DROP PARTITION COLUMN修改 Iceberg 表的分区 Spec。#65922 - 支持在带窗口框架(例如
ORDER BY/PARTITION BY)的窗口函数中使用COUNT/SUM/AVG(DISTINCT)聚合,并提供优化选项。#65815 - 对 CSV 解析进行性能优化,对单字符分隔符使用
memchr。#63715 - 新增优化器规则,将 Partial TopN 下推到预聚合(Pre-Aggregation)阶段,以减少网络开销。#61497
- 增强 Data Cache 监控能力:
- 优化 Sort 和 Aggregation 算子,在 OOM 场景下支持更快速地释放内存。#66157
- 在 FE 中新增
TableSchemaService,用于存算分离集群中 CN 按需获取指定表结构。#66142 - 优化快速 Schema Evolution,在所有依赖的导入作业完成前保留历史 Schema。#65799
- 增强
filterPartitionsByTTL,正确处理 NULL 分区值,避免误过滤所有分区。#65923 - 优化
FusedMultiDistinctState,在重置时清理关联的 MemPool。#66073 - 在 Iceberg REST Catalog 中,将
ICEBERG_CATALOG_SECURITY属性检查改为大小写不敏感。#66028 - 在存算分离集群中新 增 HTTP 接口
GET /service_id,用于获取 StarOS Service ID。#65816 - Kafka 消费者配置中使用
bootstrap.servers替代已废弃的metadata.broker.list。#65437 - 新增 FE 配置项
lake_enable_fullvacuum(默认值:false),用于禁用 Full Vacuum Daemon。#66685 - 将 lz4 库升级至 v1.10.0。#67080
问题修复
修复了以下问题:
latest_cached_tablet_metadata在批量 Publish 过程中可能导致版本被错误跳过。#66558- 在存算一体集群中,
CatalogRecycleBin中的ClusterSnapshot相对检查可能引发的问题。#66501 - 在 Spill 过程中向 Iceberg 表写入复杂数据类型(ARRAY / MAP / STRUCT)时导致 BE 崩溃。#66209
- 当 writer 初始化或首次写入失败时,Connector Chunk Sink 可能发生卡死。#65951
- Connector Chunk Sink 中,
PartitionChunkWriter初始化失败后,在关闭阶段触发空指针异常的问题。#66097 - 设置不存在的系统变量时未报错而是静默成功的问题。#66022
- Data Cache 损坏时,Bundle 元数据解析失败的问题。#66021
- 当结果为空时,MetaScan 在 count 列上返回 NULL 而非 0。#66010
- 对于早期版本创建的资源组,
SHOW VERBOSE RESOURCE GROUP ALL显示 NULL 而非default_mem_pool。#65982 - 禁用
flat_json表配置后,查询执行过程中抛出RuntimeException。#65921 - 在存算分离集群中,Schema Change 后将
min/max统计信息重写到 MetaScan 时导致的类型不匹配问题。#65911 - 在缺少
PARTITION BY和ORDER BY时,排名窗口优化导致 BE 崩溃的问题。#67093 - 合并运行时过滤器时,
can_use_bf判断不正确,可能导致错误结果或崩溃。#67062 - 将运行时 bitset 过滤器下推到嵌套 OR 谓词中导致结果不正确的问题。#67061
- DeltaWriter 完成后仍执行写入或 flush 操作,可能导致数据竞争和数据丢失的问题。#66966
- 将简单聚合重写为 MetaScan 时,由于 nullable 属性不匹配导致的执行错误。#67068
- MetaScan 重写规则中行数计算不正确的问题。#66967
- 由于 Tablet 元数据缓存不一致,批量 Publish 过程中版本可能被错误跳过。#66575
- HyperLogLog 操作中,内存分配失败时错误处理不当的问题。#66827
4.0.2
发布日期:2025 年 12 月 4 日