mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Allow TRUNCATE command to truncate foreign tables.
This commit introduces new foreign data wrapper API for TRUNCATE. It extends TRUNCATE command so that it accepts foreign tables as the targets to truncate and invokes that API. Also it extends postgres_fdw so that it can issue TRUNCATE command to foreign servers, by adding new routine for that TRUNCATE API. The information about options specified in TRUNCATE command, e.g., ONLY, CACADE, etc is passed to FDW via API. The list of foreign tables to truncate is also passed to FDW. FDW truncates the foreign data sources that the passed foreign tables specify, based on those information. For example, postgres_fdw constructs TRUNCATE command using them and issues it to the foreign server. For performance, TRUNCATE command invokes the FDW routine for TRUNCATE once per foreign server that foreign tables to truncate belong to. Author: Kazutaka Onishi, Kohei KaiGai, slightly modified by Fujii Masao Reviewed-by: Bharath Rupireddy, Michael Paquier, Zhihong Yu, Alvaro Herrera, Stephen Frost, Ashutosh Bapat, Amit Langote, Daniel Gustafsson, Ibrar Ahmed, Fujii Masao Discussion: https://postgr.es/m/CAOP8fzb_gkReLput7OvOK+8NHgw-RKqNv59vem7=524krQTcWA@mail.gmail.com Discussion: https://postgr.es/m/CAJuF6cMWDDqU-vn_knZgma+2GMaout68YUgn1uyDnexRhqqM5Q@mail.gmail.com
This commit is contained in:
@ -63,9 +63,10 @@
|
||||
<para>
|
||||
Now you need only <command>SELECT</command> from a foreign table to access
|
||||
the data stored in its underlying remote table. You can also modify
|
||||
the remote table using <command>INSERT</command>, <command>UPDATE</command>, or
|
||||
<command>DELETE</command>. (Of course, the remote user you have specified
|
||||
in your user mapping must have privileges to do these things.)
|
||||
the remote table using <command>INSERT</command>, <command>UPDATE</command>,
|
||||
<command>DELETE</command>, or <command>TRUNCATE</command>.
|
||||
(Of course, the remote user you have specified in your user mapping must
|
||||
have privileges to do these things.)
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -436,6 +437,31 @@ OPTIONS (ADD password_required 'false');
|
||||
</variablelist>
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Truncatability Options</title>
|
||||
|
||||
<para>
|
||||
By default all foreign tables using <filename>postgres_fdw</filename> are assumed
|
||||
to be truncatable. This may be overridden using the following option:
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>truncatable</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This option controls whether <filename>postgres_fdw</filename> allows
|
||||
foreign tables to be truncated using <command>TRUNCATE</command>
|
||||
command. It can be specified for a foreign table or a foreign server.
|
||||
A table-level option overrides a server-level option.
|
||||
The default is <literal>true</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Importing Options</title>
|
||||
|
||||
|
Reference in New Issue
Block a user