跳到主要内容

StarRocks 3.5 版本

警告

升级说明

  • 从 StarRocks v3.5.0 起,需要 JDK 17 或更高版本。

    • 要将集群从 v3.4 或更早版本进行升级,您必须升级 StarRocks 所依赖的 JDK 版本,并从 FE 配置文件 fe.confJAVA_OPTS 配置项中移除与 JDK 17 不兼容的选项,例如涉及 CMS 和 GC 的选项。推荐使用 v3.5 配置文件中 JAVA_OPTS 的默认值。
    • 对于使用外部 Catalog 的集群,您需要在 BE 配置文件 be.confJAVA_OPTS 配置项中添加 --add-opens=java.base/java.util=ALL-UNNAMED
    • 对于使用 Java UDF 的集群,您需要在 BE 配置文件 be.confJAVA_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.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。 #66361
  • array_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_msslow_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_pluginauthentication_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
  • QueryDetailAuditEvent 添加了 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_numberextract_boolextract_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
  • 支持使用 IcebergAwsClientFactoryIceberg 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

集群管理

  • 将 FE 编译目标从 Java 11 升级到 Java 17,以提高系统稳定性和性能。 #53617 #57030

安全与认证

  • 支持基于 MySQL 协议的安全通过 SSL 加密连接#54877
  • 增强使用外部系统的认证
  • 支持组提供者(Group Provider),用于从外部认证服务中获取用户组信息。获取到的组信息可用于认证和授权。组提供者支持从 LDAP、操作系统或文件中获取组信息。用户可以使用函数 current_group() 查询自己所属的用户组。 #56670

物化视图

  • 支持创建具有多个分区列的物化视图,使用户能够以更灵活的策略对数据进行分区。 #52576
  • 支持设置 query_rewrite_consistencyforce_mv,强制系统使用物化视图进行查询重写,从而在一定程度上牺牲数据时效性来保持性能稳定。 #53819

加载与卸载

  • 通过设置属性 pause_on_json_parse_errortrue,支持在 JSON 解析错误时暂停 Routine Load 作业。 #56062
  • **[Beta]** 支持多 SQL 语句事务(目前仅支持 INSERT)。用户可以开始、应用或回滚事务,以保证多次加载操作的 ACID(原子性、一致性、隔离性、持久性)特性。 #53978

函数

开心的水獭 RockyStarRocks 助手

AI 生成的答案基于文档和其他来源。请在非生产环境中测试答案。