Skip to main content

概要

説明

chdb 拡張機能は、chDB クエリをヘルパープロセス内で実行します。

関数

pgchdb_version

chdb 拡張機能ライブラリの現在のセマンティックバージョンを返します。chdb 拡張機能のバージョンはバージョン番号の x.y の部分のみを使用しますが、ライブラリは完全な x.y.z 形式のセマンティックバージョンを提供します。この値は、Postgres 18 以降の pg_get_loaded_modules() 関数が返す値と同じです:

chdb_query

chDB のクエリを実行し、その結果の行を relation として返します。呼び出しごとにディスク上に一時的な chDB データベースが作成され、クエリの完了時に削除されます。そのため、DDL など、以前の chdb_query() の呼び出しで作成されたオブジェクトは、後続の呼び出しには引き継がれません。 カラム定義リスト (AS (col type, ...)) は必須です。PostgreSQL は行を取得する前に行の構造定義を必要とし、その構造はクエリが返すカラムと一致していなければなりません。値は chDB から宣言された型へ変換されます。 デフォルトではどのロールにも EXECUTE 権限はありません。この関数の使用を許可するには、対象のロールに GRANT してください。
例:
出力:

テキストエンコーディング

chDB の byte strings が Postgres の text、bytea などの types にどのようにマッピングされるかについては、chdb_hook ドキュメントのテキストエンコーディングを参照してください。

設定

chdb.max_memory

chDB クエリで使用できるメモリの最大量です。chDB の max_memory_usage 設定を指定するために使用されます。superuser 権限が必要です。メガバイト数を整数で 指定するか、以下のメモリ単位のいずれかを付けて指定します:
  • B (バイト)
  • kB (キロバイト)
  • MB (メガバイト)
  • GB (ギガバイト)
  • TB (テラバイト)
デフォルトは 0 で、この場合メモリは制限されません。

chdb.max_threads

chDB クエリのクエリ処理に使用する最大スレッド数で、chDB の max_threads 設定に値を設定するために使用します。superuser 権限が必要です。デフォルトは 0 で、この場合は chDB が値を決定します。 大規模なクエリを実行する前に chdb.max_threads を設定することを強く推奨します。これにより、chDB が PostgreSQL を犠牲にして CPU を使い切ってしまうことを防げます。

chdb.max_parsing_threads

並列パースに対応する入力フォーマットのデータをパースする際に chDB が使用できる最大スレッド数で、chDB の max_parsing_threads 設定に反映されます。superuser 権限が必要です。デフォルトは 0 で、この場合は chDB が値を決定します。 table functions からのデータ読み込みなど、大量のデータをパースするクエリを実行する前に chdb.max_parsing_threads を設定することを推奨します。これにより、chDB が PostgreSQL を犠牲にして CPU 使用率を使い切ってしまうことを防げます。

Versioning Policy

chdb 拡張機能は、公開リリースにおいて セマンティックバージョニング に準拠しています。
  • major version は API の変更時にインクリメントされます
  • minor version は後方互換性のある SQL の変更時にインクリメントされます
  • patch version は binary のみの変更時にインクリメントされます
インストールすると、PostgreSQL は 2 種類のバージョンを管理します。
  • ライブラリ バージョン(PostgreSQL 18 以降では PG_MODULE_MAGIC で定義)には完全なセマンティックバージョンが含まれ、pgchdb_version() 関数または Postgres の pg_get_loaded_modules() 関数の出力で確認できます。
  • 拡張機能 バージョン(control ファイルで定義)には major および minor のバージョンのみが含まれ、pg_catalog.pg_extension テーブル、pg_available_extension_versions() 関数の出力、および \dx chdb で確認できます。
つまり実際には、patch version がインクリメントされるリリース(例: v0.1.0 から v0.1.1)は v0.1 を読み込んでいるすべての database に適用され、アップグレードの効果を得るために ALTER EXTENSION を実行する必要はありません。 一方、minor または major のバージョンがインクリメントされるリリースには SQL アップグレード script が付属するため、拡張機能を含む既存のすべての database でアップグレードの効果を得るには ALTER EXTENSION chdb UPDATE を実行する必要があります。

著者

Copyright (c) 2026, ClickHouse
最終更新日 2026年9月26日