2026 年 2 月到 3 月,Databend 持续推进 SQL 能力、空间分析、文件格式、查询执行链路和 Meta 架构演进。Sandbox UDF、Geography Functions、R-Tree Spatial Index、TEXT 格式、
增强、Meta KV 压缩等更新,数据开发持续交付,构成了这两个月最值得关注的主线。EXPLAIN PERF
Hi,Databend 的朋友们!
因为上个月没有单独发布 2 月月报,这一期我们把 2026 年 2 月和 2026 年 3 月 合并成一篇双月回顾,覆盖从
v1.2.874-nightly
v1.2.891-nightly
这两个月的主线比较清晰:尝试 Sandbox UDF 与 Geography Functions 扩展了 SQL 表达能力;R-Tree Spatial Index、Spatial Join 与空间裁剪链路逐步补齐;CSV/TSV 能力继续增强,并在 3 月正式收敛为 TEXT 格式;查询引擎则在 new join、spill 修复、
EXPLAIN PERF
bendsql
月度数据
从
v1.2.874-nightly
v1.2.891-nightly
- 18 个 nightly 版本
- 2 个 patch 版本
其中:
- 2 月共发布 10 个 nightly
- 3 月共发布 8 个 nightly 和 2 个 patch
如果按 release note 统计,这两个月 Databend 主仓库累计合并了:
- 43 个新功能
- 49 个 bug 修复
- 50 项重构
- 2 项 CI / 构建改进
- 3 项文档更新
- 17 项其他优化
从这个数据也能看出来,2-3 月的 Databend 是在 功能扩展、执行稳定性和底层结构整理 三条线上同步推进。
本期亮点
核心新功能
- Sandbox UDF + LATERAL - Databend 在 SQL 表达能力上继续前进,既补齐了更灵活的查询表达,也为更安全的自定义逻辑执行打下了基础。
generate_series - Geography Functions + - 从 Geography Functions 到
st_hilbert,空间分析相关函数继续扩充。st_hilbert - 对象治理增强 - Tagging 能力扩展到 、
USER、ROLE、STREAM、view、udf,并为 FUSE table snapshot 增加实验性的 table tags 支持。procedure - 数据操作链路增强 - 支持
COPY INTO location,PARTITION BY支持 Lance dataset,导入导出链路继续补齐。COPY INTO - Table Branches 独立 Schema - 分支化数据管理的组织方式更加清晰,Table Branch 还在进一步优化中
- Table Tag 已经包含在最新版本,可以使用。
空间分析能力:从 Geography Functions 走向 Spatial Index
- Geography Functions - 2 月先把地理空间计算相关能力补起来,为后续索引与裁剪打下基础。
- R-Tree Spatial Index - 3 月正式引入基于 R-Tree 的 Spatial Index,实现空间索引能力落地。
- Spatial Statistics - 为 增加空间统计信息,用于 geospatial range pruning。
BlockMeta - Spatial Join - Runtime Filter 开始支持 Spatial Index Join,让空间索引真正接入查询优化与执行路径。
文件格式与数据交换:从 CSV/TSV 增强到 TEXT 成型
- CSV / TSV 兼容性增强 - 支持多字节字段分隔符,复杂类型可编码为 JSON,异构数据接入更灵活。
- +
read_file- 文件读写链路继续增强,数据工程场景更完整。COPY INTO location PARTITION BY - TSV -> TEXT - 3 月将 TSV 正式收敛为 TEXT,并补上 TEXT 文件格式参数,让文本类数据导入定义更清晰。
- 细节修复 - 支持 TSV,
infer_schema()支持整行读入,CRLF 处理继续完善。FIELD_DELIMITER=''
查询性能与执行引擎:从 new join 到 EXPLAIN PERF
- experimental new join 默认启用 - 2 月是执行链路上的一个重要节点,随后围绕 spill 场景的数据正确性持续修复。
- - 3 月增加 per-plan 硬件性能计数器,执行计划分析进一步增强。
EXPLAIN PERF - Sort / Spill 优化 - spilled sort blocks prefetch、source sort key 复用、spilled sort streams 压缩、批量 rank-limit sort 等能力继续推进。
- Join 与过滤优化 - small bloom index 读取优化、Hash Join 完成后主动回收内存、Runtime Filter 持续增强。
Meta 与运维:底层结构持续整理
- Meta 架构整理 - HTTP admin API 拆到独立 crate ,Meta 配置结构、CLI 配置和 crate 边界持续清理。
databend-meta-admin - Meta KV Compression - 在 中引入透明 zstd 压缩和 typed serialization,进一步优化元数据存储能力。
v1.2.883-nightly - Query-Meta 兼容性 - 补齐 query-meta 版本兼容性文档,为后续演进提供更清晰的边界。
- 连接与运维细节 - Meta value compression 开关、gRPC listener 等能力继续补齐。
TCP_NODELAY
稳定性与质量:执行正确性与边界修复持续收敛
- 执行正确性 - new join spill 数据丢失问题持续修复,recursive CTE 并发结果问题得到修正。
- 存储与元数据稳定性 - raft-log 并发 chunk 读取竞态、HTTP catalog attached table 不必要 S3 refresh 等问题得到修复。
- SQL 边界修复 - 括号保留、correlated scalar subquery decorrelate、Unicode 标识符与别名支持等持续完善。
UNION - 安全与治理边界 - Direct 下 row access policy 执行问题得到修复。
UPDATE
实战演示:Databend 的数据开发与交付
如果把这两个月的更新放到一个更贴近真实工作的例子里,Databend 的价值会更直观。一个常见的数据开发流程是:先在 Databend 里完成清洗、汇总和模型构建,再把结果按分区交付到对象存储,供下游离线任务继续消费;针对特定分析或应用场景,再把结果导出成更适合消费的数据集格式。这正好对应了 2-3 月里两项很实用的能力:
COPY INTO <location> PARTITION BYCOPY INTO <location> FILE_FORMAT = (TYPE = LANCE)
场景一:按日期与小时分区交付 Parquet
假设我们已经在 Databend 中构建好了一个订单宽表,希望每天把结果按
date/hour
可以直接使用:
COPY INTO @delivery_stage/orders/
FROM (
SELECT
order_id,
user_id,
amount,
status,
created_at,
to_date(created_at) AS dt
FROM mart_orders
WHERE created_at >= '2026-03-01'
)
PARTITION BY (
'date=' || to_varchar(dt, 'YYYY-MM-DD')
|| '/hour=' || lpad(to_varchar(date_part('hour', created_at)), 2, '0')
)
FILE_FORMAT = (TYPE = PARQUET);
这类写法的好处很直接:
- 分区目录由 SQL 表达式直接决定,交付路径可控
- 结果可以直接落到类似 这样的目录结构
date=2026-03-01/hour=08/ - 下游任务不需要再额外做一次分区改写
场景二:把分析结果直接交付为 Lance Dataset
如果下游消费场景更关注高效读取、列式访问或特定数据集组织形式,那么 3 月新增的 Lance 格式支持会更有价值。
比如,我们想把一个特征结果集直接导出成 Lance dataset,可以这样写:
COPY INTO @delivery_stage/user_features_lance/
FROM (
SELECT
number
from numbers(10)
)
FILE_FORMAT = (TYPE = LANCE)
USE_RAW_PATH = TRUE
OVERWRITE = TRUE;
这里要特别注意几点:
- Lance dataset 是一个完整的数据集目录,不是普通单文件输出
- 默认情况下,Databend 会在目标路径下再生成 query_id 目录
- 如果希望结果直接落到指定目录,可以使用
USE_RAW_PATH = TRUE - 当前 Lance 不支持 和 一起使用
PARTITION BY
Databend 在交付链路上实际上提供了两种很清晰的模式:
- 面向通用数据湖交付时,用
PARTITION BY + PARQUET - 面向特定数据集组织或高效消费场景时,用
LANCE
生态补充
bendsql:3 月有 2 个版本更新
bendsql
- ,发布时间为 2026-03-11
v0.33.5 - ,发布时间为 2026-03-15
v0.33.6
这两次更新主要集中在:
- 错误信息更可读,补充 来源和 source chain 输出
reqwest::Error - 请求稳定性增强,包括 heartbeat headers 修复、出错重试、超时时间调整
response.bytes() - 发布与构建链路完善,包括 OIDC trusted publishing 和 abi3 wheel 构建修复
这两次发布更偏向 CLI 可用性、错误诊断能力和工程化质量 的提升。
Driver 与客户端
除了
bendsql
- 在 2026-03-23 发布了 v0.9.2,继续推进 Go 驱动可用性演进
databend-go - 在 2026-03-20 附近围绕异常处理做了一组改进,包括把
databend-jdbc带进query_id消息,便于排障和问题定位SQLException - 在 2026-02-25 到 2026-02-28 之间继续做兼容性修复和版本升级,包括
databend-sqlalchemy类型解析修复、varchar相关问题修正get_sequence_names
这些更新不像主仓库那样集中体现在大功能上,但它们对 Databend 在应用接入层的可用性同样重要。
准备好体验 Table Branching 与空间索引了吗?
开始使用 Databend Cloud——面向分析、搜索、AI 与 Python Sandbox 的 Agent Ready 数仓,即可开始,获得 200 元代金券。
订阅我们的新闻简报
及时了解功能发布、产品规划、支持服务和云服务的最新信息!






