---
date: 2024-05-18
---

# v0.8.0

Release date: May 18, 2024

## 👍 Highlights

- [Flow Engine](https://docs.greptime.com/user-guide/continuous-aggregation/overview): which brings continuous aggregation capabilities.
- [Column Type Modification](https://docs.greptime.com/reference/sql/alter#modify-column-type): allows you to effortlessly alter the data type of columns within a table without the hassle of rebuilding the table or manually migrating data.
- [Cluster Management Information Table](https://docs.greptime.com/reference/sql/information-schema/overview): allows querying for information about the cluster. This functionality aids administrators in monitoring and managing the health status of the database cluster, facilitating prompt issue detection and resolution.
- [Append-only Tables](https://docs.greptime.com/reference/sql/create#table-options): You can now create tables in Append-only mode by setting the append mode during table creation.
- [DROP DATABASE](https://docs.greptime.com/reference/sql/drop#drop-database): enables swift deletion of all tables and resources under a database instance.
- [`EXPLAIN ANALYZE <QUERY>`](https://docs.greptime.com/reference/sql/explain): analyze and optimize query statements swiftly in distributed mode.

## Breaking changes

* fix!: use the right precision by [@fengjiachun](https://github.com/fengjiachun) in [#3794](https://github.com/GreptimeTeam/greptimedb/pull/3794)
* refactor!: unify sql options into OptionMap by [@tisonkun](https://github.com/tisonkun) in [#3792](https://github.com/GreptimeTeam/greptimedb/pull/3792)
* refactor!: remove some admin APIs by [@fengjiachun](https://github.com/fengjiachun) in [#3821](https://github.com/GreptimeTeam/greptimedb/pull/3821)
* refactor!: remove duration type from gRPC by [@fengjiachun](https://github.com/fengjiachun) in [#3825](https://github.com/GreptimeTeam/greptimedb/pull/3825)
* refactor!: remove opentsdb tcp server by [@shuiyisong](https://github.com/shuiyisong) in [#3828](https://github.com/GreptimeTeam/greptimedb/pull/3828)

### 🚀 Features

* feat(procedure): support to rollback by [@WenyXu](https://github.com/WenyXu) in [#3625](https://github.com/GreptimeTeam/greptimedb/pull/3625)
* feat(flow): render map&related tests by [@discord9](https://github.com/discord9) in [#3581](https://github.com/GreptimeTeam/greptimedb/pull/3581)
* feat: add append mode to table options by [@evenyag](https://github.com/evenyag) in [#3624](https://github.com/GreptimeTeam/greptimedb/pull/3624)
* feat(fuzz): add create database target by [@CookiePieWw](https://github.com/CookiePieWw) in [#3675](https://github.com/GreptimeTeam/greptimedb/pull/3675)
* feat: treat all number types as field candidates by [@waynexia](https://github.com/waynexia) in [#3670](https://github.com/GreptimeTeam/greptimedb/pull/3670)
* feat(fuzz): support to create metric table by [@WenyXu](https://github.com/WenyXu) in [#3617](https://github.com/GreptimeTeam/greptimedb/pull/3617)
* feat: add checksum for checkpoint data  by [@tisonkun](https://github.com/tisonkun) in [#3651](https://github.com/GreptimeTeam/greptimedb/pull/3651)
* feat: try get pk values from cache when applying predicate to parquet by [@waynexia](https://github.com/waynexia) in [#3286](https://github.com/GreptimeTeam/greptimedb/pull/3286)
* feat(flow): transform substrait SELECT&WHERE&GROUP BY to Flow Plan by [@discord9](https://github.com/discord9) in [#3690](https://github.com/GreptimeTeam/greptimedb/pull/3690)
* feat: impl table_constraints table for information_schema by [@killme2008](https://github.com/killme2008) in [#3698](https://github.com/GreptimeTeam/greptimedb/pull/3698)
* feat: add strict mode to validate protocol strings by [@irenjj](https://github.com/irenjj) in [#3638](https://github.com/GreptimeTeam/greptimedb/pull/3638)
* feat: get metasrv clusterinfo by [@fengjiachun](https://github.com/fengjiachun) in [#3696](https://github.com/GreptimeTeam/greptimedb/pull/3696)
* feat(promql): parameterize lookback by [@etolbakov](https://github.com/etolbakov) in [#3630](https://github.com/GreptimeTeam/greptimedb/pull/3630)
* feat: add `filter_deleted` option to avoid removing deletion markers by [@v0y4g3r](https://github.com/v0y4g3r) in [#3707](https://github.com/GreptimeTeam/greptimedb/pull/3707)
* feat: check partition rule by [@waynexia](https://github.com/waynexia) in [#3711](https://github.com/GreptimeTeam/greptimedb/pull/3711)
* feat(drop_table): support to rollback table metadata by [@WenyXu](https://github.com/WenyXu) in [#3692](https://github.com/GreptimeTeam/greptimedb/pull/3692)
* feat(fuzz): enable create-if-not-exists option by [@CookiePieWw](https://github.com/CookiePieWw) in [#3732](https://github.com/GreptimeTeam/greptimedb/pull/3732)
* feat: add tinytext, mediumtext and longtext data types by [@CookiePieWw](https://github.com/CookiePieWw) in [#3731](https://github.com/GreptimeTeam/greptimedb/pull/3731)
* feat: support invalidate schema name key cache by [@realtaobo](https://github.com/realtaobo) in [#3725](https://github.com/GreptimeTeam/greptimedb/pull/3725)
* feat: support PromQL scalar by [@Taylor-lagrange](https://github.com/Taylor-lagrange) in [#3693](https://github.com/GreptimeTeam/greptimedb/pull/3693)
* feat: impl show collation and show charset statements by [@killme2008](https://github.com/killme2008) in [#3753](https://github.com/GreptimeTeam/greptimedb/pull/3753)
* feat: add preserve arg to sqlness runner by [@waynexia](https://github.com/waynexia) in [#3724](https://github.com/GreptimeTeam/greptimedb/pull/3724)
* feat: update dashboard to v0.5.0 by [@ZonaHex](https://github.com/ZonaHex) in [#3768](https://github.com/GreptimeTeam/greptimedb/pull/3768)
* feat: write manifests in background tasks by [@evenyag](https://github.com/evenyag) in [#3709](https://github.com/GreptimeTeam/greptimedb/pull/3709)
* feat: add `ChangeColumnType` for `AlterKind` by [@KKould](https://github.com/KKould) in [#3757](https://github.com/GreptimeTeam/greptimedb/pull/3757)
* feat: support different types for `CompatReader` by [@KKould](https://github.com/KKould) in [#3745](https://github.com/GreptimeTeam/greptimedb/pull/3745)
* feat: impl Display for Statement by [@irenjj](https://github.com/irenjj) in [#3744](https://github.com/GreptimeTeam/greptimedb/pull/3744)
* feat: add validate method to CreateExpr by [@waynexia](https://github.com/waynexia) in [#3772](https://github.com/GreptimeTeam/greptimedb/pull/3772)
* feat(flow): render reduce by [@discord9](https://github.com/discord9) in [#3769](https://github.com/GreptimeTeam/greptimedb/pull/3769)
* feat: implement FlowTaskMetadataManager by [@WenyXu](https://github.com/WenyXu) in [#3766](https://github.com/GreptimeTeam/greptimedb/pull/3766)
* feat: define `CreateFlowTask` and `DropFlowTask` by [@WenyXu](https://github.com/WenyXu) in [#3801](https://github.com/GreptimeTeam/greptimedb/pull/3801)
* feat(fuzz): add create logical table target by [@CookiePieWw](https://github.com/CookiePieWw) in [#3756](https://github.com/GreptimeTeam/greptimedb/pull/3756)
* feat(fuzz): add alter logical table target by [@CookiePieWw](https://github.com/CookiePieWw) in [#3818](https://github.com/GreptimeTeam/greptimedb/pull/3818)
* feat: implement the `FrontendInvoker` by [@WenyXu](https://github.com/WenyXu) in [#3824](https://github.com/GreptimeTeam/greptimedb/pull/3824)
* feat: improve error message for typo in IF NOT EXISTS by [@tisonkun](https://github.com/tisonkun) in [#3817](https://github.com/GreptimeTeam/greptimedb/pull/3817)
* feat: impl parser and operator for CREATE FLOW by [@waynexia](https://github.com/waynexia) in [#3806](https://github.com/GreptimeTeam/greptimedb/pull/3806)
* feat: implement the `CreateFlowProcedure` by [@WenyXu](https://github.com/WenyXu) in [#3810](https://github.com/GreptimeTeam/greptimedb/pull/3810)
* feat: support `ALTER TABLE ... MODIFY COLUMN ... ...` by [@KKould](https://github.com/KKould) in [#3796](https://github.com/GreptimeTeam/greptimedb/pull/3796)
* feat: physical optimizer RemoveDuplicate to remove duplicate exec plans by [@waynexia](https://github.com/waynexia) in [#3839](https://github.com/GreptimeTeam/greptimedb/pull/3839)
* feat(fuzz): add insert logical table target by [@CookiePieWw](https://github.com/CookiePieWw) in [#3842](https://github.com/GreptimeTeam/greptimedb/pull/3842)
* feat: adds information_schema cluster_info table by [@killme2008](https://github.com/killme2008) in [#3832](https://github.com/GreptimeTeam/greptimedb/pull/3832)
* feat(flow): mirror insert req to flow node by [@discord9](https://github.com/discord9) in [#3858](https://github.com/GreptimeTeam/greptimedb/pull/3858)
* feat: metasrvs nodeinfo by [@fengjiachun](https://github.com/fengjiachun) in [#3873](https://github.com/GreptimeTeam/greptimedb/pull/3873)
* feat: limit total rows copied in `COPY TABLE FROM` stmt by [@irenjj](https://github.com/irenjj) in [#3819](https://github.com/GreptimeTeam/greptimedb/pull/3819)
* feat: support querying field column names in Prometheus HTTP API by [@waynexia](https://github.com/waynexia) in [#3880](https://github.com/GreptimeTeam/greptimedb/pull/3880)
* feat: pass `QueryContext` to `FlowRequestHeader` by [@WenyXu](https://github.com/WenyXu) in [#3878](https://github.com/GreptimeTeam/greptimedb/pull/3878)
* feat: add metasrv start time to node info by [@fengjiachun](https://github.com/fengjiachun) in [#3883](https://github.com/GreptimeTeam/greptimedb/pull/3883)
* feat: implement drop flow parser by [@WenyXu](https://github.com/WenyXu) in [#3888](https://github.com/GreptimeTeam/greptimedb/pull/3888)
* feat: implement drop flow procedure by [@WenyXu](https://github.com/WenyXu) in [#3877](https://github.com/GreptimeTeam/greptimedb/pull/3877)
* feat: implement `CacheContainer` & `TableFlownodeSetCache` by [@WenyXu](https://github.com/WenyXu) in [#3885](https://github.com/GreptimeTeam/greptimedb/pull/3885)
* feat: Parquet reader builder supports building multiple ranges to read by [@evenyag](https://github.com/evenyag) in [#3841](https://github.com/GreptimeTeam/greptimedb/pull/3841)
* feat: introduce `TableNameCache` & `TableInfoCache` & `TableRouteCache` by [@WenyXu](https://github.com/WenyXu) in [#3895](https://github.com/GreptimeTeam/greptimedb/pull/3895)
* feat: introduce the `CacheRegistry` by [@WenyXu](https://github.com/WenyXu) in [#3896](https://github.com/GreptimeTeam/greptimedb/pull/3896)
* feat: support to drop flow by [@WenyXu](https://github.com/WenyXu) in [#3900](https://github.com/GreptimeTeam/greptimedb/pull/3900)
* feat: support distributed `EXPLAIN ANALYZE` by [@waynexia](https://github.com/waynexia) in [#3908](https://github.com/GreptimeTeam/greptimedb/pull/3908)
* feat: metaclient builder options with role by [@fengjiachun](https://github.com/fengjiachun) in [#3909](https://github.com/GreptimeTeam/greptimedb/pull/3909)
* feat: support to create & drop flow via grpc by [@WenyXu](https://github.com/WenyXu) in [#3915](https://github.com/GreptimeTeam/greptimedb/pull/3915)
* feat: implement the `CompositeTableRoute` by [@WenyXu](https://github.com/WenyXu) in [#3918](https://github.com/GreptimeTeam/greptimedb/pull/3918)
* feat: migrate orc-rs to datafusion-orc by [@realtaobo](https://github.com/realtaobo) in [#3923](https://github.com/GreptimeTeam/greptimedb/pull/3923)
* feat: create database with options by [@tizee](https://github.com/tizee) in [#3751](https://github.com/GreptimeTeam/greptimedb/pull/3751)
* feat(flow): render source/sink by [@discord9](https://github.com/discord9) in [#3903](https://github.com/GreptimeTeam/greptimedb/pull/3903)
* feat: introduce `TableRouteCache` to `PartitionRuleManager` by [@WenyXu](https://github.com/WenyXu) in [#3922](https://github.com/GreptimeTeam/greptimedb/pull/3922)
* feat: limiting the size of query results to Dashboard by [@realtaobo](https://github.com/realtaobo) in [#3901](https://github.com/GreptimeTeam/greptimedb/pull/3901)
* feat: support to invalidate flow cache by [@WenyXu](https://github.com/WenyXu) in [#3926](https://github.com/GreptimeTeam/greptimedb/pull/3926)
* feat: create view by [@killme2008](https://github.com/killme2008) in [#3807](https://github.com/GreptimeTeam/greptimedb/pull/3807)
* feat: use txn to impl cas by [@fengjiachun](https://github.com/fengjiachun) in [#3936](https://github.com/GreptimeTeam/greptimedb/pull/3936)
* feat(flow): add types for every plan enum variant by [@discord9](https://github.com/discord9) in [#3938](https://github.com/GreptimeTeam/greptimedb/pull/3938)
* feat(flow): flow worker by [@discord9](https://github.com/discord9) in [#3934](https://github.com/GreptimeTeam/greptimedb/pull/3934)
* feat(fuzz): add validator for inserted rows by [@CookiePieWw](https://github.com/CookiePieWw) in [#3932](https://github.com/GreptimeTeam/greptimedb/pull/3932)
* feat(flow): query table schema&refactor by [@discord9](https://github.com/discord9) in [#3943](https://github.com/GreptimeTeam/greptimedb/pull/3943)
* feat: ignore internal columns in `SHOW CREATE TABLE` by [@WenyXu](https://github.com/WenyXu) in [#3950](https://github.com/GreptimeTeam/greptimedb/pull/3950)
* feat(cli): export metric physical tables first by [@WenyXu](https://github.com/WenyXu) in [#3949](https://github.com/GreptimeTeam/greptimedb/pull/3949)
* feat: support any precision in PromQL by [@Taylor-lagrange](https://github.com/Taylor-lagrange) in [#3933](https://github.com/GreptimeTeam/greptimedb/pull/3933)
* feat(flow): avg func rewrite to sum/count by [@discord9](https://github.com/discord9) in [#3955](https://github.com/GreptimeTeam/greptimedb/pull/3955)
* feat(flow): flow node manager by [@discord9](https://github.com/discord9) in [#3954](https://github.com/GreptimeTeam/greptimedb/pull/3954)
* feat(flow): expire arrange according to time_index type by [@discord9](https://github.com/discord9) in [#3956](https://github.com/GreptimeTeam/greptimedb/pull/3956)
* feat: limit total rows copied in COPY TABLE FROM with LIMIT segment by [@irenjj](https://github.com/irenjj) in [#3910](https://github.com/GreptimeTeam/greptimedb/pull/3910)
* feat: remove timeout in the channel between frontend and datanode by [@waynexia](https://github.com/waynexia) in [#3962](https://github.com/GreptimeTeam/greptimedb/pull/3962)
* feat: skip read-only region when trying to flush on region full by [@waynexia](https://github.com/waynexia) in [#3966](https://github.com/GreptimeTeam/greptimedb/pull/3966)
* feat: support evaluate expr in range query param by [@Taylor-lagrange](https://github.com/Taylor-lagrange) in [#3823](https://github.com/GreptimeTeam/greptimedb/pull/3823)
* feat(flow): tumble window func by [@discord9](https://github.com/discord9) in [#3968](https://github.com/GreptimeTeam/greptimedb/pull/3968)
* feat(cli): prevent exporting physical table data by [@WenyXu](https://github.com/WenyXu) in [#3978](https://github.com/GreptimeTeam/greptimedb/pull/3978)

### 🐛 Bug Fixes

* fix(readme): fix link of Ingester-js by [@DiamondMofeng](https://github.com/DiamondMofeng) in [#3668](https://github.com/GreptimeTeam/greptimedb/pull/3668)
* fix: `DeserializedValueWithBytes::from_inner` misusing by [@WenyXu](https://github.com/WenyXu) in [#3676](https://github.com/GreptimeTeam/greptimedb/pull/3676)
* fix: cli export "create table" with quoted names by [@dimbtp](https://github.com/dimbtp) in [#3684](https://github.com/GreptimeTeam/greptimedb/pull/3684)
* fix(alter_table): ignore request outdated error by [@WenyXu](https://github.com/WenyXu) in [#3715](https://github.com/GreptimeTeam/greptimedb/pull/3715)
* fix: remove ttl option from metadata region by [@waynexia](https://github.com/waynexia) in [#3726](https://github.com/GreptimeTeam/greptimedb/pull/3726)
* fix: set is_time_index properly on updating physical table's schema by [@waynexia](https://github.com/waynexia) in [#3770](https://github.com/GreptimeTeam/greptimedb/pull/3770)
* fix: the `dropping_regions` guards should be dropped on procedure done by [@MichaelScofield](https://github.com/MichaelScofield) in [#3771](https://github.com/GreptimeTeam/greptimedb/pull/3771)
* fix: operating region guards should be dropped when procedure is done by [@MichaelScofield](https://github.com/MichaelScofield) in [#3775](https://github.com/GreptimeTeam/greptimedb/pull/3775)
* fix: consider both db param and extended db header in Prometheus HTTP API by [@waynexia](https://github.com/waynexia) in [#3776](https://github.com/GreptimeTeam/greptimedb/pull/3776)
* fix: do not remove deletion markers when window time range overlaps by [@v0y4g3r](https://github.com/v0y4g3r) in [#3773](https://github.com/GreptimeTeam/greptimedb/pull/3773)
* fix: promql scalar when input empty batch by [@Taylor-lagrange](https://github.com/Taylor-lagrange) in [#3779](https://github.com/GreptimeTeam/greptimedb/pull/3779)
* fix: post process result on query full column name of prom labels API by [@waynexia](https://github.com/waynexia) in [#3793](https://github.com/GreptimeTeam/greptimedb/pull/3793)
* fix: fix fuzz test ci by [@WenyXu](https://github.com/WenyXu) in [#3795](https://github.com/GreptimeTeam/greptimedb/pull/3795)
* fix: prune row groups correctly for columns with the same name by [@evenyag](https://github.com/evenyag) in [#3802](https://github.com/GreptimeTeam/greptimedb/pull/3802)
* fix: push down order hint of the query again by [@evenyag](https://github.com/evenyag) in [#3797](https://github.com/GreptimeTeam/greptimedb/pull/3797)
* fix: wrong handler implementation of prometheus remote write by [@waynexia](https://github.com/waynexia) in [#3826](https://github.com/GreptimeTeam/greptimedb/pull/3826)
* fix: broken link in contributing guide  by [@waynexia](https://github.com/waynexia) in [#3831](https://github.com/GreptimeTeam/greptimedb/pull/3831)
* fix: compiler warnings on Windows by [@evenyag](https://github.com/evenyag) in [#3844](https://github.com/GreptimeTeam/greptimedb/pull/3844)
* fix: count_wildcard_to_time_index_rule doesn't handle table reference properly by [@waynexia](https://github.com/waynexia) in [#3847](https://github.com/GreptimeTeam/greptimedb/pull/3847)
* fix: retrieve all info instead of checking on demand by [@WenyXu](https://github.com/WenyXu) in [#3846](https://github.com/GreptimeTeam/greptimedb/pull/3846)
* fix: register regions during procedure recovery by [@WenyXu](https://github.com/WenyXu) in [#3859](https://github.com/GreptimeTeam/greptimedb/pull/3859)
* fix: return metric name instead of query in Prometheus /series API by [@waynexia](https://github.com/waynexia) in [#3864](https://github.com/GreptimeTeam/greptimedb/pull/3864)
* fix: add data type to vector cache key by [@evenyag](https://github.com/evenyag) in [#3876](https://github.com/GreptimeTeam/greptimedb/pull/3876)
* fix: memory leak in unit test of telemetry by [@waynexia](https://github.com/waynexia) in [#3897](https://github.com/GreptimeTeam/greptimedb/pull/3897)
*  by [@waynexia](https://github.com/waynexia)
* fix: sort unstable HTTP result in label values query by [@waynexia](https://github.com/waynexia) in [#3920](https://github.com/GreptimeTeam/greptimedb/pull/3920)
* fix: potential deadlock by [@WenyXu](https://github.com/WenyXu) in [#3930](https://github.com/GreptimeTeam/greptimedb/pull/3930)
* fix(metric engine): label mismatch in metric engine by [@v0y4g3r](https://github.com/v0y4g3r) in [#3927](https://github.com/GreptimeTeam/greptimedb/pull/3927)
* fix: prevent exporting metric physical table data by [@WenyXu](https://github.com/WenyXu) in [#3970](https://github.com/GreptimeTeam/greptimedb/pull/3970)
* fix: prevent registering logical regions with AliveKeeper by [@WenyXu](https://github.com/WenyXu) in [#3965](https://github.com/GreptimeTeam/greptimedb/pull/3965)
* fix: changing column data type can't process type alias by [@killme2008](https://github.com/killme2008) in [#3972](https://github.com/GreptimeTeam/greptimedb/pull/3972)
* fix: tql parser hang on abnormal input by [@waynexia](https://github.com/waynexia) in [#3977](https://github.com/GreptimeTeam/greptimedb/pull/3977)

### 🚜 Refactor

* refactor: pass http method to metasrv http handler by [@tisonkun](https://github.com/tisonkun) in [#3667](https://github.com/GreptimeTeam/greptimedb/pull/3667)
* refactor(flow): func spec api&use Error not EvalError in mfp by [@discord9](https://github.com/discord9) in [#3657](https://github.com/GreptimeTeam/greptimedb/pull/3657)
* refactor: bundle the lightweight axum test client by [@tisonkun](https://github.com/tisonkun) in [#3669](https://github.com/GreptimeTeam/greptimedb/pull/3669)
* refactor: refactor alter table procedure by [@WenyXu](https://github.com/WenyXu) in [#3678](https://github.com/GreptimeTeam/greptimedb/pull/3678)
* refactor: drop table procedure  by [@WenyXu](https://github.com/WenyXu) in [#3688](https://github.com/GreptimeTeam/greptimedb/pull/3688)
* refactor: check error type before logging by [@sunng87](https://github.com/sunng87) in [#3697](https://github.com/GreptimeTeam/greptimedb/pull/3697)
* refactor: Move manifest manager lock to `MitoRegion` by [@evenyag](https://github.com/evenyag) in [#3689](https://github.com/GreptimeTeam/greptimedb/pull/3689)
* refactor: use toml2docs to generate config docs by [@zyy17](https://github.com/zyy17) in [#3704](https://github.com/GreptimeTeam/greptimedb/pull/3704)
* refactor: remove redundant try_flush invocations by [@tisonkun](https://github.com/tisonkun) in [#3706](https://github.com/GreptimeTeam/greptimedb/pull/3706)
* refactor: merge RegionHandleResult into RegionHandleResponse by [@tisonkun](https://github.com/tisonkun) in [#3721](https://github.com/GreptimeTeam/greptimedb/pull/3721)
* refactor(meta): Ensure all moving values remain unchanged between two transactions by [@WenyXu](https://github.com/WenyXu) in [#3727](https://github.com/GreptimeTeam/greptimedb/pull/3727)
* refactor: avoid unnecessary cloning by [@WenyXu](https://github.com/WenyXu) in [#3734](https://github.com/GreptimeTeam/greptimedb/pull/3734)
* refactor: avoid unnecessary alloc by using unwrap_or_else by [@etolbakov](https://github.com/etolbakov) in [#3742](https://github.com/GreptimeTeam/greptimedb/pull/3742)
* refactor(flow): split render.rs and other minor changes by [@discord9](https://github.com/discord9) in [#3750](https://github.com/GreptimeTeam/greptimedb/pull/3750)
* refactor: move the version string to common by [@MichaelScofield](https://github.com/MichaelScofield) in [#3783](https://github.com/GreptimeTeam/greptimedb/pull/3783)
* refactor: simplify the PaginationStream by [@WenyXu](https://github.com/WenyXu) in [#3787](https://github.com/GreptimeTeam/greptimedb/pull/3787)
* refactor(flow): refine comments and code by [@zhongzc](https://github.com/zhongzc) in [#3785](https://github.com/GreptimeTeam/greptimedb/pull/3785)
* refactor: log statement on error by Display by [@tisonkun](https://github.com/tisonkun) in [#3803](https://github.com/GreptimeTeam/greptimedb/pull/3803)
* refactor: refactor `DatanodeManager` to `NodeManager` by [@WenyXu](https://github.com/WenyXu) in [#3811](https://github.com/GreptimeTeam/greptimedb/pull/3811)
* refactor: DfUdfAdapter to bridge ScalaUdf by [@tisonkun](https://github.com/tisonkun) in [#3814](https://github.com/GreptimeTeam/greptimedb/pull/3814)
* refactor: remove location_opt and DebugFormat by [@waynexia](https://github.com/waynexia) in [#3830](https://github.com/GreptimeTeam/greptimedb/pull/3830)
* refactor: use secrecy SerectString to hold secrets option by [@tisonkun](https://github.com/tisonkun) in [#3804](https://github.com/GreptimeTeam/greptimedb/pull/3804)
* refactor: rename flow task to flow by [@WenyXu](https://github.com/WenyXu) in [#3833](https://github.com/GreptimeTeam/greptimedb/pull/3833)
* refactor: remove catalog prefix by [@WenyXu](https://github.com/WenyXu) in [#3835](https://github.com/GreptimeTeam/greptimedb/pull/3835)
* refactor: remove `TableMetaKey` trait by [@WenyXu](https://github.com/WenyXu) in [#3837](https://github.com/GreptimeTeam/greptimedb/pull/3837)
* refactor: move database client to test by [@dimbtp](https://github.com/dimbtp) in [#3820](https://github.com/GreptimeTeam/greptimedb/pull/3820)
* refactor: remove re-export from logging by [@waynexia](https://github.com/waynexia) in [#3865](https://github.com/GreptimeTeam/greptimedb/pull/3865)
* refactor: passing QueryContext to RegionServer by [@Kelvinyu1117](https://github.com/Kelvinyu1117) in [#3829](https://github.com/GreptimeTeam/greptimedb/pull/3829)
* refactor: add the main cli entry point struct `Command{}` and simplify `main()` by [@zyy17](https://github.com/zyy17) in [#3850](https://github.com/GreptimeTeam/greptimedb/pull/3850)
* refactor: move `Plugins` to `plugins.rs` and use rwlock by [@zyy17](https://github.com/zyy17) in [#3862](https://github.com/GreptimeTeam/greptimedb/pull/3862)
* refactor(logstore): remove Entry::namemspace by [@v0y4g3r](https://github.com/v0y4g3r) in [#3875](https://github.com/GreptimeTeam/greptimedb/pull/3875)
* refactor: move mirror insertion tasks to the background runtime by [@WenyXu](https://github.com/WenyXu) in [#3879](https://github.com/GreptimeTeam/greptimedb/pull/3879)
* refactor: remove MixOptions and use StandaloneOptions only by [@zyy17](https://github.com/zyy17) in [#3893](https://github.com/GreptimeTeam/greptimedb/pull/3893)
* refactor: add `procedure_loader` macro by [@WenyXu](https://github.com/WenyXu) in [#3906](https://github.com/GreptimeTeam/greptimedb/pull/3906)
* refactor: make txn easy to use by [@fengjiachun](https://github.com/fengjiachun) in [#3905](https://github.com/GreptimeTeam/greptimedb/pull/3905)
* refactor: Remove PhysicalPlan trait and use ExecutionPlan directly by [@evenyag](https://github.com/evenyag) in [#3894](https://github.com/GreptimeTeam/greptimedb/pull/3894)
* refactor: refactor frontend cache by [@WenyXu](https://github.com/WenyXu) in [#3912](https://github.com/GreptimeTeam/greptimedb/pull/3912)
* refactor: rename metasrv_addr to metasrv_addrs by [@fengjiachun](https://github.com/fengjiachun) in [#3921](https://github.com/GreptimeTeam/greptimedb/pull/3921)
* refactor: add tracing options in xOptions by [@zyy17](https://github.com/zyy17) in [#3919](https://github.com/GreptimeTeam/greptimedb/pull/3919)
* refactor: add `Configurable` trait by [@zyy17](https://github.com/zyy17) in [#3917](https://github.com/GreptimeTeam/greptimedb/pull/3917)
* refactor(naming): use the better naming for pubsub by [@zyy17](https://github.com/zyy17) in [#3960](https://github.com/GreptimeTeam/greptimedb/pull/3960)

### 📚 Documentation

* docs: update memtable config example by [@evenyag](https://github.com/evenyag) in [#3712](https://github.com/GreptimeTeam/greptimedb/pull/3712)
* docs: add style guide by [@waynexia](https://github.com/waynexia) in [#3730](https://github.com/GreptimeTeam/greptimedb/pull/3730)
* docs: add how-to-write-fuzz-tests.md by [@WenyXu](https://github.com/WenyXu) in [#3763](https://github.com/GreptimeTeam/greptimedb/pull/3763)
* docs: run fuzz tests in dev mode & disable sanitizer by [@WenyXu](https://github.com/WenyXu) in [#3871](https://github.com/GreptimeTeam/greptimedb/pull/3871)
* docs: correct v0.7 benchmark report by [@waynexia](https://github.com/waynexia) in [#3907](https://github.com/GreptimeTeam/greptimedb/pull/3907)

### ⚡ Performance

* perf: optimize `count(*)` by [@waynexia](https://github.com/waynexia) in [#3845](https://github.com/GreptimeTeam/greptimedb/pull/3845)
* perf(operator): reuse table info from table creation by [@zhongzc](https://github.com/zhongzc) in [#3945](https://github.com/GreptimeTeam/greptimedb/pull/3945)

### 🧪 Testing

* test: Add tests for KvBackend trait implement by [@realtaobo](https://github.com/realtaobo) in [#3700](https://github.com/GreptimeTeam/greptimedb/pull/3700)
* test: introduce unstable fuzz create table test by [@WenyXu](https://github.com/WenyXu) in [#3788](https://github.com/GreptimeTeam/greptimedb/pull/3788)
* test: give windows file watcher more time by [@sunng87](https://github.com/sunng87) in [#3953](https://github.com/GreptimeTeam/greptimedb/pull/3953)
* test: gracefully shutdown postgres client in sql tests by [@evenyag](https://github.com/evenyag) in [#3958](https://github.com/GreptimeTeam/greptimedb/pull/3958)

### ⚙️ Miscellaneous Tasks

* ci: setup-protoc always with token by [@tisonkun](https://github.com/tisonkun) in [#3674](https://github.com/GreptimeTeam/greptimedb/pull/3674)
* chore: improve contributor click in git-cliff by [@tisonkun](https://github.com/tisonkun) in [#3672](https://github.com/GreptimeTeam/greptimedb/pull/3672)
* chore: remove global_ttl config by [@v0y4g3r](https://github.com/v0y4g3r) in [#3673](https://github.com/GreptimeTeam/greptimedb/pull/3673)
* chore: add a fix-clippy Makefile target by [@tisonkun](https://github.com/tisonkun) in [#3677](https://github.com/GreptimeTeam/greptimedb/pull/3677)
* chore: unify name metasrv by [@fengjiachun](https://github.com/fengjiachun) in [#3671](https://github.com/GreptimeTeam/greptimedb/pull/3671)
* chore: create database api change in protobuf by [@CookiePieWw](https://github.com/CookiePieWw) in [#3682](https://github.com/GreptimeTeam/greptimedb/pull/3682)
* chore: remove TODO that has been done by [@tisonkun](https://github.com/tisonkun) in [#3683](https://github.com/GreptimeTeam/greptimedb/pull/3683)
* chore(flow): more comments&lint by [@discord9](https://github.com/discord9) in [#3680](https://github.com/GreptimeTeam/greptimedb/pull/3680)
* ci: add CODEOWNERS file by [@tisonkun](https://github.com/tisonkun) in [#3691](https://github.com/GreptimeTeam/greptimedb/pull/3691)
* chore: cleanup tech debt in #3696 by [@fengjiachun](https://github.com/fengjiachun) in [#3705](https://github.com/GreptimeTeam/greptimedb/pull/3705)
* chore(mito): set null value data size to i64 by [@etolbakov](https://github.com/etolbakov) in [#3722](https://github.com/GreptimeTeam/greptimedb/pull/3722)
* ci: use greptimedb-ci-tester account by [@zyy17](https://github.com/zyy17) in [#3719](https://github.com/GreptimeTeam/greptimedb/pull/3719)
* chore: cleanup todos that should be panic by [@tisonkun](https://github.com/tisonkun) in [#3720](https://github.com/GreptimeTeam/greptimedb/pull/3720)
* chore: remove TableIdProvider by [@fengjiachun](https://github.com/fengjiachun) in [#3733](https://github.com/GreptimeTeam/greptimedb/pull/3733)
* chore: update greptime-proto to main by [@MichaelScofield](https://github.com/MichaelScofield) in [#3743](https://github.com/GreptimeTeam/greptimedb/pull/3743)
* ci: temporary disable compatibility test by [@waynexia](https://github.com/waynexia) in [#3767](https://github.com/GreptimeTeam/greptimedb/pull/3767)
* ci: secrets.GITHUB_TOKEN not exist on self-hosted runner by [@tisonkun](https://github.com/tisonkun) in [#3765](https://github.com/GreptimeTeam/greptimedb/pull/3765)
* chore: bump jobserver by [@v0y4g3r](https://github.com/v0y4g3r) in [#3778](https://github.com/GreptimeTeam/greptimedb/pull/3778)
* chore: always obsolete wal to avoid discontinuous log entries by [@v0y4g3r](https://github.com/v0y4g3r) in [#3789](https://github.com/GreptimeTeam/greptimedb/pull/3789)
* chore: respect axum test client's origin by [@tisonkun](https://github.com/tisonkun) in [#3805](https://github.com/GreptimeTeam/greptimedb/pull/3805)
* chore: rename all `datanode_manager` to `node_manager` by [@WenyXu](https://github.com/WenyXu) in [#3813](https://github.com/GreptimeTeam/greptimedb/pull/3813)
* chore: add warn log for denied to renew region lease  by [@WenyXu](https://github.com/WenyXu) in [#3827](https://github.com/GreptimeTeam/greptimedb/pull/3827)
* ci: add fuzz_insert ci cfg by [@CookiePieWw](https://github.com/CookiePieWw) in [#3840](https://github.com/GreptimeTeam/greptimedb/pull/3840)
* chore: correct RepeatedField origin by [@tisonkun](https://github.com/tisonkun) in [#3838](https://github.com/GreptimeTeam/greptimedb/pull/3838)
* chore: adding Grafana config for cluster monitor by [@shuiyisong](https://github.com/shuiyisong) in [#3781](https://github.com/GreptimeTeam/greptimedb/pull/3781)
* ci: reduce workflow files by merging actions by [@tisonkun](https://github.com/tisonkun) in [#3848](https://github.com/GreptimeTeam/greptimedb/pull/3848)
* ci: create cyborg for all heavy GitHub integrated actions by [@tisonkun](https://github.com/tisonkun) in [#3852](https://github.com/GreptimeTeam/greptimedb/pull/3852)
* ci: replace pull-request actions with cyborg by [@tisonkun](https://github.com/tisonkun) in [#3854](https://github.com/GreptimeTeam/greptimedb/pull/3854)
* ci: avoid trying to send slack notification in forks by [@tisonkun](https://github.com/tisonkun) in [#3857](https://github.com/GreptimeTeam/greptimedb/pull/3857)
* chore: try avoid one slice by [@tisonkun](https://github.com/tisonkun) in [#3856](https://github.com/GreptimeTeam/greptimedb/pull/3856)
* chore: remove one slice copy in wal encoding by [@v0y4g3r](https://github.com/v0y4g3r) in [#3861](https://github.com/GreptimeTeam/greptimedb/pull/3861)
* ci: align clippy checks and fixup by [@shuiyisong](https://github.com/shuiyisong) in [#3868](https://github.com/GreptimeTeam/greptimedb/pull/3868)
* chore: avoid double future by [@fengjiachun](https://github.com/fengjiachun) in [#3890](https://github.com/GreptimeTeam/greptimedb/pull/3890)
* chore: deprecate nyc-taxi benchmark by [@waynexia](https://github.com/waynexia) in [#3891](https://github.com/GreptimeTeam/greptimedb/pull/3891)
* chore: bump proto to 219b24 by [@WenyXu](https://github.com/WenyXu) in [#3899](https://github.com/GreptimeTeam/greptimedb/pull/3899)
* chore: keep the same naming style by [@fengjiachun](https://github.com/fengjiachun) in [#3916](https://github.com/GreptimeTeam/greptimedb/pull/3916)
* chore: store-addr to store-addrs by [@fengjiachun](https://github.com/fengjiachun) in [#3925](https://github.com/GreptimeTeam/greptimedb/pull/3925)
* chore: minor refactor on etcd kvbackend by [@fengjiachun](https://github.com/fengjiachun) in [#3940](https://github.com/GreptimeTeam/greptimedb/pull/3940)
* chore: update greptime-proto to a11db14 by [@WenyXu](https://github.com/WenyXu) in [#3942](https://github.com/GreptimeTeam/greptimedb/pull/3942)
* ci: Use lld linker in windows tests by [@evenyag](https://github.com/evenyag) in [#3946](https://github.com/GreptimeTeam/greptimedb/pull/3946)
* ci: implement docbot in cyborg by [@tisonkun](https://github.com/tisonkun) in [#3937](https://github.com/GreptimeTeam/greptimedb/pull/3937)
* chore: catch up label updates by [@tisonkun](https://github.com/tisonkun) in [#3951](https://github.com/GreptimeTeam/greptimedb/pull/3951)
* chore: bump to v0.8.0 by [@WenyXu](https://github.com/WenyXu) in [#3971](https://github.com/GreptimeTeam/greptimedb/pull/3971)

### Build

* build(deps): update datafusion to latest and arrow to 51.0 by [@MichaelScofield](https://github.com/MichaelScofield) in [#3661](https://github.com/GreptimeTeam/greptimedb/pull/3661)
* build: update toolchain to nightly-2024-04-18 by [@waynexia](https://github.com/waynexia) in [#3740](https://github.com/GreptimeTeam/greptimedb/pull/3740)
* build(deps): bump rustls from 0.22.3 to 0.22.4 by [@dependabot[bot]](https://github.com/dependabot[bot]) in [#3764](https://github.com/GreptimeTeam/greptimedb/pull/3764)
* build: only build amd64 image for CentOS by [@evenyag](https://github.com/evenyag) in [#3784](https://github.com/GreptimeTeam/greptimedb/pull/3784)
* build: strip sqlness binary by [@waynexia](https://github.com/waynexia) in [#3872](https://github.com/GreptimeTeam/greptimedb/pull/3872)
* build: run cargo gc to build binaries by [@waynexia](https://github.com/waynexia) in [#3874](https://github.com/GreptimeTeam/greptimedb/pull/3874)
* build(deps): bump snafu to 0.8 by [@waynexia](https://github.com/waynexia) in [#3911](https://github.com/GreptimeTeam/greptimedb/pull/3911)
* build: upgrade rust toolchain to fix ci issues on Windows by [@evenyag](https://github.com/evenyag) in [#3898](https://github.com/GreptimeTeam/greptimedb/pull/3898)
* build: add RUSTUP_WINDOWS_PATH_ADD_BIN env by [@evenyag](https://github.com/evenyag) in [#3969](https://github.com/GreptimeTeam/greptimedb/pull/3969)

## New Contributors

* [@irenjj](https://github.com/irenjj) made their first contribution in [#3910](https://github.com/GreptimeTeam/greptimedb/pull/3910)
* [@tizee](https://github.com/tizee) made their first contribution in [#3751](https://github.com/GreptimeTeam/greptimedb/pull/3751)
* [@Kelvinyu1117](https://github.com/Kelvinyu1117) made their first contribution in [#3829](https://github.com/GreptimeTeam/greptimedb/pull/3829)

## All Contributors

We would like to thank the following contributors from the GreptimeDB community:

[@CookiePieWw](https://github.com/CookiePieWw), [@DiamondMofeng](https://github.com/DiamondMofeng), [@KKould](https://github.com/KKould), [@Kelvinyu1117](https://github.com/Kelvinyu1117), [@MichaelScofield](https://github.com/MichaelScofield), [@Taylor-lagrange](https://github.com/Taylor-lagrange), [@WenyXu](https://github.com/WenyXu), [@ZonaHex](https://github.com/ZonaHex), [@dimbtp](https://github.com/dimbtp), [@discord9](https://github.com/discord9), [@etolbakov](https://github.com/etolbakov), [@evenyag](https://github.com/evenyag), [@fengjiachun](https://github.com/fengjiachun), [@irenjj](https://github.com/irenjj), [@killme2008](https://github.com/killme2008), [@realtaobo](https://github.com/realtaobo), [@shuiyisong](https://github.com/shuiyisong), [@sunng87](https://github.com/sunng87), [@tisonkun](https://github.com/tisonkun), [@tizee](https://github.com/tizee), [@v0y4g3r](https://github.com/v0y4g3r), [@waynexia](https://github.com/waynexia), [@zhongzc](https://github.com/zhongzc), [@zyy17](https://github.com/zyy17)