Postgres から ClickHouse にクエリを実行するためのインターフェースである pg_clickhouse の最新バージョンをリリースしました。マイナーアップデートである v0.3.2 では、リロードや再起動、ALTER EXTENSION UPDATE は不要で、ClickHouse Cloud の全インスタンスへの適用も完了しています。データベースへの次回の接続時から、最新機能をご利用いただけます。
マイナーバージョンの更新ではありますが、今回のリリースでは Postgres 19、TLS 接続、正規表現のプッシュダウン、メモリ消費量という 4 つの主要な領域で pg_clickhouse を大幅に改善しています。
Postgres 19
最大の変更点は、PostgreSQL 19 Beta1 への対応です。新しい Postgres バージョンに対応するため、タプルや配列の最適化の活用、古い typedef の削除、新しいヘッダーの追加、一部のテスト出力の調整など、pg_clickhouse のソースコードに比較的小規模な修正を加えました。これにより、今秋予定されている Postgres の正式リリースに対応する準備が整い、ClickHouse Managed Postgres でも初日から提供できるようになります。
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 | m に対する Postgres のエイリアス |
p | -s | . と [^x] を \n にマッチさせない |
s | s | . と [^x] を \n にマッチさせる |
t | 厳格な構文 (無視) | |
w | m | 改行を考慮した逆の部分マッチング |
また、ドキュメント に記載のとおり、m と p の挙動には差異があります。Postgres では否定文字クラス ([^xyz]) が改行にマッチしないのに対し、ClickHouse の同等の設定ではマッチします。文字クラスを使用する正規表現は、慎重にテストしてください。
メモリ消費量
ユーザーのクエリを調査する中で、いくつかのメモリ消費に関する問題が判明しました。
1 つは、HTTP ドライバーでバッファリングなしのクエリを使用した際に発生していました。このような設定は v0.1.10 以降推奨されておらず、デフォルトでもないため、発生頻度は極めて低いはずです。
もう 1 つの問題は、パラメータ化された内部外部スキャンを伴うネステッドループ結合のように、外部スキャンが繰り返し再実行される場合に発生していました (これは極めて典型的な実行計画です)。外部テーブルへのクエリ実行中にメモリが急激に増加していることに気づいた場合は、必ずアップグレードしてください。
その他の変更点
その他、特筆すべき変更点は以下のとおりです。
CREATE SERVERにcompressionオプションを追加し、クエリ結果およびINSERTデータに対して ClickHouse ネイティブプロトコルの圧縮を有効化できるように変更- 正規表現の引数にキャプチャグループが含まれていない場合に
regexp_match()をプッシュダウンするマッピングを追加 - 空の配列を指定した
ANY()(WHERE x = ANY('{}')) がバージョン 25 より前の ClickHouse でエラーを引き起こしていたバグを修正
ダウンロードは通常の手順で行えます。
ClickHouse Managed Postgres を試す
ClickHouse と Postgres の組み合わせは、スケールするアプリケーション向けの統合データスタックとして定着しています。ClickHouse Cloud で Managed Postgres が利用可能になったことで、この構成を初日から容易に選択できるようになりました。
アクセスをリクエスト


