/
githubmirror
/
postgres
Обзор
Документация
Войти
/
githubmirror
/
postgres
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
doc/src/sgml/ref/create_foreign_data_wrapper.sgml
203 строки
7 KB
Jeff Davis
CREATE SUBSCRIPTION ... SERVER.
06 мар 2026, 19:27
06 мар 2026, 19:27
8185bb5
Код
Авторство
О чём код?
<!-- doc/src/sgml/ref/create_foreign_data_wrapper.sgml PostgreSQL documentation --> <refentry id="sql-createforeigndatawrapper"> <indexterm zone="sql-createforeigndatawrapper"> <primary>CREATE FOREIGN DATA WRAPPER</primary> </indexterm> <refmeta> <refentrytitle>CREATE FOREIGN DATA WRAPPER</refentrytitle> <manvolnum>7</manvolnum> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> <refnamediv> <refname>CREATE FOREIGN DATA WRAPPER</refname> <refpurpose>define a new foreign-data wrapper</refpurpose> </refnamediv> <refsynopsisdiv> <synopsis> CREATE FOREIGN DATA WRAPPER <replaceable class="parameter">name</replaceable> [ HANDLER <replaceable class="parameter">handler_function</replaceable> | NO HANDLER ] [ VALIDATOR <replaceable class="parameter">validator_function</replaceable> | NO VALIDATOR ] [ CONNECTION <replaceable class="parameter">connection_function</replaceable> | NO CONNECTION ] [ OPTIONS ( <replaceable class="parameter">option</replaceable> '<replaceable class="parameter">value</replaceable>' [, ... ] ) ] </synopsis> </refsynopsisdiv> <refsect1> <title>Description</title> <para> <command>CREATE FOREIGN DATA WRAPPER</command> creates a new foreign-data wrapper. The user who defines a foreign-data wrapper becomes its owner. </para> <para> The foreign-data wrapper name must be unique within the database. </para> <para> Only superusers can create foreign-data wrappers. </para> </refsect1> <refsect1> <title>Parameters</title> <variablelist> <varlistentry> <term><replaceable class="parameter">name</replaceable></term> <listitem> <para> The name of the foreign-data wrapper to be created. </para> </listitem> </varlistentry> <varlistentry> <term><literal>HANDLER <replaceable class="parameter">handler_function</replaceable></literal></term> <listitem> <para><replaceable class="parameter">handler_function</replaceable> is the name of a previously registered function that will be called to retrieve the execution functions for foreign tables. The handler function must take no arguments, and its return type must be <type>fdw_handler</type>. </para> <para> It is possible to create a foreign-data wrapper with no handler function, but foreign tables using such a wrapper can only be declared, not accessed. </para> </listitem> </varlistentry> <varlistentry> <term><literal>VALIDATOR <replaceable class="parameter">validator_function</replaceable></literal></term> <listitem> <para><replaceable class="parameter">validator_function</replaceable> 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 options for foreign servers, user mappings and foreign tables using the foreign-data wrapper. If no validator function or <literal>NO VALIDATOR</literal> 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 <type>text[]</type>, which will contain the array of options as stored in the system catalogs, and one of type <type>oid</type>, which will be the OID of the system catalog containing the options. The return type is ignored; the function should report invalid options using the <function>ereport(ERROR)</function> function. </para> </listitem> </varlistentry> <varlistentry> <term><literal>CONNECTION <replaceable class="parameter">connection_function</replaceable></literal></term> <listitem> <para> <replaceable class="parameter">connection_function</replaceable> is the name of a previously registered function that will be called to generate the postgres connection string when a foreign server is used as part of <xref linkend="sql-createsubscription"/>. If no connection function or <literal>NO CONNECTION</literal> is specified, then servers using this foreign data wrapper cannot be used for <literal>CREATE SUBSCRIPTION</literal>. The connection function must take three arguments: one of type <type>oid</type> for the user, one of type <type>oid</type> for the server, and an unused third argument of type <type>internal</type> (which prevents calling the function in other contexts). </para> </listitem> </varlistentry> <varlistentry> <term><literal>OPTIONS ( <replaceable class="parameter">option</replaceable> '<replaceable class="parameter">value</replaceable>' [, ... ] )</literal></term> <listitem> <para> 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's validator function. Option names must be unique. </para> </listitem> </varlistentry> </variablelist> </refsect1> <refsect1> <title>Notes</title> <para> <productname>PostgreSQL</productname>'s foreign-data functionality is still under active development. Optimization of queries is primitive (and mostly left to the wrapper, too). Thus, there is considerable room for future performance improvements. </para> </refsect1> <refsect1> <title>Examples</title> <para> Create a useless foreign-data wrapper <literal>dummy</literal>: <programlisting> CREATE FOREIGN DATA WRAPPER dummy; </programlisting> </para> <para> Create a foreign-data wrapper <literal>file</literal> with handler function <literal>file_fdw_handler</literal>: <programlisting> CREATE FOREIGN DATA WRAPPER file HANDLER file_fdw_handler; </programlisting> </para> <para> Create a foreign-data wrapper <literal>mywrapper</literal> with some options: <programlisting> CREATE FOREIGN DATA WRAPPER mywrapper OPTIONS (debug 'true'); </programlisting></para> </refsect1> <refsect1> <title>Compatibility</title> <para> <command>CREATE FOREIGN DATA WRAPPER</command> conforms to ISO/IEC 9075-9 (SQL/MED), with the exception that the <literal>HANDLER</literal> and <literal>VALIDATOR</literal> clauses are extensions and the standard clauses <literal>LIBRARY</literal> and <literal>LANGUAGE</literal> are not implemented in <productname>PostgreSQL</productname>. </para> <para> Note, however, that the SQL/MED functionality as a whole is not yet conforming. </para> </refsect1> <refsect1> <title>See Also</title> <simplelist type="inline"> <member><xref linkend="sql-alterforeigndatawrapper"/></member> <member><xref linkend="sql-dropforeigndatawrapper"/></member> <member><xref linkend="sql-createserver"/></member> <member><xref linkend="sql-createusermapping"/></member> <member><xref linkend="sql-createforeigntable"/></member> </simplelist> </refsect1> </refentry>