跳到主要内容
版本:26.x

v26.0

本文介绍 SelectDB Cloud内核 26.0 版的发布记录。

说明 SelectDB Core v26.0 基于 Apache Doris v4.0 开发。

v26.0.5(2026年7月21日)

本版本合入 Apache Doris v4.0.7。

新功能

  • 新增 SQL 拦截规则,可强制要求携带分区过滤条件,从而阻止对大表的全分区扫描。
  • 新增表级、事件驱动的缓存预热(cache warm-up),表的数据在写入时即随之预热,而非按固定周期预热。
  • 为例行导入(Routine Load)新增按作业维度的指标,涵盖已消费行数和错误行数、吞吐量、进度、消费延迟(consumer lag)和中止次数。
  • 支持查看每个物化视图(MTMV)刷新任务所使用的计算组。
  • 新增最大连接数指标。

改进优化

  • 云端写入路径现在默认会合并小文件并省略空 rowset 元数据,从而减少对象存储文件数量以及频繁小批量导入所写入的元数据。
  • 降低了高并发导入和 row-store 写入时的 BE 内存占用。
  • 处于非活跃状态的 page cache 内存现在被计为可用内存,因此当这部分内存可回收时,查询不再因内存不足而被取消。
  • 例行导入现在能更及时地上报消费延迟,且 Kafka read_committed 消费者在遇到未提交事务时不再空转重试。
  • S3 reader 在文件路径完全确定时现在会跳过 list 操作,改用 HEAD 请求,从而加快含大量文件的外部表读取。
  • S3 reader 在遇到 SlowDown 限流响应时现在会快速失败而非重试,避免重试风暴进一步加重对象存储压力。
  • compaction 避免反复选中同一个大的 cumulative rowset,减少了无谓的 compaction 工作。
  • 审计日志现在会在 CREATE USERALTER USER 语句中脱敏用户密码,并记录每条查询的 SET_VAR hint 会话变量。

