原文
2025-12-09 ·3分钟
今天DuckDB团队发布了DuckDB 1.4.3。除了修复错误外,还发布了原生扩展和Windows ARM64的Python支持。
在这篇博客文章中,重点介绍了DuckDB v1.4.3中的几个重要修复,这是DuckDB 1.4 LTS系列的第三个补丁版本。你可以在GitHub上找到完整的发布说明。
要安装新版本,请访问安装页面。
修复
该版本包含多项性能改进和漏洞修复。
正确性
#18782ART指数报告了错误的“受影响行数”
#19313角落情况错误的结果:没有GROUP BY的HAING子句返回错误结果
#19517 JOIN 与 LIKE 模式的连接导致列被错误包含
#19924优化器错误地从聚合中移除了ORDER BY条
#19970带DICT_FSST压缩的索引表固定更新
#20009已通过DICT_FSST压缩修复更新
崩溃与内部错误
#19469检查外键约束时,约束违规消息中出现潜在错误
#19754竞态条件可能会触发加密密钥缓存中的分隔错误
#20044索引删除代码路径中的固定边缘情况
性能
#18997宏绑定对于不平衡树的性能较慢
#19901在有索引的情况下,WAL重放期间内存管理得到了改进
杂项
#19575带有LIKE表达的Unicode错误
#19916DuckDB-Wasm 的默认时区偏移与应有的相反
#19884带着准备好的陈述抄送给帕尔凯特并不奏效
Windows ARM64
本次发布中,通过支持扩展并发布原生 Python whl,引入了 Windows ARM64 的测试版支持。
Windows ARM64 扩展发行版
在 Windows ARM64 上,你现在可以原生安装核心扩展,包括像空间扩展这样复杂的:
PRAGMA platform;
┌───────────────┐
│ platform │
│ varchar │
├───────────────┤
│ windows_arm64 │
└───────────────┘
INSTALL spatial;
LOAD spatial;
SELECT ST_Area(ST_GeomFromText(
'POLYGON((0 0, 4 0, 4 3, 0 3, 0 0))')
) AS area;
┌────────┐
│ area │
│ double │
├────────┤
│ 12.0 │
└────────┘
Windows ARM64 Python whl发行版
我们现在为Windows ARM64分发Python whl。这意味着你可以拿一台Copilot+ PC运行:
pip install duckdb
这通过 PyPI 分发的二进制文件安装包。
Python 3.13.9 (tags/v3.13.9:8183fa5, Oct 14 2025, 14:51:39) [MSC v.1944 64 bit (ARM64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import duckdb
>>> duckdb.__version__
'1.4.3'
目前,许多你在 Windows ARM64 电脑上看到的 Python 安装都使用 x86_64(AMD64)Python 发行版,并通过 Microsoft 的 Prism 模拟器运行。例如,如果你通过 Windows Store 安装 Python,你会得到 Python AMD64 安装。
要了解你的 Python 安装使用的是哪个平台,请观察 Python CLI 的第一行(例如 )。Python 3.13.9 … (ARM64)
使用 tpch 扩展,通过对 TPC-H SF100 数据集运行查询,进行了快速基准测试。 在一台搭载12核Snapdragon处理器、3.4 GHz、64GB内存和1TB磁盘的Microsoft Copilot+笔记本上执行了基准测试:
点击此处查看基准测试摘要
import duckdb
import os
import time
con = duckdb.connect("tpch-sf100.db")
con.execute("INSTALL tpch")
con.execute("LOAD tpch")
con.execute("CREATE OR REPLACE TABLE timings(query INTEGER, runtime DOUBLE)")
print(f"Architecture: {os.environ.get('PROCESSOR_ARCHITECTURE')}")
for i in range(1, 23):
start = time.time()
con.execute(f"PRAGMA tpch({i})")
duration = time.time() - start
print(f"Q{i}: {duration:.02f}")
con.execute(f"INSERT INTO timings VALUES ({i}, {duration})")
res = con.execute(f"""
SELECT median(runtime)::DECIMAL(8, 2), geomean(runtime)::DECIMAL(8, 2)
FROM timings""").fetchall()
print(f"Median runtime: {res[0][0]}")
print(f"Geomean runtime: {res[0][1]}")
点击此处查看Windows ARM64上的TPC-H SF100详细成绩
AMD64
(emulator) Arm64
(native)
Q1 2.87 2.10
Q2 0.56 0.40
Q3 2.36 1.58
Q4 2.01 1.45
Q5 2.29 1.61
Q6 0.50 0.39
Q7 2.04 1.52
Q8 2.13 1.46
Q9 7.39 7.32
Q10 4.18 6.98
Q11 0.43 0.57
Q12 2.92 1.04
Q13 6.65 0.54
Q14 1.56 1.12
Q15 0.90 0.55
Q16 0.97 0.74
Q17 2.57 1.67
Q18 4.86 5.15
Q19 2.96 1.72
Q20 1.75 1.12
Q21 7.05 4.44
Q22 1.78 0.97
Median 2.21 1.49
Geomean 2.09 1.59
在模拟器中运行的AMD64软件包的几何平均运行时间为2.09秒,而原生的ARM64软件包的几何平均运行时间为1.59秒——性能提升了24%。
807

被折叠的 条评论
为什么被折叠?



