PostgreSQL 8.4.12 Documentation
Prev | Fast Backward |  | Fast Forward | Next

# CREATE FOREIGN DATA WRAPPER

## Name

CREATE FOREIGN DATA WRAPPER -- define a new foreign-data wrapper

## Synopsis

    CREATE FOREIGN DATA WRAPPER name
        [ VALIDATOR valfunction | NO VALIDATOR ]
        [ OPTIONS ( option 'value' [, ... ] ) ]

## Description

`CREATE FOREIGN DATA WRAPPER` creates a new foreign-data wrapper. The user who defines a foreign-data wrapper becomes its owner.

The foreign-data wrapper name must be unique within the database.

Only superusers can create foreign-data wrappers.

## Parameters

`name`

  The name of the foreign-data wrapper to be created.

`VALIDATOR `valfunction``

  `valfunction` is the name of a previously registered function that will be called to check the generic options given to the foreign-data wrapper, as well as to foreign servers and user mappings using the foreign-data wrapper. If no validator function or `NO VALIDATOR` is specified, then options will not be checked at creation time. (Foreign-data wrappers will possibly ignore or reject invalid option specifications at run time, depending on the implementation.) The validator function must take two arguments: one of type `text[]`, which will contain the array of options as stored in the system catalogs, and one of type `oid`, which will be the OID of the system catalog containing the options. The return type is ignored; the function should indicate invalid options using the `ereport()` function.

`OPTIONS ( `option` '`value`' [, ... ] )`

  This clause specifies options for the new foreign-data wrapper. The allowed option names and values are specific to each foreign data wrapper and are validated using the foreign-data wrapper library. Option names must be unique.

## Notes

At the moment, the foreign-data wrapper functionality is very rudimentary. The purpose of foreign-data wrappers, foreign servers, and user mappings is to store this information in a standard way so that it can be queried by interested applications. One such application is dblink; see Section F.8. The functionality to actually query external data through a foreign-data wrapper library does not exist yet.

There is currently one foreign-data wrapper validator function provided: `postgresql_fdw_validator`, which accepts options corresponding to libpq connection parameters.

## Examples

Create a foreign-data wrapper `dummy`:

    CREATE FOREIGN DATA WRAPPER dummy;

Create a foreign-data wrapper `postgresql` with validator function `postgresql_fdw_validator`:

    CREATE FOREIGN DATA WRAPPER postgresql VALIDATOR postgresql_fdw_validator;

Create a foreign-data wrapper `mywrapper` with some options:

    CREATE FOREIGN DATA WRAPPER mywrapper
        OPTIONS (debug 'true');

## Compatibility

`CREATE FOREIGN DATA WRAPPER` conforms to ISO/IEC 9075-9 (SQL/MED), with the exception that the `VALIDATOR` clause is an extension and the clauses `LIBRARY` and `LANGUAGE` are not yet implemented in PostgreSQL.

Note, however, that the SQL/MED functionality as a whole is not yet conforming.

## See Also

ALTER FOREIGN DATA WRAPPER, DROP FOREIGN DATA WRAPPER, CREATE SERVER, CREATE USER MAPPING

Prev | Home | Next
CREATE DOMAIN | Up | CREATE FUNCTION