问题修复

  • 修复了若干可能返回错误结果的规划器问题:运行时过滤器被下推到外连接、预聚合状态在 join 两侧间泄漏、NOT IN 子查询中 null-aware 处理被误丢弃、cast 被下推穿过 UNION DISTINCT、集合运算使用了错误的子节点输出,以及将部分 TOP-N 查询错误改写为 MAX
  • 修复了 MERGE_TOP_N 未按父级 offset 对合并后的 limit 进行截断,导致带 OFFSETORDER BY ... LIMIT 可能返回错误行的问题。
  • 修复了旧版字面量比较与 Nereids 语义不一致、可能错误求值部分谓词的问题。
  • 修复了相关标量子查询内部被允许出现 TopN 的问题。
  • 修复了可空日期字面量绑定和 datediff 折叠的问题,包括 datediff 作用于零日期的情况。
  • 修复了 convert_tz 在夏令时切换时产生错误分区裁剪的问题,并使 convert_tz 折叠与 BE 的夏令时处理保持一致。
  • 修复了负的亚小时 TIMESTAMPTZ 偏移丢失符号的问题。
  • 修复了当 JSON 数组含重复候选值时 json_contains 返回错误结果的问题。
  • 修复了 enable_insert_strict 错误改变 enable_strict_cast 语义的问题。
  • 修复了 array_sort 的 lambda 参数个数校验,以及 array_firstarray_last 的布尔 cast 问题,并拒绝在窗口函数中对 count(distinct ...) 传入多个参数。
  • 修复了 SHOW PROCESSLISTFULL 模式下返回非预期结果的问题。
  • 修复了计算视图输出时遇到底层表 schema change 而导致崩溃(IndexOutOfBoundsException)的问题。
  • 修复了 MTMV 篡改排除触发表(excluded trigger tables)的问题,并在读取基础视图以保持向后兼容时新增了空值保护。
  • 修复了并发 INSERT OVERWRITE 在自动探测分区时以未知 tablet 错误失败的问题,并修复了 INSERT OVERWRITE 中 force-drop-partition 的处理。
  • 修复了自动分区表的 load_to_single_tablet 路由问题。
  • 修复了事务写入被路由到当前计算组之外的 BE,可能导致含多个计算组的仓库中 INSERT 和事务导入失败的问题。
  • 修复了对同一张云端表的并发导入与分区变更在表版本上冲突、以 KV_TXN_CONFLICT 失败的问题。
  • 修复了自动分区创建时若分区被并发删除则出现的空指针错误。
  • 修复了 http_stream 在 Stream Load 中截断压缩文件的问题,以及 FE 重定向请求体未被消费的 Stream Load 客户端时出现 broken pipe 的问题。
  • 修复了 Stream Load 在 BE ID 差值过大时因整型溢出比较而选中错误 BE 或失败的问题。
  • 修复了例行导入任务在提交失败后未续租其锁的问题。
  • 修复了若干云端 schema change 问题,包括在 V1 schema change 前刷新 base tablet,并修复了在 file cache 未命中时读取打包倒排索引文件的问题。
  • 修复了云端 cumulative compaction 上的竞态,可能在同一 tablet 上将空 cumulative 与 base-cumulative 工作配对。
  • 修复了若干 BE 崩溃,包括 tablet scanner 中的 rowset map 竞态、已 finalize 的 pipeline task 被重复提交,以及 Avro JNI reader 解引用空指针。
  • 修复了 retention 函数接受超过 32 个参数、可能导致 BE 堆溢出的问题。
  • 修复了当快照摘要缺少总行数计数器时 Iceberg COUNT(*) 下推抛出空指针的问题,以及 Iceberg varint 类型的映射和迁移 Iceberg 表格式的探测问题。
  • 修复了为查询加载行数时填充 Hive 元数据缓存的问题。
  • 修复了 JDBC 将 SQL Server 和 Oracle 的布尔谓词下推为 TRUEFALSE(而非 10)的问题。
  • 修复了在无倒排索引的列上仍接受 Lucene 语法全文检索的问题,现在会返回明确的错误。
  • 修复了 COM_RESET_CONNECTION 未完全重置会话的问题,导致连接池中的 MySQL 连接在被再次分配后可能保留用户变量、临时表、prepared statement 或未结束的事务。
  • 修复了 FE master 在执行期间切换时查询不返回结果包的问题。
  • 修复了 LIKE 模式不接受美元符号($)的问题。
  • 修复了 SQL 解析器使 IS NULL 绑定到正确主表达式的问题。
  • 修复了 CREATE TABLE 接受非法 IPv4 默认值的问题,现在会予以拒绝。
  • 修复了对 Variant 列执行 COUNT(DISTINCT ...) 未及早拒绝、而在后续才失败的问题。

v26.0.4(2026年6月16日)

本版本合入 Apache Doris v4.0.6。

新功能

  • 新增 mmhash3_u64_v2 哈希函数。
  • 新增 json_object_flatten 标量函数,用于扁平化嵌套 JSON 对象。
  • array_sort 新增 lambda 比较器支持,可用自定义比较逻辑对数组排序。
  • 新增 Iceberg REST catalog 和 S3 Tables 的 IAM role 认证支持。
  • 支持通过系统表跟踪 compaction 任务。

改进优化

  • 将 Time Series Compaction 的默认触发阈值从 2000 个文件改为 1000 个文件,使时序数据更早进行 compaction。
  • 通过自适应写缓冲大小、支持在线调整 flush 线程池,以及更早释放未使用的写内存,降低了导入和写入负载下的内存压力。
  • 提升了存算分离模式下 compaction 的隔离性,减少了用户负载与后台 compaction 之间的争用。
  • 降低了复杂查询的优化器规划开销,并改进了分区裁剪后查询的行数估算。
  • 通过跳过过长的字符串列,降低了统计信息收集的开销。
  • 提升了分区接近上限报告、histogram 标签、内部查询状态和 prepared statement QPS 的审计与指标准确性。

