数据库更新最怕一种情况:查询跑得更快,答案却悄悄错了。DuckDB 1.5.6 正是一次以“把坑填平”为主的补丁更新。DuckDB 是可直接嵌入 Python、R 等程序的分析数据库,常用于在本机读取 Parquet 或表格数据;1.5.6 是 1.5(Variegata)系列的第六个补丁版,包含缺陷修复、性能改进和安全补丁。
这次最值得留意的是一批正确性修复。例如,查询优化器——执行 SQL 前负责调整计算顺序的组件——此前在处理 LIMIT、OFFSET 和 volatile 表达式时可能错误改写计划。volatile 表达式指多次求值可能得到不同结果的表达式,如随机数函数,数据库不能随意减少或移动其计算。更新还修复了 UNION ALL 共享连接子计划时产生错误结果、超长整数被静默截断,以及若干 Parquet、NULL、时间与地理数据处理问题。
此外,版本修补了 Top-N、URL 解码等场景的崩溃,以及写前日志恢复和事务回滚问题。它不是大型功能发布,但生产用户仍应先核对关键查询结果、扩展和文件格式兼容性,再决定升级节奏。