CREATE FOREIGN DATA WRAPPER
Description
creates a new foreign-data wrapper in the current database. The user who defines the foreign-data wrapper becomes its owner.
Only superusers can create foreign-data wrappers.
name
The name of the foreign-data wrapper to create. The name must be unique within the database.
HANDLER handler_function
The name of a previously registered function that Greenplum Database calls to retrieve the execution functions for foreign tables. hander_function must take no arguments, and its return type must be fdw_handler
.
It is possible to create a foreign-data wrapper with no handler function, but you can only declare, not access, foreign tables using such a wrapper.
VALIDATOR validator_function
validator_function must take two arguments: one of type text[]
, which contains the array of options as stored in the system catalogs, and one of type oid
, which identifies the OID of the system catalog containing the options.
The return type is ignored; validator_function should report invalid options using the ereport(ERROR)
function.
OPTIONS ( option ‘value’ [, … ] )
The options for the new foreign-data wrapper. Option names must be unique. The option names and values are foreign-data wrapper-specific and are validated using the foreign-data wrappers’ validator_function.
mpp_execute { ‘master’ | ‘any’ | ‘all segments’ }
An option that identifies the host from which the foreign-data wrapper reads or writes data:
master
(the default)—Read or write data from the master host.—Read or write data from all segments. To support this option value, the foreign-data wrapper must have a policy that matches the segments to data.
> Note Greenplum Database supports parallel writes to foreign tables only when you set
mpp_execute 'all segments'
.
The mpp_execute
option can be specified in multiple commands: CREATE FOREIGN TABLE
, CREATE SERVER
, and CREATE FOREIGN DATA WRAPPER
. The foreign table setting takes precedence over the foreign server setting, followed by the foreign-data wrapper setting.
Notes
The foreign-data wrapper functionality is still under development. Optimization of queries is primitive (and mostly left to the wrapper).
Create a useless foreign-data wrapper named dummy
:
Create a foreign-data wrapper named with a handler function named file_fdw_handler
:
Create a foreign-data wrapper named mywrapper
that includes an option:
Compatibility
CREATE FOREIGN DATA WRAPPER
conforms to ISO/IEC 9075-9 (SQL/MED), with the exception that the HANDLER
and VALIDATOR
clauses are extensions, and the standard clauses LIBRARY
and LANGUAGE
are not implemented in Greenplum Database.
Note, however, that the SQL/MED functionality as a whole is not yet conforming.