v4.1
本文介绍 SelectDB 内核 4.1 版的发布记录。
说明 SelectDB Core v4.1 基于 Apache Doris v3.1 开发。
v4.1.8(2026年6月24日)
本版本合入 Apache Doris v3.1.7。
新功能
- 新增 Iceberg REST catalog 和 S3 Tables catalog 的 IAM role 认证支持,可用角色而非长期有效的 access key 授予访问权限。
- 新增查看每个物化视图(MTMV)刷新任务所使用计算组的能力,便于排查计算组选择和刷新失败问题。
- 为例行导入(Routine Load)新增按作业维度的指标,涵盖已消费行数和错误行数、吞吐量、进度、消费延迟(consumer lag)和中止次数,便于定位缓慢或失败的作业。
- 为异步物化视图新增指标,涵盖刷新任务状态,以及规划期间将查询改写为使用物化视图所花费的时间。
改进优化
- 将自动分区和动态分区的默认分区数上限提高到 20000,并新增一个在表达到上限 80% 时触发的指标。
- 自动分桶表现在默认至少创建 3 个分桶(此前为 1 个),从而提升小表以及行数被低估的表的并行度。
- 降低了高并发导入和 row-store 写入时的 BE 内存占用。
- 云端写入路径现在默认会合并小文件并省略空 rowset 元数据,从而减少对象存储文件数量以及频繁小批量导入所写入的元数据。
- 例行导入现在能更及时地上报消费延迟,且 Kafka read_committed 消费者在遇到未提交事务时不再空转重试。
- 统计信息收集现在会跳过每行超过 1024 字节的字符串列,因此宽文本列不再拖慢或卡住 ANALYZE。作业仍会完成,并记录该列被跳过的原因。
- 异步缓存预热(cache warm-up)不再阻塞查询,且对同一张表重复提交的预热作业现在会被忽略。
- S3 reader 现在在遇到 SlowDown 限流响应时会快速失败而非重试,避免重试风暴进一步加重对象存储压力。
问题修复
- 修复了若干可能返回错误结果的规划器问题:运行时过滤器被下推穿过外连接、含 random() 等非确定性函数的过滤器被下推到 join 之下、预聚合状态在 join 两侧间泄漏、count(null) 被当作 count(*),以及将部分 TOP-N 查询改写为 MAX。
- 修复了 mark join 丢弃空探测行(null probe rows)的问题,该问题可能导致 NOT IN 和 NOT EXISTS 子查询返回错误结果。
- 修复了视图定义在使用聚合别名、星号(*)展开或 Variant 子字段时被错误改写的问题,该问题可能导致视图查询失败或返回错误结果。
- 修复了物化视图改写在外连接或分区补偿(partition compensation)时返回错误结果的问题,改写可能选中错误分区或未能剔除 null 行。
- 修复了 IN 谓词被简化时窄化 datetimev2 cast 丢失、可能改变查询结果的问题。
- 修复了 Variant 列在 row-store 部分列更新后内容丢失的问题,并修复了升级后读取由早期版本写入的点号 Variant 子列失败的问题。
- 修复了 Variant 值中重复 JSON 路径处理不一致的问题,现在保留首个值;并拒绝将 JSONB 和 Variant 列用作哈希分布键,而不是等到写入或查询时才失败。
- 修复了 JSONB 函数在遇到非法输入或非预期 JSONB 类型时导致 BE 崩溃的问题,包括对畸形 JSONB 值执行 json_set。
- 修复了在 light schema change 或 rowset 状态变更期间并发扫描同一 tablet 时 BE 崩溃的问题。
- 修复了读取部分外部 Parquet 文件时报错的问题,包括字典编码行组之后的类型不匹配,以及 Parquet V2 数据页解码错误。
- 修复了当 BE ID 差值过大时,因比较时整型溢出导致 Stream Load 选中错误 BE 或直接失败的问题。
- 修复了 FE 重定向缓慢或分块(chunked)的 Stream Load 客户端时出现 broken pipe 错误的问题。
- 修复了并发的、带自动探测分区的 INSERT OVERWRITE 以未知 tablet 错误失败的问题,其原因是行在替换分区完全打开之前就已到达。
- 修复了事务写入被路由到当前计算组之外的 BE 的问题,该问题可能导致含多个计算组的仓库中 INSERT 和事务导入失败。
- 修复了对同一张云端表的并发导入与分区变更在表版本上冲突、以 KV_TXN_CONFLICT 失败的问题。
- 修复了云端表上 ADD PARTITION 失败后残留分区元数据的问题,该问题可能破坏后续分区创建、查询或元数据同步。
- 修复了并行 SELECT INTO OUTFILE 时多个 BE 可能同时清空目标目录、删除仍需要的文件或使导出失败的问题。导出到本地文件系统现在会拒绝不支持的 delete_existing_files 选项。
- 修复了导入自动分区表时行数和字节数被重复计数、导致上报的导入指标虚高的问题。
- 修复了例行导入在获取 Kafka 元数据时出现的空指针错误。
- 修复了 Iceberg REST catalog 无法对 S3 兼容对象存储使用临时凭证的问题。
- 修复了较新驱动版本下 JDBC 查询 SQL Server 无法读取 schema 的问题。
- 修复了 Hive 表行数缓存不完整的问题,并修复了外部文件系统在仍被使用时被逐出缓存导致查询和事务失败的问题。
- 修复了 COM_RESET_CONNECTION 未完全重置会话的问题,导致连接池中的 MySQL 连接被再次分配后可能仍保留用户变量、临时表、prepared statement 或未结束的事务。
- 修复了 Arrow Flight SQL 无法获取真实客户端 IP 的问题,该问题会破坏基于 IP 的认证和访问控制。
- 修复了 skip_catalog_priv_check 生效范围过广、导致部分 catalog 操作跳过权限检查的问题。
- 修复了 SQL 解析器使 IS NULL 绑定到正确主表达式的问题。
- 修复了 Prometheus histogram 指标丢失标签、导致指标名称损坏并破坏其聚合和告警的问题。
- 修复了 SHOW TABLET 在未选择数据库时失败,以及 SHOW BACKENDS 返回的列与表头不对齐的问题。
- 修复了云端 schema change 后残留版本空洞(version hole)和过期 compaction rowset 的问题,这可能影响查询、delete bitmap 和后续 compaction。
- 修复了低写入 tablet 在 BE 重启或迁移后未按计划启动 time-series compaction 的问题。
v4.1.7(2026年5月21日)
本版本合入 Apache Doris v3.1.6。
新功能
- 新增 mmh64_v2 哈希函数。
- 支持查看例行导入(Routine Load)作业所使用的计算组。
改进优化
- 降低了数据导入和大查询时的内存占用。
- 提升了大表扫描的性能。
- 允许 Variant 列使用 light schema change,加快 ALTER TABLE 操作。
问题修复
- 修复了加载同时使用包围符(enclosure)且以 UTF-8 字节顺序标记(BOM)开头的 CSV 文件时,列解析错误的问题。如果你导入此类 CSV 文件,则会受到影响。
- 修复了 date_format 函数对 datetimev2 值丢失微秒的问题。如果你格式化带亚秒精度的 datetime 值,则会受到影响。
- 修复了 json_extract_string 函数在某些情况下返回错误结果的问题。如果你使用 json_extract_string 从 JSON 中读取字符串值,则会受到影响。
- 修复了单次扫描外部文件表时同时使用 native 与 JNI 两种 reader,导致谓词过滤缺失、可能返回多余行的问题(例如 Hive 或 Iceberg 表的不同列由不同 reader 类型读取)。
- 修复了 ALTER VIEW 语句包含注释时,新定义未传播到 follower FE、导致 follower 仍提供旧视图的问题。仅在多 FE 部署中受影响。
- 修复了 RESTORE 在恢复引用了其他库中表的视图时,未保留跨库引用的问题。
- 修复了集合运算(UNION、INTERSECT、EXCEPT)在合并数据超过 4 GB 时崩溃的问题。
- 修复了 ORC reader 在读取 ORC 文件时应用谓词下推导致崩溃的问题(例如外部 Hive 或 Iceberg 表)。
v4.1.6(2026年4月30日)
本版本为维护版本,包含内部稳定性与性能改进,无面向用户的变更。
v4.1.5(2026年4月15日)
改进优化
- 提升了集群扩缩容或故障切换后的读取性能,新增的计算资源能更快地提供缓存数据。
- 提升了对大结果集进行排序的查询性能。
v4.1.4(2026年3月27日)
本版本合入 Apache Doris v3.1.5。
新功能
- 新增了全文检索的自定义分析器(analyzer)支持,包括拼音分词器与过滤器。
- 支持 45 分钟的时区偏移。
- 扩展了 Paimon catalog 支持,包括 REST catalog 以及更多分区数据类型。
- 支持在 SELECT INTO OUTFILE 中写出带列名和类型的压缩 CSV 文件。
改进优化
- 提升了排序、大型 join 和聚合查询的性能。
- 将 Variant 子列的默认上限提高到 2048。
- 提升了含大量稀疏列的宽表的存储与 compaction 效率。
问题修复
- 修复了在集群正在重平衡(rebalance)tablet 时,对自动分区表执行 INSERT OVERWRITE 失败的问题。
- 修复了 INSERT OVERWRITE 指向已被删除的分区时报错的问题。
- 修复了云模式下表属性 disable_auto_compaction 被忽略的问题。如果你在表上设置了该属性,则会受到影响。
- 修复了在表交换(REPLACE)之后 FE 重启,导致例行导入作业被错误取消的问题。
- 修复了 BE 重启后(例如在升级或扩缩容期间)查询未自动重试的问题。
- 修复了同一张表上同时进行 schema change 时 INSERT 失败的问题。
- 修复了主键点查询中 from_unixtime 等时间函数忽略会话时区的问题。
- 修复了 JDBC catalog 的若干问题,包括 PostgreSQL 数组的 NULL 检测错误,以及 SQL Server 的日期谓词下推。如果你通过 JDBC catalog 查询 PostgreSQL 或 SQL Server,则会受到影响。
- 修复了将字符串 cast 为 STRUCT 时,若字符串包含的字段数多于 struct,则会崩溃的问题。
- 修复了 substring_index 函数在某些参数下崩溃的问题。
- 修复了 DELETE 错误地要求对仅在子查询(如 NOT EXISTS 子句)中引用的表具有 LOAD 权限的问题,这可能会阻塞已拥有正确 SELECT 权限的用户。
- 修复了若干可能返回错误结果的情况:集合运算(UNION、INTERSECT、EXCEPT)、谓词被下推到包含常量表达式的 UNION 的查询、以及在主键到外键 join 上的聚合。
v4.1.3(2026年2月12日)
改进优化
- 合入了 Apache Doris v3.1.4 版本的所有功能、改进优化和问题修复。
v4.1.2(2026年1月7日)
改进优化
- 优化了特殊场景下视图创建的处理逻辑,提升 SQL 使用体验。
- 优化了临时资源管理机制,增强系统长期运行的稳定性。
- 优化了缓存容量管理策略,提高资源利用效率。
- 优化了 Routine Load 在更新场景下的执行性能与稳定性。
- 优化了事务回收流程,增强系统健壮性。
- 新增了事务写入相关的监控指标,增强可观测能力。
- 优化了云环境下的任务调度与资源回收效率。
v4.1.1(2025年12月10日)
改进优化
- 合入了 Apache Doris v3.1.3 版本的所有功能、改进优化和问题修复。
v4.1.0(2025年10月17日)
改进优化
- 合入了 Apache Doris v3.1.1 版本的所有功能、改进优化和问题修复。