CREATE FOREIGN DATA WRAPPER — 新しい外部データラッパを定義する
CREATE FOREIGN DATA WRAPPERname
[ HANDLERhandler_function
| NO HANDLER ] [ VALIDATORvalidator_function
| NO VALIDATOR ] [ OPTIONS (option
'value
' [, ... ] ) ]
CREATE FOREIGN DATA WRAPPER
は新しい外部データラッパを作成します。
外部データラッパを定義したユーザがその所有者となります。
外部データラッパの名前はデータベース内で一意でなければなりません。
スーパーユーザのみが外部データラッパを作成することができます。
name
作成する外部データラッパの名前です。
HANDLER handler_function
handler_function
は、事前に登録された、外部テーブル向けの関数実行を受け付けるために呼び出される関数の名前です。
ハンドラ関数は引数を取らず、fdw_handler
型を返すものでなければなりません。
ハンドラ関数を持たない外部データラッパを作成することもできますが、こうしたラッパを使用する外部テーブルは宣言することができるだけでアクセスできません。
VALIDATOR validator_function
validator_function
は、外部データラッパへ与える一般的なオプションと、その外部データラッパを使用する外部サーバ、ユーザマップおよび外部テーブルへ与えるオプションを検査するために呼び出される、前もって登録された関数の名前です。
検証関数がない、またはNO VALIDATOR
が指定された場合、オプションは作成時に検査されません。
(実装に依存しますが、実行時外部データラッパは無効なオプション指定を無視することも拒絶することもできます。)
検証関数は2つの引数を取らなければなりません。
1つはtext[]
型で、システムカタログ内に格納されたオプションの配列を含みます。
もう1つはoid
型で、オプションを含むシステムカタログのOIDです。
戻り値の型は無視されます。
関数はereport()
関数を使用して無効なオプションを報告しなければなりません。
OPTIONS ( option
'value
' [, ... ] )
この句は新しい外部データラッパ用のオプションを指定します。 使用できるオプション名と値は外部データラッパごとに固有であり、外部データラッパの検証関数を使用して検証されます。 オプション名は一意でなければなりません。
PostgreSQLの外部データ機能はまだ活発な開発がなされています。 問い合わせの最適化がまだ開発が進んでいません(そしてほとんどがラッパに任せられています)。 したがって将来の性能向上の余地が大きくあります。
無意味な外部データラッパdummy
を作成します。
CREATE FOREIGN DATA WRAPPER dummy;
file_fdw_handler
ハンドラ関数を持つ外部データラッパfile
を作成します。
CREATE FOREIGN DATA WRAPPER file HANDLER file_fdw_handler;
いくつかオプションを付けた外部データラッパmywrapper
を作成します。
CREATE FOREIGN DATA WRAPPER mywrapper OPTIONS (debug 'true');
CREATE FOREIGN DATA WRAPPER
はISO/IEC 9075-9 (SQL/MED)に従います。
ただし、HANDLER
句とVALIDATOR
句は拡張であり、PostgreSQLでは標準のLIBRARY
句とLANGUAGE
句は実装されていません。
しかし、SQL/MED機能は全体としてまだ従っていないことに注意してください。