StarRocks 2.5 版本
2.5.22
发布日期:2024 年 6 月 20 日
改进
- 优化了用于构建查询执行计划的分区检查逻辑,显著减少了涉及多表的复杂查询的耗时。 #46781
Bug 修复
修复了以下问题
- 函数调用未能正确处理子错误。 #42590
- 内部数据统计信息未能定期清理,导致估算信息不准确,进而产生低效的查询计划。这将导致查询性能下降和内存使用量激增。 #45839
- 使用过时的列直方图可能导致除零异常。 #45614
2.5.21
发布日期:2024 年 5 月 15 日
改进
Bug 修复
修复了以下问题
- Schema 变更可能导致前缀索引排序出现问题,进而导致基于前缀索引的查询结果不正确。 #44941
- 当 Routine Load 任务因 Kafka 集群异常而暂停后,后台仍然尝试连接到此异常的 Kafka 集群,这会阻止此 StarRocks 集群中的其他 Routine Load 任务消耗正常的 Kafka 消息。 #45029
- 查询
information_schema中的视图时,数据库锁的持有时间异常长,从而延长了整体查询时间。 #45392 - 启用查询缓存可能导致 BE 崩溃,如果 SQL 查询包含 HAVING 子句。此问题可以通过禁用查询缓存(使用
set enable_query_cache=false)来解决。 #43823 - 启用查询缓存时,某些查询可能会返回
All slotIds should be remapped错误消息。 #42861
2.5.20
发布日期:2024 年 3 月 22 日
改进
replace_if_not_null支持聚合表中的 BITMAP 列。用户可以将replace_if_not_null指定为聚合表中 BITMAP 列的聚合函数。 #42104- JDK 9 及更高版本默认使用 G1 垃圾收集器。 #41374
参数变更
- BE 参数
update_compaction_size_threshold的默认值从 256 MB 更改为 64 MB,以加速 compaction。 #42776
Bug 修复
修复了以下问题
- 使用 StarRocks 外部表同步数据时遇到 "commit and publish txn failed" 错误。同步在重试后成功,但相同的数据被加载了两次。 #25165
- RPC 传输资源因 GC 问题暂时不可用。 #41636
- v2.5 中的 array_agg() 处理 NULL 的方式与 v2.3 不同。因此,从 v2.3 升级到 v2.5 后,查询结果不正确。 #42639
- 查询中的 Sink Operator 意外退出,导致 BE 崩溃。 #38662
- 在聚合表上执行 DELETE 命令会导致对 tablet 元数据的访问冲突,从而导致 BE 崩溃。 #42174
- MemTracker 在 UDF 调用期间遇到 Use-After-Free 问题,导致 BE 崩溃。 #41710
- unnest() 函数不支持别名。 #42138
2.5.19
发布日期:2024 年 2 月 8 日
新功能
- 添加了 Bitmap 值处理函数:serialize、deserialize 和 serializeToString。 #40162
改进
- 支持在刷新物化视图时自动激活不活动的物化视图。 #38521
- 优化了 BE 日志打印,以避免过多的无关日志。 #22820 #36187
- 支持使用 Hive UDFs 处理和加载 Bitmap 数据到 StarRocks,以及将 Bitmap 数据从 StarRocks 导出到 Hive。 #40165 #40168
- 为 Apache Iceberg 表的 TIMESTAMP 分区字段添加了日期格式
yyyy-MM-ddTHH:mm和yyyy-MM-dd HH:mm。 #39986
Bug 修复
修复了以下问题
- 运行未指定 PROPERTIES 的 Spark Load 作业会导致空指针异常 (NPE)。 #38765
- INSERT INTO SELECT 偶尔会遇到 "timeout by txn manager" 错误。 #36688
- 在某些情况下,PageCache 的内存消耗会超过 BE 动态参数
storage_page_cache_limit指定的阈值。 #37740 - 删除表后再以相同名称重新创建表后,基于该表创建的异步物化视图刷新会失败。 #38008 #38982
- 使用 SELECT INTO 将数据写入 S3 存储桶时,偶尔会遇到 "the tablet write operation update metadata take a long time" 错误。 #38443
- 某些数据加载操作可能会遇到 "reached timeout" 错误。 #36746
- SHOW CREATE TABLE 返回的 DECIMAL 类型与 CREATE TABLE 中指定的类型不一致。 #39297
- 如果外部表的分区列包含 NULL 值,查询这些表会导致 BE 崩溃。 #38888
- 从 Duplicate Key 表删除数据时,如果 DELETE 语句的 WHERE 子句中的条件包含前导空格,则仍然可以使用 SELECT 查询到已删除的数据。 #39797
- 将 ORC 文件中的
array<string>数据加载到 StarRocks (array<json>) 中可能会导致 BE 崩溃。 #39233 - 查询 Hive catalog 可能会卡住甚至超时。 #39863
- 如果在 PARTITION BY 子句中指定了小时级分区,则无法动态创建分区。 #40256
- 从 Apache Flink 加载数据时,返回 "failed to call frontend service" 错误。 #40710
2.5.18
发布日期:2024 年 1 月 10 日
新功能
改进
行为变更
- 新增会话变量
enable_materialized_view_for_insert,用于控制物化视图是否重写 INSERT INTO SELECT 语句中的查询。默认值为false。 #37505 - 新增会话变量
enable_strict_order_by。当此变量设置为默认值TRUE时,对于以下查询模式会报告错误:在查询的不同表达式中使用了重复的别名,并且该别名也是 ORDER BY 中的排序字段,例如select distinct t1.* from tbl1 t1 order by t1.k1;。此逻辑与 v2.3 及更早版本相同。当此变量设置为FALSE时,会使用宽松的去重机制,将此类查询视为有效的 SQL 查询。 #37910
参数变更
- 添加了会话变量
transaction_read_only和tx_read_only来指定事务访问模式,它们与 MySQL 5.7.20 及以上版本兼容。 #37249 - 新增 FE 配置项
routine_load_unstable_threshold_second。 #36222 - 添加了 FE 配置项
http_worker_threads_num,用于指定 HTTP 服务器处理 HTTP 请求的线程数。默认值为0。如果此参数设置为负值或 0,则实际线程数是 CPU 核心数的两倍。 #37530 - 添加了 BE 配置项
pindex_major_compaction_limit_per_disk,用于配置单个磁盘上 compaction 的最大并发数。这解决了由于 compaction 导致跨磁盘 I/O 不均匀的问题。此问题可能导致某些磁盘 I/O 过高。默认值为1。 #37695
Bug 修复
修复了以下问题
- 将 NaN(非数字)列用作 ORDER BY 列可能导致 BE 崩溃。 #30759
- 未能更新主键索引可能导致 "get_applied_rowsets failed" 错误。 #27488
- 在 Hive 表中添加新字段时,Hive catalog 中的 Hive 元数据不会自动刷新。 #37668
- 当执行
SELECT ... FROM ... INTO OUTFILE将数据导出到 CSV 文件时,如果 FROM 子句包含多个常量,则会报告“Unmatched number of columns”错误。 #38045 - 在某些情况下,
bitmap_to_string可能因数据类型溢出而返回不正确的结果。 #37405
2.5.17
发布日期:2023 年 12 月 19 日
新功能
- 新增指标
max_tablet_rowset_num,用于设置允许的最大 rowsets 数量。此指标有助于检测潜在的压缩问题,从而减少“too many versions”错误的发生。 #36539 - 添加了 subdivide_bitmap 函数。 #35817
改进
SHOW ROUTINE LOAD语句返回的结果提供了一个新字段OtherMsg,显示最后一个失败任务的信息。 #35806- 垃圾文件(trash files)的默认保留期从原来的 3 天更改为 1 天。 #37113
- 优化了主键表对所有 rowsets 执行 compaction 时的持久化索引更新性能,降低了磁盘读取 I/O。 #36819
- 优化了用于计算主键表 compaction 分数的逻辑,从而使主键表的 compaction 分数与另外三种表类型保持更一致的范围。 #36534
- 对 MySQL 外部表以及 JDBC catalog 中的外部表的查询支持在 WHERE 子句中包含关键字。 #35917
- 为 Spark Load 添加了 bitmap_from_binary 函数,以支持加载 Binary 数据。 #36050
- bRPC 超时时间从 1 小时缩短为会话变量
query_timeout指定的持续时间。这可以防止因 RPC 请求超时而导致的查询失败。 #36778
参数变更
- 添加了 BE 配置项
enable_stream_load_verbose_log。默认值为false。当此参数设置为true时,StarRocks 可以记录 Stream Load 作业的 HTTP 请求和响应,从而方便故障排除。 #36113 - BE 静态参数
update_compaction_per_tablet_min_interval_seconds变为可变。 #36819
Bug 修复
修复了以下问题
- 哈希连接查询失败,导致 BE 崩溃。 #32219
- 将 FE 配置项
enable_collect_query_detail_info设置为true后,FE 性能急剧下降。 #35945 - 当大量数据加载到启用了持久化索引的主键表中时,可能会抛出错误。 #34352
- 使用
./agentctl.sh stop be停止 BE 时,starrocks_be 进程可能会意外退出。 #35108 array_distinct函数有时会导致 BE 崩溃。 #36377- 用户刷新物化视图时可能发生死锁。 #35736
- 在某些情况下,动态分区可能会遇到错误,导致 FE 启动失败。 #36846
2.5.16
发布日期:2023 年 12 月 1 日
Bug 修复
修复了以下问题
- 全局运行时过滤器在某些场景下可能导致 BE 崩溃。 #35776
2.5.15
发布日期:2023 年 11 月 29 日
改进
参数变更
- FE 动态参数
enable_new_publish_mechanism已更改为静态参数。修改参数设置后,您必须重启 FE。 #35338
Bug 修复
- 如果 Broker Load 作业中指定了过滤条件,在某些情况下,BE 在数据加载期间可能会崩溃。 #29832
- 重放副本操作失败可能导致 FE 崩溃。 #32295
- 将 FE 参数
recover_with_empty_tablet设置为true可能导致 FE 崩溃。 #33071 - 查询时返回 "get_applied_rowsets failed, tablet updates is in error state: tablet:18849 actual row size changed after compaction" 错误。 #33246
- 包含窗口函数的查询可能导致 BE 崩溃。 #33671
- 运行
show proc '/statistic'可能导致死锁。 #34237 - 当大量数据加载到启用了持久化索引的主键表中时,可能会抛出错误。 #34566
- StarRocks 从 v2.4 或更早版本升级到更高版本后,compaction 分数可能意外升高。 #34618
- 如果使用 MariaDB ODBC 数据库驱动程序查询
INFORMATION_SCHEMA,在schemata视图中返回的CATALOG_NAME列只包含null值。 #34627 - 如果在 Stream Load 作业处于 PREPARED 状态时执行 Schema 变更,该作业将丢失一部分要加载的源数据。 #34381
- 在 HDFS 存储路径末尾包含两个或多个斜杠 (
/) 会导致从 HDFS 备份和还原数据失败。 #34601 - 运行加载任务或查询可能导致 FE 挂起。 #34569
2.5.14
发布日期:2023 年 11 月 14 日
改进
- 系统数据库
INFORMATION_SCHEMA中的COLUMNS表可以显示 ARRAY、MAP 和 STRUCT 列。 #33431
参数变更
系统变量
- 添加了会话变量
cbo_decimal_cast_string_strict,它控制 CBO 如何将 DECIMAL 类型的数据转换为 STRING 类型。如果此变量设置为true,则 v2.5 及更高版本中的逻辑生效,系统执行严格转换(即,系统根据精度长度截断生成的字符串并填充 0)。如果此变量设置为false,则 v2.5 之前版本中的逻辑生效,系统处理所有有效数字以生成字符串。默认值为true。 #34208 - 添加了会话变量
cbo_eq_base_type,它指定用于 DECIMAL 类型数据和 STRING 类型数据之间数据比较的数据类型。默认值为VARCHAR,DECIMAL 也是有效值。 #34208
Bug 修复
修复了以下问题
- 如果 ON 条件嵌套了子查询,则报告
java.lang.IllegalStateException: null错误。 #30876 - 如果在成功执行
INSERT INTO SELECT ... LIMIT后立即运行 COUNT(*),副本之间的 COUNT(*) 结果不一致。 #24435 - 如果 cast() 函数中指定的 target 数据类型与原始数据类型相同,BE 可能会因特定数据类型而崩溃。 #31465
- 当使用特定路径格式通过 Broker Load 加载数据时,会报告错误:
msg:Fail to parse columnsFromPath, expected: [rec_dt]。 #32721 - 在升级到 3.x 时,如果某些列类型也升级(例如,Decimal 升级到 Decimal v3),在对具有特定特征的表执行 Compaction 时,BE 会崩溃。 #31626
- 当使用 Flink Connector 加载数据时,如果存在高度并发的加载作业,并且 HTTP 和 Scan 线程数都达到了上限,则加载作业会意外暂停。 #32251
- 调用 libcurl 时 BE 崩溃。 #31667
- 向主键表添加 BITMAP 列会失败,并出现以下错误:
Analyze columnDef error: No aggregate function specified for 'userid'。 #31763 - 长时间、频繁地将数据加载到启用了持久化索引的主键表中,可能导致 BE 崩溃。 #33220
- 启用查询缓存时,查询结果不正确。 #32778
- 创建主键表时指定可为空的排序键会导致 compaction 失败。 #29225
- 对于复杂的 Join 查询,偶尔会出现 "StarRocks planner use long time 10000 ms in logical phase" 错误。 #34177
2.5.13
发布日期:2023 年 9 月 28 日
改进
- 窗口函数 COVAR_SAMP、COVAR_POP、CORR、VARIANCE、VAR_SAMP、STD 和 STDDEV_SAMP 现在支持 ORDER BY 子句和 Window 子句。 #30786
- 在对 DECIMAL 类型数据进行查询时发生 decimal 溢出时,会返回错误而不是 NULL。 #30419
- 执行带有无效注释的 SQL 命令现在返回的结果与 MySQL 一致。 #30210
- 已清理对应已删除 tablet 的 rowsets,减少了 BE 启动时的内存使用。 #30625
Bug 修复
修复了以下问题
- 当用户使用 Spark Connector 或 Flink Connector 从 StarRocks 读取数据时,出现 "Set cancelled by MemoryScratchSinkOperator" 错误。 #30702 #30751
- 当 ORDER BY 子句包含聚合函数时,查询中出现 "java.lang.IllegalStateException: null" 错误。 #30108
- 存在不活动的物化视图时,FE 无法重启。 #30015
- 对重复分区执行 INSERT OVERWRITE 操作会损坏元数据,导致 FE 重启失败。 #27545
- 当用户修改主键表中不存在的列时,出现 "java.lang.NullPointerException: null" 错误。 #30366
- 当用户向分区 StarRocks 外部表加载数据时,出现 "get TableMeta failed from TNetworkAddress" 错误。 #30124
- 在某些场景下,用户通过 CloudCanal 加载数据时发生错误。 #30799
- 当用户通过 Flink Connector 加载数据或执行 DELETE 和 INSERT 操作时,出现 "current running txns on db xxx is 200, larger than limit 200" 错误。 #18393
- 使用包含聚合函数的 HAVING 子句的异步物化视图无法正确重写查询。 #29976
2.5.12
发布日期:2023 年 9 月 4 日
改进
Bug 修复
修复了以下问题
-
当使用 Broker Load 加载数据时,某些字段的 NOT NULL 属性可能导致 BE 崩溃或出现 "msg:mismatchedrow count" 错误。 #29832
-
查询 ORC 格式文件失败,因为 Apache ORC 的 bugfix ORC-1304 (apache/orc#1299) 未合并。 #29804
-
恢复主键表在 BE 重启后导致元数据不一致。 #30135
2.5.11
发布日期:2023 年 8 月 28 日
改进
- 支持对所有复合谓词以及 WHERE 子句中的所有表达式进行隐式转换。您可以通过会话变量
enable_strict_type来启用或禁用隐式转换。默认值为false。 #21870 - 优化了用户在创建 Iceberg Catalog 时未指定
hive.metastore.uri时的提示信息。错误提示更准确。 #16543 - 在错误消息
xxx too many versions xxx中添加了更多提示。 #28397 - 动态分区进一步支持分区单位为
year。 #28386
Bug 修复
修复了以下问题
- 当数据加载到具有多个副本的表中时,如果表的某些分区为空,则会写入大量无效的日志记录。 #28824
- 如果 WHERE 条件中的字段是 BITMAP 或 HLL 字段,DELETE 操作会失败。 #28592
- 通过同步调用(SYNC MODE)手动刷新异步物化视图会导致
information_schema.task_runs表中出现多个 INSERT OVERWRITE 记录。 #28060 - 如果对处于 ERROR 状态的 tablet 触发 CLONE 操作,磁盘使用量会增加。 #28488
- 启用 Join Reorder 时,如果查询的列是常量,查询结果不正确。 #29239
- 在 SSD 和 HDD 之间进行 Tablet 迁移时,如果 FE 向 BE 发送过多的迁移任务,BE 会遇到 OOM 问题。#29055
/apache_hdfs_broker/lib/log4j-1.2.17.jar中的安全漏洞。#28866- 通过 Hive Catalog 查询数据时,如果在 WHERE 子句中使用分区列和 OR 运算符,查询结果不正确。#28876
- 数据查询过程中偶尔会发生 "java.util.ConcurrentModificationException: null" 错误。#29296
- 如果删除了异步物化视图的基础表,FE 无法重启。#29318
- 对于跨数据库创建的异步物化视图,当数据写入该物化视图的基础表时,Leader FE 偶尔会发生死锁。#29432
2.5.10
发布日期:2023 年 8 月 7 日
新功能
- 支持聚合函数 COVAR_SAMP、COVAR_POP 和 CORR。
- 支持以下 窗口函数:COVAR_SAMP、COVAR_POP、CORR、VARIANCE、VAR_SAMP、STD 和 STDDEV_SAMP。
改进
- 优化了 TabletChecker 的调度逻辑,以防止检查器重复调度尚未修复的 Tablet。#27648
- 当 Schema 变更和 Routine Load 同时发生时,如果 Schema 变更先完成,Routine Load 作业可能会失败。优化了这种情况下的错误信息。#28425
- 禁止用户在创建外部表时定义 NOT NULL 列(如果定义了 NOT NULL 列,升级后会出现错误,必须重新创建表)。建议从 v2.3.0 版本开始使用外部目录替换外部表。#25485
- 在 Broker Load 重试遇到错误时添加了错误信息,这有助于数据加载过程中的故障排除和调试。#21982
- 支持当加载作业同时涉及 UPSERT 和 DELETE 操作时进行大规模数据写入。#17264
- 优化了使用物化视图的查询重写。#27934 #25542 #22300 #27557 #22300 #26957 #27728 #27900
Bug 修复
修复了以下问题
- 当使用 CAST 将字符串转换为数组时,如果输入包含常量,结果可能不正确。#19793
- 如果 SHOW TABLET 包含 ORDER BY 和 LIMIT,则返回不正确的结果。#23375
- 物化视图的外连接和反连接重写错误。#28028
- FE 中不正确的表级别扫描统计信息导致表查询和加载指标不准确。#27779
- 如果在 HMS 上配置了事件监听器以增量更新 Hive 元数据,FE 日志中会报告
An exception occurred when using the current long link to access metastore. msg: Failed to get next notification based on last event id: 707602。#21056 - 如果修改了分区表的排序键,查询结果不稳定。#27850
- 如果分桶列是 DATE、DATETIME 或 DECIMAL 列,使用 Spark Load 加载的数据可能会被分发到错误的桶中。#27005
- 在某些情况下,regex_replace 函数可能导致 BE 崩溃。#27117
- 如果 sub_bitmap 函数的输入不是 BITMAP 值,BE 会崩溃。#27982
- 启用 Join Reorder 时,查询返回 "Unknown error"。#27472
- 平均行大小估计不准确导致主键部分更新占用过多内存。#27485
- 如果启用了低基数优化,某些 INSERT 作业会返回
[42000][1064] Dict Decode failed, Dict can't take cover all key :0。#26463 - 如果用户在创建的 Broker Load 作业中指定了
"hadoop.security.authentication" = "simple"以从 HDFS 加载数据,则作业失败。#27774 - 修改物化视图的刷新模式会导致 Leader FE 和 Follower FE 之间的元数据不一致。#28082 #28097
- 使用 SHOW CREATE CATALOG 和 SHOW RESOURCES 查询特定信息时,密码未被隐藏。#28059
- LabelCleaner 线程阻塞导致的 FE 内存泄漏。#28311
2.5.9
发布日期:2023 年 7 月 19 日
新功能
- 可以重写包含与物化视图不同类型连接的查询。#25099
改进
- 无法创建目标集群为当前 StarRocks 集群的 StarRocks 外部表。#25441
- 如果查询的字段未包含在物化视图的输出列中,但包含在物化视图的谓词中,查询仍然可以被重写。#23028
- 在数据库
Information_schema的表tables_config中添加了一个新字段table_id。您可以通过列table_id将tables_config与be_tablets连接,以查询 Tablet 所属的数据库和表名称。#24061
Bug 修复
修复了以下问题
- Duplicate Key 表的 Count Distinct 结果不正确。#24222
- 如果 Join 键是大的 BINARY 列,BE 可能会崩溃。#25084
- 如果要插入的 CHAR 数据长度超过了 STRUCT 列中定义的最大 CHAR 长度,INSERT 操作会挂起。#25942
- coalesce() 的结果不正确。#26250
- 数据恢复后,Tablet 的版本号在 BE 和 FE 之间不一致。#26518
- 无法为已恢复的表自动创建分区。#26813
2.5.8
发布日期:2023 年 6 月 30 日
改进
- 优化了向非分区表添加分区时报告的错误信息。#25266
- 优化了表的 自动 Tablet 分布策略。#24543
- 优化了 CREATE TABLE 语句中的默认注释。#24803
- 优化了异步物化视图的手动刷新。支持使用 REFRESH MATERIALIZED VIEW WITH SYNC MODE 语法来同步调用物化视图刷新任务。#25910
Bug 修复
修复了以下问题
- 如果物化视图基于 Union 结果构建,其 COUNT 结果可能不准确。#24460
- 当用户尝试强制重置 root 密码时,返回 "Unknown error"。#25492
- 在存活 BE 少于三个的集群上执行 INSERT OVERWRITE 时,显示不准确的错误信息。#25314
2.5.7
发布日期:2023 年 6 月 14 日
新功能
- 可以使用
ALTER MATERIALIZED VIEW <mv_name> ACTIVE手动激活非活动物化视图。您可以使用此 SQL 命令激活其基础表已被删除然后重新创建的物化视图。更多信息请参阅 ALTER MATERIALIZED VIEW。#24001 - 创建表或添加分区时,StarRocks 可以自动设置适当数量的 Tablet,无需手动操作。更多信息请参阅 确定 Tablet 数量。#10614
改进
- 优化了外部表查询中 Scan 节点的 I/O 并发性,减少了内存使用并提高了从外部表加载数据的稳定性。#23617 #23624 #23626
- 优化了 Broker Load 作业的错误信息。错误信息包含重试信息和出错的文件名。#18038 #21982
- 优化了 CREATE TABLE 超时时返回的错误信息,并添加了参数调优提示。#24510
- 优化了 ALTER TABLE 因表状态非 Normal 而失败时返回的错误信息。#24381
- 在 CREATE TABLE 语句中忽略全角空格。#23885
- 优化了 Broker 访问超时,提高了 Broker Load 作业的成功率。#22699
- 对于主键表,SHOW TABLET 返回的
VersionCount字段包含处于 Pending 状态的 Rowset。#23847 - 优化了持久化索引策略。#22140
Bug 修复
修复了以下问题
- 当用户将 Parquet 数据加载到 StarRocks 时,DATETIME 值在类型转换过程中溢出,导致数据错误。#22356
- 禁用动态分区后,Bucket 信息丢失。#22595
- 在 CREATE TABLE 语句中使用不受支持的属性会导致空指针异常 (NPE)。#23859
information_schema中的表权限过滤失效。结果是,用户可以看到他们没有权限查看的表。#23804- SHOW TABLE STATUS 返回的信息不完整。#24279
- 当数据加载与 Schema 变更同时发生时,Schema 变更有时可能会挂起。#23456
- RocksDB WAL flush 阻塞了 bthread 的 brpc worker 处理,这会中断高频数据加载到主键表。#22489
- 可以成功创建 StarRocks 不支持的 TIME 类型列。#23474
- 物化视图 Union 重写失败。#22922
2.5.6
发布日期:2023 年 5 月 19 日
改进
- 优化了 INSERT INTO ... SELECT 因
thrift_server_max_worker_thread值过小而过期时报告的错误信息。#21964 - 使用 CTAS 创建的表默认有三个副本,与普通表的默认副本数一致。#22854
Bug 修复
- 截断分区失败,因为 TRUNCATE 操作对分区名称区分大小写。#21809
- 由于物化视图的临时分区创建失败,BE 停用失败。#22745
- 指定了 ARRAY 值的动态 FE 参数不能设置为空数组。#22225
- 指定了
partition_refresh_number属性的物化视图可能无法完全刷新。#21619 - SHOW CREATE TABLE 会掩盖云凭证信息,导致内存中凭证信息不正确。#21311
- 通过外部表查询的某些 ORC 文件上的谓词无法生效。#21901
- min-max 过滤器无法正确处理列名称中的大小写字母。#22626
- 延迟物化导致查询复杂数据类型(STRUCT 或 MAP)时出错。#22862
- 恢复主键表时出现的问题。#23384
2.5.5
发布日期:2023 年 4 月 28 日
新功能
添加了一个指标来监控主键表的 Tablet 状态
- 添加了 FE 指标
err_state_metric。 - 在
SHOW PROC '/statistic/'的输出中添加了ErrorStateTabletNum列,用于显示 err_state Tablet 的数量。 - 在
SHOW PROC '/statistic/<db_id>/'的输出中添加了ErrorStateTablets列,用于显示 err_state Tablet 的 ID。
更多信息请参阅 SHOW PROC。
改进
- 优化了添加多个 BE 时的磁盘均衡速度。# 19418
- 优化了
storage_medium的推断。当 BE 同时使用 SSD 和 HDD 作为存储设备时,如果指定了storage_cooldown_time属性,StarRocks 将storage_medium设置为SSD。否则,StarRocks 将storage_medium设置为HDD。#18649 - 通过禁止收集值列的统计信息,优化了 Unique Key 表的性能。#19563
错误修复
- 对于 Colocation 表,可以使用类似
ADMIN SET REPLICA STATUS PROPERTIES ("tablet_id" = "10003", "backend_id" = "10001", "status" = "bad");的语句将副本状态手动指定为bad。如果 BE 的数量小于或等于副本的数量,损坏的副本将无法修复。# 17876 - BE 启动后,进程存在但 BE 端口无法启用。# 19347
- 嵌套了窗口函数的聚合查询返回错误的结果。# 19725
- 物化视图 (MV) 首次刷新时,
auto_refresh_partitions_limit不生效。结果是所有分区都被刷新。# 19759 - 查询包含复杂数据(如 MAP 和 STRUCT)的数组数据的 CSV Hive 外部表时出错。# 20233
- 使用 Spark connector 的查询超时。# 20264
- 如果一个双副本表的副本损坏,该表无法恢复。# 20681
- 由 MV 查询重写失败导致的查询失败。# 19549
- 指标接口因数据库锁定而过期。# 20790
- Broadcast Join 返回错误的结果。# 20952
- 在 CREATE TABLE 中使用不受支持的数据类型时返回 NPE。# 20999
- 使用查询缓存功能时使用 window_funnel() 引起的问题。# 21474
- CTE 重写后,优化计划选择所需时间异常地长。# 16515
2.5.4
发布日期:2023 年 4 月 4 日
改进
- 优化了查询规划期间对物化视图的查询重写性能。查询规划时间减少了约 70%。#19579
- 优化了类型推断逻辑。如果一个查询如
SELECT sum(CASE WHEN XXX);包含常量0,例如SELECT sum(CASE WHEN k1 = 1 THEN v1 ELSE 0 END) FROM test;,会自动启用预聚合以加速查询。#19474 - 支持使用
SHOW CREATE VIEW查看物化视图的创建语句。#19999 - 支持在 BE 节点之间通过单个 bRPC 请求传输大小为 2 GB 或更大的数据包。#20283 #20230
- 支持使用 SHOW CREATE CATALOG 查询外部目录的创建语句。
错误修复
修复了以下错误
- 对物化视图的查询重写后,低基数优化的全局字典不生效。#19615
- 如果物化视图查询重写失败,查询将失败。#19774
- 如果物化视图是基于主键表或唯一键表创建的,则对该物化视图的查询无法重写。#19600
- 物化视图的列名是大小写敏感的。然而,在创建表时,如果在表创建语句的
PROPERTIES中列名不正确,表仍然可以成功创建而没有错误信息,而且基于该表创建的物化视图的查询重写会失败。#19780 - 在对物化视图的查询进行重写后,查询计划可能会包含基于分区列的无效谓词,从而影响查询性能。#19784
- 当向新创建的分区中加载数据时,对物化视图的查询可能无法重写。#20323
- 在创建物化视图时配置
"storage_medium" = "SSD"导致物化视图刷新失败。#19539 #19626 - 主键表可能发生并发 Compaction。#19692
- 大量 DELETE 操作后 Compaction 不会及时发生。#19623
- 如果语句的表达式包含多个低基数列,该表达式可能无法被正确重写。结果是低基数优化的全局字典不生效。#20161
2.5.3
发布日期:2023 年 3 月 10 日
改进
- 优化了物化视图 (MV) 的查询重写。
- 优化了当窗口函数 RANK() 用作过滤器或排序键时的性能和内存使用情况。#17553
错误修复
修复了以下错误
- 由 ARRAY 数据中的 null 字面量
[]引起的错误。#18563 - 在某些复杂的查询场景中错误地使用了低基数优化字典。现在在应用字典之前增加了字典映射检查。#17318
- 在单 BE 环境中,Local Shuffle 导致 GROUP BY 产生重复结果。#17845
- 对非分区 MV 错误使用与分区相关的 PROPERTIES 可能导致 MV 刷新失败。现在用户创建 MV 时会进行分区 PROPERTIES 检查。#18741
- 解析 Parquet Repetition 列时出错。#17626 #17788 #18051
- 获取的列的可空信息不正确。解决方案:当使用 CTAS 创建主键表时,只有主键列是非空的;非主键列是可空的。#16431
- 从主键表中删除数据导致的一些问题。#18768
2.5.2
发布日期:2023 年 2 月 21 日
新功能
- 支持使用 Instance Profile 和 Assumed Role 凭证方法访问 AWS S3 和 AWS Glue。#15958
- 支持以下位函数:bit_shift_left、bit_shift_right 和 bit_shift_right_logical。#14151
改进
错误修复
修复了以下错误
- 包含 MAP 和 ARRAY 数据的 Apache Hive 外部表无法刷新。#17548
- Superset 无法识别物化视图的列类型。#17686
- BI 连接因 SET GLOBAL/SESSION TRANSACTION 无法解析而失败。#17295
- Colocate Group 中动态分区的表的 Bucket 数量无法修改并返回错误信息。#17418
- 准备阶段失败可能导致的问题。#17323
行为变更
- 将
enable_experimental_mv的默认值从false更改为true,这意味着异步物化视图默认启用。 - 将 CHARACTER 添加到保留关键字列表。#17488
2.5.1
发布日期:2023 年 2 月 5 日
改进
- 基于外部目录创建的异步物化视图支持查询重写。#11116 #15791
- 允许用户指定 CBO 统计信息自动收集的收集周期,以防止因自动全量收集导致的集群性能抖动。#14996
- 添加了 Thrift server 队列。在 INSERT INTO SELECT 期间无法立即处理的请求可以挂起在 Thrift server 队列中,防止请求被拒绝。#14571
- 弃用 FE 参数
default_storage_medium。如果用户创建表时未明确指定storage_medium,系统将根据 BE 磁盘类型自动推断表的存储介质。更多信息请参阅 CREATE TABLE 中对storage_medium的描述。#14394
错误修复
修复了以下错误
- SET PASSWORD 导致的空指针异常 (NPE)。#15247
- 包含空键的 JSON 数据无法解析。#16852
- 无效类型的数据可以成功转换为 ARRAY 数据。#16866
- 发生异常时,嵌套循环连接无法中断。#16875
行为变更
- 弃用 FE 参数
default_storage_medium。表的存储介质由系统自动推断。#14394
2.5.0
发布日期:2023 年 1 月 22 日
新功能
- 支持使用 Hudi 目录和 Hudi 外部表查询 Merge On Read 表。#6780
- 支持使用 Hive 目录、Hudi 目录和 Iceberg 目录 查询 STRUCT 和 MAP 数据。#10677
- 提供了 数据缓存,以提高对存储在外部存储系统(如 HDFS)中的热数据的访问性能。#11597
- 支持创建 Delta Lake 目录,可以直接查询 Delta Lake 中的数据。#11972
- Hive、Hudi 和 Iceberg 目录与 AWS Glue 兼容。#12249
- 支持创建 文件外部表,可以直接查询来自 HDFS 和对象存储的 Parquet 和 ORC 文件。#13064
- 支持基于 Hive、Hudi、Iceberg 目录以及物化视图创建物化视图。有关详细信息,请参阅 物化视图。#11116 #11873
- 支持对使用主键表的表进行条件更新。有关详细信息,请参阅 通过加载更改数据。#12159
- 支持 查询缓存,它会存储查询的中间计算结果,从而提高 QPS 并降低高并发、简单查询的平均延迟。#9194
- 支持指定 Broker Load 作业的优先级。有关详细信息,请参阅 BROKER LOAD #11029
- 支持为 StarRocks 内部表指定数据加载的副本数。有关详细信息,请参阅 CREATE TABLE。#11253
- 支持 查询队列。#12594
- 支持隔离数据加载占用的计算资源,从而限制数据加载任务的资源消耗。有关详细信息,请参阅 资源组。#12606
- 支持为 StarRocks 内部表指定以下数据压缩算法:LZ4、Zstd、Snappy 和 Zlib。有关详细信息,请参阅 数据压缩。#10097 #12020
- 支持 用户自定义变量。#10011
- 支持 Lambda 表达式 和以下高阶函数:array_map、array_sum 和 array_sortby。#9461 #9806 #10323 #14034
- 提供了 QUALIFY 子句,用于过滤 窗口函数 的结果。#13239
- 支持在创建表时,将 uuid() 和 uuid_numeric() 函数返回的结果用作列的默认值。有关详细信息,请参阅 CREATE TABLE。#11155
- 支持以下函数:map_size、map_keys、map_values、max_by、sub_bitmap、bitmap_to_base64、host_name 和 date_slice。#11299 #11323 #12243 #11776 #12634 #14225
优化
- 优化了使用 Hive 目录、Hudi 目录 和 Iceberg 目录 查询外部数据时的元数据访问性能。#11349
- 支持使用 Elasticsearch 外部表 查询 ARRAY 数据。#9693
- 优化了物化视图的以下方面
- 优化了数据加载的以下方面
- 通过支持“单 Leader 复制”模式,优化了多副本场景下的加载性能。数据加载性能提升一倍。有关“单 Leader 复制”的详细信息,请参阅 CREATE TABLE 中的
replicated_storage。#10138 - 当仅配置一个 HDFS 集群或一个 Kerberos 用户时,Broker Load 和 Spark Load 在数据加载时不再需要依赖 Broker。但是,如果您有多个 HDFS 集群或多个 Kerberos 用户,仍然需要部署 Broker。有关详细信息,请参阅 从 HDFS 或云存储加载数据 和 使用 Apache Spark™ 批量加载。#9049 #9228
- 优化了加载大量小型 ORC 文件时 Broker Load 的性能。#11380
- 减少了向主键表加载数据时的内存使用量。
- 通过支持“单 Leader 复制”模式,优化了多副本场景下的加载性能。数据加载性能提升一倍。有关“单 Leader 复制”的详细信息,请参阅 CREATE TABLE 中的
- 优化了
information_schema数据库及其下的tables和columns表。新增了表table_config。有关详细信息,请参阅 信息架构。#10033 - 优化了数据备份和恢复
- 优化了以下函数
- 为 time_slice 函数添加了一个可选参数,用于确定返回时间间隔的开始还是结束。#11216
- 为 window_funnel 函数添加了新的
INCREASE模式,以避免计算重复的时间戳。#10134 - 支持在 unnest 函数中指定多个参数。#12484
- lead() 和 lag() 函数支持查询 HLL 和 BITMAP 数据。有关详细信息,请参阅 窗口函数。#12108
- 以下 ARRAY 函数支持查询 JSON 数据:array_agg、array_sort、array_concat、array_slice 和 reverse。#13155
- 优化了一些函数的用法。
current_date、current_timestamp、current_time、localtimestamp和localtime函数可以在不使用()的情况下执行,例如,您可以直接运行select current_date;。# 14319
- 从 FE 日志中移除了某些冗余信息。# 15374
Bug 修复
修复了以下错误
- 当第一个参数为空时,append_trailing_char_if_absent() 函数可能会返回不正确的结果。#13762
- 使用 RECOVER 语句恢复表后,该表不存在。#13921
- SHOW CREATE MATERIALIZED VIEW 语句返回的结果在创建物化视图时查询的数据库和目录信息不包含在内。#12833
waiting_stable状态下的 Schema 变更作业无法被取消。#12530- 在 Leader FE 和非 Leader FE 上运行
SHOW PROC '/statistic';命令返回的结果不同。#12491 - SHOW CREATE TABLE 命令返回结果中 ORDER BY 子句的位置不正确。# 13809
- 当用户使用 Hive Catalog 查询 Hive 数据时,如果 FE 生成的执行计划中不包含分区 ID,BE 会查询 Hive 分区数据失败。# 15486。
行为变更
- 将
AWS_EC2_METADATA_DISABLED参数的默认值更改为False,这意味着获取 Amazon EC2 的元数据以访问 AWS 资源。 - 将会话变量
is_report_success重命名为enable_profile,可以使用 SHOW VARIABLES 语句查询。 - 新增了四个保留关键字:
CURRENT_DATE、CURRENT_TIME、LOCALTIME和LOCALTIMESTAMP。# 14319 - 表和数据库名称的最大长度可达 1023 个字符。# 14929 # 15020
- BE 配置项
enable_event_based_compaction_framework和enable_size_tiered_compaction_strategy默认设置为true,当存在大量 Tablet 或单个 Tablet 数据量很大时,显著降低了 Compaction 开销。
升级注意事项
- 您可以将集群从 2.0.x、2.1.x、2.2.x、2.3.x 或 2.4.x 升级到 2.5.0。但是,如果您需要回滚,建议仅回滚到 2.4.x。