Databend is an open source elastic and reliable Modern Cloud Data Warehouse, it offers blazing fast query and combines elasticity, simplicity, low cost of the cloud, built to make the Data Cloud easy.

Big changes

Below is a list of some major changes that we don't want you to miss.

Features

  • WINDOW function (#5401)
  • new table engine: RANDOM (#5896)
  • clickhouse http handler support TsvWithNamesAndTypes (#5898)
  • add benchmark scripts of metasrv (#5865)
  • support remove stage files (#5788)
  • support struct data type (#5940)

optimizer

  • support some common optimizer rules to refine optimizer framework (#5877)
  • support predicate push down through join (#5914)
  • support constant folding (#5924)

new planner

  • support left outer join and right outer join (#5972)
  • support semi and anti join in new planner (#5869)
  • support set operators in parser and planner (#5833)
  • support table statements in new planner (#5907)
  • add DDL STAGE for new planner framework (#5821)
  • support rename database in new planner (#5887)
  • support alter/drop view in new planner (#5862 & #5920)
  • migrate CREATE/DROP ROLE statement to new planner (#5935)

Improvement

  • row base serializer (#5791)
  • renaming for better readability (#5879)
  • list/remove stage files from meta api (#5857)
  • use unboxed_simple to simple GAT in async-trait (#5999)
  • add meta grpc client network metrics (#5978)
  • improve clickhouse http handler (#5933)
  • use micromarshal to make references clearer (#5974)

Build / Testing / CI

  • use fuse engine instead of memory engine in test (#5530)

Bug fixes

  • fix read quoted string (#5870)
  • correctly handle catalog in statements (#5909)
  • fix correlated subquery with joins (#5947)
  • server panic when exceeds max active sessions (#5928)
  • fix status cause mysql client hang (#5961)
  • ProcessorExecutorStream lost data (#5983)
  • fix incorrect return datatype of function if (#5980)

Tips

Let's learn a weekly tip from Databend.

Using Join with Databend

As you can see, one of the major efforts of Databend in recent times has been the development and migration to the new Planner. We have implemented support for Join on the new Planner to better accommodate multi-table queries.

To use JOIN, you must enable the new Databend planner first. To do so, perform the following command in the SQL client:

set enable_planner_v2=1;

A join allows you to combine columns from two or more tables into a single result set. Databend supports the following join types:

  • Inner Join
  • Natural Join
  • Cross Join
  • Left Join
  • Right Join

Let's see a CROSS JOIN example

A cross join returns a result set that includes each row from the first table joined with each row from the second table.

SELECT select_list
FROM table_a
	CROSS JOIN table_b

Imagine we have the following tables:

Table "vip_info": This table stores the VIP client information.

| Client_ID | Region    |
| --------- | --------- |
| 101       | Toronto   |
| 102       | Quebec    |
| 103       | Vancouver |

Table "gift": This table lists the gift options for the VIP clients.

| Gift      |
| --------- |
| Croissant |
| Donut     |
| Coffee    |
| Soda      |

The following command returns a result set that assigns each gift option to each VIP client:

select * from vip_info cross join gift;

Output:

| Client_ID | Region    | Gift      |
| --------- | --------- | --------- |
| 101       | Toronto   | Croissant |
| 101       | Toronto   | Donut     |
| 101       | Toronto   | Coffee    |
| 101       | Toronto   | Soda      |
| 102       | Quebec    | Croissant |
| 102       | Quebec    | Donut     |
| 102       | Quebec    | Coffee    |
| 102       | Quebec    | Soda      |
| 103       | Vancouver | Croissant |
| 103       | Vancouver | Donut     |
| 103       | Vancouver | Coffee    |
| 103       | Vancouver | Soda      |

Learn more:

Changelogs

You can check the changelogs of Databend nightly to learn about our latest developments.

Contributors

Thanks a lot to the contributors for their excellent work this week.

andylokandyb41shBohuTANGdantengskydoki23everpcpc
andylokandyb41shBohuTANGdantengskydoki23everpcpc
fkunerhantmacjunnplusKikkonleiyskylichuang
fkunerhantmacjunnplusKikkonleiyskylichuang
mergify[bot]PsiACERinChanNOWWWsoyeric128sundy-liTCeason
mergify[bot]PsiACERinChanNOWWWsoyeric128sundy-liTCeason
Xuanwoxudong963ygf11youngsofunZeaLoVezhyass
Xuanwoxudong963ygf11youngsofunZeaLoVezhyass

Meet Us

Please join the DatafuseLabs Community if you are interested in Databend.

We are looking forward to seeing you try our code. We have a strong team behind you to ensure a smooth experience in trying our code for your projects. If you are a hacker passionate about database internals, feel free to play with our code.

You can submit issues for any problems you find. We also highly appreciate any of your pull requests.