CREATE FOREIGN DATA WRAPPER name [ HANDLER handler_function | NO HANDLER ] [ VALIDATOR validator_function | NO VALIDATOR ] [ OPTIONS ( option 'value' [, ... ] ) ]
CREATE FOREIGN DATA WRAPPERは新しい外部データラッパを作成します。 外部データラッパを定義したユーザがその所有者となります。
外部データラッパの名前はデータベース内で一意でなければなりません。
スーパーユーザのみが外部データラッパを作成することができます。
作成する外部データラッパの名前です。
handler_functionは、事前に登録された、外部テーブル向けの関数実行を受け付けるために呼び出される関数の名前です。 ハンドラ関数は引数を取らず、fdw_handler型を返すものでなければなりません。
ハンドラ関数を持たない外部データラッパを作成することもできますが、こうしたラッパを使用する外部テーブルは宣言することができるだけでアクセスできません。
validator_functionは、外部データラッパへ与える一般的なオプションと、その外部データラッパを使用する外部サーバ、ユーザマップおよび外部テーブルへ与えるオプションを検査するために呼び出される、前もって登録された関数の名前です。
検証関数がない、またはNO VALIDATORが指定された場合、オプションは作成時に検査されません。
(実装に依存しますが、実行時外部データラッパは無効なオプション指定を無視することも拒絶することもできます。)
検証関数は2つの引数を取らなければなりません。
1つはtext[]型で、システムカタログ内に格納されたオプションの配列を含みます。
もう1つはoid型で、オプションを含むシステムカタログのOIDです。
戻り値の型は無視されます。
関数はereport()
関数を使用して無効なオプションを報告しなければなりません。
この句は新しい外部データラッパ用のオプションを指定します。 使用できるオプション名と値は外部データラッパごとに固有であり、外部データラッパの検証関数を使用して検証されます。 オプション名は一意でなければなりません。
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機能は全体としてまだ従っていないことに注意してください。