问题修复

  • 修复了 INTERSECTEXCEPT 查询在规划期间上拉谓词时丢失 NULL 行的问题。
  • 修复了 count(null) 被错误当作 count(*) 的问题,并修复了带 MATCH_ALL 表达式的 count 查询以 NoSuchElementException 失败的问题。
  • 修复了物化视图改写在分区裁剪移除恒真谓词时返回错误结果的问题,并修复了合并了查询不需要的分区的改写。
  • 修复了多输入 fragment 查询在同一 fragment 同时收到广播输入和 hash 分区输入时以 Rows mismatched! Data may be lost 失败的问题。
  • 修复了将 project 下推到 UNION 或复用 CTE producer 统计信息的查询报错的问题。
  • 修复了 no_use_cbo_rule hint 被静默忽略的问题。
  • 修复了若干 TIMESTAMPTZ 和 datetime 问题,包括 LEAD、LAG 保留了错误类型、夏令时的 gap 与 fold 处理、耗时计算,以及 TopN 运行时谓词支持。
  • 修复了将科学计数法字符串 cast 为 Decimal 时结果错误的问题。
  • 修复了 allow_zero_date 结果错误的问题,并将 from_olap_string 在 datetime 解析失败时改为返回 NULL 而非抛出异常。
  • 修复了用户变量的整数类型推断和参数解析问题。
  • 修复了视图带 COMMENT 时 ALTER VIEW 定义未传播到 follower FE 的问题。仅在多 FE 部署中受影响。
  • 修复了当视图定义丢失 Variant 子字段引用时,基于 Variant 列的视图返回错误结果的问题。
  • 修复了视图定义中别名改写非法的问题,以及视图列在 lazy materialization 下丢失 colUniqueId 的问题。
  • 修复了在无 key 且 Variant 列 uid 为 0 的表上 Variant compaction 失败的问题。
  • 修复了 Row Store 部分列更新后 Variant 子列丢失的问题,并修复了读取旧版单段点号 key 子列路径的问题。
  • 修复了 Variant JSON 重复路径保留了错误项的问题,现在会保留首次出现的项。
  • 修复了 Broker Load 在指定多个文件路径时仅加载首个文件的问题。
  • 修复了 PostgreSQL CDC streaming 作业在任务重启后静默丢弃 DML 的问题。
  • 修复了 streaming 作业在 FE checkpoint 或重启后的 offset、统计信息和属性恢复问题。
  • 修复了例行导入因 Kafka 元数据状态为空以及协调 BE 重启导致的失败。
  • 修复了 UTF-8 BOM 文件使用包围符(enclose)时的 CSV 解析问题。
  • 修复了 FE 重启后 INSERT 作业统计信息从 SHOW LOAD 消失的问题,以及作业停留在 PENDING 时 InsertLoadJob 的内存泄漏问题。
  • 修复了对 version_comment 不含 Doris 的 Doris 兼容 MySQL 端点的 JDBC catalog 类型映射问题。
  • 修复了查询 TVF 列别名跨 JDBC catalog 丢失的问题。
  • 修复了外部 reader 因时区处理导致 Hive DATE 值偏移的问题。
  • 修复了外部文件扫描混用 native 与 JNI reader 时跳过谓词过滤的问题。
  • 修复了 SHOW PARTITIONS 与外部 catalog 及 partitions TVF 不兼容的问题。
  • 修复了为 Iceberg 或 Paimon 表生成分区列时越界崩溃的问题。
  • 修复了涉及 INT96 时间戳输出、Page V2 编码和条件检查的 Parquet 读写问题。
  • 修复了当生成的 Thrift 消息超过配置大小上限时表函数失败的问题。
  • 修复了若干云端 schema change 失败,涉及本地 rowset 替换、版本空洞(version hole)和 delete bitmap 捕获。
  • 修复了首次动态分区初始化与并发 CREATE MATERIALIZED VIEW 之间的竞态。
  • 修复了作业列表为空的 CANCEL ALTER 被当作取消所有 rollup 作业的问题。
  • 修复了 SHOW TABLET 在未选择数据库时失败、SHOW BACKENDS 字段顺序不匹配,以及 SHOW PROC 缺少分区缓存版本的问题。
  • 修复了并发 OLAP 扫描、发布运行时过滤器的共享哈希表 hash join,以及 IO 回调清理期间的 BE 崩溃。
  • 修复了从 BE 返回结果时的 Arrow Flight SQL 查询执行、客户端 IP 认证,以及 Arrow 字符串大小处理问题。

