StarRocks version 3.1
3.1.17
发布日期:2025 年 01 月 03 日
问题修复
修复了如下问题:
- 跨集群数据迁移工具在迁移数据时,由于未考虑目标集群分区删除的情况,在同步数据并做 Commit 时导致 Follower FE Crash。#54061
- 使用跨集群数据迁移工具同步有过 DELETE 操作的表时,目标集群的 BE 可能会 Crash。#54081
- BDBJE 的 Handshake 存在 Bug,导致 Leader FE 和 Follower FE 链接重连的时候会被 Leader FE 拒绝,从而导致 Follwer FE 节点退出。#50412
- FE 中内存统计有重复统计的情况,会导致消耗大量内存。#53055
- 异步物化视图刷新时的任务状态在多个 FE 之间不一致,导致查询时的状态不准确。#54236
3.1.16
发布日期:2024 年 12 月 16 日
功能优化
- 优化了表相关统计信息。#50316
问题修复
修复了如下问题:
- 由于系统对磁盘写满时的错误码判断不够细化,导致 BE 认为磁盘有错误而误删数据。#51411
- 通过 HTTP 1.0 提交的 Stream Load 失败。#53010 #53008
- Routine Load 因事务过期而导致任务取消(当前仅有数据库或表不存在任务才会被取消,事务过期时任务会被暂停)。#50334
- 使用 EXPORT 命令通过 Broker 方式导出数据到
file://
时,系统会报文件 RENAME 错误进而导致导出失败。#52544 - Equal-join 中,如果 JOIN 的条件是基于一个低基数列的表达式,系统会错误地下推一个 Runtime Filter 谓词,导致 BE Crash。#50690
3.1.15
发布日期:2024 年 9 月 4 日
问题修复
修复了如下问题:
- 在通过异步物化视图改写查询时,部分表
count(*)
返回的结果为 NULL。#49288 partition_linve_nubmer
不生效。#49213- FE 汇报 Tablet 异常:BE 磁盘下线,Tablet 无法迁移。#47833
3.1.14
发布日期:2024 年 7 月 29 日
功能优化
- Stream Load 支持将
\t
和\n
分别作为行列分割符,无需转成对应的十六进制 ASCII 码。#47302
问题修复
修复了如下问题:
- 主键表频繁 INSERT UPDATE,可能会导致数据库写入和查询卡顿。 #47838
- 主键表写盘失败时,持久化索引可能会因为无法捕捉错误导致数据丢失,并报错 “Insert found duplicate key”。#48045
- 物化视图在刷新时,可能会报告权限不够。 #47561
- 物化视图刷新时报错 “For input string”。 #46131
- 物化视图刷新时持锁时间太长,导致死锁检测脚本重启了 Leader FE。#48256
- 视图带有 IN 的查询可能结果不准确。 #47484
- Global Runtime Filter 导致查询结果跳变。#48496
- MySQL 协议
COM_CHANGE_USER
不支持conn_attr
。#47796
行为变更
- 非分区表为自动设置分桶数量时,系统自动设置的分桶数最小值修改为
16
(原来的规则是2 * BE 数量
,也即最小会创建 2 个 Tablet)。如果是小数据且想要更小的分桶数,需要手动设置。#47005
3.1.13
发布日期:2024 年 6 月 26 日
功能优化
- Broker 进程支持访问腾讯云 COS 融合桶,从而可以通过 Broker Load 从 COS 融合桶导入数据,以及通过 SELECT INTO OUTFILE 导出数据到 COS 融合桶。#46597
- 通过 SHOW CREATE TABLE 能够查看 Hive Catalog 中 Hive 外表的 Comment。#37686
- 优化 WHERE 子句中的 Conjunct 的评估时间,包括同一个 Column 有多个 LIKE 语句或 CASE WHEN 表达式。#46914
问题修复
修复了如下问题:
- 存算分离集群中使用 DELETE 语句时因为要删除的分区比较多而导致失败。#46229
3.1.12
发布日期:2024 年 5 月 30 日
新增特性
功能优化
- 在 BE 通过 RPC 与 FE 通信失败时,FE 只会统一返回报错信息
call frontend service failed reason=xxx
,导致具体出错原因不明。优化后报错信息中会提示具体的出错原因,例如超时或服务器繁忙。 #44153 - 优化导入中报错信息,例如错误数据行超限、列数不对应、无效列名、所有分区中没有数据。
安全
- 升级 Kafka client 依赖包为 v3.4.0,以修复 CVE-2023-25194 安全问题。#45382
问题修复
修复了如下问题:
- 如果一个物化视图定义中包含多个相同的表的 self join,且根据该表进行分区增量刷新,会因分区选择错误而导致结果错误。#45936
- 存算分离模式下在物化视图中创建 Bitmap 索引,会导致 FE crash。#45665
- 通过 ODBC 连接 FE follower 并执行 CREATE TABLE 时因空指针问题导致 BE crash。#45043
- 如果有较多异步任务,查询 information_schema.task_runs 会频繁失败。#45520
- SQL 语句中包含多个 COUNT DISTINCT 且包含 LIMIT,则 LIMIT 处理出现问题,导致每次执行语句返回数据不一致。#44749
- 查询明细表和聚合表的语句中包含 ORDER BY LIMIT 子句时,查询结果错误。#45037
3.1.11
发布日期:2024 年 4 月 28 日
行为变更
功能优化
- 支持读取 Iceberg 中 Equality Delete 的 Parquet 文件。#42489
问题修复
修复了如下问题:
- 查询 Hive/Iceberg catalog 等外表时报错无权限,权限丢失,但用
SHOW GRANTS
查询时对应的权限是存在的。#44061 str_to_map
函数使用时可能会导致 BE crash。#43930- 使用 Routine Load 导入数据时,执行
show proc '/routine_loads'
会卡住,是因为内部有死锁问题。#44249 - 主键表的 Persistent Index 在使用中可能会因为内部并发控制问题而导致 BE crash。#43720
- 通过
leaderFE_IP:8030
界面查到的pending_task_run_count
数据错误,当前统计的是 Pending+Running 的总数,而不是 Pending 的任务数。同时,从followerFE_IP:8030
查不到refresh_pending
监控指标的信息。#43052 - 查询
information_schema.task_runs
会频繁失败。#43052 - 一些含有 CTE 的 SQL 查询时会报
Invalid plan: PhysicalTopNOperator
错误。#44185
3.1.10(已下线)
发布日期:2024 年 3 月 29 日
此版本因存在 Hive/Iceberg catalog 等外表权限相关问题已经下线。
- 问题:查询 Hive/Iceberg catalog 等外表时报错无权限,权限丢失,但用
SHOW GRANTS
查询时对应的权限是存在的。 - 影响范围:对于不涉及 Hive/Iceberg catalog 等外表权限的查询,不受影响。
- 临时解决方法:在对 Hive/Iceberg catalog 等外表进行重新授权后,查询可以恢复正常。但是
SHOW GRANTS
会出现重复的权限条目。后续在升级 3.1.11 后,通过REVOKE
操作删除其中一条即可。
新增特性
行为变更
- JSON 中的 null 值通过
IS NULL
等方式判断时,修改为按照 SQL 的 NULL 值计算。即,SELECT parse_json('{"a": null}') -> 'a' IS NULL
会返回true
(原来是返回false
)。#42815
功能优化
- 通过 Broker Load 导入 ORC 格式的数据,在 TIMESTAMP 类型的数据转化为 StarRocks 中的 DATETIME 类型的数据时,新增支持保留微秒信息。#42348
问题修复
修复了如下问题:
- 对于存算分离中的主键表,本地持久化索引的垃圾回收 (Garbage Collection) 和淘汰线程对 CN 节点没有生效,导致无用数据没有被删除。#42241
- 通过 Hive Catalog 查询 ORC 格式文件的数据时,可能出现结果错误。原因在于之前采用的是按位置映射的方式从 Hive 读取 ORC 格式文件的数据。用户可以通过修改会话变量
set orc_use_column_names = true;
,指定按列名映射的方式正确读取 Hive 中的 ORC 格式文件的数据。#42905 - 采用 AD 系统的 LDAP 认证方式时,不用密码也能登陆 。#42476
- 当磁盘设备名称以数字结尾时,监控指标的值始终为零。原因是通过删除设备名称尾部的数字而得到的设备名可能是无效的。#42741
3.1.9
发布日期:2024 年 3 月 8 日
新增特性
- 存算分离集群中的云原生主键表支持 Size-tiered 模式 Compaction,以减轻导入较多小文件时 Compaction 的写放大问题。#41610
- 新增
information_schema.partitions_meta
视图,提供丰富的 PARTITION 元信息。#41101 - 新增
sys.fe_memory_usage
视图,提供 StarRocks 的内存使用信息。#41083
行为变更
- 动态分区语法修改为“如果分区列是日期(DATE)类型,则不支持小时(hour)时间粒度”。注意,时间日期(DATETIME)类型的分区列还是支持小时时间粒度的。#40328
- 修改发起物化视图刷新任务的用户,从原本的
root
用户变成创建物化视图的用户,已有的物化视图不受影响。#40698 - 常量和字符串类型的列进行比较时,默认按字符串进行比较,用户可以通过设置变量
cbo_eq_base_type
来调整默认行为。将cbo_eq_base_type
设置为decimal
可以改为按数值进行比较。#41712
功 能优化
- 支持通过
s3_compatible_fs_list
参数设置可以使用 AWS SDK 接入的 S3 兼容对象存储。同时支持通过fallback_to_hadoop_fs_list
参数配置需要通过 HDFS 的 Schema 接入的非 S3 兼容对象存储(该方法需要使用厂商提供的 JAR 包)。#41612 - 优化 Trino 语法兼容性,支持 Trino 的
current_catalog
、current_schema
、to_char
、from_hex
、to_date
、to_timestamp
以及index
函数的语法转换。#41505 #41270 #40838 - 为缓解由于候选物化视图太多而导致查询在 Plan 阶段耗时过高的问题,引入了一个新的会话变量
cbo_materialized_view_rewrite_related_mvs_limit
,用于控制查询在 Plan 阶段最多拥有的候选物化视图个数,默认是 64 个。#39829 - 聚合表中 BITMAP 类型的列支持指定聚合类型为
replace_if_not_null
,从而支持部分列更新。#42102 - 通过修改会话变量
cbo_eq_base_type
,控制字符串与数值比较时隐式转换规则,默认按字符串进行比较。#40619 - 内部支持更多日期类型识别(如 "%Y-%m-%e %H:%i"),从而更好地支持 Iceberg 分区表达。#40474
- JDBC Connector 支持 TIME 数据类型。#31940
- File External Table 的
path
参数支持使用通配符(*
),但是和 Broker Load 中DATA INFILE
参数一样最多只能匹配一层目录或文件。#40844 - 新增内部 SQL 日志,其中包含统计信息和物化视图等相关的日志信息。#40682
问题修复
修复了如下问题:
- 当创建 Hive 视图的查询语句中存在同一个表或视图的名称(或别名)大小写不一致的情况时,会出现“Analyze Error”的问题。#40921
- 主键表使用持久化索引会导致磁盘 I/O 打满。#39959
- 存算分离集群中,主键索引目录每 5 小时会被错误删除。#40745
- List 分区表在 Truncate Table 或 Truncate Partition 之后根据分区键查询不到数据。#40495
- 手动执行 ALTER TABLE COMPACT 后,Compaction 内存统计有异常。#41150
- 跨集群数据迁移中,如果执行列模式的部分列更新,目标集群可能会 Crash。#40692
- 当某些 SQL 语句中包含多个空格、换行符时,SQL 黑名单会不生效。#40457
3.1.8
发布日期:2024 年 2 月 5 日
新增特性
- 社区提供 StarRocks 数据迁移工具,支持将数据从存算一体集群迁移数据到存算一体集群或者存算分离集群。
- 支持创建带有 WHERE 子句的同步物化视图。
- MemTracker 中新增了 Data Cache 内存使用的相关指标。#39600
参数变更
- 增加 BE 配置项
lake_pk_compaction_max_input_rowsets
,用于控制存算分离集群下主键表 Compaction 任务中允许的最大输入 Rowset 数量,优化 Compaction 时资源的使用。#39611
功能优化
- 通过 CTAS 建表时支持配置 ORDER BY 和 INDEX。#38886
- 新增支持 ORC 格式 Iceberg v2 表的 Equality Delete 查询。#37419
- 云原生表开启 List 分区表后可以设置
datacache.partition_duration
属性且支持动态修改,用于控制 Data Cache 的有效时间。#35681 #38509 - 优化主键模型表索引的 Major Compaction 的策略,可通过 BE 配置项
update_compaction_per_tablet_min_interval_seconds
控制主键模型表索引的 Major Compaction的频率(该参数同时也控制主键模型表 Compaction 的频率)。#39640 - Parquet Reader 支持将 Parquet 文件中 INT32 类型的数据转换成 DATETIME 类型的数据并保存到 StarRocks中。#39808
问题修复
修复了如下问题:
- 使用非数列(NaN 列)进行排序可能导致 BE Crash。#30759
- 更新主键索引失败可能导致 "get_applied_rowsets failed"。#27488
- Compaction 失败后,compaction_state_cache 没有回收仍然占用资源。#38499
- 如果外表的分区列有取值是 null,查询时会导致 BE Crash。#38888
- 当基表删除重建后,异步物化视图刷新失败。#38008
- 如果 Iceberg 表是空表,异步物化视图刷新失败。#24068
3.1.7
发布日期:2024 年 1 月 12日
新增特性
- 新增表函数
unnest_bitmap
。#38136 - Broker Load 支持条件更新。#37400
行为变更
- 新增 Session 变量
enable_materialized_view_for_insert
,默认值为FALSE
,表示物化视图不再改写 INSERT INTO SELECT 语句中的查询。#37505 - 将 FE 配置项
enable_new_publish_mechanism
改为静态参数,修改后必须重启 FE 才可以生效。#35338 - 新增 Session 变量
enable_strict_order_by
。当取值为默认值TRUE
时,如果查询中的输出列存在不同的表达式使用重复别名的情况,且按照该别名进行排序,查询会报错,例如select distinct t1.* from tbl1 t1 order by t1.k1;
。该行为和 2.3 及之前版本的逻辑一致。如果取值为FALSE
,采用宽松的去重机制,把这类查询作为有效 SQL 处理。#37910
参数变更
- 增加 FE 配置项
routine_load_unstable_threshold_second
。#36222 - 新增 FE 配置项
http_worker_threads_num
,指定 HTTP Server 用于处理 HTTP 请求的线程数。默认取值为0
。如果配置为负数或0
,线程数将设置为 CPU 核数的 2 倍。#37530 - 新增 BE 配置项
pindex_major_compaction_limit_per_disk
,配置每块盘 Compaction 的最大并发数,用于解决 Compaction 在磁盘之间不均衡导致个别磁盘 I/O 过高的问题,默认取值为1
。#36681 - 新增 Session 变量
transaction_read_only
和tx_read_only
,设置事务的访问模式并且兼容 MySQL 5.7.20 以上的版本。#37249 - 新增 FE 配置项
default_mv_refresh_immediate
,用于控制物化视图创建完成后是否立刻进行刷新,默认值为true
。#37093 - 新增 BE 配置项
lake_enable_vertical_compaction_fill_data_cache
,表示存算分离模式下是否允许 Compaction 任务在执行时缓存数据到本地磁盘上,默认取值是false
。#37296
功能优化
- INSERT INTO FILE() SELECT FROM 支持读取表中 BINARY 类型的数据并导出至远端存储中的 Parquet 格式文件中。#36797
- 异步物化视图可以设置
datacache.partition_duration
属性且支持动态修改,用于控制 Data Cache 的有效时间。#35681 - 使用 JDK 时 GC 算 法默认采用 G1。#37386
date_trunc
、adddate
、time_slice
函数的interval
参数可支持毫秒和微秒。#36386- WHERE 子句中 LIKE 运算符右侧字符串中不包括
%
或者_
时,LIKE 运算符会转换成=
运算符。#37515 - SHOW ROUTINE LOAD 返回结果中增加
LatestSourcePosition
,记录 数据源 Kafka 中 Topic 内各个分区的最新消息位点,便于检查导入延迟情况。#38298 - 新增资源组属性
spill_mem_limit_threshold
,用于设置开启自动落盘(即系统变量spill_mode
设置为auto
)时,当前资源组触发落盘的内存占用阈值(百分比)。取值范围:(0,1)。默认取值为1
,表示不生效。#36701 - SHOW ROUTINE LOAD 返回结果中增加时间戳进度信息,展示各个分区当前消费消息的时间戳。#36222
- 优化 Rountine Load 的调度策略,慢任务不阻塞其他正常任务的执行。#37638
问题修复
修复了如下问题:
- ANALYZE TABLE 偶尔会出现卡住的问题。#36836
- PageCache 内存占用在有些情况下会超过 BE 动态参数
storage_page_cache_limit
设定的阈值。#37740 - Hive Catalog 的元数据在 Hive 表新增字段后不会自动刷新。#37668
- 某些情况下
bitmap_to_string
会因为转换时数据类型溢出导致查询结果错误。#37405 - 空表执行 DELETE 报错“ERROR 1064 (HY000): Index: 0, Size: 0”。#37461
- 当 FE 动态参数
enable_sync_publish
设置为TRUE
时,BE Crash 重启后写入数据可能会出现无法查询的情况。#37398 - Information Schema 里的视图
views
中TABLE_CATALOG
字段取值是null
。#37570 SELECT ... FROM ... INTO OUTFILE
导出至 CSV 时,如果 FROM 子句中包含多个常量,执行时会报错:"Unmatched number of columns"。#38045
3.1.6
发布日期:2023 年 12 月 18 日
新增特性
- 增加 now(p) 函数用于获取指定秒精度的时间 (最高到毫秒)。如果不指定
p
,now() 函数仍然只返回秒级精度的时间。#36676 - 新增了监控指标
max_tablet_rowset_num
(用于设置 Rowset 的最大数量),可以协助提前发现 Compaction 是否会出问题并及时干预,减少报错信息“too many versions”的出现。#36539 - 支持使用命令行获取 Heap Profile,便于发生问题后进行定位分析。#35322
- 支持使用 Common Table Expression (CTE) 创建异步物化视图。#36142
- 新增如下 Bitmap 函数:subdivide_bitmap、bitmap_from_binary、bitmap_to_binary。#35817 #35621
- 优化主键表 Compaction Score 的取值逻辑,使其和其他类型的表的取值范围看起来更一致。#36534
参数变更
- 调整 Trash 文件的默认过期时间为 1 天(原来是 3 天)。#37113
- 新增 BE 配置项
enable_stream_load_verbose_log
,默认取值是false
,打开后日志中可以记录 Stream Load 的 HTTP 请求和响应信息,方便出现问题后的定位调试。#36113 - 新增 BE 配置项
enable_lazy_delta_column_compaction
,默认取值是true
,表示不启用频繁的进行 delta column 的 Compaction。#36654 - 新增 FE 配置项
enable_mv_automatic_active_check
,用于指定是否允许系统自动检查和重新激活异步物化视图,默认取值是true
。#36463
功能优化
- 系统变量 sql_mode 增加
GROUP_CONCAT_LEGACY
选项,用以兼容 group_concat 函数在 2.5(不含)版本之前的实现逻辑。#36150 - 主键表 SHOW DATA 的结果中新增包括 .cols 文件(部分列更新和生成列相关的文件)和持久化索引文件的文件大小信息。#34898
- 支持 MySQL 外部表和 JDBC Catalog 外部表的 WHERE 子句中包含关键字。#35917
- 加载 StarRocks 的插件失败时,不再抛出异常并导致 FE 无法启动,而是 FE 可正常启动、同时可以通过 SHOW PLUGINS 查看插件的错误状态。#36566
- 动态分区支持 Random 分布。#35513
- SHOW ROUTINE LOAD 返回结果中增加
OtherMsg
,展示最后一个失败的任务的相关信息。#35806 - 隐藏了审计日志(Audit Log)中 Broker Load 作业里 AWS S3 的鉴权信息
aws.s3.access_key
和aws.s3.access_secret
。#36571 - 在
be_tablets
表中增加INDEX_DISK
记录持久化索引的磁盘使用量,单位是 Bytes。#35615
问题修复
修复了如下问题:
- 数据损坏情况下,建立持久化索引会引起 BE Crash。#30841
- 创建包含嵌套查询的异步物化视图时会报错“resolve partition column failed”。#26078
- 创建异步物化视图时如果基表数据损坏,可能会报错“Unexpected exception: null”。#30038
- 查询包含窗口函数时会 SQL 错误“[1064] [42000]: Row count of const column reach limit: 4294967296”。#33561
- 开启 FE 配置项
enable_collect_query_detail_info
后,FE 性能下降严重。#35945 - 存算分离模式下,删除对象存储中文件时可能报错“Reduce your request rate”。#35566
- 某些情况下,物化视图刷新可能会出现死锁问题。#35736
- 启用 DISTINCT 下推窗口算子功能时, 对窗口函数的输出列的复杂表达式进行 SELECT DISTINCT 操作会报错。#36357
- 从 ORC 格式数据文件导入嵌套的 Array 会导致 BE Crash。#36127
- 某些兼容 S3 协议的对象存储会返回重复的文件,导致 BE Crash。#36103
- ARRAY_DISTINCT 函数偶发 BE Crash。#36377
- 特定场景下 Global Runtime Filter 可能会引发 BE crash。#35776
3.1.5
发布日期:2023 年 11 月 28 日
新增特性
- 存算分离模式下 CN 节点支持数据导出。#34018
功能优化
INFORMATION_SCHEMA.COLUMNS
表支持显示 ARRAY、MAP、STRUCT 类型的字段。 #33431- 支持查询 Hive 中使用 LZO 算法压缩的 Parquet、ORC、和 CSV 格式的文件。#30923 #30721
- 如果是自动分区表,也支持指定分区名进行更新,如果分区不存在则报错。#34777
- 当创建物化视图涉及的表、视图及视图内涉及的表、物化视图发生 Swap、Drop 或者 Schema Change 操作后,物化视图可以进行自动刷新。#32829
- 优化 Bitmap 相关的某些操作的性能,主要包括:
问题修复
修复了如下问题:
- 如果提交的 Broker Load 作业包含过滤条件,在数据导入过程中,某些情况下会出现 BE Crash。#29832
- SHOW GRANTS 时报
unknown error
。#30100 - 如果使用表达式作为自动分区列,导入数据时可能会报错 "Error: The row create partition failed since Runtime error: failed to analyse partition value"。#33513
- 查询时报错 "get_applied_rowsets failed, tablet updates is in error state: tablet:18849 actual row size changed after compaction"。#33246
- 存算一体模式下,单独查询 Iceberg 或者 Hive 外表容 易出现 BE crash。#34682
- 存算一体模式下,导入数据时同时自动创建多个分区,偶尔会出现数据写错分区的情况。#34731
- 长时间向持久化索引打开的主键表高频导入,可能会引起 BE crash。#33220
- 查询时报错 "Exception: java.lang.IllegalStateException: null"。#33535
- 执行
show proc '/current_queries';
时,如果某个查询刚开始执行, 可能会引起 BE Crash。#34316 - 向打开持久化索引的主键表中导入大量数据,有时会报错。#34352
- 2.4 及以下的版本升级到高版本,可能会出现 Compaction Score 很高的问题。#34618
- 使用 MariaDB ODBC Driver 查询
INFORMATION_SCHEMA
中的信息时,schemata
视图中CATALOG_NAME
列中取值都显示的是null
。#34627 - 导入数据异常导致 FE Crash 后无法重启。#34590
- Stream Load 导入作业在 PREPARED 状态下、同时有 Schema Change 在执行,会导致数据丢失。#34381
- 如果 HDFS 路径以两个或以上斜杠(
/
)结尾,HDFS 备份恢复会失败。#34601 - 打开
enable_load_profile
后,Stream Load 会很容易失败。#34544 - 使用列模式进行主键表部分列更新后,会有 Tablet 出现副本之间数据不一致。#34555
- 使用 ALTER TABLE 增加
partition_live_number
属性没有生效。#34842 - FE 启动失败,报错 "failed to load journal type 118"。#34590
- 当
recover_with_empty_tablet
设置为true
时可能会引起 FE Crash。#33071 - 副本操作重放失败可能会引起 FE Crash。#32295
参数变更
配置项
- 新增 FE 配置项
enable_statistics_collect_profile
用于控制统计信息查询时是否生成 Profile,默认值是false
。#33815 - FE 配置项
mysql_server_version
从静态变为动态(mutable
),修改配置项设置后,无需重启 FE 即可在当前会话动态生效。#34033 - 新增 BE/CN 配置项
update_compaction_ratio_threshold
,用于手动设置存算分离模式下主键表单次 Compaction 合并的最大数据比例,默认值是0.5
。如果单个 Tablet 过大,建议适当调小该配置项取值。存算一体模式下主键表单次 Compaction 合并的最大数据比例仍然保持原来自动调整模式。#35129
系统变量
- 新增会话变量
cbo_decimal_cast_string_strict
,用于优化器控制 DECIMAL 类型转为 STRING 类型的行为。当取值为true
时,使用 v2.5.x 及之后版本的处理逻辑,执行严格转换(即,按 Scale 截断补0
);当取值为false
时,保留 v2.5.x 之前版本的处理逻辑(即,按有效数字处理)。默认值是true
。#34208 - 新增会话变量
cbo_eq_base_type
,用于指定 DECIMAL 类型和 STRING 类型的数据比较时的强制类型,默认VARCHAR
,可选DECIMAL
。#34208 - 新增会话变量
big_query_profile_second_threshold
,当会话变量enable_profile
设置为false
且查询时间超过big_query_profile_second_threshold
设定的阈值时,则会生成 Profile。#33825
3.1.4
发布日期:2023 年 11 月 2 日
新增特性
- 存算分离下的主键表支持 Sort Key。
- 异步物化视图支持通过 str2date 函数指定分区表达式,可用于外表分区类型为 STRING 类型数据的物化视图的增量刷新和查询改写。#29923 #31964
- 新增会话变量
enable_query_tablet_affinity
,用于控制多次查询同一个 Tablet 时选择固定的同一个副本,默认关闭。#33049 - 新增工具函数
is_role_in_session
,用于查看指定角色是否在当前会话下被激活,并且支持查看嵌套的角色被激活的情况。 #32984 - 增加资源组粒度的查询队列,需要通过全局变量
enable_group_level_query_queue
开启(默认值为false
)。当全局粒度或资源组粒度任一资源消耗达到阈值时,会对查询进行排队,直到所有资源消耗都没有超过阈值,再执行查询。- 每个资源组可以设置
concurrency_limit
用于限制单个 BE 节点中并发查询上限。 - 每个资源组可以设置
max_cpu_cores
用于限制单个 BE 节点可以使用的 CPU 上限。
- 每个资源组可以设置
- 资源组分类器增加
plan_cpu_cost_range
和plan_mem_cost_range
两个参数。plan_cpu_cost_range
:系统估计的查询 CPU 开销范围。默认为NULL
,表示没有该限制。plan_mem_cost_range
:系统估计的查询内存开销范围。默认为NULL
,表示没有该限制。
功能优化
- 窗口函数 COVAR_SAMP、COVAR_POP、CORR、VARIANCE、VAR_SAMP、STD、STDDEV_SAMP 支持 ORDER BY 子句和 Window 子句。 #30786
- DECIMAL 类型数据查询结果越界时,返回报错而不是 NULL。#30419
- 查询队列的并发查询数量改由 Leader FE 管理,每个 Follower FE 在发起和结束一个查询时,会通知 Leader FE。如果超过全局粒度或资源组粒度的
concurrency_limit
则查询会被拒绝或进入查询队列。
问题修复
修复了如下问题:
- 由于内存统计不准确,有几率会导致 Spark 或者 Flink 读取数据时报错。#30702 #30751
- Metadata Cache 的内存使用统计不准确。#31978
- 调用 libcurl 时会引起 BE Crash。#31667
- 刷新基于 Hive 视图创建的 StarRocks 物化视图时会报错“java.lang.ClassCastException: com.starrocks.catalog.HiveView cannot be cast to com.starrocks.catalog.HiveMetaStoreTable”。#31004
- ORDER BY 子句中包含聚合函数时报错“java.lang.IllegalStateException: null”。#30108
- 存算分离模式下,表的 Key 信息没有在
information_schema.COLUMNS
中记录,导致使用 Flink Connector 导入数据时 DELETE 操作无法执行。#31458 - 使用 Flink Connector 导入数据时,如果并发高且 HTTP 和 Scan 线程数受限,会发生卡死。#32251
- 如果添加了一个较小字节类型的字段,变更完前执行 SELECT COUNT(*) 会报错“error: invalid field name”。#33243
- Query Cache 开启后查询结果有错。#32781
- 查询在 Hash Join 时失败了,会引起 BE Crash。#32219
- BINARY 或 VARBINARY 类型在
information_schema.``columns
视图里面的DATA_TYPE
和COLUMN_TYPE
显示为unknown
。#32678
行为变更
- 从 3.1.4 版本开始,新搭建集群的主键表持久化索引在表创建时默认打开(如若从低版本升级到 3.1.4 版本则保持不变)。#33374
- 新增 FE 参数
enable_sync_publish
且默认开启。设置为true
时,主键表导入的 Publish 过程会等 Apply 完成后才返回结果,这样,导入作 业返回成功后数据立即可见,但可能会导致主键表导入比原来有延迟。(之前无此参数,导入时 Publish 过程中 Apply 是异步的)。#27055
3.1.3
发布日期:2023 年 9 月 25 日
新增特性
- 存算分离下的主键表支持基于本地磁盘上的持久化索引,使用方式与存算一体一致。
- 聚合函数 group_concat 支持使用 DISTINCT 关键词和 ORDER BY 子句。#28778
- Stream Load、Broker Load、Kafka Connector、Flink Connector 和 Spark Connector 均支持对主键表进行部分列更新时启用列模式。#28288
- 分区中数据可以随着时间推移自动进行降冷操作(List 分区方式还不支持)。#29335 #29393
功能优化
执行带有不合法注释的 SQL 命令返回结果与 MySQL 保持一致。#30210
问题修复
修复了如下问题:
- 执行 DELETE 语句时,如果 WHERE 条件中的字段类型是 BITMAP 或 HLL,则会导致语句执行失败。#28592
- 某个 Follower FE 重启后,由于 CpuCores 不同步,导致查询性能受到影响。#28472 #30434
- to_bitmap() 函数的 Cost 统计计算不正确,导致物化视图改写后选择了错误的执行计划。#29961
- 存算分离架构特定场景下,当 Follower FE 重启后,发送到该 Follower FE 的查询会返回错误信息“Backend node not found. Check if any backend node is down”。#28615
- ALTER TABLE 过程中持续导入可能会报错“Tablet is in error state”。#29364
- 在线修改 FE 动态参数
max_broker_load_job_concurrency
不生效。#29964 #29720 - 调用 date_diff() 函数时,如果函数中指定的时间单位是个常量而日期是非常量,会导致 BE Crash。#29937
- 如果 Hive Catalog 是多级目录,且数据存储在腾讯云 COS 中,会导致查询结果不正确。#30363
- 存算分离架构下,开启数据异步写入后,自动分区不生效。#29986
- 通过 CREATE TABLE LIKE 语句创建主键表时,会报错
Unexpected exception: Unknown properties: {persistent_index_type=LOCAL}
。#30255 - 主键表 Restore 之后,BE 重启后元数据发生错误,导致元数据不一致。#30135
- 主键表导入时,如果 Truncate 操作和查询并发,在有些情况下会报错“java.lang.NullPointerException”。#30573
- 物化视图创建语句中包含谓词表达式时,刷新结果不正确。#29904
- 升级到 3.1.2 版本后,原来创建的表中 Storage Volume 属性被重置成了
null
。#30647 - Tablet 元数据做 Checkpoint 与 Restore 操作并行时, 会导致某些副本丢失不可查。#30603
- 如果表字段为
NOT NULL
但没有设置默认值,使用 CloudCanal 导入时会报错“Unsupported dataFormat value is : \N”。#30799
行为变更
- 聚合函数 group_concat 的分隔符必须使用
SEPARATOR
关键字声明。 - 会话变量
group_concat_max_len
(用于控制聚合函数 group_concat 可以返回的字符串最大长度)的默认值由原来的没有限制变更为默认1024
。
3.1.2
发布日期:2023 年 8 月 25 日
问题修复
修复了如下问题:
- 用户在连接时指定默认数据库,并且仅有该数据库下面表权限,但无该数据库权限时,会报对该数据库无访问权限。#29767
- RESTful API
show_data
对于云原生表的返回信息不正确。#29473 - 在 array_agg() 函数运行过程中,如果查询取消,则会发生 BE Crash。#29400
- BITMAP 和 HLL 类型的列在 SHOW FULL COLUMNS 查询结果中返回的
Default
字段值不正确。#29510 - array_map() 同时涉及多个表时,下推策略问题导致查询失败。#29504
- 由于未合入上游 Apache ORC 的 BugFix ORC-1304(apache/orc#1299)而导致 ORC 文件查询失败。#29804
行为变更
从此版本开始,执行 SET CATALOG 操作必须要有目标 Catalog 的 USAGE 权限。您可以使用 GRANT 命令进行授权操作。
如果是从低版本升级上来的集群,已经做好了已有用户的升级逻辑,不需要重新赋权。#29389。如果是新增授权,则需要注意赋予目标 Catalog 的 USAGE 权限。
3.1.1
发布日期:2023 年 8 月 18 日
新增特性
- 存算分离架构下,支持如下特性:
- 数据存储在 Azure Blob Storage 上。
- List 分区。
- 支持聚合函数 COVAR_SAMP、COVAR_POP、CORR。
- 支持窗口函数 COVAR_SAMP、COVAR_POP、CORR、VARIANCE、VAR_SAMP、STD、STDDEV_SAMP。
功能优化
对所有复合谓词以及 WHERE 子句中的表达式支持隐式转换,可通过会话变量 enable_strict_type
控制是否打开隐式转换(默认取值为 false
)。
问题修复
修复了如下问题:
- 向多副本的表中导入数据时,如果某些分区没有数据,则会写入很多无用日志。 #28824
- 主键表部分列更新时平均 row size 预估不准导致内存占用过多。 #27485
- 某个 Tablet 出现某种 ERROR 状态之后触发 Clone 操作,会导致磁盘使用上升。 #28488
- Compaction 会触发冷数据写入 Local Cache。 #28831
3.1.0
发布日期:2023 年 8 月 7 日