概述
2026 年 6 月 17 日,DuckDB 官方发布了 v1.5.4 错误修复版本。这是继 v1.5.3 之后不到一个月的又一重要补丁版本,修复了大量社区反馈的问题,并带来了几个重量级的新特性。
本次更新最引人注目的包括:ADBC 1.1.0 协议的完整支持(含 Rich Error Metadata API)、Avro 和 Unity Catalog 扩展的正式纳入、MERGE INTO 语句的行为修正,以及对 Vortex 和 Lance 扩展的版本升级。此外,还有数十项 Bug 修复,涵盖了从内存泄漏到并发安全的各个层面。

ADBC 1.1.0 支持:数据库连接的标准化之路
什么是 ADBC?
Arrow Database Connectivity (ADBC) 是 Apache Arrow 项目推出的数据库连接标准 API,旨在为不同数据库提供统一的驱动接口。它让应用程序可以通过相同的代码访问 PostgreSQL、MySQL、DuckDB 等多种数据源,极大简化了数据管道的开发。
v1.5.4 带来的改进
v1.5.4 版本中,ADBC 驱动实现了两个关键特性:
- StatementExecuteSchema:支持在执行查询前获取结果集的元数据信息,无需实际执行即可了解返回的列名、类型等信息。
- Rich Error Metadata API:当查询失败时,ADBC 现在能够返回更详细的错误上下文信息,包括具体的错误位置、相关 SQL 片段等,大幅提升了调试效率。
实战示例
-- 通过 ADBC 驱动连接 DuckDB 并获取 schema 信息
-- 在 Python 中使用 adbc_driver_manager
import adbc_driver_manager.dbapi as dbapi
import adbc_driver_duckdb.dbapi
# 建立连接
with dbapi.connect(
"duckdb://",
driver_name="adbc_driver_duckdb",
) as conn:
with conn.cursor() as cursor:
# 执行查询
cursor.execute("SELECT 'Hello DuckDB v1.5.4' AS greeting")
result = cursor.fetch_arrow_table()
print(result)
对于使用 ADBC 的数据应用开发者来说,这意味着可以在不修改查询逻辑的前提下,无缝切换底层数据库引擎。
Avro 扩展:Apache Avro 格式的完整支持
Avro 是什么?
Apache Avro 是一种流行的二进制序列化框架,广泛应用于 Hadoop 生态系统和数据管道中。它以紧凑的二进制格式存储数据,同时保留完整的 schema 信息,非常适合大规模数据存储和传输。
DuckDB 中的 Avro 读取
v1.5.4 版本中,Avro 扩展被正式纳入 DuckDB 的扩展列表中。你可以直接使用 read_avro() 函数读取 .avro 文件:
-- 读取 Avro 文件
SELECT * FROM read_avro('data/records.avro');
-- 查看 Avro 文件的 schema 信息
DESCRIBE SELECT * FROM read_avro('data/records.avro');
-- 结合其他文件格式一起处理
SELECT
avro_data.customer_id,
csv_data.order_total,
avro_data.timestamp
FROM read_avro('orders.avro') avro_data
JOIN read_csv_auto('customers.csv') csv_data
ON avro_data.customer_id = csv_data.id;
与 Parquet 的性能对比
| 特性 | Avro | Parquet | DuckDB 支持 |
|---|---|---|---|
| 压缩比 | 高 | 高 | ✅ |
| 列式存储 | ❌ | ✅ | ✅ |
| Schema 演化 | ✅ | ✅ | ✅ |
| 随机读取 | 慢 | 快 | ✅ |
| 适用场景 | 流式写入 | 分析查询 | 两者兼有 |
对于需要从 Hadoop 生态系统迁移数据的用户,Avro 扩展让 DuckDB 可以直接消费现有的 Avro 数据文件,无需额外的格式转换步骤。
Unity Catalog 扩展:Databricks 数据治理集成
什么是 Unity Catalog?
Unity Catalog 是 Databricks 平台提供的统一数据治理解决方案,支持跨工作区的权限管理、元数据管理和审计追踪。通过 DuckDB 的 Unity Catalog 扩展,你可以在本地环境中直接查询 Unity Catalog 管理的 Delta Lake 表。
使用方式
-- 挂载 Unity Catalog 数据源
ATTACH 'unity://catalog' AS uc (TYPE unity_catalog);
-- 列出可用的 schema
SHOW SCHEMAS FROM uc;
-- 查询 Unity Catalog 管理的表
SELECT * FROM uc.default.my_table LIMIT 10;
-- 跨 catalog 查询
SELECT
t.product_name,
SUM(t.amount) as total_sales
FROM uc.production.sales t
GROUP BY t.product_name
ORDER BY total_sales DESC;
适用场景
- 数据湖分析:直接在本地对 Databricks 数据湖进行即席查询
- 混合架构:结合 DuckDB 的分析能力和 Unity Catalog 的治理功能
- 原型开发:在开发阶段使用本地 DuckDB 模拟生产环境的数据访问
MERGE INTO 的重大行为修正
v1.5.4 对 MERGE INTO 语句进行了重要的语义修正,解决了长期以来困扰用户的绑定歧义问题。
问题描述
在之前的版本中,当 MERGE INTO 语句包含 WHEN NOT MATCHED 子句时,DuckDB 可能会错误地在条件绑定中引入源表的列,导致意外的过滤行为或性能问题。
修正内容
-- 修正后的 MERGE INTO 语义:
-- WHEN NOT MATCHED 只考虑目标表
-- WHEN NOT MATCHED BY TARGET 只考虑源表
MERGE INTO target_table t
USING source_table s
ON t.id = s.id
WHEN MATCHED THEN
UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN
INSERT (id, value) VALUES (s.id, s.value);
这一修正确保了 MERGE INTO 的行为与 SQL 标准完全一致,特别是在复杂的多表关联场景中。
其他关键更新
Vortex 和 Lance 扩展升级
v1.5.4 版本升级了 Vortex(DuckDB 的原生向量索引格式)和 Lance(开源机器学习数据格式)扩展,带来了更好的查询性能和更稳定的并发控制。
-- 使用 Vortex 向量索引加速相似度搜索
SELECT
id,
vector_cosine_similarity(embedding, '[1.0, 2.0, 3.0]') as similarity
FROM read_vortex('vectors.vortex')
ORDER BY similarity DESC
LIMIT 10;
存储版本更新
v1.5.4 引入了新的存储版本映射,确保与 v1.4.5 版本的向后兼容性。这意味着从旧版本升级的用户不需要手动迁移数据文件。
其他 Bug 修复亮点
- 修复了 Arrow GeoArrow CRS 序列化中的双重释放和内存泄漏
- 修正了窗口函数自连接优化器的异常处理
- 改进了进度条输出,修复了管道模式下 SQL 执行的崩溃问题
- 修复了 Parquet Thrift 字节序问题
- 优化了准备语句参数查找性能
版本对比
| 特性 | v1.5.3 | v1.5.4 |
|---|---|---|
| ADBC 支持 | 基础 | 1.1.0 + Rich Error API |
| Avro 扩展 | ❌ | ✅ 正式纳入 |
| Unity Catalog | ❌ | ✅ 正式纳入 |
| MERGE INTO | 基础绑定 | 语义修正 |
| Vortex | 基础版 | 升级优化 |
| Lance | 基础版 | 升级优化 |
| Bug 修复 | 常规 | 30+ 项 |
如何升级
通过 pip 升级
pip install --upgrade duckdb
通过 apt 升级(Linux)
wget https://github.com/duckdb/duckdb/releases/download/v1.5.4/duckdb_cli-linux-amd64.zip
unzip duckdb_cli-linux-amd64.zip
chmod +x duckdb
./duckdb --version
在 Python 项目中升级
import duckdb
print(duckdb.__version__) # 应显示 1.5.4
变现建议
对于希望利用 DuckDB v1.5.4 新特性创造商业价值的团队和个人,以下是几个方向:
1. 数据管道咨询服务
Avro 和 Unity Catalog 扩展让 DuckDB 能够无缝对接 Hadoop 和 Databricks 生态。企业数据团队经常面临遗留系统与现代化分析平台的集成难题,提供基于 DuckDB 的迁移咨询服务(单次项目 ¥10,000-50,000)是一个高价值方向。
2. ADBC 驱动的 SaaS 产品
ADBC 1.1.0 的支持让多数据源统一查询变得更容易。可以构建一个 SaaS 产品,让用户通过统一的 SQL 接口查询多个数据源(DuckDB + PostgreSQL + MySQL),按月收取订阅费用(¥200-2000/月)。
3. 数据分析培训与认证
围绕 DuckDB 新版本特性开设在线培训课程,特别是针对 Avro 数据处理、Unity Catalog 集成、ADBC 应用等新兴主题。课程定价 ¥299-1999,配合实战项目作业,完课率和口碑传播效果良好。
4. 企业级数据治理方案
结合 Unity Catalog 扩展和 DuckDB 的分析能力,为企业搭建轻量级数据治理平台。相比传统方案,基于 DuckDB 的方案部署成本降低 80%,查询性能提升 10 倍以上。
总结:DuckDB v1.5.4 虽然是一个错误修复版本,但引入的 ADBC 1.1.0 支持、Avro 和 Unity Catalog 扩展使其成为一个功能丰富的里程碑版本。无论是数据工程师、分析师还是开发者,都值得升级到最新版本以享受这些新特性带来的便利。