On 2021/04/23 19:56, Bharath Rupireddy wrote:
On Fri, Apr 23, 2021 at 1:39 PM Fujii Masao <masao.fu...@oss.nttdata.com> wrote:
+ <para>
+ Note that information about <literal>ONLY</literal> options specified
+ in the original <command>TRUNCATE</command> command is not passed to
I think it is not "information about", no? We just don't pass ONLY
option instead we skip it. IMO, we can say "Note that the ONLY option
specified with a foreign table in the original TRUNCATE command is
skipped and not passed to ExecForeignTruncate."
Probably I still fail to understand your point.
But if "information about" is confusing, I'm ok to
remove that. Fixed.
A small typo in the docs patch: It is "are not passed to", instead of
"is not passed to" since we used plural "options". "Note that the ONLY
options specified in the original TRUNCATE command are not passed to"
+ Note that the <literal>ONLY</literal> options specified
in the original <command>TRUNCATE</command> command is not passed to
Thanks for the review! I fixed this.
Regards,
--
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION
diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index e08441ec8b..8aa7edfe4a 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -1076,27 +1076,25 @@ ExecForeignTruncate(List *rels,
bool restart_seqs);
</programlisting>
- Truncate a set of foreign tables specified in <literal>rels</literal>.
- This function is called when <xref linkend="sql-truncate"/> is executed
- on foreign tables. <literal>rels</literal> is the list of
- <structname>Relation</structname> data structure that indicates
- a foreign table to truncate.
+ Truncate foreign tables. This function is called when
+ <xref linkend="sql-truncate"/> is executed on a foreign table.
+ <literal>rels</literal> is a list of <structname>Relation</structname>
+ data structures of foreign tables to truncate.
</para>
<para>
- <literal>behavior</literal> defines how foreign tables should
- be truncated, using as possible values <literal>DROP_RESTRICT</literal>,
- which means that <literal>RESTRICT</literal> option is specified,
- and <literal>DROP_CASCADE</literal>, which means that
- <literal>CASCADE</literal> option is specified, in
- <command>TRUNCATE</command> command.
+ <literal>behavior</literal> is either <literal>DROP_RESTRICT</literal>
+ or <literal>DROP_CASCADE</literal> indicating that the
+ <literal>RESTRICT</literal> or <literal>CASCADE</literal> option was
+ requested in the original <command>TRUNCATE</command> command,
+ respectively.
</para>
<para>
- <literal>restart_seqs</literal> is set to <literal>true</literal>
- if <literal>RESTART IDENTITY</literal> option is specified in
- <command>TRUNCATE</command> command. It is <literal>false</literal>
- if <literal>CONTINUE IDENTITY</literal> option is specified.
+ If <literal>restart_seqs</literal> is <literal>true</literal>,
+ the original <command>TRUNCATE</command> command requested the
+ <literal>RESTART IDENTITY</literal> behavior, otherwise the
+ <literal>CONTINUE IDENTITY</literal> behavior was requested.
</para>
<para>
@@ -1109,11 +1107,10 @@ ExecForeignTruncate(List *rels,
</para>
<para>
- <command>TRUNCATE</command> invokes
- <function>ExecForeignTruncate</function> once per foreign server
- that foreign tables to truncate belong to. This means that all foreign
- tables included in <literal>rels</literal> must belong to the same
- server.
+ <function>ExecForeignTruncate</function> is invoked once per
+ foreign server for which foreign tables are to be truncated.
+ This means that all foreign tables included in <literal>rels</literal>
+ must belong to the same server.
</para>
<para>
diff --git a/doc/src/sgml/postgres-fdw.sgml b/doc/src/sgml/postgres-fdw.sgml
index b0806c1274..839126c4ef 100644
--- a/doc/src/sgml/postgres-fdw.sgml
+++ b/doc/src/sgml/postgres-fdw.sgml
@@ -459,11 +459,17 @@ OPTIONS (ADD password_required 'false');
<listitem>
<para>
This option controls whether <filename>postgres_fdw</filename> allows
- foreign tables to be truncated using <command>TRUNCATE</command>
+ foreign tables to be truncated using the <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>
+
+ <para>
+ Of course, if the remote table is not in fact truncatable, an error
+ would occur anyway. Use of this option primarily allows the error to
+ be thrown locally without querying the remote server.
+ </para>
</listitem>
</varlistentry>
</variablelist>
diff --git a/doc/src/sgml/ref/truncate.sgml b/doc/src/sgml/ref/truncate.sgml
index acf3633be4..9af42dd008 100644
--- a/doc/src/sgml/ref/truncate.sgml
+++ b/doc/src/sgml/ref/truncate.sgml
@@ -173,7 +173,7 @@ TRUNCATE [ TABLE ] [ ONLY ] <replaceable
class="parameter">name</replaceable> [
<para>
<command>TRUNCATE</command> can be used for foreign tables if
- the foreign data wrapper supports, for instance,
+ supported by the foreign data wrapper,
see <xref linkend="postgres-fdw"/>.
</para>
</refsect1>
diff --git a/contrib/postgres_fdw/deparse.c b/contrib/postgres_fdw/deparse.c
index bdc4c3620d..7a798530e3 100644
--- a/contrib/postgres_fdw/deparse.c
+++ b/contrib/postgres_fdw/deparse.c
@@ -2179,24 +2179,19 @@ deparseAnalyzeSql(StringInfo buf, Relation rel, List
**retrieved_attrs)
void
deparseTruncateSql(StringInfo buf,
List *rels,
- List *rels_extra,
DropBehavior behavior,
bool restart_seqs)
{
- ListCell *lc1,
- *lc2;
+ ListCell *cell;
appendStringInfoString(buf, "TRUNCATE ");
- forboth(lc1, rels, lc2, rels_extra)
+ foreach(cell, rels)
{
- Relation rel = lfirst(lc1);
- int extra = lfirst_int(lc2);
+ Relation rel = lfirst(cell);
- if (lc1 != list_head(rels))
+ if (cell != list_head(rels))
appendStringInfoString(buf, ", ");
- if (extra & TRUNCATE_REL_CONTEXT_ONLY)
- appendStringInfoString(buf, "ONLY ");
deparseRelation(buf, rel);
}
diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out
b/contrib/postgres_fdw/expected/postgres_fdw.out
index 5070d93239..8e1cc69508 100644
--- a/contrib/postgres_fdw/expected/postgres_fdw.out
+++ b/contrib/postgres_fdw/expected/postgres_fdw.out
@@ -8218,13 +8218,13 @@ drop table loc3;
-- test for TRUNCATE
-- ===================================================================
CREATE TABLE tru_rtable0 (id int primary key);
-CREATE TABLE tru_rtable1 (id int primary key);
CREATE FOREIGN TABLE tru_ftable (id int)
SERVER loopback OPTIONS (table_name 'tru_rtable0');
INSERT INTO tru_rtable0 (SELECT x FROM generate_series(1,10) x);
CREATE TABLE tru_ptable (id int) PARTITION BY HASH(id);
CREATE TABLE tru_ptable__p0 PARTITION OF tru_ptable
FOR VALUES WITH (MODULUS 2, REMAINDER 0);
+CREATE TABLE tru_rtable1 (id int primary key);
CREATE FOREIGN TABLE tru_ftable__p1 PARTITION OF tru_ptable
FOR VALUES WITH (MODULUS 2, REMAINDER 1)
SERVER loopback OPTIONS (table_name 'tru_rtable1');
@@ -8364,6 +8364,8 @@ SELECT count(*) from tru_pk_ftable; -- 0
(1 row)
-- truncate with ONLY clause
+-- Since ONLY is specified, the table tru_ftable_child that inherits
+-- tru_ftable_parent locally is not truncated.
TRUNCATE ONLY tru_ftable_parent;
SELECT sum(id) FROM tru_ftable_parent; -- 126
sum
@@ -8388,22 +8390,26 @@ SELECT sum(id) FROM tru_ftable; -- 95
95
(1 row)
-TRUNCATE ONLY tru_ftable; -- truncate only parent portion
-SELECT sum(id) FROM tru_ftable; -- 60
- sum
------
- 60
+-- Both parent and child tables in the foreign server are truncated
+-- even though ONLY is specified because ONLY has no effect
+-- when truncating a foreign table.
+TRUNCATE ONLY tru_ftable;
+SELECT count(*) FROM tru_ftable; -- 0
+ count
+-------
+ 0
(1 row)
INSERT INTO tru_rtable0 (SELECT x FROM generate_series(21,25) x);
-SELECT sum(id) FROM tru_ftable; -- 175
+INSERT INTO tru_rtable0_child (SELECT x FROM generate_series(26,30) x);
+SELECT sum(id) FROM tru_ftable; -- 255
sum
-----
- 175
+ 255
(1 row)
TRUNCATE tru_ftable; -- truncate both of parent and child
-SELECT count(*) FROM tru_ftable; -- empty
+SELECT count(*) FROM tru_ftable; -- 0
count
-------
0
diff --git a/contrib/postgres_fdw/postgres_fdw.c
b/contrib/postgres_fdw/postgres_fdw.c
index e201b5404e..8bcdc8d616 100644
--- a/contrib/postgres_fdw/postgres_fdw.c
+++ b/contrib/postgres_fdw/postgres_fdw.c
@@ -401,7 +401,6 @@ static void postgresExplainForeignModify(ModifyTableState
*mtstate,
static void postgresExplainDirectModify(ForeignScanState *node,
ExplainState *es);
static void postgresExecForeignTruncate(List *rels,
-
List *rels_extra,
DropBehavior behavior,
bool restart_seqs);
static bool postgresAnalyzeForeignTable(Relation relation,
@@ -2881,7 +2880,6 @@ postgresExplainDirectModify(ForeignScanState *node,
ExplainState *es)
*/
static void
postgresExecForeignTruncate(List *rels,
- List *rels_extra,
DropBehavior behavior,
bool restart_seqs)
{
@@ -2964,7 +2962,7 @@ postgresExecForeignTruncate(List *rels,
/* Construct the TRUNCATE command string */
initStringInfo(&sql);
- deparseTruncateSql(&sql, rels, rels_extra, behavior, restart_seqs);
+ deparseTruncateSql(&sql, rels, behavior, restart_seqs);
/* Issue the TRUNCATE command to remote server */
do_sql_command(conn, sql.data);
diff --git a/contrib/postgres_fdw/postgres_fdw.h
b/contrib/postgres_fdw/postgres_fdw.h
index 5d44b75314..9591c0f6c2 100644
--- a/contrib/postgres_fdw/postgres_fdw.h
+++ b/contrib/postgres_fdw/postgres_fdw.h
@@ -209,7 +209,6 @@ extern void deparseAnalyzeSql(StringInfo buf, Relation rel,
List
**retrieved_attrs);
extern void deparseTruncateSql(StringInfo buf,
List *rels,
- List *rels_extra,
DropBehavior
behavior,
bool restart_seqs);
extern void deparseStringLiteral(StringInfo buf, const char *val);
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql
b/contrib/postgres_fdw/sql/postgres_fdw.sql
index 74590089bd..dcd36a9753 100644
--- a/contrib/postgres_fdw/sql/postgres_fdw.sql
+++ b/contrib/postgres_fdw/sql/postgres_fdw.sql
@@ -2355,7 +2355,6 @@ drop table loc3;
-- test for TRUNCATE
-- ===================================================================
CREATE TABLE tru_rtable0 (id int primary key);
-CREATE TABLE tru_rtable1 (id int primary key);
CREATE FOREIGN TABLE tru_ftable (id int)
SERVER loopback OPTIONS (table_name 'tru_rtable0');
INSERT INTO tru_rtable0 (SELECT x FROM generate_series(1,10) x);
@@ -2363,6 +2362,7 @@ INSERT INTO tru_rtable0 (SELECT x FROM
generate_series(1,10) x);
CREATE TABLE tru_ptable (id int) PARTITION BY HASH(id);
CREATE TABLE tru_ptable__p0 PARTITION OF tru_ptable
FOR VALUES WITH (MODULUS 2, REMAINDER 0);
+CREATE TABLE tru_rtable1 (id int primary key);
CREATE FOREIGN TABLE tru_ftable__p1 PARTITION OF tru_ptable
FOR VALUES WITH (MODULUS 2, REMAINDER 1)
SERVER loopback OPTIONS (table_name 'tru_rtable1');
@@ -2428,6 +2428,8 @@ SELECT count(*) from tru_ftable; -- 0
SELECT count(*) from tru_pk_ftable; -- 0
-- truncate with ONLY clause
+-- Since ONLY is specified, the table tru_ftable_child that inherits
+-- tru_ftable_parent locally is not truncated.
TRUNCATE ONLY tru_ftable_parent;
SELECT sum(id) FROM tru_ftable_parent; -- 126
TRUNCATE tru_ftable_parent;
@@ -2439,13 +2441,17 @@ INSERT INTO tru_rtable0 (SELECT x FROM
generate_series(5,9) x);
INSERT INTO tru_rtable0_child (SELECT x FROM generate_series(10,14) x);
SELECT sum(id) FROM tru_ftable; -- 95
-TRUNCATE ONLY tru_ftable; -- truncate only parent portion
-SELECT sum(id) FROM tru_ftable; -- 60
+-- Both parent and child tables in the foreign server are truncated
+-- even though ONLY is specified because ONLY has no effect
+-- when truncating a foreign table.
+TRUNCATE ONLY tru_ftable;
+SELECT count(*) FROM tru_ftable; -- 0
INSERT INTO tru_rtable0 (SELECT x FROM generate_series(21,25) x);
-SELECT sum(id) FROM tru_ftable; -- 175
+INSERT INTO tru_rtable0_child (SELECT x FROM generate_series(26,30) x);
+SELECT sum(id) FROM tru_ftable; -- 255
TRUNCATE tru_ftable; -- truncate both of parent and child
-SELECT count(*) FROM tru_ftable; -- empty
+SELECT count(*) FROM tru_ftable; -- 0
-- cleanup
DROP FOREIGN TABLE tru_ftable_parent, tru_ftable_child,
tru_pk_ftable,tru_ftable__p1,tru_ftable;
diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 9f9274ce55..e08441ec8b 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -1071,28 +1071,16 @@ EndDirectModify(ForeignScanState *node);
<para>
<programlisting>
void
-ExecForeignTruncate(List *rels, List *rels_extra,
- DropBehavior behavior, bool restart_seqs);
+ExecForeignTruncate(List *rels,
+ DropBehavior behavior,
+ bool restart_seqs);
</programlisting>
Truncate a set of foreign tables specified in <literal>rels</literal>.
This function is called when <xref linkend="sql-truncate"/> is executed
on foreign tables. <literal>rels</literal> is the list of
<structname>Relation</structname> data structure that indicates
- a foreign table to truncate. <literal>rels_extra</literal> the list of
- <literal>int</literal> value, which delivers extra information about
- a foreign table to truncate. Possible values are
- <literal>TRUNCATE_REL_CONTEXT_NORMAL</literal>, which means that
- the foreign table is specified WITHOUT <literal>ONLY</literal> clause
- in <command>TRUNCATE</command>,
- <literal>TRUNCATE_REL_CONTEXT_ONLY</literal>, which means that
- the foreign table is specified WITH <literal>ONLY</literal> clause,
- and <literal>TRUNCATE_REL_CONTEXT_CASCADING</literal>,
- which means that the foreign table is not specified explicitly,
- but will be truncated due to dependency (for example, partition table).
- There is one-to-one mapping between <literal>rels</literal> and
- <literal>rels_extra</literal>. The number of entries is the same
- between the two lists.
+ a foreign table to truncate.
</para>
<para>
@@ -1111,6 +1099,15 @@ ExecForeignTruncate(List *rels, List *rels_extra,
if <literal>CONTINUE IDENTITY</literal> option is specified.
</para>
+ <para>
+ Note that the <literal>ONLY</literal> options specified
+ in the original <command>TRUNCATE</command> command are not passed to
+ <function>ExecForeignTruncate</function>. This behavior is similar to
+ the callback functions of <command>SELECT</command>,
+ <command>UPDATE</command> and <command>DELETE</command> on
+ a foreign table.
+ </para>
+
<para>
<command>TRUNCATE</command> invokes
<function>ExecForeignTruncate</function> once per foreign server
diff --git a/doc/src/sgml/postgres-fdw.sgml b/doc/src/sgml/postgres-fdw.sgml
index 5320accf6f..b0806c1274 100644
--- a/doc/src/sgml/postgres-fdw.sgml
+++ b/doc/src/sgml/postgres-fdw.sgml
@@ -69,6 +69,13 @@
have privileges to do these things.)
</para>
+ <para>
+ Note that the <literal>ONLY</literal> option specified in
+ <command>SELECT</command>, <command>UPDATE</command>,
+ <command>DELETE</command> or <command>TRUNCATE</command>
+ has no effect when accessing or modifying the remote table.
+ </para>
+
<para>
Note that <filename>postgres_fdw</filename> currently lacks support for
<command>INSERT</command> statements with an <literal>ON CONFLICT DO
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 7d00f4eb25..8e717ada28 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -323,7 +323,6 @@ typedef struct ForeignTruncateInfo
{
Oid serverid;
List *rels;
- List *rels_extra;
} ForeignTruncateInfo;
/*
@@ -1620,7 +1619,6 @@ ExecuteTruncate(TruncateStmt *stmt)
{
List *rels = NIL;
List *relids = NIL;
- List *relids_extra = NIL;
List *relids_logged = NIL;
ListCell *cell;
@@ -1654,9 +1652,7 @@ ExecuteTruncate(TruncateStmt *stmt)
rels = lappend(rels, rel);
relids = lappend_oid(relids, myrelid);
- relids_extra = lappend_int(relids_extra, (recurse ?
-
TRUNCATE_REL_CONTEXT_NORMAL :
-
TRUNCATE_REL_CONTEXT_ONLY));
+
/* Log this relation only if needed for logical decoding */
if (RelationIsLogicallyLogged(rel))
relids_logged = lappend_oid(relids_logged, myrelid);
@@ -1704,8 +1700,7 @@ ExecuteTruncate(TruncateStmt *stmt)
rels = lappend(rels, rel);
relids = lappend_oid(relids, childrelid);
- relids_extra = lappend_int(relids_extra,
-
TRUNCATE_REL_CONTEXT_CASCADING);
+
/* Log this relation only if needed for logical
decoding */
if (RelationIsLogicallyLogged(rel))
relids_logged =
lappend_oid(relids_logged, childrelid);
@@ -1718,7 +1713,7 @@ ExecuteTruncate(TruncateStmt *stmt)
errhint("Do not specify the ONLY
keyword, or use TRUNCATE ONLY on the partitions directly.")));
}
- ExecuteTruncateGuts(rels, relids, relids_extra, relids_logged,
+ ExecuteTruncateGuts(rels, relids, relids_logged,
stmt->behavior,
stmt->restart_seqs);
/* And close the rels */
@@ -1739,15 +1734,13 @@ ExecuteTruncate(TruncateStmt *stmt)
*
* explicit_rels is the list of Relations to truncate that the command
* specified. relids is the list of Oids corresponding to explicit_rels.
- * relids_extra is the list of integer values that deliver extra information
- * about relations in explicit_rels. relids_logged is the list of Oids
- * (a subset of relids) that require WAL-logging. This is all a bit redundant,
- * but the existing callers have this information handy in this form.
+ * relids_logged is the list of Oids (a subset of relids) that require
+ * WAL-logging. This is all a bit redundant, but the existing callers have
+ * this information handy in this form.
*/
void
ExecuteTruncateGuts(List *explicit_rels,
List *relids,
- List *relids_extra,
List *relids_logged,
DropBehavior behavior, bool
restart_seqs)
{
@@ -1760,8 +1753,6 @@ ExecuteTruncateGuts(List *explicit_rels,
ResultRelInfo *resultRelInfo;
SubTransactionId mySubid;
ListCell *cell;
- ListCell *lc1,
- *lc2;
Oid *logrelids;
/*
@@ -1799,8 +1790,7 @@ ExecuteTruncateGuts(List *explicit_rels,
truncate_check_activity(rel);
rels = lappend(rels, rel);
relids = lappend_oid(relids, relid);
- relids_extra = lappend_int(relids_extra,
-
TRUNCATE_REL_CONTEXT_CASCADING);
+
/* Log this relation only if needed for logical
decoding */
if (RelationIsLogicallyLogged(rel))
relids_logged =
lappend_oid(relids_logged, relid);
@@ -1901,11 +1891,9 @@ ExecuteTruncateGuts(List *explicit_rels,
*/
mySubid = GetCurrentSubTransactionId();
- Assert(list_length(rels) == list_length(relids_extra));
- forboth(lc1, rels, lc2, relids_extra)
+ foreach(cell, rels)
{
- Relation rel = (Relation) lfirst(lc1);
- int extra = lfirst_int(lc2);
+ Relation rel = (Relation) lfirst(cell);
/*
* Save OID of partitioned tables for later; nothing else to do
for
@@ -1952,7 +1940,6 @@ ExecuteTruncateGuts(List *explicit_rels,
{
ft_info->serverid = serverid;
ft_info->rels = NIL;
- ft_info->rels_extra = NIL;
}
/*
@@ -1960,7 +1947,6 @@ ExecuteTruncateGuts(List *explicit_rels,
* foreign table belongs to.
*/
ft_info->rels = lappend(ft_info->rels, rel);
- ft_info->rels_extra = lappend_int(ft_info->rels_extra,
extra);
continue;
}
@@ -2044,7 +2030,6 @@ ExecuteTruncateGuts(List *explicit_rels,
Assert(routine->ExecForeignTruncate != NULL);
routine->ExecForeignTruncate(ft_info->rels,
-
ft_info->rels_extra,
behavior,
restart_seqs);
}
diff --git a/src/backend/replication/logical/worker.c
b/src/backend/replication/logical/worker.c
index d09703f7ac..d9f157172b 100644
--- a/src/backend/replication/logical/worker.c
+++ b/src/backend/replication/logical/worker.c
@@ -1816,7 +1816,6 @@ apply_handle_truncate(StringInfo s)
List *rels = NIL;
List *part_rels = NIL;
List *relids = NIL;
- List *relids_extra = NIL;
List *relids_logged = NIL;
ListCell *lc;
@@ -1846,7 +1845,6 @@ apply_handle_truncate(StringInfo s)
remote_rels = lappend(remote_rels, rel);
rels = lappend(rels, rel->localrel);
relids = lappend_oid(relids, rel->localreloid);
- relids_extra = lappend_int(relids_extra,
TRUNCATE_REL_CONTEXT_NORMAL);
if (RelationIsLogicallyLogged(rel->localrel))
relids_logged = lappend_oid(relids_logged,
rel->localreloid);
@@ -1885,7 +1883,6 @@ apply_handle_truncate(StringInfo s)
rels = lappend(rels, childrel);
part_rels = lappend(part_rels, childrel);
relids = lappend_oid(relids, childrelid);
- relids_extra = lappend_int(relids_extra,
TRUNCATE_REL_CONTEXT_CASCADING);
/* Log this relation only if needed for logical
decoding */
if (RelationIsLogicallyLogged(childrel))
relids_logged =
lappend_oid(relids_logged, childrelid);
@@ -1900,7 +1897,6 @@ apply_handle_truncate(StringInfo s)
*/
ExecuteTruncateGuts(rels,
relids,
- relids_extra,
relids_logged,
DROP_RESTRICT,
restart_seqs);
diff --git a/src/include/commands/tablecmds.h b/src/include/commands/tablecmds.h
index b808a07e46..14f4b4882f 100644
--- a/src/include/commands/tablecmds.h
+++ b/src/include/commands/tablecmds.h
@@ -21,16 +21,6 @@
#include "storage/lock.h"
#include "utils/relcache.h"
-/*
- * These values indicate how a relation was specified as the target to
- * truncate in TRUNCATE command.
- */
-#define TRUNCATE_REL_CONTEXT_NORMAL 1 /* specified without ONLY clause */
-#define TRUNCATE_REL_CONTEXT_ONLY 2 /* specified with ONLY clause */
-#define TRUNCATE_REL_CONTEXT_CASCADING 3 /* not specified but truncated
-
* due to dependency (e.g.,
-
* partition table) */
-
struct AlterTableUtilityContext; /* avoid including tcop/utility.h here
*/
@@ -68,7 +58,6 @@ extern void CheckTableNotInUse(Relation rel, const char
*stmt);
extern void ExecuteTruncate(TruncateStmt *stmt);
extern void ExecuteTruncateGuts(List *explicit_rels,
List *relids,
- List
*relids_extra,
List
*relids_logged,
DropBehavior
behavior,
bool
restart_seqs);
diff --git a/src/include/foreign/fdwapi.h b/src/include/foreign/fdwapi.h
index 4ebbca6de9..4f17becbb8 100644
--- a/src/include/foreign/fdwapi.h
+++ b/src/include/foreign/fdwapi.h
@@ -161,7 +161,6 @@ typedef List *(*ImportForeignSchema_function)
(ImportForeignSchemaStmt *stmt,
Oid serverOid);
typedef void (*ExecForeignTruncate_function) (List *rels,
-
List *rels_extra,
DropBehavior behavior,
bool restart_seqs);