欢迎参与 8 月 1 日中午 11 点的线上分享,了解 GreptimeDB 联合处理指标和日志的最新方案! 👉🏻 点击加入

Skip to content
On this page
双周报
2025-8-20

TQL CTE 支持、PromQL 兼容性提升与 Remote WAL 裁剪优化|Greptime 双周精选

GreptimeDB 双周内的相关进展:包括查询更灵活,PromQL 表达式兼容性提高和其他相关功能优化。

内容概述

作为一个成长中的开源项目,GreptimeDB 的进展离不开来自全球的社区贡献者们,感谢各位!

最近的更新内容如下:

  • 更灵活的查询:为 TQL 引入 CTE,并可与 SQL CTE 混合使用
  • 新增 mysql.prepared_stmt_cache_size 配置,用于控制缓存的 Prepared Statement 数量
  • PromQL 表达式兼容性提高:将 label_joinlabel_replace 的行为与 Prometheus 对齐
  • 为 Flat Parquet 格式实现 Last-not-null 和 Last-row 去重策略

社区贡献者名单

在过去的两周里,GreptimeDB 共合并了 116 个 PR,其中有 3 位独立贡献者,累计 6 个 PR 被成功合并,还有很多待合并的 PR 。

祝贺以下各位在过去 2 周内成为我们最突出的贡献者:

注:按照 GitHub 用户名首字母顺序排列

👏 欢迎 @sunheyi6 作为新的贡献者加入到社区,并成功合并了 PR,还有更多来自其他独立贡献者的 PR 正在等待合并。

(图 1:GreptimeDB 双周内新增贡献者)
(图 1:GreptimeDB 双周内新增贡献者)

🎉 衷心感谢我们所有的成员,贡献者和布道师们!是你们的付出让我们的项目得以成功,也是你们让 GreptimeDB 成为一个更优质的产品。让我们一起努力,建立一个更棒的社区!

PR 亮点

db#6639 新增 mysql.prepared_stmt_cache_size 配置

引入了一个新的配置项,用于控制 MySQL prepared statement 的缓存数量,默认值为 10000

db#6645 TQL 支持 CTE (Common Table Expression)

为 TQL 引入了 CTE 支持,并允许与 SQL CTE 混合使用。例如,可先使用 TQL 查询数据,再通过 SQL 子查询进行过滤,实现更灵活的查询组合。

sql
-- TQL CTE with column aliases
WITH tql (the_timestamp, the_value) as (
    TQL EVAL (0, 40, '10s') metric
)
SELECT * FROM tql;

+---------------------+-----------+
| the_timestamp       | the_value |
+---------------------+-----------+
| 1970-01-01T00:00:00 | 0.0       |
| 1970-01-01T00:00:10 | 8.0       |
| 1970-01-01T00:00:20 | 8.0       |
| 1970-01-01T00:00:30 | 2.0       |
| 1970-01-01T00:00:40 | 3.0       |
+---------------------+-----------+

-- Hybrid CTEs (TQL + SQL)
WITH 
    tql_data (ts, val) AS (TQL EVAL (0, 40, '10s') metric),
    filtered AS (SELECT * FROM tql_data WHERE val > 5)
SELECT count(*) FROM filtered;

+----------+
| count(*) |
+----------+
| 2        |
+----------+

db#6714 db#6720 提升 PromQL 表达式兼容性

修复了 label_joinlabel_replace 的行为,使其与 Prometheus 保持一致,从而提升 PromQL 表达式的兼容性。

db#6691 新增 SQL 格式化 HTTP 接口

引入 /v1/sql/format 接口,用于格式化 SQL 语句。

示例如下:

bash
curl -s "http://localhost:4000/v1/sql/format?sql=select%201%20as%20x"

输出结果为:

plaintext
{
  "formatted": "SELECT 1 AS x;"
}

db#6741 优化 Remote WAL 裁剪策略

通过统计信息估算数据大小进行裁剪,确保在启动 Datanode 时,即使在最坏情况下,也不会回放过多数据。

db#6709 db#6695 为 Flat Parquet 格式实现去重策略

支持 Last-not-null 和 Last-row 两种去重策略。

Good First Issue

Issue#6287 允许用户在 COPY TO 时指定日期和时间戳格式

关键字:时间戳格式

难度:简单

Issue#6286 支持导出压缩的 CSV 或 JSON 文件

关键字:数据导出

难度:简单

Issue#6334 完善 KILLINSERT INTO SELECT 查询的支持

关键字:查询引擎

难度:中等

加入我们的社区

获取 Greptime 最新更新,并与其他用户讨论。