概要
説明
chdb 拡張機能は、chDB クエリをヘルパープロセス内で実行します。
関数
pgchdb_version
x.y の部分のみを使用しますが、ライブラリは完全な x.y.z 形式のセマンティックバージョンを提供します。この値は、Postgres 18 以降の pg_get_loaded_modules() 関数が返す値と同じです:
chdb_query
chdb_query() の呼び出しで作成されたオブジェクトは、後続の呼び出しには引き継がれません。
カラム定義リスト (AS (col type, ...)) は必須です。PostgreSQL は行を取得する前に行の構造定義を必要とし、その構造はクエリが返すカラムと一致していなければなりません。値は chDB から宣言された型へ変換されます。
デフォルトではどのロールにも EXECUTE 権限はありません。この関数の使用を許可するには、対象のロールに GRANT してください。
テキストエンコーディング
chDB の byte strings が Postgres のtext、bytea などの types にどのようにマッピングされるかについては、chdb_hook ドキュメントのテキストエンコーディングを参照してください。
設定
chdb.max_memory
max_memory_usage 設定を指定するために使用されます。superuser 権限が必要です。メガバイト数を整数で
指定するか、以下のメモリ単位のいずれかを付けて指定します:
B(バイト)kB(キロバイト)MB(メガバイト)GB(ギガバイト)TB(テラバイト)
0 で、この場合メモリは制限されません。
chdb.max_threads
max_threads 設定に値を設定するために使用します。superuser 権限が必要です。デフォルトは 0 で、この場合は chDB が値を決定します。
大規模なクエリを実行する前に chdb.max_threads を設定することを強く推奨します。これにより、chDB が PostgreSQL を犠牲にして CPU を使い切ってしまうことを防げます。
chdb.max_parsing_threads
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 18 以降では
PG_MODULE_MAGICで定義)には完全なセマンティックバージョンが含まれ、pgchdb_version()関数または Postgres のpg_get_loaded_modules()関数の出力で確認できます。 - 拡張機能 バージョン(control ファイルで定義)には major および minor のバージョンのみが含まれ、
pg_catalog.pg_extensionテーブル、pg_available_extension_versions()関数の出力、および\dx chdbで確認できます。
v0.1.0 から v0.1.1)は v0.1 を読み込んでいるすべての database に適用され、アップグレードの効果を得るために ALTER EXTENSION を実行する必要はありません。
一方、minor または major のバージョンがインクリメントされるリリースには SQL アップグレード script が付属するため、拡張機能を含む既存のすべての database でアップグレードの効果を得るには ALTER EXTENSION chdb UPDATE を実行する必要があります。