StarRocks 3.5 版本
警告
升级说明
-
从 StarRocks v3.5.0 起,需要 JDK 17 或更高版本。
- 要将集群从 v3.4 或更早版本进行升级,您必须升级 StarRocks 所依赖的 JDK 版本,并从 FE 配置文件 fe.conf 的
JAVA_OPTS配置项中移除与 JDK 17 不兼容的选项,例如涉及 CMS 和 GC 的选项。推荐使用 v3.5 配置文件中JAVA_OPTS的默认值。 - 对于使用外部 Catalog 的集群,您需要在 BE 配置文件 be.conf 的
JAVA_OPTS配置项中添加--add-opens=java.base/java.util=ALL-UNNAMED。 - 对于使用 Java UDF 的集群,您需要在 BE 配置文件 be.conf 的
JAVA_OPTS配置项中添加--add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED。 - 此外,从 v3.5.0 开始,StarRocks 不再提供特定 JDK 版本的 JVM 配置。所有 JDK 版本均使用
JAVA_OPTS。
- 要将集群从 v3.4 或更早版本进行升级,您必须升级 StarRocks 所依赖的 JDK 版本,并从 FE 配置文件 fe.conf 的
-
建议在升级集群到 v3.5 之前,先将其升级到 v3.4.10 或更高版本。否则,您必须通过执行以下语句在灰度升级期间手动禁用低基数优化:
SET GLOBAL cbo_enable_low_cardinality_optimize=false;
降级注意事项
- 将 StarRocks 升级到 v3.5 后,请勿直接降级到 v3.4.0 ~ v3.4.5,否则会导致元数据不兼容。您必须将集群降级到 v3.4.6 或更高版本以避免此问题。
- 将 StarRocks 升级到 v3.5.2 或更高版本后,请勿降级到 v3.5.0 & v3.5.1,否则会导致 FE 崩溃。
3.5.12
发布日期:2026 年 1 月 22 日
改进
- 为 BrpcStubCache 添加了清理器,用于清理未使用的连接。 #61417
- 支持对统计信息删除(针对已删除表)和 Edit Log 写入请求进行批量处理。 #67896
- 在需要加密时,保留审计日志中的 SQL 注释。 #63298
- 将
warehouse_name标签添加到物化视图指标中。 #67715 - 改进了 JDBC 表和列名的标识符包装。 #67853
- 为 Iceberg JDBC Catalog 添加了
CLIENT_FACTORY属性。 #67613
Bug 修复
已修复以下问题:
- 当混合使用 DATE 和 DATETIME 类型时,变长函数返回错误的日期。 #67947
NormalizePredicateRule在非确定性表达式上发生振荡。 #67923- Lambda 函数的低基数 Bug。 #67843
- 子字段表达式未收集子字段。 #67850
- 在子统计信息缺失时,RBO Join 重排时发生 NPE。 #67693
- MemTable 最终化失败导致 BE 崩溃。 #67787
- 动态覆盖后,FE 重启后临时分区未清理。 #67629
- Compaction 的 I/O 统计信息不准确。 #67524
- 复制事务中跨集群物理分区比较的逻辑不正确。 #67616
- SQL Server 和 Oracle 标识符符号处理问题。 #67965
- 由于配置传播缺失,Iceberg 元数据表查询时发生 NPE。 #67151
- 对于空的 Parquet 或 ORC 文件,
f``iles()模式检测问题。 #67762 - 由于 Hive 表上的 UNION ALL,Profile 中的 I/O 指标不准确。 #67912
- 缺少从 Arrow Flight 代理获取数据以支持 FE 查询。 #67794
3.5.11
发布日期:2026 年 1 月 5 日
改进
- 支持从不可访问的节点获取 Arrow Flight 数据。 #66348
- 在 SIGTERM 处理程序中记录原因(包括触发进程信息)。 #66737
- 添加了一个 FE 配置
enable_statistic_collect_on_update,用于控制 UPDATE 语句是否可以触发自动统计信息收集。 #66794 - 支持配置
networkaddress.cache.ttl。 #66723 - 改进“未导入行”错误消息。 #66624 #66535
- 对大分区表的
deltaRows进行了惰性求值优化。 #66381 - 优化了物化视图重写性能。 #66623
- 支持在共享数据集群中对单数据分片
ResultSink进行优化。 #66517 rewrite``_``simple``_``agg``_``to``_``meta``_``scan默认启用。 #64698- 支持下推 GROUP BY 表达式和物化视图重写。 #66507
- 添加重载的
newMessage方法以改进物化视图日志。 #66367
Bug 修复
已修复以下问题:
- 发布 Compaction 时,当输入的 rowset 未找到时导致崩溃。 #67154
- 在查询具有大量列的表时,由于重复调用
update_segment_cache_size导致显著的 CPU 开销和锁竞争。 #66714 MulticastSinkOperator卡在OUTPUT_FULL状态。 #67153- 倾斜 Join Hint 中的“列未找到”问题。 #66929
- 所有 Tablet 的增长持续不断,挂起和正在运行的 Tablet 的总和并不等于 Tablet 的总数。 #66718
- 在 Leader 启动过程中构建的 Compaction map 中的事务,CompactionScheduler 无法访问,并且永远不会从 map 中移除。 #66533
- Delta Lake 表刷新未生效。 #67156
- 在对具有 DATE 谓词的非分区 Iceberg 表执行查询时,CN 崩溃。 #66864
- 提交多个语句时,Profile 中的语句无法正确显示。 #67097
- Meta Reader 不支持从 Delta 列组文件读取,导致收集时缺少字典信息。 #66995
- Java UDAF 中潜在的 Java 堆 OOM。 #67025
- 在没有 PARTITION BY 和 ORDER BY 的情况下,排序窗口优化逻辑不正确导致 BE 崩溃。 #67081
- 时区缓存未命中时日志级别不正确。 #66817
- 合并运行时过滤器时,
can_use_bf检查不正确导致崩溃和结果不正确。 #67021 - 运行时位集过滤器与 OR 谓词一起下推时存在问题。 #66996
- 来自 lz4 的关键补丁修复。 #67053
- AsyncTaskQueue 死锁问题。 #66791
- ObjectColumn 中的缓存不一致。 #66957
- RewriteUnnestBitmapRule 导致输出列类型错误。 #66855
- Delta Writer 中 FINISH 任务后出现 WRITE 或 FLUSH 任务时,存在数据竞争和数据丢失。 #66943
- 由于之前中止的加载通道被重新打开,导致加载通道无效和内部错误信息误导。 #66793
- Arrow Flight SQL 中的 Bug。 #65889
- 使用 MetaScan 查询已重命名列时存在问题。 #66819
- 当关闭倾斜消除时,在分区溢出聚合中,哈希列在刷新 chunk 之前未被移除。 #66839
- 将 BOOLEAN 类型存储为字符串字面量时,其默认值未被正确处理。 #66818
- decimal2decimal 转换意外地直接返回输入列作为结果。 #66773
- 在模式更改期间的查询规划中发生 NPE。 #66811
- LocalTabletsChannel 和 LakeTabletsChannel 死锁。 #66748
- 在新 FE 中,
publish_version日志显示空的txn_ids。 #66732 - FE 配置
statistic_collect_query_timeout的行为不正确。 #66363 - UPDATE 语句不支持统计信息收集。 #66443
- 与低基数相关的 CASE 重写错误。 #66724
- 当列列表为空时,统计信息查询失败。 #66138
- 通过 Hint 切换 warehouse 时,使用/记录不匹配。 #66677
ANALYZE TABLE语句缺少 ExecTimeout。 #66361array_map从常量一元表达式返回错误的结果。 #66514- FE 重启后外键约束丢失。 #66474
- 在空表上对
max(not null string)操作会抛出std::length_error。 #66554 - 主键索引 Compaction 和 Apply 之间的并发问题。 #66282
EXPLAIN <query>的行为不当。 #66542- 将 DECIMAL128 写入 Iceberg 表列时存在问题。 #66071
- JSON → CHAR/VARCHAR 转换时,当目标长度等于最小值时,JSON 长度检查存在问题。 #66628
- 表达式子节点计数错误。 #66511
3.5.10
发布日期:2025 年 12 月 15 日
改进
- 支持在 BE 崩溃日志中转储计划节点 ID,以加快定位问题算子。 #66454
- 优化了
information_schema系统视图的扫描,以降低开销。 #66200 - 添加了两个直方图指标(
slow_lock_held_time_ms和slow_lock_wait_time_ms),以提供对慢锁场景更好的可观察性,并区分长持有锁和高锁争用。 #66027 - 通过将锁从数据库级别切换到表级别,优化了 Tablet 报告和克隆流程中的副本锁处理,减少了锁争用并提高了调度效率。 #61939
- 避免在 BE 存储中输出列,并将谓词计算下推到 BE 存储。 #60462
- 在后台线程中部署扫描范围时,提高了查询 Profile 的准确性。 #62223
- 在部署附加任务时,提高了 Profile 计数,CPU 时间不会重复计算。 #62186
- 当引用的分区不存在时,添加了更详细的错误消息,使故障更容易诊断。 #65674
- 使采样类型基数估计在边界情况下更加健壮,以提高行数估计。 #65599
- 加载统计信息时添加了分区过滤器,以防止 INSERT OVERWRITE 读取陈旧的分区统计信息。 #65578
- 将流水线 CPU
execution_time指标拆分为查询和加载的独立系列,通过工作负载类型提高可观察性。 #65535 - 支持在表粒度上配置
enable_statistic_collect_on_first_load,以更精细地控制首次加载时的统计信息收集。 #65463 - 将依赖 S3 的单元测试从
PocoClientTest重命名为 S3 特定名称,以更好地反映其依赖项和意图。 #65524
Bug 修复
已修复以下问题:
- 在 StarRocks 使用不兼容的 JDK 启动时,libhdfs 崩溃。 #65882
PartitionColumnMinMaxRewriteRule导致查询结果不正确。 #66356- 当通过 AST 键解析物化视图时,物化视图元数据未刷新导致重写问题。 #66472
- trim 函数在修剪特定 Unicode 空格字符时崩溃或产生错误结果。 #66428, #66477
- 加载元数据和 SQL 执行仍然引用已删除 warehouse,导致失败。 #66436
- 当分组执行 Join 与窗口函数结合使用时,结果不正确。 #66441
- 在
resetDecommStatForSingleReplicaTabletUnlocked中可能发生 FE 空指针。 #66034 - 在共享数据集群中,对于
LakeDataSource,缺少 Join 运行时过滤器下推优化。 #66354 - 运行时过滤器传输选项(超时、HTTP RPC 限制等)的参数不一致,因为它们未转发给接收方。 #66393
- 当分区值已存在时,自动创建分区失败。 #66167
- 当谓词选择性很高时,审计日志中的扫描统计信息不准确。 #66280
- 由于非确定性函数被推到运算符下方,导致查询结果不正确。 #66323
- CASE WHEN 导致表达式数量呈指数增长。 #66324
- 当同一表在查询中以不同的分区谓词出现多次时,物化视图补偿 Bug。 #66369
- 在子进程中使用 fork 时,BE 变得无响应。 #66334
- CVE-2025-66566 和 CVE-2025-12183。 #66453, #66362
- 嵌套 CTE 重用导致的错误。 #65800
- 由于缺乏对冲突的 schema-change 子句的验证而导致的问题。 #66208
- rowset 提交失败时,rowset GC 行为不当。 #66301
- 在倒计时流水线时,可能存在使用后释放问题。 #65940
- 对于 Stream Load,
information_schema.loads中的W``arehouse字段为 NULL。 #66202 - 当引用的视图与其基表同名时,物化视图创建问题。 #66274
- 在某些情况下,全局字典未正确更新。 #66194
- 从 Follower 节点转发的查询,其查询 Profile 日志不正确。 #64395
- 缓存 SELECT 结果并重排 schema 时 BE 崩溃。 #65850
- 通过表达式删除分区时,会删除影子分区。 #66171
- 当存在相同 Tablet 的 CLONE 任务时,DROP 任务运行。 #65780
- 由于 RocksDB 日志文件选项未正确设置,导致稳定性和可观察性问题。 #66166
- 物化视图补偿不正确,可能产生 NULL 结果。 #66216
- 即使收到
SIGSEGV,BE 仍报告为存活。 #66212 - Iceberg 扫描中的 Bug。 #65658
- Iceberg 视图 SQL 测试用例的回归覆盖率和稳定性问题。 #66126
- 由于重复调用
set_collector,行为异常。 #66199 - 当列模式部分更新与条件更新一起使用时,摄取失败。 #66139
- 并发事务下临时分区值冲突。 #66025
- Iceberg 表缓存 Bug,Guava LocalCache 即使在
cache.size() == 0时仍可能保留过时的条目,导致刷新无效且查询返回过时的表。 #65917 LargeInPredicateException中格式占位符不正确,导致错误消息中实际的 LargeInPredicate 出现次数报告不准确。 #66152- 当 connectContext 为 null 时,
ConnectScheduler的超时检查器中发生 NullPointerException。 #66136 - 从线程池任务抛出的未处理异常导致崩溃。 #66114
- 在某些计划中下推 DISTINCT LIMIT 时发生数据丢失。 #66109
multi_distinct_count在底层哈希集转换为两级哈希集后未更新distinct_size,这可能导致错误的去重计数。 #65916- 执行组提交下一个驱动程序时可能出现的竞态条件,这可能触发
Check failed: !driver->is_in_blocked()并中止 BE 进程。 #66099 - 当 ALTER TABLE ADD COLUMN 与默认值同时与 INSERT 语句并发运行时,由于新添加列的默认表达式类型不匹配,导致 INSERT 失败。 #65968
- 当 SparkSQL 提前退出且
RecordBatchQueue被关闭时,MemoryScratchSinkOperator可能停留在pending_finish状态,导致流水线挂起。 #66041 - 读取包含空行组的 Parquet 文件时发生核心转储。 #65928
- 由于事件调度器的就绪检查复杂,在高 DOP 下可能发生递归调用和潜在的堆栈溢出。 #66016
- 当 Iceberg 基表包含过时快照时,异步物化视图刷新会跳过更新。 #65969
- 由于优化器仅依靠 hashCode 来区分谓词的差异,因此在谓词重用和重写中可能存在问题。 #65999
- 在具有多级分区基表的异步物化视图刷新中,只检查了父分区元数据,而跳过了子分区更新。 #65596
- 统计信息收集问题,其中 AVG(ARRAY_LENGTH(...)) 可能为空结果集返回 NULL。 #65788
- 在 BE 和 FE 的增量更新期间,运行时 Profile 计数器未能正确更新或清除其 min/max 值。 #65869
- 创建集群快照时获取映像日志 ID 的逻辑不正确,未能确保快照使用正确的日志位置。 #65970
- 由于文件清理错误处理中状态检查逻辑不正确导致清理失败,结果被误报。 #65709
- 在 DictMappingOperator 中,某些计划的 isVariable() 可能存在无限循环。 #65743
- 由于 ConnectContext 未传递到扫描范围部署线程,导致失败以及审计/Profile 数据丢失。 #63544
- 存储引擎停止时,本地主键索引管理器中存在使用后释放问题。 #65534
- INSERT OVERWRITE 与动态覆盖结合时的统计信息收集问题。 #65657
- 由于 DiskAndTabletLoadReBalancer 中的粗粒度锁导致并发问题。 #65557
- 由于关键锁缺乏慢锁检测,无法正确检测和报告慢锁。 #65559
- 在目标数据库已被删除后,重放 upsert 事务状态时发生 NullPointerException。 #65595
- 由于 INSERT OVERWRITE 触发统计信息收集后未删除过时的分区统计信息,导致使用了陈旧的统计信息。 #65586
- 分区 ID 分配中的数据竞争,可能导致并发下的 ID 冲突。 #65608
- 检索初始 Tablet 元数据时缺少 Tablet ID。 #65550
- PREPARE/EXECUTE 语句在审计和 Profile 日志中记录信息不正确。#65448
- 由于非线程安全的 has_output 函数被多线程调用,可能导致崩溃。#65514
- MemTable 最终确定任务无法被正确跟踪,因为缺少
memtable_finalize_task_total计数器指标。#65548 - Arrow Flight 中查询 ID 冲突,导致多个查询不再共享相同的查询 ID。#65558
TabletChecker.doCheck()与其他操作发生锁冲突。#65237- 共享数据和共享不全集群之间的扫描行为不一致,导致查询语义不同。#61100
3.5.9
发布日期:2025 年 11 月 26 日
改进
- 为 FE 添加了事务延迟指标,用于观察事务阶段的计时情况。#64948
- 支持覆盖 S3 未分区 Hive 表,以简化数据湖场景中的全表重写。#65340
- 引入 CacheOptions,以便对 Tablet 元数据缓存进行更精细的控制。#65222
- 支持对 INSERT OVERWRITE 进行采样统计信息收集,确保统计信息与最新数据保持一致。#65363
- 优化了 INSERT OVERWRITE 后的统计信息收集策略,避免因异步 Tablet 报告导致的统计信息丢失或不正确。#65327
- 为被 INSERT OVERWRITE 或物化视图刷新操作丢弃或替换的分区引入了保留期,使其在回收站中保留一段时间以提高可恢复性。#64779
Bug 修复
已修复以下问题:
- 与
LocalMetastore.truncateTable()相关的锁竞争和并发问题。#65191 - 与 TabletChecker 相关的锁竞争和副本检查性能问题。#65312
- 通过 HTTP SQL 更改用户时错误地记录错误信息。#65371
- DelVec CRC32 升级兼容性问题导致的校验和失败。#65442
- 因 RocksDB 迭代超时导致的 Tablet 元数据加载失败。#65146
- 当内部
flat_path字符串为空(因为 JSON hyper 提取路径为$或所有路径都被跳过)时,调用substr会抛出异常并导致 BE 崩溃。#65260 - Fragment 执行中的 PREPARED 标志未正确设置。#65423
- 由于重复的加载 Profile 计数器,导致写入和刷写指标不准确。#65252
- 当多个 HTTP 请求重用同一个 TCP 连接时,如果一个非 ExecuteSQL 请求在 ExecuteSQL 请求之后到达,
HttpConnectContext在通道关闭时无法注销,导致 HTTP 上下文泄漏。#65203 - MySQL 8.0 模式内省错误(通过添加会话变量
default_authentication_plugin和authentication_policy修复)。#65330 - 由于对分区覆盖操作创建的临时分区进行不必要的统计信息收集,导致 SHOW ANALYZE STATUS 错误。#65298
- 事件调度器中的全局运行时过滤器竞争。#65200
- 数据缓存被激进地禁用,因为最小数据缓存磁盘大小限制设置得太大。#64909
- 与
gold链接器自动回退相关的 aarch64 构建问题。#65156
3.5.8
发布日期:2025 年 11 月 10 日
改进
- 将 Arrow 升级到 19.0.1,以支持 Parquet 遗留列表以包含嵌套的复杂文件。#64238
- FILES() 支持遗留的 Parquet LIST 编码。#64160
- 根据会话变量和插入的列数自动确定部分更新模式。#62091
- 在表函数之上的分析操作符上应用了低基数优化。#63378
- 为
finishTransaction添加了可配置的表锁定超时时间,以避免阻塞。#63981 - 共享数据集群支持表级别扫描指标归属。#62832
- 窗口函数 LEAD/LAG/FIRST_VALUE/LAST_VALUE 现在接受 ARRAY 类型参数。#63547
- 支持对几个数组函数进行常量折叠,以改进谓词下推和 Join 简化。#63692
- 通过批处理 API 支持获取给定节点(通过
SHOW PROC /backends/{id})的tabletNum。添加了一个 FE 配置项enable_collect_tablet_num_in_show_proc_backend_disk_path(默认值:true)。#64013 - 通过在规划之前刷新外部表,确保
INSERT ... SELECT读取最新的元数据。#64026 - 在表函数、NL-join 探测和哈希 Join 探测中添加了
capacity_limit_reached检查,以避免构造溢出的列。#64009 - 添加了 FE 配置项
collect_stats_io_tasks_per_connector_operator(默认值:4),用于设置要为其收集统计信息的外部表的任务的最大数量。#64016 - 将采样收集的默认分区大小从 1000 增加到 300。#64022
- 增加锁表槽位到 256,并在慢锁日志中添加
rid。#63945 - 提高了在存在遗留数据时 Gson 反序列化的健壮性。#63555
- 减少了 FILES() 模式下推的元数据锁范围,以减少锁竞争和规划延迟。#63796
- 通过引入 FE 配置项
task_runs_timeout_second,添加了任务运行执行超时检查器,并完善了超期运行的取消逻辑。#63842 - 确保
REFRESH MATERIALIZED VIEW ... FORCE始终刷新目标分区(即使在不一致或损坏的情况下)。#63844
Bug 修复
已修复以下问题:
- 解析 ClickHouse 的可空(Decimal)类型时出现异常。#64195
- Tablet 迁移和主键索引查找并发性问题。#64164
- 物化视图刷新中缺少 FINISHED 状态。#64191
- 在共享数据集群中,Schema 变更发布(Schema Change Publish)不会重试。#64093
- 数据湖中主键表的行计数统计错误。#64007
- 在共享数据集群中,当 Tablet 创建超时时,无法返回节点信息。#63963
- 损坏的 Lake DataCache 无法清除。#63182
- 带有 IGNORE NULLS 标志的窗口函数无法与其不带 IGNORE NULLS 标志的对应函数合并。#63958
- 如果表压缩(compaction)先前被中止,FE 重启后将无法重新调度表压缩任务。#63881
- 如果 FE 频繁重启,任务将无法调度。#63966
- GCS 错误代码问题。#64066
- StarMgr gRPC 执行器的不稳定性问题。#63828
- 创建独占工作组时发生死锁。#63893
- Iceberg 表的缓存未被正确失效。#63971
- 共享数据集群中排序聚合的结果错误。#63849
PartitionedSpillerWriter::_remove_partition中的 ASAN 错误。#63903- 当无法从 morsel queue 获取 splits 时 BE 崩溃。#62753
- 物化视图重写中聚合下推类型转换的错误。#63875
- FE 中删除过期加载作业时发生 NPE。#63820
- 删除分区时,分区溢出(Partitioned Spill)崩溃。#63825
- 在特定计划下,物化视图重写抛出
IllegalStateException。#63655 - 创建分区物化视图时发生 NPE。#63830
3.5.7
发布日期:2025 年 10 月 21 日
改进
- 通过在内存压力场景下引入重试退避,提高了扫描操作符的内存统计准确性。#63788
- 通过利用现有的 Tablet 分布来避免创建过多的 Bucket,优化了物化视图的分桶推断。#63367
- 修改了 Iceberg 表的缓存机制,以提高一致性并减少频繁元数据更新期间的缓存失效风险。#63388
- 向
QueryDetail和AuditEvent添加了querySource字段,以便更好地跟踪跨 API 和调度器的查询来源。#63480 - 增强了持久化索引(Persistent Index)的诊断能力,在 MemTable 写入中检测到重复键时打印详细上下文。#63560
- 通过在并发场景下优化锁粒度和排序,减少了物化视图操作中的锁竞争。#63481
Bug 修复
已修复以下问题:
- 因类型不匹配导致的物化视图重写失败。#63659
regexp_extract_all行为错误且不支持pos=0。#63626- 由于对带有复杂函数的 CASE WHEN 进行无益的简化,导致扫描性能下降。#63732
- 当部分更新从列模式切换到行模式时,读取 DCG 数据不正确。#61529
ExceptionStackContext初始化期间的潜在死锁。#63776- ARM 架构机器上 Parquet 数值转换时崩溃。#63294
- 聚合中间类型使用
ARRAY<NULL_TYPE>导致的问题。#63371 - 在符号边缘情况下(例如 INT128_MIN)将 LARGEINT 转换为 DECIMAL128 时,不正确的溢出检测导致稳定性问题。#63559
- 无法感知 LZ4 压缩和解压错误。#63629
- 查询通过
FROM_UNIXTIME分区的 INT 类型表时发生ClassCastException。#63684 - 当唯一有效的源副本被标记为
DECOMMISSION时,在由平衡触发的迁移后,Tablet 无法修复。#62942 - 当使用 PREPARE 语句时,Profile 丢失了 SQL 语句和规划器跟踪(Planner Trace)。#63519
extract_number、extract_bool和extract_string函数不具备异常安全性。#63575- Shutdown 的 Tablet 无法被正确垃圾回收。#63595
- Profile 显示 PREPARE/EXECUTE 语句的返回中 SQL 为
omit。#62988 date_trunc分区修剪与组合谓词一起使用时错误地产生了 EMPTYSET。#63464- 由于 NullableColumn 中的 CHECK 导致在发布版本中崩溃。#63553
3.5.6
发布日期:2025 年 9 月 22 日
改进
- 当所有 Tablet 都在回收站中时,将被强制删除已退役的 BE,以避免该退役被这些 Tablet 阻塞。#62781
- Vacuum 成功时将更新 Vacuum 指标。#62540
- 向 Fragment 实例执行状态报告中添加了线程池指标,包括活动线程数、队列计数和运行线程数。#63067
- 共享数据集群支持 S3 路径风格访问,以提高与 MinIO 和其他 S3 兼容存储系统的兼容性。创建存储卷时,可以通过将
aws.s3.enable_path_style_access设置为true来启用此功能。#62591 - 支持通过
ALTER TABLE`` <table_name>`` AUTO_INCREMENT`` = 10000;重置 AUTO_INCREMENT 的起始值。#62767 - 支持在组提供者中使用专有名称(DN)进行组匹配,改进了 LDAP/Microsoft Active Directory 环境的用户组解决方案。#62711
- 支持 Azure 工作负载标识(Workload Identity)认证,用于 Azure Data Lake Storage Gen2。#62754
- 向
information_schema.``loads视图添加了事务错误消息,以帮助诊断故障。#61364 - 支持重用公共表达式用于 Scan 谓词中的复杂 CASE WHEN 表达式,以减少重复计算。#62779
- 使用物化视图的 REFRESH 权限(而不是 ALTER 权限)来执行 REFRESH 语句。#62636
- 默认禁用 Lake 表的低基数优化,以避免潜在问题。#62586
- 默认启用共享数据集群中 Worker 之间的 Tablet 平衡。#62661
- 支持重用外连接 WHERE 谓词中的表达式,以减少重复计算。#62139
- 为 FE 添加了 Clone 指标。#62421
- 为 BE 添加了 Clone 指标。#62479
- 添加了一个 FE 配置项
enable_statistic_cache_refresh_after_write,默认禁用统计信息缓存的延迟刷新。#62518 - 在 SUBMIT TASK 中屏蔽凭证信息,以提高安全性。#62311
- Trino 方言中的
json_extract返回 JSON 类型。#59718 - 支持在
null_or_empty中使用 ARRAY 类型。#62207 - 调整了 Iceberg manifest 缓存的大小限制。#61966
- 为 Hive 添加了远程文件缓存限制。#62288
Bug 修复
已修复以下问题:
- 由于负超时值导致的时间戳比较不正确,二级副本会无限期挂起。#62805
- 当 TransactionState 为 REPLICATION 时,PublishTask 可能被阻塞。#61664
- 在物化视图刷新期间,如果 Hive 表被删除并重新创建,修复了不正确的修复机制。#63072
- 在物化视图聚合下推重写后生成了不正确的执行计划。#63060
- 由于 PlanTuningGuide 在查询 Profile 中产生无法识别的字符串(null explainString),导致 ANALYZE PROFILE 失败。#63024
hour_from_unixtime的返回类型不当和CAST的不正确重写规则。#63006- 在数据竞争下,Iceberg manifest 缓存中出现 NPE。#63043
- 共享数据集群缺乏对物化视图中表的共置(colocation)支持。#62941
- Iceberg 表在 Scan Range 部署期间发生扫描异常。 #62994
- 视图重写生成了不正确的执行计划。#62918
- 由于计算节点(Compute Nodes)在退出时没有优雅关闭,导致错误和任务中断。#62916
- Stream Load 执行状态更新时发生 NPE。#62921
- 当分区列名与 PARTITION BY 子句中的名称大小写不同时,统计信息存在问题。#62953
- 当
LEAST函数用作谓词时,返回错误的结果。#62826 - 在表剪枝边界 CTEConsumer 上方的 ProjectOperator 无效。#62914
- Clone 后的冗余副本处理。#62542
- 无法收集 Stream Load Profile。#62802
- 由于 BE 选择不当,导致磁盘重新平衡无效。#62776
- 当缺失
tablet_id导致 delta writer 为 null 时,LocalTabletsChannel 中可能发生 NPE 崩溃。#62861 - KILL ANALYZE 不生效。 #62842
- 当直方图统计信息中的 MCV 值包含单引号时,SQL 语法错误。#62853
- Prometheus 指标的输出格式错误。#62742
- 查询数据库被删除后,查询
information_schema.analyze_status时发生 NPE。#62796 - CVE-2025-58056。#62801
- 执行 SHOW CREATE ROUTINE LOAD 时返回错误结果,因为如果没有指定数据库,则认为数据库为空。#62745
- 在
files()中错误地跳过 CSV 头部导致数据丢失。#62719 - 重放批处理事务 upsert 时发生 NPE。#62715
- 在共享不全集群的正常关闭期间,Publish 被错误地报告为成功。#62417
- 由于空指针,异步 Delta Writer 中崩溃。#62626
- 由于在失败的恢复作业后未清除物化视图版本映射,物化视图刷新被跳过。#62634
- 物化视图分析器中因分区列名大小写敏感验证导致的问题。#62598
- 语法错误的语句出现重复的 ID。#62258
- StatisticsExecutor 状态被覆盖,因为在 CancelableAnalyzeTask 中进行了冗余的状态赋值。#62538
- 统计信息收集产生的不正确的错误消息。#62533
- 由于对外部用户默认最大连接数不足,导致过早限流。#62523
- 物化视图备份和恢复操作中潜在的 NPE。#62514
- 不正确的
http_workers_num指标。#62457 - 运行时过滤器在构建期间无法定位相应的执行组。#62465
- 由于对带有复杂函数的 CASE WHEN 进行简化,导致 Scan Node 上的结果冗长。#62505
gmtime不是线程安全的。#60483- 获取带有转义字符串的 Hive 分区时出现问题。#59032
3.5.5
发布日期:2025 年 9 月 5 日
改进
- 添加了新的系统变量
enable_drop_table_check_mv_dependency(默认值:false)。当设置为true时,如果被删除的对象被下游物化视图引用,系统将阻止执行DROP TABLE/DROP VIEW/DROP MATERIALIZED VIEW。错误消息将列出依赖的物化视图,并建议查看sys.object_dependencies视图以获取详细信息。#61584 - 日志现在包含构建的 Linux 发行版和 CPU 架构,以方便重现问题和故障排除。日志格式:
... build <hash> distro <id> arch <arch>。#62017 - 现在缓存了每个 Tablet 的持久化索引和增量列组文件的大小,取代了按需目录扫描。这加快了 BE 中的 Tablet 状态报告,并在高 I/O 场景下降低了延迟。#61901
- 将 FE 和 BE 中几个高频的 INFO 日志降级为 VLOG,并聚合了任务提交日志,显著减少了重负载下的冗余存储相关日志和日志量。#62121
- 通过在调用
getTable之前下推表过滤器,通过information_schema改进了外部目录元数据的查询性能,避免了每个表的 RPC 调用。#62404
Bug 修复
已修复以下问题:
- 在 Plan 阶段,由于缺少数据,在获取分区级别列统计信息时发生 NullPointerException。#61935
- 修复了 Parquet 对非空 NULL 数组的写入问题,并修正了
SPLIT(NULL, …)的行为,使其始终返回 NULL,从而防止数据损坏和运行时错误。#61999 - 使用
CASE WHEN表达式创建物化视图时失败,原因是 VARCHAR 类型返回不兼容(通过在刷新前后确保一致性,并引入新的 FE 配置transform_type_prefer_string_for_varchar以优先使用 STRING 并避免长度不匹配来修复)。#61996 - 当
enable_rbo_table_prune设置为false时,嵌套 CTE 的统计信息无法在 memo 之外计算。#62070 - 在审计日志中,INSERT INTO SELECT 语句的 Scan Rows 结果不准确。#61381
- 当启用查询队列 v2 时,初始化期间的 ExceptionInInitializerError/NullPointerException 导致 FE 启动失败。#62161
- 当
LakePersistentIndex初始化失败并触发_memtable清理时,BE 崩溃。#62279 - 物化视图刷新期间出现权限问题,因为创建者的角色未激活(通过添加 FE 配置
mv_use_creator_based_authorization修复。设置为false时,物化视图以 root 身份刷新,以兼容 LDAP 认证的集群)。#62396 - 物化视图刷新失败,原因是列表分区表名称区分大小写(通过强制分区名称进行不区分大小写的唯一性检查来修复,使其与 OLAP 表语义保持一致)。#62389
3.5.4
发布日期:2025 年 8 月 22 日
改进
- 添加了日志以说明无法修复 Tablet 的原因。#61959
- 优化了日志中的 DROP PARTITION 信息。 #61787
- 为具有未知统计信息的表分配了一个较大但可配置的行计数,用于统计估计。 #61332
- 根据标签位置添加了负载均衡统计信息。 #61905
- 添加了 Colocate 分组的负载均衡统计信息,以改善集群监控。 #61736
- 当健康副本数量超过默认副本计数时,跳过 Publish 等待阶段。 #61820
- 在 Tablet 报告中包含了 Tablet 信息收集时间。 #61643
- 支持带标签写入 Starlet 文件。 #61605
- 支持通过 SHOW PROC 查看集群负载均衡统计信息。 #61578
- 将 librdkafka 升级到 2.11.0 以支持 Kafka 4.0,并删除了已弃用的配置。 #61698
- 为 Stream Load 事务接口添加了
prepared_timeout配置。 #61539 - 将 StarOS 升级到 v3.5‑rc3。 #61685
Bug 修复
已修复以下问题:
- 随机分发表的 Dict 版本不正确。 #61933
- 上下文中条件字段的查询上下文不正确。 #61929
- ALTER 操作期间,由于对影子 Tablet 进行同步发布,导致发布失败。 #61887
- CVE‑2025‑55163 问题。 #62041
- 从 Apache Kafka 实时摄取数据时发生内存泄漏。 #61698
- Lake 持久化索引中重建文件计数不正确。 #61859
- 对生成的表达式列进行统计信息收集导致跨数据库查询错误。 #61829
- 共享 Nothing 集群中查询缓存不一致,导致结果不一致。 #61783
- CatalogRecycleBin 中内存使用率高,原因是保留了已删除的分区信息。#61582
- 当超时超过 65,535 毫秒时,SQL Server JDBC 连接失败。 #61719
- 安全集成无法加密密码,导致敏感信息泄露。 #60666
- 对 Iceberg 分区列使用
MIN()和MAX()函数意外返回 NULL。 #61858 - 包含非下推子字段的 Join 的其他谓词被错误重写。 #61868
- 查询上下文取消可能导致 use-after-free 情况。 #61897
- CBO 的表裁剪忽略了其他谓词。 #61881
COLUMN_UPSERT_MODE中的部分更新可能会使用零覆盖自增列。 #61341- JDBC TIME 类型转换使用不正确的时区偏移量,导致时间值错误。 #61783
max_filter_ratio未在 Routine Load 作业中序列化。 #61755- Stream Load 中
now(precision)函数的精度丢失。 #61721 - 取消查询可能导致“未找到查询 ID”错误。 #61667
- LDAP 认证可能会遗漏 PartialResultException,导致查询结果不完整。 #60667
- Paimon Timestamp 在查询条件包含 DATETIME 时出现时区转换问题。 #60473
3.5.3
发布日期:2025 年 8 月 11 日
改进
- Lake Compaction 添加了 Segment 写入时间统计。 #60891
- 禁用 Data Cache 写入的内联模式,以避免性能下降。 #60530
- Iceberg 元数据扫描支持共享文件 I/O。 #61012
- 支持终止所有 PENDING ANALYZE 任务。 #61118
- 当 CTE 节点过多时强制复用,以避免优化时间过长。 #60983
- 向集群负载均衡结果添加了
BALANCE类型。 #61081 - 优化了外部表的物化视图重写。 #61037
- 系统变量
enable_materialized_view_agg_pushdown_rewrite的默认值更改为true,默认启用物化视图查询的聚合下推。 #60976 - 优化了分区统计信息的锁竞争。 #61041
Bug 修复
已修复以下问题:
- 列裁剪后 Chunk 列大小不一致。 #61271
- 同步执行分区统计信息加载可能导致死锁。 #61300
- 当
array_map处理常量数组列时崩溃。 #61309 - 将自增列设置为 NULL 导致系统错误地拒绝同一 Chunk 内的有效数据。 #61255
- 实际的 JDBC 连接数可能超过
jdbc_connection_pool_size限制。 #61038 - FQDN 模式未将 IP 地址用作缓存映射的键。 #61203
- 数组比较期间数组列克隆错误。 #61036
- 部署的序列化线程池阻塞导致查询性能下降。 #61150
- 心跳重试计数器重置后,OK hbResponse 未同步。 #61249
hour_from_unixtime函数的结果不正确。 #61206- ALTER TABLE 作业与分区创建之间的冲突。 #60890
- 从 v3.3 升级到 v3.4 或更高版本后,缓存不生效。 #60973
- Vector 索引指标
hit_count未设置。 #61102 - Stream Load 事务在查找协调器节点时失败。 #60154
- BE 在加载 OOM 分区时崩溃。 #60778
- 对手动创建的分区执行 INSERT OVERWRITE 失败。 #60750
- 当分区名称不区分大小写但值不同时,分区创建失败。 #60909
- 系统不支持 PostgreSQL UUID 类型。 #61021
- 通过
FILES()加载 Parquet 数据时,列名存在大小写敏感问题。 #61059
3.5.2
发布日期:2025 年 7 月 18 日
改进
- 为 ARRAY 列收集了 NDV(不同值数量)统计信息,以提高查询计划的准确性。 #60623
- 禁用了 Colocate 表的副本负载均衡和 Shared-data 集群中的 Tablet 调度,以减少不必要的日志输出。 #60737
- 优化了目录访问工作流程:FE 现在在启动时异步延迟访问外部数据源,以防止因外部服务不可用而挂起。 #60614
- 添加了会话变量
enable_predicate_expr_reuse来控制谓词下推。 #60603 - 支持在获取 Kafka 分区信息失败时进行重试。 #60513
- 删除了要求物化视图和基表之间的分区列必须精确匹配的限制。 #60565
- 支持构建 Runtime In-Filters,通过在聚合过程中过滤数据来增强聚合性能。 #59288
Bug 修复
修复了以下问题
- 多列低基数优化导致 COUNT DISTINCT 查询崩溃。 #60664
- 多个函数共享相同名称时,全局 UDF 匹配不正确。 #60550
- Stream Load 导入期间出现空指针异常 (NPE)。 #60755
- 从集群快照恢复期间启动 FE 时出现空指针异常 (NPE)。 #60604
- 处理乱序值时,短路查询的列模式不匹配导致 BE 崩溃。 #60466
- 通过 SUBMIT TASK 语句的 PROPERTIES 设置的会话变量未生效。 #60584
- 在特定条件下
SELECT min/max查询结果不正确。 #60601 - 当谓词的左侧是函数时,发生不正确的桶裁剪,导致查询结果错误。 #60467
- 通过 Arrow Flight SQL 对不存在的
query_id执行查询时崩溃。 #60497
行为变更
- 将
lake_compaction_allow_partial_success的默认值设置为true。现在即使部分完成,Compaction 操作也可以标记为成功,从而防止后续 Compaction 任务被阻塞。 #60643
3.5.1
发布日期:2025 年 7 月 1 日
新功能
- [实验性] 从 v3.5.1 开始,StarRocks 引入了基于 Apache Arrow Flight SQL 协议的高性能数据传输通道,全面优化了数据导入通道,显著提高了传输效率。该方案构建了一个从 StarRocks 列式执行引擎到客户端的完全列式数据传输管道,消除了传统 JDBC 和 ODBC 接口中常见的行/列转换和序列化开销,实现了真正的零拷贝、低延迟、高吞吐量的数据传输能力。 #57956
- Java 标量 UDF(用户定义函数)现在支持将 ARRAY 和 MAP 类型作为输入参数。 #55356
- **跨节点数据缓存共享**:使节点能够通过网络共享湖数据(data lake)的外部表缓存数据。如果本地缓存未命中,系统会首先尝试从集群内其他节点的缓存中获取数据。只有当所有缓存都未命中时,才会重新从远程存储中获取数据。此功能有效降低了弹性伸缩过程中缓存失效带来的性能抖动,确保了稳定的查询性能。一个新的 FE 配置参数
enable_trace_historical_node控制此行为(默认值:false)。 #57083 - **存储卷对 Google Cloud Storage (GCS) 增加了原生支持**:现在可以将 GCS 用作后端存储卷,并通过原生 SDK 管理和访问 GCS 资源。 #58815
改进
- 优化了创建 Hive 外部表失败时的错误信息。 #60076
- 利用 Iceberg 元数据中的
file_record_count优化了count(1)查询性能。 #60022 - 改进了 Compaction 调度逻辑,避免在所有子任务成功时出现延迟调度。 #59998
- 升级到 JDK 17 后,在 BE 和 CN 中添加了
JAVA_OPTS="--add-opens=java.base/java.util=ALL-UNNAMED"。 #59947 - 当 Kafka Broker 端点发生变化时,支持通过 ALTER ROUTINE LOAD 命令修改
kafka_broker_list属性。 #59787 - 支持通过参数减少 Docker 基础镜像的构建依赖。 #59772
- 支持使用托管身份验证访问 Azure。 #59657
- 当通过
Files()函数查询外部数据且路径列名重复时,改进了错误信息。 #59597 - 优化了 LIMIT 下推逻辑。 #59265
Bug 修复
修复了以下问题
- 查询包含 Max 和 Min 聚合以及空分区时出现分区裁剪问题。 #60162
- 由于缺少 NULL 分区,物化视图重写查询时结果不正确。 #60087
- 使用基于
str2date的分区表达式刷新 Iceberg 外部表时出错。 #60089 - 使用 START END 语法创建临时分区时,分区范围不正确。 #60014
- 非 Leader FE 节点上 Routine Load 指标显示不正确。 #59985
- 执行包含
COUNT(*)窗口函数的查询时 BE/CN 崩溃。 #60003 - 当目标表名包含中文时 Stream Load 失败。 #59722
- 当向二级副本加载失败时,对三副本表加载的整体失败。 #59762
- SHOW CREATE VIEW 输出中缺少参数。 #59714
行为变更
- 某些 FE 指标包含
is_leader标签。 #59883
3.5.0
发布日期:2025 年 6 月 13 日
Shared-data 增强
- Shared-data 集群支持生成列。 #53526
- Shared-data 集群中的云原生主键表支持重建特定索引。索引性能也得到了优化。 #53971 #54178
- 优化了大规模数据加载操作的执行逻辑,以避免因内存限制而在 Rowset 中生成过多小文件。在导入过程中,系统将合并临时数据块以减少小文件的生成,从而提高了导入后的查询性能,并减少了后续的 Compaction 操作,以提高系统资源利用率。 #53954
数据湖分析
- **[Beta]** 支持在 Iceberg Catalog 中创建 Iceberg 视图,并集成 Hive Metastore。并且支持使用 ALTER VIEW 语句添加或修改 Iceberg 视图的方言,以更好地与外部系统兼容语法。 #56120
- 支持 Iceberg REST Catalog 的嵌套命名空间。 #58016
- 支持使用
IcebergAwsClientFactory在 Iceberg REST Catalog 中创建 AWS 客户端以提供托管凭证。 #58296 - Parquet Reader 支持使用布隆过滤器(Bloom Filter)过滤数据。 #56445
- 支持在查询 Parquet 格式的 Hive/Iceberg 表时,自动为低基数列创建全局字典。 #55167
性能提升和查询优化
- 统计信息优化
- 支持表采样。通过对物理文件中的数据块进行采样,提高了统计信息的准确性和查询性能。 #52787
- 支持记录查询中的谓词列,以进行有针对性的统计信息收集。 #53204
- 支持分区级别基数估计。系统重用系统定义的视图
_statistics_.column_statistics来记录每个分区的 NDV。 #51513 - 支持多列联合 NDV 收集,以优化 CBO 在列相互关联场景下生成的查询计划。 #56481 #56715 #56766 #56836
- 支持使用直方图(histograms)来估计 Join 节点的基数和 in_predicate 的选择性,从而提高了在数据倾斜情况下的估计准确性。 #57874 #57639
- 优化了查询反馈。结构相同但参数值不同的查询将被归类为同一类型,并共享相同的调优指南以优化计划执行。 #58306
- 支持将运行时位集过滤器(Runtime Bitset Filter)作为特定场景下替代布隆过滤器的优化方案。 #57157
- 支持将 Join 运行时过滤器下推到存储层。 #55124
- 支持 Pipeline 事件调度器。 #54259
分区管理
- 支持使用 ALTER TABLE 基于时间函数合并表达式分区,以优化存储效率和查询性能。 #56840
- 支持 List 分区表和物化视图的分区时间到期(TTL)。并支持在表和物化视图中设置
partition_retention_condition属性,允许用户为列表分区设置数据保留策略,从而实现更灵活的分区删除策略。 #53117 - 支持使用 ALTER TABLE 删除由通用分区表达式指定的分区,使用户能够灵活地批量删除分区。 #53118
集群管理
安全与认证
- 支持基于 MySQL 协议的安全通过 SSL 加密连接。 #54877
- 增强使用外部系统的认证
- 支持创建具有OAuth 2.0和JSON Web Token (JWT)的用户。
- 支持安全集成,以简化与外部系统的认证流程。安全集成支持 LDAP、OAuth 2.0 和 JWT。 #55846
- 支持组提供者(Group Provider),用于从外部认证服务中获取用户组信息。获取到的组信息可用于认证和授权。组提供者支持从 LDAP、操作系统或文件中获取组信息。用户可以使用函数
current_group()查询自己所属的用户组。 #56670
物化视图
- 支持创建具有多个分区列的物化视图,使用户能够以更灵活的策略对数据进行分区。 #52576
- 支持设置
query_rewrite_consistency为force_mv,强制系统使用物化视图进行查询重写,从而在一定程度上牺牲数据时效性来保持性能稳定。 #53819
加载与卸载
- 通过设置属性
pause_on_json_parse_error为true,支持在 JSON 解析错误时暂停 Routine Load 作业。 #56062 - **[Beta]** 支持多 SQL 语句事务(目前仅支持 INSERT)。用户可以开始、应用或回滚事务,以保证多次加载操作的 ACID(原子性、一致性、隔离性、持久性)特性。 #53978
函数
- 在会话和全局级别引入了系统变量
lower_upper_support_utf8,增强了在大小写转换函数(如upper()和lower())中对 UTF-8 字符串(特别是非 ASCII 字符)的支持。#56192 - 新增函数