---
# System prepended metadata

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

---

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

# Databend 开源周报 第 80 期

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

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

## What's New

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

### Features & Improvements :sparkles:

**Meta**

- 新增 databend-meta 配置项 `grpc_api_advertise_host` ([#9835](https://github.com/datafuselabs/databend/pull/9835))

**AST**

- 支持在 select from stage 时选定文件或模式 ([#9877](https://github.com/datafuselabs/databend/pull/9877))
- 解析 decimal 类型 ([#9894](https://github.com/datafuselabs/databend/pull/9894))

**Expression**

- 新增 `Decimal128` 和 `Decimal256` 类型 ([#9856](https://github.com/datafuselabs/databend/pull/9856))

**Functions**

- 支持 `array_indexof` ([#9840](https://github.com/datafuselabs/databend/pull/9840))
- 支持 `array_unique` 和 `array_distinct` ([#9875](https://github.com/datafuselabs/databend/pull/9875))
- 支持数组相关聚合函数 ([#9903](https://github.com/datafuselabs/databend/pull/9903))

**Query**

- 在 TableSchema 中新增 column id; 并在读写数据时使用 column id 代替 index ([#9623](https://github.com/datafuselabs/databend/pull/9623))
- `system.columns` 中支持视图 ([#9853](https://github.com/datafuselabs/databend/pull/9853))

**Storage**

- `ParquetTable` 支持 topk 优化 ([#9824](https://github.com/datafuselabs/databend/pull/9824))

**Sqllogictest**

- 使用 sqllogictest 执行 TPCH 基准测试 ([#9887](https://github.com/datafuselabs/databend/pull/9887))

### Code Refactoring :tada:

**Meta**

- 移除过时的 meta service API `read_msg()` 和 `write_msg()` ([#9891](https://github.com/datafuselabs/databend/pull/9891))
- 引入 `update_xx_with(id, f: FnOnce)` 方法以简化 `UserAPI` 和 `RoleAPI` ([#9921](https://github.com/datafuselabs/databend/pull/9921))

**Cluster**

- exchange source 拆分为 reader 和 deserializer ([#9805](https://github.com/datafuselabs/databend/pull/9805))
- 拆分并消除 exchange transform 和 sink 的状态 ([#9910](https://github.com/datafuselabs/databend/pull/9910))

**Functions**

- 重命名部分数组函数，添加 `array_` 前缀 ([#9886](https://github.com/datafuselabs/databend/pull/9886))

**Query**

- `TableArgs` 保留必备参数和具名参数的信息 ([#9917](https://github.com/datafuselabs/databend/pull/9917))

**Storage**

- `ParquetTable` 列出 `read_partition` 中的文件 ([#9871](https://github.com/datafuselabs/databend/pull/9871))

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

- 支持为 PR 运行基准测试 ([#9788](https://github.com/datafuselabs/databend/pull/9788))

### Bug Fixes :wrench:

**Functions**

- 修复可为空的 `and` 和 `or` 的作用域计算 ([#9928](https://github.com/datafuselabs/databend/pull/9928))

**Planner**

- 修复 histogram_from_ndv 遇到错误回溯时导致 planner 过慢 ([#9876](https://github.com/datafuselabs/databend/pull/9876))
- 修复包含聚合函数的 order by  ([#9879](https://github.com/datafuselabs/databend/pull/9879))
- 使用以子查询为条件的删除时防止恐慌 ([#9902](https://github.com/datafuselabs/databend/pull/9902))

**Query**

- 修复插入默认值的数据类型 ([#9816](https://github.com/datafuselabs/databend/pull/9816))

## What's On In Databend

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

### 为什么你应该尝试 Sccache

[Sccache](https://github.com/mozilla/sccache) 是一个由 Mozilla 团队发起、类似 [ccache](https://ccache.dev/) 的项目，提供对 C/CPP 、Rust 和 其他语言的支持，能够将缓存存储到本地或云存储服务。社区在 Sccache 0.3.3 中新增对 Github Action Cache Service 的原生支持，近期发布的 v0.4.0-pre.6 中又进一步加强这一功能，现在已经可以在生产 CI 环境中使用。

> 现在，由 [Datafuse Labs](https://github.com/datafuselabs) 开源的 [opendal](https://github.com/datafuselabs/opendal) 充当 sccache 的数据访问层，以对接多种存储服务（s3、gcs、azlob 等）。

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

- [Blog | Why You Should Try Sccache](https://databend.rs/blog/sccache)

## What's Up Next

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

### 尝试使用 `build-info` 重构 `common-building` 逻辑

使用 `vergen` 和 `cargo-license` 来获取关于 git 提交、构建选项以及上游依赖的信息。

[build-info](https://github.com/danielschemmel/build-info) 可以收集 Rust crate 的构建信息。使用它来重构 `common-building` 中的相关逻辑可能会更好。

```rust
pub struct BuildInfo {
    pub timestamp: DateTime<Utc>,
    pub profile: String,
    pub optimization_level: OptimizationLevel,
    pub crate_info: CrateInfo,
    pub compiler: CompilerInfo,
    pub version_control: Option<VersionControl>,
}
```

[Issue 9874: Refactor: Try using build-info](https://github.com/datafuselabs/databend/issues/9874)

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

## Changlogs

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

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

## Contributors

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

![](https://i.imgur.com/JG8Abwi.png)
![](https://i.imgur.com/1wTR5Th.png)
![](https://i.imgur.com/knmpyYO.png)
![](https://i.imgur.com/yFEuTXS.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)