DuckDB 1.5.5 发布:安全加固+窗口函数修复
7月22日,DuckDB 团队发布了 v1.5.5,这是 1.5(Variegata)线的第六个补丁版本。根据 GitHub Release Notes,本次更新以 bug 修复和安全加固为主,同时升级了多个核心扩展。
● ● ●
🛡️ 安全与内存安全
本次版本 backport 了多项越界读取修复和安全加固补丁(#23100),覆盖了 JSON 路径解析、字符串转 struct 的越界读取、字典字符串解压缩、空字节数组 decimal 处理等多个路径。此外,DICT_FSST 和 ALP/ALP_RD 压缩算法也增加了边界检查,防止小 block size 下的异常。
● ● ●
🪟 窗口函数三项修复
FIRST_VALUE 排序取帧修复(#23457):order 子句与 frame 子句的组合行为现已符合预期。
CUME_DIST 下溢修复(#23641):极端值场景不再产生错误结果。
RANGE ZERO 正确语义(#23664):range 窗口帧中零值范围的边界处理已对齐标准。
● ● ●
🔍 CTE 与查询优化
修复了 CTE 中公共聚合表达式的问题(#23383)。Filter Combiner 现在可以正确剪枝不可满足的边界条件(#23563),lambda 表达式在 try 算子中的绑定也被修复(#23375)。
● ● ●
📦 Parquet 与存储
拒绝 compressed_page_size不一致的 DATA_PAGE_V2 页,防止损坏数据被静默读取(#23279)修复 RLE 编码误报损坏错误(#23458),并改进了错误信息(#23480) 修正行组过滤后的 min/max 聚合统计(#23517),修复多行组 128-bit DECIMAL 的 min/max 互换(#23693) ALP/ALP_RD 压缩在 storage version ≥ v1.5.0 时已启用小 block size 支持(#23483) VARIANT:修复完全 shred 后的类型值统计获取(#23325)以及 SUGGEST_NEW → REQUIRE_NEW 的提升逻辑(#23763)
● ● ●
🧮 内存与资源管理
修复 TemporaryMemoryManager 死锁(#23351) 修复使用外部文件时 eviction 节点的内存泄漏(#23479) 修复外部 hash aggregate 在 radix bits 增长后的 segfault(#23757)
● ● ●
🔧 ALTER TABLE
ADD COLUMN IF NOT EXISTS ... DEFAULT回归修复(#23507) DROP COLUMN不再损坏每列元数据块的簿记(#23714) 并发 ALTER 和 INSERT crash 修复(#23861)
● ● ●
📡 JSON
TIMESTAMP_TZ格式化输出修复(#23500) duckbox 渲染畸形 JSON 修复(#23803)
● ● ●
🔌 扩展升级
常规扩展 bump 包括:Iceberg、Unity Catalog、Azure、Quack、HTTPFS、AWS、Postgres/SQLite/ODBC 扫描器、DuckLake、Lance(修复 ethnum 上游问题,去掉本地 patch)。
● ● ●
总结
v1.5.5 是一个典型的"安心升级"补丁版本——没有新语法、没有破坏性变更,但修复了大量值得关注的边界情况。如果你在使用窗口函数、ALTER TABLE 频繁操作、或依赖 VARIANT/Parquet 的统计信息,建议及时升级。
值得一提的是,这很可能是 DuckDB v2.0 秋季大版本发布前 Variegata 线的最后几个补丁之一。按照 Release Calendar,v2.0 计划在 2026 年秋季发布,届时 Quack 协议也将从 beta 毕业。
安装方式:前往 https://duckdb.org/install/ 选择对应平台即可。