---
# System prepended metadata

title: Databend 开源周报第 81 期
tags: [weekly]

---

---
title: Databend 开源周报第 81 期
description: 
slug:  databend-weekly-81
date: 2023-02-20
tags: [weekly]
cover_url: databend-weekly.svg
image: databend-weekly.png
authors:
- datafuselabs
---

# Databend 开源周报 第 81 期

![databend weekly](https://i.imgur.com/DqRbPYS.png)

> 英文版移步：https://databend.rs/blog/2023-02-15-databend-weekly
> 
> [Databend](https://github.com/datafuselabs/databend) 是一款现代云数仓。专为弹性和高效设计，为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务：[https://app.databend.com](https://app.databend.com) 。

## What's New

探索 Databend 本周新进展，遇到更贴近你心意的 Databend 。

### Accepted RFCs :airplane_departure:

- rfc: 查询结果缓存 ([#10014](https://github.com/datafuselabs/databend/pull/10014))

### Features & Improvements :sparkles:

**Planner**

- 支持 `EXPLAIN ANALYZE` 语句以剖析查询执行 ([#10023](https://github.com/datafuselabs/databend/pull/10023))
- 派生新过滤器并下推 ([#10021](https://github.com/datafuselabs/databend/pull/10021))

**Query**

- 变更表支持增删列 ([#9851](https://github.com/datafuselabs/databend/pull/9851))
- 新增表函数 `infer_schema` ([#9936](https://github.com/datafuselabs/databend/pull/9936))
- 为 select 增加权限检查 ([#9924](https://github.com/datafuselabs/databend/pull/9924))
- 改进带符号数值的键 ([#9978](https://github.com/datafuselabs/databend/pull/9978))
- 支持解析 jwt 元数据并添加多重身份颁发者配置 ([#9971](https://github.com/datafuselabs/databend/pull/9971))
- 支持创建文件格式 ([#10009](https://github.com/datafuselabs/databend/pull/10009))

**Storage**

- 适配 OpenDAL 的原生 `scan` 支持 ([#9985](https://github.com/datafuselabs/databend/pull/9985))
- 新增 `drop_table_by_id` API ([#9990](https://github.com/datafuselabs/databend/pull/9990))

**Expression**

- 新增 decimal 类型相关运算支持 ([#9926](https://github.com/datafuselabs/databend/pull/9926))

**Functions**

- 支持 `array_any` 函数 ([#9953](https://github.com/datafuselabs/databend/pull/9953))
- 支持 `array_sort` 函数 ([#9941](https://github.com/datafuselabs/databend/pull/9941))

**Sqllogictest**

- 为 alter table 增加 time travel 相关测试 ([#9939](https://github.com/datafuselabs/databend/pull/9939))

### Code Refactoring :tada:

**Meta**

- 将应用层类型移动到 common-meta/app ([#9944](https://github.com/datafuselabs/databend/pull/9944))
- 修复 ErrorCode 滥用 ([#10056](https://github.com/datafuselabs/databend/pull/10056))

**Query**

- `transform_sort_merge` 使用 heap 来排序数据块 ([#10047](https://github.com/datafuselabs/databend/pull/10047))

**Storage**

- 引入 FieldIndex 和 ColumnId 类型以区分使用 ([#10017](https://github.com/datafuselabs/databend/pull/10017))

### Build/Testing/CI Infra Changes :electric_plug:

- 以 clickbench 结果格式返回基准测试结果 ([#10019](https://github.com/datafuselabs/databend/pull/10019))
- 在 s3 & fs 上均运行基准测试 ([#10050](https://github.com/datafuselabs/databend/pull/10050))

### Bug Fixes :wrench:

**Privilege**

- 为 PUBLIC 角色添加 SELECT 权限，以避免普通用户执行查询的权限问题 ([#10040](https://github.com/datafuselabs/databend/pull/10040))

**Catalog**

- 修复 parts 的不均匀分布 ([#9951](https://github.com/datafuselabs/databend/pull/9951))

**Planner**

- 修复子查询类型断言错误 ([#9937](https://github.com/datafuselabs/databend/pull/9937))
- 启用 outer join 到 inner join 优化 ([#9943](https://github.com/datafuselabs/databend/pull/9943))
- 修复 RulePushDownLimitOuterJoin ([#10043](https://github.com/datafuselabs/databend/pull/10043))

**Query**

- 修复增列更新错误 ([#10037](https://github.com/datafuselabs/databend/pull/10037))

**Storage**

- 修复：查询新增 tuple 列时，仅返回默认值 ([#9973](https://github.com/datafuselabs/databend/pull/9973))
- 在 bloom filter 中，索引绑定 Column Id ([#10022](https://github.com/datafuselabs/databend/pull/10022))

## What's On In Databend

请持续关注 Databend 的最新动态。

### RFC: 查询结果缓存

对于不经常更新的数据，缓存其查询结果可以大大减少响应时间。一旦建立缓存，再次运行查询可以在短时间返回结果。

**阅读下述材料以了解更多讯息**

- [Docs | RFC: Query Result Cache](https://databend.rs/doc/contributing/rfcs/query-result-cache)
- [Tracking Issue | RFC: query result cache](https://github.com/datafuselabs/databend/issues/10011)

### 如何编写新的标量/聚合函数

创建自定义的标量或聚合函数可以增强 Databend 的可用性。尽管看上去有一些复杂，但并不困难。

下面列出的两篇文档有助于 Databend 用户和 Rust 开发者创建新的函数，包括如何创建并注册函数的分步说明，以及用于示例的代码片段，以帮助你更好了解这一过程。

**阅读下述材料以了解更多讯息**

- [Docs | How to Write a Scalar Function](https://databend.rs/doc/contributing/how-to-write-scalar-functions)
- [Docs | How to Write an Aggregate Function](https://databend.rs/doc/contributing/how-to-write-aggregate-functions)

### Profile-Guided Optimization

Profile-guided optimization (PGO，有时会译作：概要分析指导的优化) 是一种编译器优化技术，可以在程序运行时收集执行数据，并针对冷/热代码路径进行优化。

这篇博客介绍了如何使用 PGO 技术优化 Databend 的二进制构建，并以 Databend 的 SQL 逻辑测试作为工作负载进行演示。

注意：PGO 总是要求使用在统计学上具有代表性的工作负载来生成 Perf 数据。然而，这种技术并不保证总能提高性能。是否使用这项技术需要取决于实际情况。

**阅读下述材料以了解更多讯息**

- [Blog | Optimizing Databend Binary Builds with Profile-guided Optimization](https://databend.rs/blog/profile-guided-optimization)

## What's Up Next

我们始终对前沿技术和创新理念持开放态度，欢迎您加入社区，为 Databend 注入活力。

### 重构函数相关文档

为了使文档更清晰、易于理解，我们计划重组与函数相关的文档，新的内容组织遵循与 DuckDB 文档样式。

目前这项任务已经按函数类别分解成了一系列易于完成的子任务，如果你对改进 Databend 的文档感兴趣，不妨参与进来。

[Issue 10029: Tracking: re-org the functions doc](https://github.com/datafuselabs/databend/issues/10029)

如果你对这个主题感兴趣，可以尝试解决其中的部分问题或者参与讨论和 PR review 。或者，你可以点击 https://link.databend.rs/i-m-feeling-lucky 来挑选一个随机问题，祝好运！

## Changlogs

前往查看 Databend 每日构建的变更日志，以了解开发的最新动态。

地址：https://github.com/datafuselabs/databend/releases

## Contributors

非常感谢贡献者们在本周的卓越工作。

![](https://i.imgur.com/1mf9K4Y.png)
![](https://i.imgur.com/cVgkraq.png)
![](https://i.imgur.com/SjSarNK.png)
![](https://i.imgur.com/E1BEFyp.png)
![](https://i.imgur.com/vR4hojU.png)

## Connect With Us

Databend 是一款开源、弹性、低成本，基于对象存储也可以做实时分析的新式数仓。期待您的关注，一起探索云原生数仓解决方案，打造新一代开源 Data Cloud。

- [Databend Website](https://databend.rs) 
- [GitHub Discussions](https://github.com/datafuselabs/databend/discussions)
- [Twitter](https://twitter.com/Datafuse_Labs)
- [Slack Channel](https://link.databend.rs/join-slack)