Hi,Databend 的朋友们!
这一期我们把 2026 年 4 月 和 2026 年 5 月 合并成一篇双月回顾,覆盖从 v1.2.892-nightly 到 v1.2.914-nightly,以及 4 月发布的稳定版 v1.2.881。
这两个月的关键词是「打磨」:ASOF JOIN、空间索引、行级安全、密钥对认证这些方向都在往「更完整、更快、更安全」推进,100 项修复也印证了对成熟度的持续投入。
月度数据
从 v1.2.892-nightly 到 v1.2.914-nightly,加上 4 月发布的稳定版 v1.2.881,Databend 主仓库在 2026 年 4-5 月累计发布了:
- 23 个 nightly 版本
- 1 个 stable 版本(v1.2.881)
- 2 个 patch 版本
其中:
- 4 月共发布 13 个 nightly 和 1 个 stable
- 5 月共发布 10 个 nightly 和 2 个 patch
如果按 release note 统计,这两个月主仓库累计合并了约 219 项改动:
- 49 个新功能
- 100 个 bug 修复
- 34 项重构
- 13 项 CI / 构建改进
- 20 项其他维护
- 2 项文档更新 与 1 份 RFC
从这个数据也能看出来,4-5 月的 Databend 是在功能扩展、执行稳定性和底层结构整理三条线上同步推进,修复量(100)占了大头,说明这一阶段在打磨已有能力的成熟度。
本期亮点
核心新功能
- ASOF JOIN 全面增强 —— 支持 USING 简化语法、补齐 FULL OUTER ASOF JOIN,并对带等值键的 ASOF JOIN 增加 hash fast path 专门提速,时序「按最近匹配」连接更好写也更快。
- 行访问策略下推 —— Row Access Policy 谓词下推至 prewhere,在存储层完成剪枝,让行级安全策略既严格又不拖慢查询。
- 密钥对认证 —— 用户可使用密钥对登录,并扩展支持 RS384、RS512 签名算法,适配更严格的企业认证要求。
- 空间索引剪枝 —— ST_DWITHIN、ST_COVERS、ST_COVEREDBY 开始接入空间索引,邻近与覆盖查询走索引剪枝。
- 日期时间函数扩展 —— 新增 DATE_FROM_PARTS、TIMESTAMP_FROM_PARTS、TIMESTAMP_TZ_FROM_PARTS,支持 ISO 8601 时长与 AUTO datetime 格式自动探测。
查询性能与执行引擎:从 Pipeline 异步化到 Spill 内存池
这两个月执行引擎的主线是「不阻塞」与「可控」:
- Pipeline 异步化 —— 把 pipeline 接口改造成异步模式,避免阻塞 Tokio 运行时,是执行链路上的一次重要结构调整。
- Spill 内存池可配置 —— 从 SpillsBufferPool 中抽出独立的 MemoryPool,并让 pool 大小按 session 可配置;同时默认把 query memory limit 设为 max 的一半并在 OOM 时启用 spilling,大查询的内存稳定性明显提升。
- 选择率与统计估计 —— 改进基于 histogram 的选择率与 join 统计估计、join 后重建 join key histogram,优化器对数据分布的判断更准。
- 公共子计划消除 —— improve common subplan elimination,减少重复计算。
空间分析:从函数扩充走向索引剪枝
延续上一阶段引入 R-Tree Spatial Index 的节奏,这两个月空间分析的重点是让索引真正参与查询剪枝:
- 新增一批 Geometry 标量函数 与聚合函数,几何计算能力继续补齐。
- 支持空间索引刷新(REFRESH ... SPATIAL INDEX),索引可随数据更新。
- ST_DWITHIN 邻近查询、ST_COVERS / ST_COVEREDBY 覆盖判断开始借助空间索引做剪枝。
- 查询结果支持以 Arrow 格式返回格式化的地理值,方便下游消费。
-- 找出指定点 2.0 范围内的兴趣点,自动走空间索引剪枝
SELECT name
FROM pois
WHERE st_dwithin(location, to_geometry('POINT(116.40 39.90)'), 2.0);
安全与治理:密钥对认证与行级安全下推
安全是这两个月另一条清晰的主线。
密钥对认证让用户可以用密钥对替代密码登录,并把签名算法扩展到 RS384、RS512,更贴合企业的密钥管理与合规要求。
行访问策略下推则让行级安全策略的谓词被下推到 prewhere,在存储层就完成剪枝,避免「先全表扫描再过滤」的性能损耗。同时新增 RAP definition cache、统一 security policy cache 的 dialect key,权限链路更快也更可靠。
文件格式与数据加载:NDJSON、CSV/TEXT 持续增强
- NDJSON:支持 COPY 时的 Schema 演进、按字段名解析 tuple 字段,解析改用 from_slice 提升性能。
- CSV / TEXT:新增 trim_space 去除字段首尾空白,支持指定 encoding 编码处理非 UTF-8 数据。
- HTTP Arrow 协商:协议层协商 Arrow result format 版本、把 variant JSONB 编码为 JSON,客户端兼容性更好。
COPY INTO events
FROM @stage/events.csv
FILE_FORMAT = (TYPE = CSV, TRIM_SPACE = true, ENCODING = 'gbk');
函数与表达能力
这两个月新增了一批实用函数:
- 日期时间构造:DATE_FROM_PARTS、TIMESTAMP_FROM_PARTS、TIMESTAMP_TZ_FROM_PARTS,从年月日时分秒直接拼出时间值。
- 进制转换:CONV,在任意进制间转换数字。
- ISO 8601 时长:支持 P1Y2M3DT4H5M6S 这类标准间隔字面量。
- VARIANT 数组拼接:array_concat 支持 VARIANT 数组。
- 会话角色判断:is_role_in_session。
SELECT DATE_FROM_PARTS(2026, 5, 31); -- 2026-05-31
SELECT CONV('FF', 16, 2); -- 11111111
存储与表管理
- Parquet 写入调优:新增 data_page_rows / data_page_bytes 表选项控制数据页粒度,支持按列设置 STATS_TRUNCATE_LEN 控制字符串统计信息长度。
- 快照标签:新增 fuse_tag 表函数列出快照标签。
- 聚簇增强:聚簇统计中新增 block 深度指标,并改进分布式 recluster 的任务调度。
- OSS 连接:支持以 role_arn 方式访问阿里云 OSS。
- 新增 fuse_block_statistics 与 billing_usage_daily 表函数,便于排查块级统计与日度计费用量。
Meta 与运维:底层结构持续整理
- 表锁实现:Meta 改用 PutSequential 实现表锁,锁语义更清晰。
- Key 类型迁移:把 kvapi key 类型迁移到独立的 structkey crate,移除 legacy meta primitive id 与 raw u64 value decoder,类型边界更清晰。
- 运行时可观测性:新增运行时看门狗任务转储(runtime watchdog task dumps),卡死时可自动抓取任务栈帮助定位。
- 依赖升级:升级 arrow-rs 到 58.1.0、openraft alpha.18,并持续 bump databend-meta 版本栈。
稳定性与质量
这两个月累计合并了 100 个 bug 修复,是最近几期中修复占比明显偏高的一期,主要集中在几个方向:
- 执行正确性 —— 修复 hash join hashtable 中因 assume UB 导致的 crash、INSERT ALL 在 lazy materialization 重排输出时的列顺序问题、window aggregate 结果物化问题、union 与 limit 的 hang。
- Spill 与并发 —— 修复 exchange sink buffer 关闭时的 permit 泄漏、hash join spill 在 SSE4.2 下的 partition bit 提取、在统计 sender 关闭时避免阻塞。
- SQL 边界修复 —— 允许 range / PROPERTIES 作为标识符、SELECT alias 解析按 clause 区分、group by alias shadowing、correlated subqueries over union、negative factorial 输入拒绝等。
- 存储与裁剪 —— 修复用字符串字面量裁剪整数列、bloom-index 字符串整数 probe 转换、ORDER BY LIMIT 下推与 fuse table function 索引错位。
- 函数边界 —— 修复 regexp_instr position 溢出、sub_bitmap offset 超出基数、反三角函数 NaN 定义域、BitmapReader 的 BITMAP_LENGTH 从 1024 修正为 8192。
实战演示:行级安全 + 时序匹配
把这两个月的能力放到一个贴近真实工作的例子里会更直观。设想一个多租户的交易分析场景:每个分析师只能看到自己部门的数据(行级安全),并且要为每笔交易匹配当时最新的市场报价(时序连接)。
第一步:用行访问策略做行级隔离
-- 定义一条行访问策略:按会话角色限定可见部门
CREATE ROW ACCESS POLICY dept_isolation
AS (dept STRING)
RETURNS BOOLEAN ->
dept = current_role();
ALTER TABLE trades
ADD ROW ACCESS POLICY dept_isolation ON (dept);
启用后,策略谓词会被下推到 prewhere,在存储层就完成部门剪枝——既保证分析师只读到自己的数据,又不会因为「先全表扫描再过滤」而损失性能。
第二步:用 ASOF JOIN 匹配最近报价
Databend 的 ASOF JOIN 采用 DuckDB 风格,不等式条件直接写进 ON;若两表列名一致,也可用 USING(列表中最后一列作为对齐列):
-- 为每笔交易匹配该时刻 <= 的最近一条报价
SELECT
t.trade_id,
t.symbol,
t.ts,
t.qty,
q.price AS last_quote
FROM trades t
ASOF JOIN quotes q
ON t.symbol = q.symbol AND t.ts >= q.ts;
两步叠加,行级安全策略在底层默默生效,时序匹配则用一行 ASOF JOIN 表达,原本需要窗口函数 + 自连接的复杂逻辑被大幅简化。
生态补充
除了主仓库,Databend 生态里的客户端与驱动在 4-5 月也有配套更新。
bendsql
bendsql 在这两个月发布了两个版本:
- v0.33.7(2026-04-07):错误信息中补充版本号,支持更多 DSN scheme 与 presign host,并升级 jsonb 依赖。
- v0.34.0(2026-05-18):新增 server-side 参数绑定、本地嵌入式 Python 连接支持,协商 arrow_result_version,地理类型可映射为 string 或 binary,并完善 PUT/GET 的 stage 路径处理。
这两次发布偏向 CLI 可用性、Arrow 互操作与本地嵌入式分析的增强。
Driver 与客户端
- databend-go 在 2026-05-09 发布 v0.9.3,新增 HTTP Arrow 传输、登录认证、二进制类型与可配置 User-Agent,并按 geometry_output_format 返回地理值。
- databend-jdbc 在 2026-04 前后发布 v0.4.5 / v0.4.6,修复 extractColumnTypes 的 SQL 解析问题,以及大文件 presign 上传时的 ClosedChannelException。
这些更新虽然不像主仓库那样集中在大功能上,但对 Databend 在应用接入层的可用性同样重要。
结语
4-5 月的 Databend,关键词是「打磨」:ASOF JOIN、空间索引、行级安全、密钥对认证这些已有方向都在往「更完整、更快、更安全」推进,100 项修复也印证了对成熟度的持续投入。
关于 Databend
Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式湖仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。
👨💻 Databend Cloud:https://databend.cn
📖 Databend 文档:https://docs.databend.cn
💻 Wechat:Databend
✨ GitHub:https://github.com/databendlabs/databend
订阅我们的新闻简报
及时了解功能发布、产品规划、支持服务和云服务的最新信息!






