来源:https://clickhouse.com/blog/pg_clickhouse-whats-new-june-2026
pg_clickhouse v0.3.2 新特性:Postgres 19、TLS、正则表达式与内存
David Wheeler
2026年6月23日 · 4 分钟阅读
上周我们发布了 pg_clickhouse 的最新版本,这是用于从 Postgres 查询 ClickHouse 的接口。作为一个小版本更新,v0.3.2 无需重载、重启或执行 ALTER EXTENSION UPDATE,并且我们已经升级了所有 ClickHouse Cloud 实例。你下次连接到数据库时将会加载最新的版本。
尽管是小版本号递增,此版本在四个关键领域显著改进了 pg_clickhouse:Postgres 19、TLS 连接、正则表达式下推和内存消耗。
Postgres 19
最重要的变化是什么?支持 PostgreSQL 19 Beta1。新的 Postgres 版本需要对 pg_clickhouse 源代码进行相对较小的修改,以利用元组和数组优化、移除旧的 typedef、添加新的头文件以及调整一些测试输出。这样一来,我们将为今年秋季 Postgres 的最终发布做好准备,并在第一天就在 Managed Postgres for ClickHouse 上提供支持。
TLS 连接
pg_clickhouse 自首次发布以来就支持 TLS 连接,但 v0.3.2 引入了几个新的 CREATE SERVER 选项:
secure指定连接的安全要求:on(强制 TLS)、off(强制明文)或auto(基于云托管/端口启发式判断,默认值)。感谢 Andrey Borodin 启发了这个拉取请求。min_tls_version指定最低 TLS 协议版本:TLSv1、TLSv1.1、TLSv1.2或TLSv1.3。默认使用 TLS 库自身的最低版本。
正则表达式
对正则表达式标志不同行为的更深入探索,暴露了我们下推逻辑中的错误,现已修复。Postgres 标志现在按如下方式下推到 ClickHouse:
| 标志 | 下推为 | 说明 |
|---|---|---|
i |
i |
不区分大小写匹配 |
m |
m-s |
^ 和 $ 除了匹配文本开头/结尾外,还匹配行开头/结尾 |
n |
m-s |
Postgres 中 m 的别名 |
p |
-s |
不让 . 和 [^x] 匹配 \n |
s |
s |
让 . 和 [^x] 匹配 \n |
t |
严格语法,被忽略 | |
w |
m |
反向的部分新行敏感匹配 |
文档还注明了 m 和 p 行为上的差异:Postgres 阻止否定字符类([^xyz])匹配换行符,而 ClickHouse 的对应实现则不会。请务必仔细测试使用了字符类的正则表达式。
内存消耗
一些客户查询暴露了内存消耗方面的问题。
其中一个问题是由使用 HTTP 驱动程序的未缓冲查询触发的。自 v0.1.10 以来,这种配置已不被推荐且不是默认配置,因此应该相当罕见。
另一个问题出现在外部扫描重复重新扫描时,例如嵌套循环连接中带有参数化内部外部扫描的情况------这是一个相当典型的执行计划。如果你在查询外部表时发现内存膨胀,请务必升级。
更多内容
其他值得一提的更改:
- 为
CREATE SERVER添加了compression选项,以启用 ClickHouse 原生协议压缩,用于查询结果和 INSERT 数据 - 添加了当
regexp_match()的正则表达式参数不包含捕获组时的下推映射 - 修复了在 ClickHouse 25 版本之前,
ANY()配合空数组(WHERE x = ANY('{}'))会产生错误的 bug
请从以下常用渠道下载:
- PGXN
- GitHub
- Docker