|
| 1 | +--- |
| 2 | +{ |
| 3 | + "title": "Release 4.1.2", |
| 4 | + "language": "zh-CN", |
| 5 | + "description": "Apache Doris 4.1.2 版本发布说明" |
| 6 | +} |
| 7 | +--- |
| 8 | + |
| 9 | +# 新功能 |
| 10 | + |
| 11 | +## 查询与执行 |
| 12 | +- 支持 ARRAY_CROSS_PRODUCT 函数 (#64031) |
| 13 | +- 新增 exponential_moving_average 聚合函数 (#63499) |
| 14 | +- 支持 murmur_hash3_128 函数 (#63196) |
| 15 | +- 新增 datasketches HLL sketch 聚合函数 (#63143) |
| 16 | +- 跳过为超长字符串列收集统计信息 (#62686) |
| 17 | +- 新增 information_schema role mappings 表 (#62077) |
| 18 | +- 为 cosine_similarity 新增 FE 常量折叠并规范化测试模式 (#60403) |
| 19 | + |
| 20 | +## 云原生 |
| 21 | +- 在 MTMV 刷新任务中显示 compute group (#63206) |
| 22 | + |
| 23 | +## 安全与认证 |
| 24 | +- 集成 OIDC 认证、MySQL 登录桥接与角色映射 (#61819) |
| 25 | + |
| 26 | +# 改进 |
| 27 | + |
| 28 | +## 查询与执行 |
| 29 | +- 使用真实经过时间计算 workload group 指标刷新间隔 (#63537) |
| 30 | +- 在多个聚合函数与数组函数中支持 TIMESTAMPTZ (#62756) |
| 31 | + |
| 32 | +## 存储与压缩 |
| 33 | +- 默认开启 packed file 与空 rowset 优化 (#63475) |
| 34 | +- 支持可配置的 S3 credentials provider (#62788) |
| 35 | +- 新增 enable_recycler 配置以动态跳过 recycler (#63286) |
| 36 | + |
| 37 | +# 问题修复 |
| 38 | + |
| 39 | +## 索引与搜索 |
| 40 | +- 修复 file cache miss 时读取 packed 倒排索引文件的问题 (#64383) |
| 41 | +- 修复 ANN IVF/PQ 召回率,避免初始化时预留过大的 ANN build-buffer,并跳过 ANN 索引构建... (#64082) |
| 42 | +- 防护 LogicalView.computeOutput() 应对 schema 漂移(IndexOutOfBoundsException)(#64007) |
| 43 | +- 修复 ANN 范围搜索的状态泄漏与错误的 slot index 跟踪 (#63666) |
| 44 | +- 在 SHOW CREATE 输出中将 variant_sparse_hash_shard_count 限制为 >=1 (#63661) |
| 45 | +- 将 Variant 搜索绑定到嵌套索引 (#63660) |
| 46 | +- 拒绝在无倒排索引的列上使用 Lucene 语法的 SEARCH (#63637) |
| 47 | +- 深拷贝逻辑关系时保留 operative slots (#63315) |
| 48 | +- 在 view 定义中保留 variant 子字段,修复当 view select 包含...时查询 view 结果错误 (#62907) |
| 49 | +- 修复 tokenize 函数在首个参数为常量时结果错误 (#62699) |
| 50 | +- 允许对带别名的 variant 子列使用 MATCH (#63772) |
| 51 | +- 提升 AI 函数性能 (#62494) |
| 52 | + |
| 53 | +## 查询与执行 |
| 54 | +- 拒绝在相关标量子查询中使用 TopN (#64251) |
| 55 | +- 优化浮点 fmod 快速路径 (#64161) |
| 56 | +- 将角色映射关键字 RULE/CEL/MAPPING 设为非保留字 (#64104) |
| 57 | +- 阻止 runtime filter 不安全地下推穿过 outer join (#64102) |
| 58 | +- 修复零日期的 datediff 折叠 (#64084) |
| 59 | +- 使 convert_tz 折叠与 BE 的 DST 处理对齐 (#64029) |
| 60 | +- 将 struct_element 合并到 element_at (#64027) |
| 61 | +- 修复 TopN runtime filter 激活 (#63969) |
| 62 | +- 在 SIGNBIT 常量折叠中保留负零符号 (#63954) |
| 63 | +- 修复 assert row join 下推的别名处理 (#63892) |
| 64 | +- 修复对已裁剪 variant 子路径的数组下标访问 (#63891) |
| 65 | +- 使 COM_RESET_CONNECTION 行为与 MySQL 对齐 (#63884) |
| 66 | +- 在数值常量折叠中保留 NaN (#63870) |
| 67 | +- 避免读取大 snapshot split 时潜在的 OOM (#63833) |
| 68 | +- 在 variant_hirachinal 中将 variant 子列转为 json 以获得稳定输出 (#63828) |
| 69 | +- 修复 show variables 中已变更变量的输出 (#63734) |
| 70 | +- 修复 computeDestIdToInstanceId 在多输入 fragment 时选错 ExchangeNode (#63615) |
| 71 | +- 避免 JSON modify 路径中的无符号下溢 (#63579) |
| 72 | +- 处理缺失 precision/frac 的遗留 DecimalV2 segment (#63569) |
| 73 | +- 在 sparse 路径中保留 TIMESTAMPTZ 值 (#63522) |
| 74 | +- 使遗留 literal 的 compareLiteral 与 Nereids ComparableLiteral 语义对齐 (#63481) |
| 75 | +- 拒绝对 variant 参数使用 COUNT DISTINCT (#63479) |
| 76 | +- 按值比较 JSON 数值 (#63396) |
| 77 | +- 移除不安全的 JsonbWriter key 重载 (#63355) |
| 78 | +- 阻止 view 定义中无效的别名重写 (#63353) |
| 79 | +- 拒绝非正的 topn count 参数 (#63350) |
| 80 | +- 修复 json contains 的重复数组候选 (#63301) |
| 81 | +- 拒绝 json keys 中的 super 通配符路径 (#63300) |
| 82 | +- 向 MySQL 客户端以字符串形式上报 TIMESTAMPTZ (#63292) |
| 83 | +- 为 join 重写新增 null reject 补偿 (#63268) |
| 84 | +- 拒绝 JSONB literal 中落单的 UTF-16 代理项(RFC 8259 §8.2)(#63255) |
| 85 | +- 修复最外层表达式为 cast 的 alias function 并拒绝非法表达式 (#63254) |
| 86 | +- 在 TopN runtime predicate 中支持 TIMESTAMPTZ (#63220) |
| 87 | +- 拒绝将 JSONB 与 variant 作为分布列 (#63211) |
| 88 | +- 将恒为真谓词的裁剪移到分区裁剪之后,放入 PlanPostProc... (#63111) |
| 89 | +- 修复 coalesce 函数输出 null 的问题 (#63092) |
| 90 | +- 保留首个重复的 Variant JSON path (#63082) |
| 91 | +- 避免 union 查询未使用的 MV 分区 (#63081) |
| 92 | +- 修复整型类型推导并在参数/类型解析时优先使用 Variable.realExpression (#62524) |
| 93 | +- 修复 agg-union 查询计划中的冗余聚合 (#62231) |
| 94 | +- 将 ConnectContext 传入 canUseNereidsDistributePlanner 方法,而非调用 ConnectContext.get() (#60529) |
| 95 | + |
| 96 | +## 存储与压缩 |
| 97 | +- 为 from-to cdc WAL 搜索新增超时与陈旧 reader 释放 (#64013) |
| 98 | +- 在 commit rowset 时校验 recycle rowset key 状态 (#63985) |
| 99 | +- 降低 sparse variant 解析内存 (#63970) |
| 100 | +- 避免保留完整的 segment key bounds buffer (#63968) |
| 101 | +- flush 后释放 packed file writer buffer (#63967) |
| 102 | +- 在 delete bitmap capture 前归一化 SC rowset 图 (#63960) |
| 103 | +- 支持 cdc_client JVM 选项并采用外部管理的 cdc_client (#63898) |
| 104 | +- 移除 udf cache 的 expiration_time 属性 (#63897) |
| 105 | +- 销毁前排空 txn lazy committer worker (#63876) |
| 106 | +- 在 distributionPrune 中按分区过滤 nereidsPrunedTabletIds (#63851) |
| 107 | +- 为异步任务保持 prefetch reader 存活 (#63796) |
| 108 | +- 避免重试对象存储的 SlowDown 错误 (#63776) |
| 109 | +- 移除单副本 compaction (#63771) |
| 110 | +- 按查询缓存 cluster id 并移除 getBackendId 热路径上的冗余锁 (#63636) |
| 111 | +- 修复 master 上 meta tool 的构建 (#63540) |
| 112 | +- 对 STOP_TOKEN 跳过陈旧 tablet cache 检查 (#63520) |
| 113 | +- 为 histogram 指标保留 label,修复 prometheus 指标名错误 (#63485) |
| 114 | +- 在 LocationPath 中归一化默认 HDFS 路径 (#63476) |
| 115 | +- 存储 segment stats 前截断 segment key bounds (#63469) |
| 116 | +- 运行前填补 schema change 的版本空洞 (#63443) |
| 117 | +- 禁用 row store 列的 dict 编码 (#63438) |
| 118 | +- 移除 assert_cast 的 pure 属性 (#63417) |
| 119 | +- 修复重启后立即 clear_file_cache 导致 file cache size 百分比溢出 (#63410) |
| 120 | +- 在一个 BE 宕机时验证 DML 与三副本建表 (#63401) |
| 121 | +- 修复预聚合 context 在 join 分支间的泄漏 (#63357) |
| 122 | +- 清理空的 v3 cache 目录 (#63344) |
| 123 | +- 避免并发 tablet stat 迭代失败 (#63298) |
| 124 | +- 允许在未选择数据库时 show tablet (#63280) |
| 125 | +- 读取 FE 持久化的 CDC offset 时恢复 split-bound 的 Java 类型 (#63219) |
| 126 | +- clone instance 支持 storage vault (#63217) |
| 127 | +- 将 overwrite 分区路由延迟到 incremental open (#63209) |
| 128 | +- 修复分区回收后简单聚合的缓存 (#63175) |
| 129 | +- 增强统计 analyze 任务的 OOM 错误信息 (#63172) |
| 130 | +- 修复 vertical compaction 期间 RowSourceBuffer 中错误的内存可用性检查 (#63152) |
| 131 | +- 为 cdc source job 实现异步 chunk 切分 (#63079) |
| 132 | +- 用带注解的 wrapper 替换 std::mutex/std::lock_guard 以支持线程安全分析 (#63070) |
| 133 | +- 避免 force-finished publish 任务的 NPE (#63069) |
| 134 | +- 为 DataQueue 新增 SubQueue 抽象与线程安全注解 (#62947) |
| 135 | +- 跳过对异步 rowset warmup 的等待 (#62764) |
| 136 | +- 为 RestoreJob 缓存版本并主动获取 tablet stats (#62704) |
| 137 | +- create/list snapshot 支持 storage vault (#62523) |
| 138 | +- 在多跳 outer join MV 重写中从 INNER JoinEdge 推断 null-reject (#62492) |
| 139 | +- 避免延迟的 holder 清理遇到已移除 cache cell 时崩溃 (#62437) |
| 140 | +- 修复 PartitionRebalancer 向缺少所需存储介质的 BE 生成无效迁移 (#62206) |
| 141 | +- 为 meta-service 新增系统级限流 (#61516) |
| 142 | +- 在 CloudTabletRebalancer 中用 tabletId 替换 Tablet 引用 (#61233) |
| 143 | +- 新增异步 lru 更新机制并修复 cache reader 中的部分命中 (#61083) |
| 144 | +- 避免 NewOlapScanner 中 FileCache 计数器重复累加 (#61072) |
| 145 | +- show proc 应显示分区的 cached version (#60807) |
| 146 | +- 避免云模式下错误的 tablet 诊断告警 (#60805) |
| 147 | + |
| 148 | +## 导入 |
| 149 | +- 修复 nullable date literal 绑定与 date *_diff 折叠 (#64127) |
| 150 | +- 为自动分区保持 load 行数指标单调 (#64109) |
| 151 | +- 修复 postgres cdc 多表 publication 的数据丢失与 binlog 重复 key (#64075) |
| 152 | +- 加载 JSON 时按名称匹配 STRUCT 子字段 (#64011) |
| 153 | +- 更换 lzo 下载链接 (#63785) |
| 154 | +- 修复 cdc-client 中 postgres 历史日期 timestamp 的处理 (#63618) |
| 155 | +- 新增按任务级别的 routine load 指标 (#63576) |
| 156 | +- 修复 BeIdComparator 中 int 溢出导致 stream load 失败 (#63565) |
| 157 | +- 为 sub txn load 新增 txn 写放大 brpc 指标 (#63545) |
| 158 | +- 对 workload DDL 强制使用显式 compute group 形式 (#63505) |
| 159 | +- 支持用户指定 mysql server_id 并按 reader 分配 (#63490) |
| 160 | +- 修复一批 typo/日志/校验/可见性问题 (#63480) |
| 161 | +- 避免 snapshot chunk 读取期间跨表 DML 的 NPE (#63435) |
| 162 | +- 在终态任务上执行 cancel 时保持 isCanceled 置位 (#63427) |
| 163 | +- 丢弃 JdbcPostgreSQLClient 中因 JDBC LIKE 通配符泄漏的邻表行 (#63402) |
| 164 | +- 优化 row-store 场景下 row-store memtable flush 的内存 (#63342) |
| 165 | +- 修复 stream load 重定向时未消费 request body 导致的 broken pipe 风险 (#63332) |
| 166 | +- 将 esdk-obs-java-bundle 固定到 3.21.11 以修复版本范围解析失败 (#63278) |
| 167 | +- 为 streaming insert 任务新增按任务级别的 lag 指标 (#63194) |
| 168 | +- 修复 routine load Kafka meta 请求中的 NPE (#63180) |
| 169 | +- 移除核心类型与工具中的无用代码 (#62994) |
| 170 | +- CancelTaskById 不应被无关的 streaming 任务阻塞 (#62940) |
| 171 | +- 在 replay 与 ALTER 后重新计算派生字段 (#62936) |
| 172 | +- 跨 FE checkpoint 持久化 cdc_stream TVF offset (#62902) |
| 173 | +- 避免修改共享的 variant 列 (#64092) |
| 174 | +- 从当前 cluster 选择 txn insert backend (#63634) |
| 175 | +- 修复在 metadata_failure_recovery 模式启动 FE 时 host 不匹配 (#62748) |
| 176 | +- 去重待处理的一次性 warm up 任务 (#62384) |
| 177 | + |
| 178 | +## 湖仓 |
| 179 | +- 将 iceberg varint 类型映射为 unsupported 类型 (#64331) |
| 180 | +- 修复 iceberg 写入特殊分区错误 (#64225) |
| 181 | +- 修复无法获取已迁移 Iceberg 表 format type 的问题 (#64134) |
| 182 | +- 数据位置使用对象存储路径 (#64028) |
| 183 | +- 拒绝对 iceberg COW 表执行行级 DML (#63950) |
| 184 | +- 修复 iceberg v3 row lineage 的 count distinct 结果错误 (#63826) |
| 185 | +- 修复 LocalExchangeSharedState::sub_total_mem_usage 中的 DCHECK (#63742) |
| 186 | +- 为 position delete 文件补充缺失的 Iceberg field ID (#63483) |
| 187 | +- 为查询加载行数时填充 Hive meta cache (#63470) |
| 188 | +- 修复 iceberg sink writer 的 spill 上报错误 (#62899) |
| 189 | +- Rest 与 S3Table 支持 IAM role (#60498) |
| 190 | + |
| 191 | +## 安全与认证 |
| 192 | +- 在 MysqlProto.readLenEncodedString 中限制长度 (#63604) |
| 193 | +- 将 HDFS connection 纳入 file handle cache key (#63516) |
| 194 | +- 修复 arrow flight client 的 IP 鉴权 (#63506) |
| 195 | +- 在 simplify in predicate 中保留收窄的 datetimev2 cast (#63343) |
| 196 | +- 修复 arrow::Status inline static empty msg 的 core (#63191) |
| 197 | +- 支持多 root 认证插件加载并规范化 OIDC access token 认证 (#62159) |
| 198 | +- 在审计日志中改进 ALTER USER 与 CREATE USER 命令的用户密码脱敏 (#62141) |
| 199 | +- 改进 LDAP 认证的弹性与诊断 (#61673) |
| 200 | +- 集成认证链并简化 fallback 配置 (#61362) |
0 commit comments