来源:https://justatheory.com/2026/05/pg_clickhouse-0.3.0/

pg_clickhouse 的新特性

日期: 2026年5月11日

关于 pg_clickhouse 项目的新闻汇总。

新特性

首先,几周前 ClickHouse 博客发表了《pg_clickhouse 的新特性》一文,其中我介绍了该扩展的多项改进:

我们很高兴社区对 pg_clickhouse(用于从 Postgres 查询 ClickHouse 数据库的扩展)的反响。最近的采用产生了大量反馈,我们在过去的几个版本中一直努力处理这些反馈。这些更改遵循我们为 pg_clickhouse 不断重复的口号:下推、下推、再下推!让我们快速浏览一下。

它包括针对 JSONB 访问器、CURRENT_TIMESTAMP 等 SQL 值函数、array_cat()array_to_string() 等数组函数的工作下推示例。它还通过演示 HTTP 结果集流式传输,并使用漂亮的条形图展示前后对比(剧透:pg_clickhouse 的 HTTP 驱动程序变得更加节省内存)。

v0.3.0 版本

但这还不是全部。今天我们发布了 pg_clickhouse 0.3.0。没有什么比客户问题更能推动改进了,v0.3.0 版本包含一系列此类改进,包括:

  • 在二进制驱动程序中添加了 ClickHouse JSON 类型到 PostgreSQL JSONB 类型的映射;HTTP 驱动程序此前已支持此映射。
  • 支持将 Postgres JSON 类型映射到 ClickHouse JSON 类型。通常 JSONB 更能匹配 ClickHouse JSON 语义,但我们希望支持这个明显的替代方案。
  • 将 Postgres 的 to_char(timestamp[tz], fmt) 函数下推到 ClickHouse 的 formatDateTime() 函数,适用于映射到二进制兼容等效项的格式:YYYYMMDDDDDHH24HH12HHMISSQMonDyAM/PM,以及小写变体。
  • 支持下推来自新版 re2 扩展的函数,该扩展在 Postgres 中提供了与 ClickHouse 兼容的、基于 RE2 的正则表达式函数。这可以避免 v0.2.0 版本帖子中提到的 Postgres POSIX 与 ClickHouse RE2 正则表达式之间的不匹配:只需使用该扩展,即可在 Postgres 中获得一致的行为,或将其下推到 ClickHouse。
  • pg_clickhouse 0.3.0 还增加了对下推 fuzzystrmatch 函数 soundex()levenshtein() 的支持,并记录了现有对 intarrayidx 函数的下推支持。
  • 记录了 CREATE FOREIGN TABLEcolumn_name 选项,以允许 Postgres 列拥有与 ClickHouse 列不同的名称。还修复了它与二进制驱动程序的集成。
  • 添加了一个升级脚本,以从 public 角色移除 clickhouse_raw_query()EXECUTION 权限,解决了一个 SSRF 漏洞。此更改需要增加主版本号,并且需要执行:
    ALTER EXTENSION pg_clickhouse UPDATE TO '0.3';
    
  • 修复了几个 HTTP 驱动程序 TSV 解析错误、一个使用窗口函数时 EXPLAIN (VERBOSE) 的错误,并将 length(text)strpos(text, text) 切换到作为 lengthUTF8positionUTF8 下推。
  • 移除了从原始 postgres_fdw 分支继承的自动下推内置函数的行为。所有可以下推的内置函数现在都已显式映射。

请从通常的位置获取新版本:

  • PGXN
  • GitHub
  • Docker(现在包含了 re2 扩展!)

再次感谢我的同事 Kaushik Iska 和 Philip Dubé 提供了大量的拉取请求,以及 Andrey Borodin 报告的 clickhouse_raw_query() 漏洞。

下一步计划

pg_clickhouse 项目提供了足够多的改进素材,足以让我们忙碌好一阵子。但首先,我将在下周出现在 PGConf.dev 会议上,做一个题为《构建外部数据包装器》的演讲。可以将其视为建立在 Christoph Pettus 在 PGCon 2023 上的演讲《编写外部数据包装器》基础上,深入探讨将执行下推到远程数据库的原因和方法。非常希望能在那里见到您。如果无法参加,请关注本周晚些时候发布的配套博文。

我们还计划撰写更多关于正则表达式不匹配问题的文章,当然也会继续全面改进下推功能。我将在未来几周内在这里提供相关细节。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