StarRocks version 2.3
2.3.18
发布日期: 2023 年 10 月 11 日
问题修复
修复了如下问题:
- 第三方库 librdkafka 的缺陷,会导致 Routine Load 中导入任务消费时被卡住,新建的导入任务也无法执行。#28301
- 由于内存统计不准确有几率会导致 Spark 或者 Flink connector 读取数据报错。#31200 #30751
- Stream Load 中包括
if
关键字时,会引起 BE crash。#31926 - 向有分区的 StarRocks 外表写入数据时有报错
"get TableMeta failed from TNetworkAddress"
。#30466
2.3.17
发布日期: 2023 年 9 月 4 日
问题修复
修复了如下问题:
2.3.16
发布日期: 2023 年 8 月 4 日
问题修复
修复了如下问题:
2.3.15
发布日期: 2023 年 7 月 31 日
功能优化
- 优化 Tablet 调度逻辑,避免某些情况下 Tablet 长时间处于挂起状态或者 FE crash。#21647 #23062 #25785
- 优化 TabletChecker 的调度逻辑,避免重复 调度暂时无法修复的 Tablet。#27648
- 分区元信息里面会记录 visibleTxnId,对应 visible version,方便在 Tablet 副本版本号不一致时,追踪当时创建这个版本的 txn。#27924
问题修复
修复了如下问题:
- FE 中表级别 scan 统计信息错误,导致表查询和导入的 metrics 信息不正确。#28022
- 当 Join 列是 BINARY 类型且过大时 BE 会 crash。#25084
- Aggregate 算子在某些情况下会触发线程安全问题,导致 BE crash。#26092
- RESTORE 后同一个 Tablet 在 BE 和 FE 上的 version 不一致。#26518
- RECOVER 的表自动创建分区失败。#26813
- 严格模式下,INSERT INTO 的数据存在质量问题,导入事务会一直处于 pending 状态 ,导致 DDL 语句卡住。#27140
- 低基数优化开启时,某些情况下 INSERT INTO 导入任务报错
[42000][1064] Dict Decode failed, Dict can't take cover all key :0
。#27395 - 某些情况下 INSERT INTO SELECT 在 Pipeline 未开启时执行超时。#26594
- 如果查询条件为
WHERE partition_column < xxx
,并且所使用的分区列值仅精确至小时,没有精确至分秒,例如2023-7-21 22
,则返回数据为空。#27780
2.3.14
发布日期: 2023 年 6 月 28 日
功能优化
- 优化 CREATE TABLE 超时报错信息,增加参数调整建议。#24510
- 主键表积累大量 Tablet 版本后内存占用的优化。#20760
- StarRocks 外表元数据的同步改为数据加载时进行。#24739
- 解除 NetworkTime 对系统时钟的依赖,以解决系统时钟误差导致 Exchange 网络耗时估算异常的问题。#24858
问题修复
修复了如下问题:
- 对于频繁 TRUNCATE 的小表,应用低基数字典优化时查询报错。#23185
- 对包含 UNION 且第一个孩子是常量 NULL 的 View 进行查询时,会导致 BE crash。#13792
- 基于 Bitmap Index 的查询有些情况下会返回错误。#23484
- BE 中 Round DOUBLE/FLOAT 转换成 DECIMAL 和 FE 不一致。#23152
- Schema change 和数据导入同时进行时 Schema change 偶尔会卡住。#23456
- 使用 Broker Load、Spark Connector、或 Flink Connector 导入 Parquet 文件时偶尔会导致 BE OOM。#25254
- 查询语句中 ORDER BY 后是常量且有 LIMIT 时会报错
unknown error
。#25538
2.3.13
发布日期: 2023 年 6 月 1 日
功能优化
- 优化了因
thrift_server_max_worker_threads
设置过小导致 INSERT INTO ... SELECT 超时场景下的报错信息。 #21964 - 降低多表关联时,使用
bitmap_contains
函数的内存消耗,并优化性能。 #20617、#20653
问题修复
修复了如下问题:
- Truncate 操作对分区名大小写敏感导致 Truncate Partition 失败。 #21809
- 导入的 Parquet 格式文件中含 int96 timestamp 类型数据时,会导致数据溢出。#22355
- 删除物化视图后使用 DECOMMISSION 下线 BE 节点失败。#22743
- 当查询的执行计划包括从 BroadcastJoin 节点至 BucketShuffleJoin 节点,例如
SELECT * FROM t1 JOIN [Broadcast] t2 ON t1.a = t2.b JOIN [Bucket] t3 ON t2.b = t3.c;
,并且 BroadcastJoin 左表等值 Join 的 Key 的数据在进行 BucketShuffleJoin 之前被删除掉了,则会导致 BE crash。#23227 - 当查询的执行计划包括从 CrossJoin 节点至 HashJoin 节点、并且一个 fragment instance 中 HashJoin 的右表为空,则返回结果会不正确。#23877
- 物化视图创建临时分区失败导致 BE 下线卡住。 #22745
- 如果 SQL 语句中 STRING 类型的值包含多个转义字符,则该 SQL 语句解析失败。#23119
- 无法查询分区列最大值的数据。#23153
- StarRocks 2.4 回退到 2.3 后导入作业报错。#23642
- 列裁剪复用问题。#16624
2.3.12
发布日期: 2023 年 4 月 25 日
功能优化
如果表达式的返回值可以合法转换为 Boolean 值,则会对其进行隐式转换。# 21792
问题修复
修复了如下问题:
- 如果用户的 LOAD 权限为表级别,则导入作业失败后导入事务回滚时报错提示
Access denied; you need (at least one of) the LOAD privilege(s) for this operation
。# 21129 - 执行 ALTER SYSTEM DROP BACKEND 删除一个 BE 后,可能会导致该 BE 上的两副本表的副本不能修复,进而导致导入作业因为没有可用的副本而失败。# 20681
- 建表时使用不支持的数据类型,报错信息有误。# 20999
- Broadcast Join 的短路逻辑异常,导致查询结果不正确。# 20952
- 使用物化视图后磁盘占用率大幅增加。# 20590
- 未能彻底卸载插件 Audit Loader。# 20468
INSERT INTO XXX SELECT
返回结果显示的数据行数和SELECT COUNT(*) FROM XXX
返回结果显示的数据行数不一致。# 20084- 如果子查询使用窗口函数,父查询使用 GROUP BY 子句,则查询结果无法聚合。# 19725
- 启动 BE 后,BE 进程存在但是 BE 所有端 口无法开启。# 19347
- 如果磁盘 IO 利用率过高,导致主键表的事务提交过慢,则查询该表时可能会返回报错
backend not found
。# 18835
2.3.11
发布日期: 2023 年 3 月 28 日
功能优化
- 复杂查询会导致大量
ColumnRefOperators
。原先通过BitSet
来存储ColumnRefOperator::id
,会占用较多内存。为了减少内存占用,现在用RoaringBitMap
取代原来的BitSet
来存储ColumnRefOperator::id
。#16499 - 增加新的 I/O 调度策略,降低大查询对小查询的性能影响。如果需要开启新的 I/O 调度策略,则需要在 be.conf 中设置 BE 静态参数
pipeline_scan_queue_mode=1
并重启 BE。#19009
问题修复
修复了如下问题:
- 当表的过期数据未正常回收时,该表会占用较高的磁盘容量。#19796
- 使用 Broker Load 导入 Parquet 文件,导入
NULL
值至 NOT NULL 的列时,报错提示不明确。#19885 - 频繁创建大量临时分区以替换原有分区时,导致 FE 内存泄露和 Full GC。#19283
- 对于 Colocation 表,可以通过命令手动指定副本状态为 bad
ADMIN SET REPLICA STATUS PROPERTIES("tablet_id" = "10003", "backend_id" = "10001", "status" = "bad");
,如果 BE 数量小于等于副本数量,则该副本无法被修复。#19443 - 向 Follower FE 发起 INSERT INTO SELECT 请求时,参数
parallel_fragment_exec_instance_num
不生效。#18841 - 使用运算符
<=>
对某个值和NULL
值进行比较时,比较结果不正确。#19210 - 在持续触发资源隔离的并发限制时,查询并发数量指标下降缓慢。#19363
- 高并发导入时可能报错
"get database read lock timeout, database=xxx"
。#16748 #18992
2.3.10
发布日期: 2023 年 3 月 9 日
功能优化
优化 storage_medium
的推导机制。当 BE 同时使用 SSD 和 HDD 作为存储介质时,如果配置了 storage_cooldown_time
,StarRocks 设置 storage_medium
为 SSD
。反之,则 StarRocks 设置 storage_medium
为 HDD
。#18649
问题修复
修复了如下问题:
- 查询数据湖 Parquet 文件中 ARRAY 类型数据时查询可能会失败。 #17626 #17788 #18051
- 程序发起的 Stream Load 导入任务卡住,FE 接收不到程序发起的 HTTP 请求。#18559
- 查询 Elasticsearch 外表可能会报错。#13727
- 表达式在初始阶段发生错误,可能导致会 BE 停止服务。#11396
- 查询语句使用空数组字面量
[]
,可能会导致查询失败。#18550 - 版本从 2.2 及以上升级至 2.3.9 及以上后,创建 Routine Load 时 COLUMN 包含计算表达式,可能会报错
No match for <expr> with operand types xxx and xxx
。#17856 - 重启 BE 后导入操作卡住。#18488
- 当查询语句的 WHERE 子句包含 OR 运算符时,多余分区被扫描。#18610
2.3.9
发布日期: 2023 年 2 月 20 日
问题修复
- Schema Change 过程中,如果发生 Tablet Clone,并且副本所在 BE 节点发生变化,会导致 Schema Change 失败。#16948
group_concat()
函数返回结果被截断。#16948- 执行 Broker Load 通过腾讯大数据处理套件(Tencent Big Data Suite,TBDS) 从 HDFS 导入数据时报
invalid hadoop.security.authentication.tbds.securekey
的错误,显示不支持通过 TBDS 提供的 HDFS 权限认证访问 HDFS。#14125、#15693 - 在一些情况下,CBO 比较算子是否相等的逻辑发生错误。#17227、#17199
- 连接非 Leader FE 节点,发送请求
USE <catalog_name>.<database_name>
,非 Leader 节点中将请求转发给 Leader FE 时,没有转发catalog_name
,导致 Leader FE 使用default_catalog
,因此无法找到对应的 database。#17302
2.3.8
发布日期: 2023 年 2 月 2 日
问题修复
修复了如下问题:
- 在大查询完成后释放资源时,小概率导致其他查询变慢,特别是在开启资源组或大查询异常结束时。#16454 #16602
- 针对主键表,如果一个副本的元数据版本比较落后,增量克隆会触发大量版本的元数据积压没有及时 GC,可能会导致 BE 上发生 OOM。 #15935
- 如果 FE 向 BE 发送单次偶发的心跳,心跳连接超时,FE 会认为该 BE 不可用,最终导致该 BE 上的事务运行失败。# 16386
- 通过 StarRocks 外表功能导入数据时,如果源 StarRocks 集群为低版本,目标 StarRocks 集群为高版本(并且高版本为 2.2.8 ~ 2.2.11,2.3.4 ~ 2.3.7,2.4.1 或 2.4.2),则数据导入失败。#16173
- 当查询高并发并且内存使用率比较高时 BE 崩溃。 #16047
- 如果表开启了动态分区,表的部分分区被动态删除,此时执行 TRUNCATE TABLE 会导致报
NullPointerException
错误,此时导入数据会导致 FE 崩溃且无法重启。#16822
2.3.7
发布日期: 2022 年 12 月 30 日
问题修复
修复了如下问题:
- 当 StarRocks 表某些列支持为 NULL,但是当基于该表创建视图 时,视图中该列会被错误设置为 NOT NULL。 #15749
- 导入时生成了新的 Tablet 版本,但是 FE 可能尚未感知新的 tablet 版本,因此此时 FE 下发的查询执行计划中依 然要求 BE 读取该 Tablet 的历史版本。如果此时垃圾回收机制回收了该历史版本,则该时间点发起的查询无法读取该历史版本,从而查询报错 “Not found: get_applied_rowsets(version xxxx) failed tablet:xxx #version:x [xxxxxx]”。 #15726
- 高频导入时 FE 占用较多内存。 #15377
- 对于聚合和多表 JOIN 的查询,统计信息收集不准确,出现 CROSS JOIN,导致查询耗时过长。 #12067 #14780
2.3.6
发布日期: 2022 年 12 月 22 日
功能优化
- Pipeline 执行引擎支持 INSERT INTO 语句。如果需要启用,则需要设置 FE 配置项
enable_pipeline_load_for_insert
为true
。 #14723 - 优化主键表 Compaction 阶段所占内存。#13861 、#13862
问题修复
修复了如下问题:
- 修复开启资源隔离后,多个资源组同时执行查询,可能会导致 BE 挂死的问题。#14905
- 创建物化视图
CREATE MATERIALIZED VIEW AS SELECT
,如果SELECT
查询中未使用聚合函数,使用 GROUP BY,例如CREATE MATERIALIZED VIEW test_view AS
select a,b from test group by b,a order by a;
,则 BE 节点全部崩溃。#13743 - 执行 INSERT INTO 高频导入至主键表,进行数据变更后,立即重启 BE,重启缓慢。#15128
- 如果环境中只安装 JRE 未安装 JDK,则重启 FE 后查询失败。修复后,在该环境无法成功重启 FE,会直接报错
Error: JAVA_HOME can not be jre
,您需要在环境中安装 JDK。#14332 - 查询导致 BE 崩溃。#14221
- 设置 exec_mem_limit 时不支持使用表达式。#13647
- 根据子查询结果创建同步刷新的物化视图,创建失败。#13507
- 手动刷新 Hive 外表后列的 comment 注释被清空。#13742
- 关联查询表 A 和 B 时,先计算右表 B 再计算左表 A,如果右表 B 特别大,在计算右表 B 过程中,左表 A 的数据执行了 Compaction,导致 BE 节点崩溃。#14070
- 如果 Parquet 文件列名大小写敏感,此时查询条件中使用了 Parquet 文件中的大写列名,则查询结果为空。#13860 、#14773
- 批量导入时,Broker 的连接数过多,超过默认最大连接数,导致 Broker 连接断开,最终导入失败,并且报错 list path error。#13911
- BE 负载很高时,资源组的监控指标 starrocks_be_resource_group_running_queries 统计错误。#14043
- 如果查询语句使用 OUTER JOIN,可能会导致 BE 节点崩溃。#14840
- 2.4 版本使用了异步物化视图后回滚到 2.3 版本,导致 FE 无法启动。#14400
- 主键表部分地方使用了delete_range,如果性能不佳可能会导致后续从 RocksDB 读取数据过慢,导致 CPU 资源占用率过高。#15130