v26.0.3(2026年4月12日)

本版本合入 Apache Doris v4.0.5。

新功能

  • 新增 ASOF JOIN 支持,可将每一行匹配到时间上最接近的前一行,适用于时序分析。
  • 为 UPDATE 和 DELETE 语句新增 ORDER BY 和 LIMIT 子句。
  • 增强了全文检索的 BM25 相关性打分,包括短语级打分;新增前缀查询和短语前缀查询;并支持将 MATCH 结果作为投影出的虚拟列使用。

改进优化

  • 将默认分区数上限提高到 20000。
  • 将默认的搜索函数模式从 standard 改为 Lucene。
  • 扩展了 NDV 近似去重计数函数,支持 decimalv2 类型。
  • 提升了通过 Paimon catalog 读取表的查询性能。
  • 降低了数据导入时的内存占用。

问题修复

  • 修复了 abs() 函数对 decimalv2 值返回错误结果的问题。如果你对旧版 decimalv2 类型的列或表达式调用 abs(),则会受到影响。
  • 修复了 SUM 和 AVG 在输入为 JSON(如对 json_extract 结果求 SUM)时因类型错误而失败的问题;现在这些聚合会将 JSON 值强制转换为 DOUBLE 后正常工作。
  • 修复了 array_apply 在包含 LARGEINT 值的数组上因类型错误而失败的问题。
  • 修复了查询缓存在读取同一个 Variant 列的不同子列时返回错误结果的问题。仅在启用查询缓存且你查询同一个 Variant 列的多个子列时受影响。
  • 修复了在外连接(outer join)上执行 ORDER BY … LIMIT(TopN)查询时,若排序键来自 join 的可空一侧则返回错误结果的问题。
  • 修复了在含 Variant 列的表上定义的异步物化视图符合改写条件时查询报错的问题。
  • 修复了若干全文检索问题:在带别名的列上使用 MATCH 时崩溃、含斜杠的检索词解析错误、否定(MUST_NOT)子句中 NULL 行处理错误、以及超长索引字符串值导致的崩溃。
  • 修复了读取同时经过 schema change 且使用了相等删除(equality deletes)的 Iceberg 表时崩溃,以及表更新后 Iceberg rewrite_data_files 失败的问题。
  • 修复了集合运算(UNION、INTERSECT、EXCEPT)在合并数据超过 4 GB 时崩溃,以及 ORC reader 在读取 ORC 文件时应用谓词下推导致崩溃的问题。
  • 修复了 hour_ceil 和 hour_floor 函数在带时区的时间戳上的时区处理,以及使用非标准时区偏移(如 +08:45)时结果错误的问题。
  • 修复了流式插入(streaming insert)作业可能卡住或失败的问题,包括未找到新文件、对象存储认证错误被静默忽略、ALTER 语句后表函数属性未刷新、以及 replay 期间发生空指针错误等情况。仅在你使用流式插入作业时受影响。
  • 修复了在表交换(REPLACE)之后 FE 重启,导致例行导入作业被错误取消的问题。
  • 修复了 INSERT OVERWRITE 在被替换的分区与表当前分区范围不完全匹配时(例如分区被增删之后)报错的问题。
  • 修复了读取 keyword 字段含数组数据的 Elasticsearch catalog 表时查询报错的问题。
  • 加固了 LDAP 过滤条件处理以防止注入。仅与使用 LDAP 认证的部署相关。

v26.0.2(2025年3月25日)

改进优化

v26.0.1(2025年3月17日)

改进优化