Skip to content
On this page
Biweekly Report (Jan.16 - Feb.5) – Initial Support of PromQL
A recap of progresses and changes that happened on GreptimeDB during the past three weeks.
ByJiachun Feng
• February 08, 2023


Together with all our contributors worldwide, we are glad to see GreptimeDB making remarkable progress for the better. Below are some highlights:

  • Add load_based selector in meta
  • Support PromQL to query data natively
  • Support OSS storage

Join us at GitHub.

Contributor list: (In alphabetical order)

Congrats on becoming our most active contributors in the past 3 weeks:


@xl Huang(#894, #916)

@Yun Chen(#911)

@Zheming Li(#882, #854)

During the past three weeks, there have been a total of 6 PRs merged, with many pending to be merged. Welcome our new contributors @wanglei4687 and @Xieqijun onboard!

A big THANK YOU for the generous and brilliant contributions! It is people like you who are making GreptimeDB a great product. Let's build an even greater community together in the new year.

Good first issue

Issue #855 (Help Wanted)

Issue description: remove backtrace from sql::error::Error

Most backtraces in sql::error::Error are unnecessary, and they affect performance since the parser have to return them when encountering invalid SQL statements.

This issue can be easily fixed by removing the "backtrace" field from those variants listed below.

greptimedb/src/sql/src/ Line54-Line58

UnsupportedDefaultValue {
    column_name: String,
    expr: Expr,
    backtrace: Backtrace,

greptimedb/src/sql/src/ Line71-Line83

InvalidTimeIndex { sql: String, backtrace: Backtrace },

#[snafu(display("Invalid SQL, error: {}", msg))]
InvalidSql { msg: String, backtrace: Backtrace },

#[snafu(display("SQL data type not supported yet: {:?}", t))]
SqlTypeNotSupported {
  t: crate::ast::DataType,
  backtrace: Backtrace,

#[snafu(display("Failed to parse value: {}, {}", msg, backtrace))]
ParseSqlValue { msg: String, backtrace: Backtrace },

greptimedb/src/sql/src/ Line98-Line111

InvalidDatabaseName { name: String, backtrace: Backtrace },

#[snafu(display("Invalid table name: {}", name))]
InvalidTableName { name: String, backtrace: Backtrace },

#[snafu(display("Invalid default constraint, column: {}, source: {}", column, source))]
InvalidDefault {
    column: String,
    source: datatypes::error::Error,

#[snafu(display("Unsupported ALTER TABLE statement: {}", msg))]
UnsupportedAlterTableStatement { msg: String, backtrace: Backtrace },

Issue #918 (Closed)

Issue description: Improve data retrieval speed by enabling OpenDAL's CacheLayer by default

OpenDAL has a CacheLayer reduces the need to access the underlying storage layer, thereby increasing data retrieval performance. This issue wants to build a caching mechanism by using CacheLayer.

A special thanks to @e1ijh1 for swiftly addressing this issue. We will continue to improve our object storage caching mechanism by building upon their contribution, particularly in distributed and serverless modes.

Highlights of Recent PR

What's cooking on DB's develop branch


Currently, GreptimeDB only supports SQL and gRPC protocols for querying data.

However, PromQL has become an established standard query language in the field of cloud-native Observability.

We hope to natively support PromQL in GreptimeDB and release GreptimeDB v0.1 later this month, at which time PromQL Beta version will also be ready and we encourage you to give it a try.


A new load-balancing policy, CREATE TABLE (Multi Region), has been added which supports the selection of available nodes(LoadBasedSelector) based on Load.

This policy can achieve a relatively more balanced load distribution compared to the default one (LeaseBasedSelector).

The selector can be specified through the start command, for example:

cargo run -- metasrv start --selector LoadBased


Aliyun Object Storage Services (OSS) is available

GreptimeDB enables local files and Amazon S3 storage based on OpenDAL, and now OSS is also supported.