Improve documentation about usage of FDW validator functions.

SGML documentation, as well as code comments, failed to note that an FDW's
validator will be applied to foreign-table options for foreign tables using
the FDW.

Etsuro Fujita
This commit is contained in:
Tom Lane 2013-10-28 10:28:35 -04:00
parent 438df52df9
commit c2b51cf190
3 changed files with 19 additions and 13 deletions

View File

@ -91,11 +91,13 @@ ALTER FOREIGN DATA WRAPPER <replaceable class="parameter">name</replaceable> REN
</para>
<para>
Note that it is possible that after changing the validator the
options to the foreign-data wrapper, servers, and user mappings
have become invalid. It is up to the user to make sure that
these options are correct before using the foreign-data
wrapper.
Note that it is possible that pre-existing options of the foreign-data
wrapper, or of dependent servers, user mappings, or foreign tables, are
invalid according to the new validator. <productname>PostgreSQL</> does
not check for this. It is up to the user to make sure that these
options are correct before using the modified foreign-data wrapper.
However, any options specified in this <command>ALTER FOREIGN DATA
WRAPPER</> command will be checked using the new validator.
</para>
</listitem>
</varlistentry>

View File

@ -80,11 +80,11 @@ CREATE FOREIGN DATA WRAPPER <replaceable class="parameter">name</replaceable>
<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
<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 and user mappings using the
foreign-data wrapper. If no validator function or <literal>NO
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,

View File

@ -39,7 +39,9 @@
/*
* Convert a DefElem list to the text array format that is used in
* pg_foreign_data_wrapper, pg_foreign_server, and pg_user_mapping.
* pg_foreign_data_wrapper, pg_foreign_server, pg_user_mapping, and
* pg_foreign_table.
*
* Returns the array in the form of a Datum, or PointerGetDatum(NULL)
* if the list is empty.
*
@ -88,7 +90,8 @@ optionListToArray(List *options)
* Returns the array in the form of a Datum, or PointerGetDatum(NULL)
* if the list is empty.
*
* This is used by CREATE/ALTER of FOREIGN DATA WRAPPER/SERVER/USER MAPPING.
* This is used by CREATE/ALTER of FOREIGN DATA WRAPPER/SERVER/USER MAPPING/
* FOREIGN TABLE.
*/
Datum
transformGenericOptions(Oid catalogId,
@ -681,8 +684,9 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt)
repl_repl[Anum_pg_foreign_data_wrapper_fdwvalidator - 1] = true;
/*
* It could be that the options for the FDW, SERVER and USER MAPPING
* are no longer valid with the new validator. Warn about this.
* It could be that existing options for the FDW or dependent SERVER,
* USER MAPPING or FOREIGN TABLE objects are no longer valid according
* to the new validator. Warn about this.
*/
if (OidIsValid(fdwvalidator))
ereport(WARNING,