fix_foreign_table_doc.patch
text/plain
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
| File | + | − |
|---|---|---|
| doc/src/sgml/ref/alter_foreign_table.sgml | 0 | 0 |
| doc/src/sgml/ref/create_foreign_table.sgml | 0 | 0 |
diff --git a/doc/src/sgml/ref/alter_foreign_table.sgml b/doc/src/sgml/ref/alter_foreign_table.sgml
index c2ebdac..af7d5fa 100644
*** a/doc/src/sgml/ref/alter_foreign_table.sgml
--- b/doc/src/sgml/ref/alter_foreign_table.sgml
*************** ALTER FOREIGN TABLE <replaceable class="
*** 32,38 ****
<phrase>where <replaceable class="PARAMETER">action</replaceable> is one of:</phrase>
! ADD [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> <replaceable class="PARAMETER">type</replaceable>
DROP [ COLUMN ] [ IF EXISTS ] <replaceable class="PARAMETER">column</replaceable> [ RESTRICT | CASCADE ]
ALTER [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> [ SET DATA ] TYPE <replaceable class="PARAMETER">type</replaceable>
ALTER [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> { SET | DROP } NOT NULL
--- 32,38 ----
<phrase>where <replaceable class="PARAMETER">action</replaceable> is one of:</phrase>
! ADD [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> <replaceable class="PARAMETER">type</replaceable> [ NULL | NOT NULL ]
DROP [ COLUMN ] [ IF EXISTS ] <replaceable class="PARAMETER">column</replaceable> [ RESTRICT | CASCADE ]
ALTER [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> [ SET DATA ] TYPE <replaceable class="PARAMETER">type</replaceable>
ALTER [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> { SET | DROP } NOT NULL
*************** ALTER FOREIGN TABLE <replaceable class="
*** 125,131 ****
<term><literal>OPTIONS ( [ ADD | SET | DROP ] <replaceable class="PARAMETER">option</replaceable> ['<replaceable class="PARAMETER">value</replaceable>'] [, ... ] )</literal></term>
<listitem>
<para>
! Change options for the foreign table or the column of the foreign table.
<literal>ADD</>, <literal>SET</>, and <literal>DROP</>
specify the action to be performed. <literal>ADD</> is assumed
if no operation is explicitly specified. Option names must be
--- 125,131 ----
<term><literal>OPTIONS ( [ ADD | SET | DROP ] <replaceable class="PARAMETER">option</replaceable> ['<replaceable class="PARAMETER">value</replaceable>'] [, ... ] )</literal></term>
<listitem>
<para>
! Change options for the foreign table.
<literal>ADD</>, <literal>SET</>, and <literal>DROP</>
specify the action to be performed. <literal>ADD</> is assumed
if no operation is explicitly specified. Option names must be
*************** ALTER FOREIGN TABLE <replaceable class="
*** 150,157 ****
You must own the table to use <command>ALTER FOREIGN TABLE</>.
To change the schema of a foreign table, you must also have
<literal>CREATE</literal> privilege on the new schema.
- To add the table as a new child of a parent table, you must own the
- parent table as well.
To alter the owner, you must also be a direct or indirect member of the new
owning role, and that role must have <literal>CREATE</literal> privilege on
the table's schema. (These restrictions enforce that altering the owner
--- 150,155 ----
*************** ALTER FOREIGN TABLE <replaceable class="
*** 260,269 ****
</para>
<para>
! Consistency with the foreign server is not checked when a column is
! added or removed with <literal>ADD COLUMN</literal> or
! <literal>DROP COLUMN</literal>, a system <literal>oid</> column is added
! or removed, a <literal>CHECK</> or <literal>NOT NULL</> constraint is
added, or column type is changed with <literal>SET DATA TYPE</>. It is the
user's responsibility to ensure that the table definition matches the
remote side.
--- 258,266 ----
</para>
<para>
! Consistency with the foreign server is not checked when a column is added
! or removed with <literal>ADD COLUMN</literal> or
! <literal>DROP COLUMN</literal>, <literal>NOT NULL</> constraint is
added, or column type is changed with <literal>SET DATA TYPE</>. It is the
user's responsibility to ensure that the table definition matches the
remote side.
diff --git a/doc/src/sgml/ref/create_foreign_table.sgml b/doc/src/sgml/ref/create_foreign_table.sgml
index ad91072..50d8628 100644
*** a/doc/src/sgml/ref/create_foreign_table.sgml
--- b/doc/src/sgml/ref/create_foreign_table.sgml
*************** CREATE FOREIGN TABLE [ IF NOT EXISTS ] <
*** 94,100 ****
<listitem>
<para>
The data type of the column. This can include array
! specifiers. For more information on the data types supported by
<productname>PostgreSQL</productname>, refer to <xref
linkend="datatype">.
</para>
--- 94,106 ----
<listitem>
<para>
The data type of the column. This can include array
! specifiers.
! Unlike an ordinary table, default values cannot be used on a foreign
! tables. Serial and bigserial implicitly set default value on the column,
! therefore they cannot be used on a foreign table.
! </para>
! <para>
! For more information on the data types supported by
<productname>PostgreSQL</productname>, refer to <xref
linkend="datatype">.
</para>
*************** CREATE FOREIGN TABLE [ IF NOT EXISTS ] <
*** 107,112 ****
--- 113,130 ----
<para>
The column is not allowed to contain null values.
</para>
+ <para>
+ Note that defining <literal>NOT NULL</> constraint on a column doesn't
+ guarantee that the data on the foreign side don't include any null value.
+ This means that query results might include null values even if the
+ column was defined as <literal>NOT NULL</>. To ensure the integrity of
+ query result, FDW needs to throw an error when invalid data was returned
+ from the foreign server.
+ </para>
+ <para>
+ At present, <literal>NOT NULL</> constraint is used only for query plan
+ optimization.
+ </para>
</listitem>
</varlistentry>