CREATE FOREIGN DATA WRAPPER name [ VALIDATOR valfunction | NO VALIDATOR ] [ OPTIONS ( option 'value' [, ... ] ) ]
CREATE FOREIGN DATA WRAPPERは新しい外部データラッパを作成します。 外部データラッパを定義したユーザがその所有者となります。
外部データラッパの名前はデータベース内で一意でなければなりません。
スーパーユーザのみが外部データラッパを作成することができます。
作成する外部データラッパの名前です。
valfunctionは、外部データラッパと、その外部データラッパを使用する外部サーバとユーザマップへ与える一般的なオプションを検査するために呼び出される、前もって登録された関数の名前です。
検証関数がない、またはNO VALIDATORが指定された場合、オプションは作成時に検査されません。
(実装に依存しますが、実行時外部データラッパは無効なオプション指定を無視することも拒絶することもできます。)
検証関数は2つの引数を取らなければなりません。
1つはtext[]型で、システムカタログ内に格納されたオプションの配列を含みます。
もう1つはoid型で、オプションを含むシステムカタログのOIDです。
戻り値の型は無視されます。
関数はereport()
関数を使用して無効なオプションを示さなければなりません。
この句は新しい外部データラッパ用のオプションを指定します。 許されるオプション名と値は外部データラッパごとに固有であり、外部データラッパのライブラリを使用して検証されます。 オプション名は一意でなければなりません。
現在、外部データラッパの機能は非常に未熟です。 外部データラッパ、外部サーバ、ユーザマップの目的は、対象のアプリケーションで問い合わせることができるように、標準的な方法でこうした情報を格納することです。 こうしたアプリケーションの1つがdblinkです。 項F.8を参照してください。 実際に外部のデータに問い合わせる機能はまだ存在しません。
現在、postgresql_fdw_validatorという1つの外部データラッパの検証関数が提供されています。 これはlibpq接続パラメータに対応したオプションを受け付けます。
外部データラッパdummyを作成します。
CREATE FOREIGN DATA WRAPPER dummy;
postgresql_fdw_validator検証関数を使用する外部データラッパpostgresqlを作成します。
CREATE FOREIGN DATA WRAPPER postgresql VALIDATOR postgresql_fdw_validator;
いくつかオプションを付けた外部データラッパmywrapperを作成します。
CREATE FOREIGN DATA WRAPPER mywrapper OPTIONS (debug 'true');