From b93f5a5673b4bb09e14eb80fe28aa21fc20a6271 Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: Wed, 23 Feb 2011 14:18:09 -0300
Subject: [PATCH] Move Trigger and TriggerDesc structs out of rel.h into a new
 reltrigger.h

This lets us stop including rel.h into execnodes.h, which is a widely
used header.
---
 contrib/dblink/dblink.c                   |  1 +
 contrib/file_fdw/file_fdw.c               |  1 +
 contrib/lo/lo.c                           |  7 +--
 contrib/pageinspect/btreefuncs.c          |  1 +
 contrib/pageinspect/rawpage.c             |  1 +
 contrib/pgrowlocks/pgrowlocks.c           |  1 +
 contrib/pgstattuple/pgstatindex.c         |  1 +
 contrib/spi/autoinc.c                     |  1 +
 contrib/spi/insert_username.c             |  1 +
 contrib/spi/moddatetime.c                 |  1 +
 contrib/spi/refint.c                      |  1 +
 contrib/spi/timetravel.c                  |  1 +
 src/backend/access/gin/ginfast.c          |  1 +
 src/backend/access/gin/gininsert.c        |  1 +
 src/backend/access/gist/gist.c            |  1 +
 src/backend/access/gist/gistget.c         |  1 +
 src/backend/access/hash/hash.c            |  1 +
 src/backend/access/hash/hashutil.c        |  1 +
 src/backend/access/nbtree/nbtutils.c      |  1 +
 src/backend/bootstrap/bootstrap.c         |  1 +
 src/backend/catalog/heap.c                |  2 +-
 src/backend/catalog/indexing.c            |  1 +
 src/backend/catalog/pg_proc.c             |  1 +
 src/backend/catalog/toasting.c            |  1 +
 src/backend/commands/alter.c              |  1 +
 src/backend/commands/constraint.c         |  1 +
 src/backend/commands/copy.c               |  1 +
 src/backend/commands/explain.c            |  3 +-
 src/backend/commands/extension.c          |  1 +
 src/backend/commands/schemacmds.c         |  1 +
 src/backend/commands/trigger.c            |  1 +
 src/backend/commands/typecmds.c           |  1 +
 src/backend/executor/execAmi.c            |  1 +
 src/backend/executor/execCurrent.c        |  1 +
 src/backend/executor/nodeBitmapHeapscan.c |  1 +
 src/backend/executor/nodeForeignscan.c    |  1 +
 src/backend/executor/nodeIndexscan.c      |  1 +
 src/backend/executor/nodeLockRows.c       |  1 +
 src/backend/executor/nodeMergeAppend.c    |  1 +
 src/backend/executor/nodeModifyTable.c    |  1 +
 src/backend/executor/nodeSeqscan.c        |  1 +
 src/backend/executor/nodeTidscan.c        |  1 +
 src/backend/executor/spi.c                |  1 +
 src/backend/optimizer/plan/planner.c      |  1 +
 src/backend/optimizer/util/predtest.c     |  1 +
 src/backend/parser/parse_relation.c       |  1 +
 src/backend/parser/parse_target.c         |  1 +
 src/backend/parser/parse_utilcmd.c        |  2 +-
 src/backend/postmaster/autovacuum.c       |  1 +
 src/backend/rewrite/rewriteHandler.c      |  3 +-
 src/backend/utils/adt/ri_triggers.c       |  1 +
 src/backend/utils/adt/ruleutils.c         |  3 +-
 src/backend/utils/adt/selfuncs.c          |  1 +
 src/backend/utils/adt/trigfuncs.c         |  1 +
 src/backend/utils/adt/tsvector_op.c       |  1 +
 src/backend/utils/adt/xml.c               |  1 +
 src/backend/utils/cache/lsyscache.c       |  1 +
 src/backend/utils/fmgr/funcapi.c          |  1 +
 src/include/nodes/execnodes.h             |  2 +-
 src/include/utils/rel.h                   | 55 +----------------
 src/include/utils/reltrigger.h            | 74 +++++++++++++++++++++++
 src/pl/plperl/plperl.c                    |  1 +
 src/pl/plpgsql/src/pl_comp.c              |  1 +
 src/pl/plpgsql/src/pl_exec.c              |  1 +
 src/pl/plpython/plpython.c                |  1 +
 src/pl/tcl/pltcl.c                        |  1 +
 src/test/regress/regress.c                |  1 +
 67 files changed, 144 insertions(+), 65 deletions(-)
 create mode 100644 src/include/utils/reltrigger.h

diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index b8d0342085d..76617e3f367 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -63,6 +63,7 @@
 #include "utils/hsearch.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 #include "utils/tqual.h"
 
diff --git a/contrib/file_fdw/file_fdw.c b/contrib/file_fdw/file_fdw.c
index 466c015107d..f2d7f3a6a88 100644
--- a/contrib/file_fdw/file_fdw.c
+++ b/contrib/file_fdw/file_fdw.c
@@ -24,6 +24,7 @@
 #include "foreign/foreign.h"
 #include "miscadmin.h"
 #include "optimizer/cost.h"
+#include "utils/rel.h"
 
 PG_MODULE_MAGIC;
 
diff --git a/contrib/lo/lo.c b/contrib/lo/lo.c
index 0e3559c0201..6946150fed5 100644
--- a/contrib/lo/lo.c
+++ b/contrib/lo/lo.c
@@ -7,15 +7,12 @@
 
 #include "postgres.h"
 
-/* Required for SPI */
+#include "commands/trigger.h"
 #include "executor/spi.h"
-
-/* Required for largeobjects */
 #include "libpq/be-fsstubs.h"
 #include "libpq/libpq-fs.h"
+#include "utils/rel.h"
 
-/* Required for triggers */
-#include "commands/trigger.h"
 
 PG_MODULE_MAGIC;
 
diff --git a/contrib/pageinspect/btreefuncs.c b/contrib/pageinspect/btreefuncs.c
index ef27cd4080c..514406a67a8 100644
--- a/contrib/pageinspect/btreefuncs.c
+++ b/contrib/pageinspect/btreefuncs.c
@@ -35,6 +35,7 @@
 #include "miscadmin.h"
 #include "storage/bufmgr.h"
 #include "utils/builtins.h"
+#include "utils/rel.h"
 
 
 extern Datum bt_metap(PG_FUNCTION_ARGS);
diff --git a/contrib/pageinspect/rawpage.c b/contrib/pageinspect/rawpage.c
index 2607576c378..8fc3a48d562 100644
--- a/contrib/pageinspect/rawpage.c
+++ b/contrib/pageinspect/rawpage.c
@@ -25,6 +25,7 @@
 #include "miscadmin.h"
 #include "storage/bufmgr.h"
 #include "utils/builtins.h"
+#include "utils/rel.h"
 
 PG_MODULE_MAGIC;
 
diff --git a/contrib/pgrowlocks/pgrowlocks.c b/contrib/pgrowlocks/pgrowlocks.c
index 302bb5c39c9..4a49ee342fe 100644
--- a/contrib/pgrowlocks/pgrowlocks.c
+++ b/contrib/pgrowlocks/pgrowlocks.c
@@ -35,6 +35,7 @@
 #include "storage/procarray.h"
 #include "utils/acl.h"
 #include "utils/builtins.h"
+#include "utils/rel.h"
 #include "utils/tqual.h"
 
 
diff --git a/contrib/pgstattuple/pgstatindex.c b/contrib/pgstattuple/pgstatindex.c
index fd2cc9246bc..f0d6341bd16 100644
--- a/contrib/pgstattuple/pgstatindex.c
+++ b/contrib/pgstattuple/pgstatindex.c
@@ -34,6 +34,7 @@
 #include "miscadmin.h"
 #include "storage/bufmgr.h"
 #include "utils/builtins.h"
+#include "utils/rel.h"
 
 
 extern Datum pgstatindex(PG_FUNCTION_ARGS);
diff --git a/contrib/spi/autoinc.c b/contrib/spi/autoinc.c
index 9b38493a332..54bbc4345c8 100644
--- a/contrib/spi/autoinc.c
+++ b/contrib/spi/autoinc.c
@@ -8,6 +8,7 @@
 #include "commands/trigger.h"
 #include "executor/spi.h"
 #include "utils/builtins.h"
+#include "utils/rel.h"
 
 PG_MODULE_MAGIC;
 
diff --git a/contrib/spi/insert_username.c b/contrib/spi/insert_username.c
index 18a13344cf1..3bc51c7f020 100644
--- a/contrib/spi/insert_username.c
+++ b/contrib/spi/insert_username.c
@@ -13,6 +13,7 @@
 #include "executor/spi.h"
 #include "miscadmin.h"
 #include "utils/builtins.h"
+#include "utils/rel.h"
 
 PG_MODULE_MAGIC;
 
diff --git a/contrib/spi/moddatetime.c b/contrib/spi/moddatetime.c
index d02560c2981..d0bc4078f9e 100644
--- a/contrib/spi/moddatetime.c
+++ b/contrib/spi/moddatetime.c
@@ -18,6 +18,7 @@ OH, me, I'm Terry Mackintosh <terry@terrym.com>
 #include "catalog/pg_type.h"
 #include "executor/spi.h"
 #include "commands/trigger.h"
+#include "utils/rel.h"
 
 PG_MODULE_MAGIC;
 
diff --git a/contrib/spi/refint.c b/contrib/spi/refint.c
index 36f9ee421e7..ed7e00782b3 100644
--- a/contrib/spi/refint.c
+++ b/contrib/spi/refint.c
@@ -12,6 +12,7 @@
 #include "commands/trigger.h"
 #include "executor/spi.h"
 #include "utils/builtins.h"
+#include "utils/rel.h"
 
 PG_MODULE_MAGIC;
 
diff --git a/contrib/spi/timetravel.c b/contrib/spi/timetravel.c
index 3d05cc505ce..69ec6278685 100644
--- a/contrib/spi/timetravel.c
+++ b/contrib/spi/timetravel.c
@@ -17,6 +17,7 @@
 #include "miscadmin.h"
 #include "utils/builtins.h"
 #include "utils/nabstime.h"
+#include "utils/rel.h"
 
 PG_MODULE_MAGIC;
 
diff --git a/src/backend/access/gin/ginfast.c b/src/backend/access/gin/ginfast.c
index 82419e37acb..60a6d80a189 100644
--- a/src/backend/access/gin/ginfast.c
+++ b/src/backend/access/gin/ginfast.c
@@ -24,6 +24,7 @@
 #include "miscadmin.h"
 #include "storage/bufmgr.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 
 
 #define GIN_PAGE_FREESIZE \
diff --git a/src/backend/access/gin/gininsert.c b/src/backend/access/gin/gininsert.c
index 3e32af94a96..bea5f681fda 100644
--- a/src/backend/access/gin/gininsert.c
+++ b/src/backend/access/gin/gininsert.c
@@ -21,6 +21,7 @@
 #include "storage/smgr.h"
 #include "storage/indexfsm.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 
 
 typedef struct
diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c
index cdb0343d104..b756f6e0e30 100644
--- a/src/backend/access/gist/gist.c
+++ b/src/backend/access/gist/gist.c
@@ -22,6 +22,7 @@
 #include "storage/bufmgr.h"
 #include "storage/indexfsm.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 
 /* Working state for gistbuild and its callback */
 typedef struct
diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c
index 1aba6868447..5d5fd5b738e 100644
--- a/src/backend/access/gist/gistget.c
+++ b/src/backend/access/gist/gistget.c
@@ -22,6 +22,7 @@
 #include "storage/bufmgr.h"
 #include "utils/builtins.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 
 
 /*
diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c
index 4cb29b2bb45..bfb10897d20 100644
--- a/src/backend/access/hash/hash.c
+++ b/src/backend/access/hash/hash.c
@@ -25,6 +25,7 @@
 #include "optimizer/cost.h"
 #include "optimizer/plancat.h"
 #include "storage/bufmgr.h"
+#include "utils/rel.h"
 
 
 /* Working state for hashbuild and its callback */
diff --git a/src/backend/access/hash/hashutil.c b/src/backend/access/hash/hashutil.c
index 6283f4a82b5..aa68be596ea 100644
--- a/src/backend/access/hash/hashutil.c
+++ b/src/backend/access/hash/hashutil.c
@@ -20,6 +20,7 @@
 #include "executor/execdebug.h"
 #include "storage/bufmgr.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 
 
 /*
diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c
index f87eadcdec2..3996203a7ef 100644
--- a/src/backend/access/nbtree/nbtutils.c
+++ b/src/backend/access/nbtree/nbtutils.c
@@ -27,6 +27,7 @@
 #include "storage/lwlock.h"
 #include "storage/shmem.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 
 
 static bool _bt_compare_scankey_args(IndexScanDesc scan, ScanKey op,
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index fc093ccc4b9..08ae863f549 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -43,6 +43,7 @@
 #include "utils/fmgroids.h"
 #include "utils/memutils.h"
 #include "utils/ps_status.h"
+#include "utils/rel.h"
 #include "utils/relmapper.h"
 #include "utils/tqual.h"
 
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 6b8eb53dd1b..a8c27006a75 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -70,7 +70,7 @@
 #include "utils/fmgroids.h"
 #include "utils/inval.h"
 #include "utils/lsyscache.h"
-#include "utils/relcache.h"
+#include "utils/rel.h"
 #include "utils/snapmgr.h"
 #include "utils/syscache.h"
 #include "utils/tqual.h"
diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c
index 21f5cce69c8..351e6f63ac6 100644
--- a/src/backend/catalog/indexing.c
+++ b/src/backend/catalog/indexing.c
@@ -19,6 +19,7 @@
 #include "catalog/index.h"
 #include "catalog/indexing.h"
 #include "executor/executor.h"
+#include "utils/rel.h"
 
 
 /*
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index 92be0a76dae..ec229810cac 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -35,6 +35,7 @@
 #include "utils/acl.h"
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 
 
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index b059f9d784b..ce082fd2c25 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -29,6 +29,7 @@
 #include "miscadmin.h"
 #include "nodes/makefuncs.h"
 #include "utils/builtins.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 
 /* Potentially set by contrib/pg_upgrade_support functions */
diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c
index 215e21cae08..2373d52c0f2 100644
--- a/src/backend/commands/alter.c
+++ b/src/backend/commands/alter.c
@@ -38,6 +38,7 @@
 #include "utils/acl.h"
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 
 
diff --git a/src/backend/commands/constraint.c b/src/backend/commands/constraint.c
index e8a19a9f03b..b76cdeeb639 100644
--- a/src/backend/commands/constraint.c
+++ b/src/backend/commands/constraint.c
@@ -17,6 +17,7 @@
 #include "commands/trigger.h"
 #include "executor/executor.h"
 #include "utils/builtins.h"
+#include "utils/rel.h"
 #include "utils/tqual.h"
 
 
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index 57429035e89..528a3a1f539 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -42,6 +42,7 @@
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/snapmgr.h"
 
 
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index a770daf88d9..fee829f9606 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -32,8 +32,9 @@
 #include "utils/builtins.h"
 #include "utils/guc.h"
 #include "utils/lsyscache.h"
-#include "utils/tuplesort.h"
+#include "utils/rel.h"
 #include "utils/snapmgr.h"
+#include "utils/tuplesort.h"
 #include "utils/xml.h"
 
 
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index 08fb3d5d360..a0385eb0a18 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -51,6 +51,7 @@
 #include "utils/fmgroids.h"
 #include "utils/guc.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 #include "utils/snapmgr.h"
 #include "utils/tqual.h"
 
diff --git a/src/backend/commands/schemacmds.c b/src/backend/commands/schemacmds.c
index 82bbf8fa506..5dd5763a7bc 100644
--- a/src/backend/commands/schemacmds.c
+++ b/src/backend/commands/schemacmds.c
@@ -29,6 +29,7 @@
 #include "utils/acl.h"
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 
 
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 798d8a85a4f..8072c776879 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -51,6 +51,7 @@
 #include "utils/inval.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/snapmgr.h"
 #include "utils/syscache.h"
 #include "utils/tqual.h"
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index 2a2ff5387e5..7c27f85cdc6 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -63,6 +63,7 @@
 #include "utils/fmgroids.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 #include "utils/tqual.h"
 
diff --git a/src/backend/executor/execAmi.c b/src/backend/executor/execAmi.c
index 01775ce4494..ffdcc966ee6 100644
--- a/src/backend/executor/execAmi.c
+++ b/src/backend/executor/execAmi.c
@@ -48,6 +48,7 @@
 #include "executor/nodeWindowAgg.h"
 #include "executor/nodeWorktablescan.h"
 #include "nodes/nodeFuncs.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 
 
diff --git a/src/backend/executor/execCurrent.c b/src/backend/executor/execCurrent.c
index 5312d9aeec0..61a5f471124 100644
--- a/src/backend/executor/execCurrent.c
+++ b/src/backend/executor/execCurrent.c
@@ -18,6 +18,7 @@
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
 #include "utils/portal.h"
+#include "utils/rel.h"
 
 
 static char *fetch_cursor_param_value(ExprContext *econtext, int paramId);
diff --git a/src/backend/executor/nodeBitmapHeapscan.c b/src/backend/executor/nodeBitmapHeapscan.c
index 568035a481b..c9b540e0798 100644
--- a/src/backend/executor/nodeBitmapHeapscan.c
+++ b/src/backend/executor/nodeBitmapHeapscan.c
@@ -44,6 +44,7 @@
 #include "storage/bufmgr.h"
 #include "storage/predicate.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/snapmgr.h"
 #include "utils/tqual.h"
 
diff --git a/src/backend/executor/nodeForeignscan.c b/src/backend/executor/nodeForeignscan.c
index d50489c7f4c..841ae6931b7 100644
--- a/src/backend/executor/nodeForeignscan.c
+++ b/src/backend/executor/nodeForeignscan.c
@@ -25,6 +25,7 @@
 #include "executor/executor.h"
 #include "executor/nodeForeignscan.h"
 #include "foreign/fdwapi.h"
+#include "utils/rel.h"
 
 static TupleTableSlot *ForeignNext(ForeignScanState *node);
 static bool ForeignRecheck(ForeignScanState *node, TupleTableSlot *slot);
diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c
index dbc1467d5be..263f3b946ba 100644
--- a/src/backend/executor/nodeIndexscan.c
+++ b/src/backend/executor/nodeIndexscan.c
@@ -33,6 +33,7 @@
 #include "utils/array.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 
 
 static TupleTableSlot *IndexNext(IndexScanState *node);
diff --git a/src/backend/executor/nodeLockRows.c b/src/backend/executor/nodeLockRows.c
index d71278ebd72..0c48b6bcacf 100644
--- a/src/backend/executor/nodeLockRows.c
+++ b/src/backend/executor/nodeLockRows.c
@@ -25,6 +25,7 @@
 #include "executor/executor.h"
 #include "executor/nodeLockRows.h"
 #include "storage/bufmgr.h"
+#include "utils/rel.h"
 #include "utils/tqual.h"
 
 
diff --git a/src/backend/executor/nodeMergeAppend.c b/src/backend/executor/nodeMergeAppend.c
index 43059664b93..fa0ecc81769 100644
--- a/src/backend/executor/nodeMergeAppend.c
+++ b/src/backend/executor/nodeMergeAppend.c
@@ -42,6 +42,7 @@
 #include "executor/execdebug.h"
 #include "executor/nodeMergeAppend.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 
 /*
  * It gets quite confusing having a heap array (indexed by integers) which
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index c0eab4bf0db..070f27c66c9 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -46,6 +46,7 @@
 #include "storage/bufmgr.h"
 #include "utils/builtins.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/tqual.h"
 
 
diff --git a/src/backend/executor/nodeSeqscan.c b/src/backend/executor/nodeSeqscan.c
index 0f3438d0639..e2cea0eecb2 100644
--- a/src/backend/executor/nodeSeqscan.c
+++ b/src/backend/executor/nodeSeqscan.c
@@ -28,6 +28,7 @@
 #include "access/relscan.h"
 #include "executor/execdebug.h"
 #include "executor/nodeSeqscan.h"
+#include "utils/rel.h"
 
 static void InitScanRelation(SeqScanState *node, EState *estate);
 static TupleTableSlot *SeqNext(SeqScanState *node);
diff --git a/src/backend/executor/nodeTidscan.c b/src/backend/executor/nodeTidscan.c
index aae41bf60e3..28244a1a3d0 100644
--- a/src/backend/executor/nodeTidscan.c
+++ b/src/backend/executor/nodeTidscan.c
@@ -32,6 +32,7 @@
 #include "optimizer/clauses.h"
 #include "storage/bufmgr.h"
 #include "utils/array.h"
+#include "utils/rel.h"
 
 
 #define IsCTIDVar(node)  \
diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index 6e723ca092b..d71ea60b317 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -28,6 +28,7 @@
 #include "utils/datum.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/snapmgr.h"
 #include "utils/syscache.h"
 #include "utils/typcache.h"
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 9aafc8adcc6..b31e3869d31 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -41,6 +41,7 @@
 #include "parser/parse_oper.h"
 #include "parser/parsetree.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 
 
diff --git a/src/backend/optimizer/util/predtest.c b/src/backend/optimizer/util/predtest.c
index a7e83729b1b..6c3dfb7eb58 100644
--- a/src/backend/optimizer/util/predtest.c
+++ b/src/backend/optimizer/util/predtest.c
@@ -15,6 +15,7 @@
  */
 #include "postgres.h"
 
+#include "catalog/pg_am.h"
 #include "catalog/pg_amop.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index edfb1f12e97..f2ccf0d7453 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -29,6 +29,7 @@
 #include "parser/parse_type.h"
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 
 
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index e6f9e36bbca..9d4e580e476 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -29,6 +29,7 @@
 #include "parser/parse_type.h"
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 #include "utils/typcache.h"
 
 
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index 1771fee6478..b64f837bf86 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -59,7 +59,7 @@
 #include "utils/acl.h"
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
-#include "utils/relcache.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 #include "utils/typcache.h"
 
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index ca4e03590df..483a82951b0 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -93,6 +93,7 @@
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
 #include "utils/ps_status.h"
+#include "utils/rel.h"
 #include "utils/snapmgr.h"
 #include "utils/syscache.h"
 #include "utils/tqual.h"
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 6ef20a5bb53..84b5037bb3c 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -16,6 +16,7 @@
 #include "access/heapam.h"
 #include "access/sysattr.h"
 #include "catalog/pg_type.h"
+#include "commands/trigger.h"
 #include "nodes/makefuncs.h"
 #include "nodes/nodeFuncs.h"
 #include "parser/analyze.h"
@@ -26,7 +27,7 @@
 #include "rewrite/rewriteManip.h"
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
-#include "commands/trigger.h"
+#include "utils/rel.h"
 
 
 /* We use a list of these to detect recursion in RewriteQuery */
diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c
index fa7b8e6e81a..4b85b9b4021 100644
--- a/src/backend/utils/adt/ri_triggers.c
+++ b/src/backend/utils/adt/ri_triggers.c
@@ -48,6 +48,7 @@
 #include "utils/guc.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/snapmgr.h"
 #include "utils/syscache.h"
 #include "utils/tqual.h"
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 00920f9edaa..49dc9c88d52 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -52,8 +52,9 @@
 #include "utils/builtins.h"
 #include "utils/fmgroids.h"
 #include "utils/lsyscache.h"
-#include "utils/tqual.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
+#include "utils/tqual.h"
 #include "utils/typcache.h"
 #include "utils/xml.h"
 
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index 00ba19ec6c9..10b73fb9fb4 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -120,6 +120,7 @@
 #include "utils/lsyscache.h"
 #include "utils/nabstime.h"
 #include "utils/pg_locale.h"
+#include "utils/rel.h"
 #include "utils/selfuncs.h"
 #include "utils/spccache.h"
 #include "utils/syscache.h"
diff --git a/src/backend/utils/adt/trigfuncs.c b/src/backend/utils/adt/trigfuncs.c
index 86f81bb5bec..474878de7d9 100644
--- a/src/backend/utils/adt/trigfuncs.c
+++ b/src/backend/utils/adt/trigfuncs.c
@@ -16,6 +16,7 @@
 #include "access/htup.h"
 #include "commands/trigger.h"
 #include "utils/builtins.h"
+#include "utils/rel.h"
 
 
 /*
diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c
index 66674917f0d..181bfee9e30 100644
--- a/src/backend/utils/adt/tsvector_op.c
+++ b/src/backend/utils/adt/tsvector_op.c
@@ -25,6 +25,7 @@
 #include "tsearch/ts_utils.h"
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 
 
 typedef struct
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 702b9e3e9f4..de1eb2af369 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -74,6 +74,7 @@
 #include "utils/datetime.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 #include "utils/xml.h"
 
diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c
index 28d18b0d32d..69ec5136341 100644
--- a/src/backend/utils/cache/lsyscache.c
+++ b/src/backend/utils/cache/lsyscache.c
@@ -35,6 +35,7 @@
 #include "utils/datum.h"
 #include "utils/fmgroids.h"
 #include "utils/lsyscache.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 #include "utils/typcache.h"
 
diff --git a/src/backend/utils/fmgr/funcapi.c b/src/backend/utils/fmgr/funcapi.c
index aa249fabfe8..02ee92b7159 100644
--- a/src/backend/utils/fmgr/funcapi.c
+++ b/src/backend/utils/fmgr/funcapi.c
@@ -24,6 +24,7 @@
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 #include "utils/typcache.h"
 
diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h
index 16756616e52..a3a93100558 100644
--- a/src/include/nodes/execnodes.h
+++ b/src/include/nodes/execnodes.h
@@ -21,7 +21,7 @@
 #include "nodes/plannodes.h"
 #include "nodes/tidbitmap.h"
 #include "utils/hsearch.h"
-#include "utils/rel.h"
+#include "utils/reltrigger.h"
 #include "utils/snapshot.h"
 #include "utils/tuplestore.h"
 
diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h
index e2c2fa9ae45..173dc16a253 100644
--- a/src/include/utils/rel.h
+++ b/src/include/utils/rel.h
@@ -24,6 +24,7 @@
 #include "storage/block.h"
 #include "storage/relfilenode.h"
 #include "utils/relcache.h"
+#include "utils/reltrigger.h"
 
 
 /*
@@ -44,60 +45,6 @@ typedef struct LockInfoData
 
 typedef LockInfoData *LockInfo;
 
-/*
- * Likewise, this struct really belongs to trigger.h, but for convenience
- * we put it here.
- */
-typedef struct Trigger
-{
-	Oid			tgoid;			/* OID of trigger (pg_trigger row) */
-	/* Remaining fields are copied from pg_trigger, see pg_trigger.h */
-	char	   *tgname;
-	Oid			tgfoid;
-	int16		tgtype;
-	char		tgenabled;
-	bool		tgisinternal;
-	Oid			tgconstrrelid;
-	Oid			tgconstrindid;
-	Oid			tgconstraint;
-	bool		tgdeferrable;
-	bool		tginitdeferred;
-	int16		tgnargs;
-	int16		tgnattr;
-	int16	   *tgattr;
-	char	  **tgargs;
-	char	   *tgqual;
-} Trigger;
-
-typedef struct TriggerDesc
-{
-	Trigger    *triggers;		/* array of Trigger structs */
-	int			numtriggers;	/* number of array entries */
-
-	/*
-	 * These flags indicate whether the array contains at least one of each
-	 * type of trigger.  We use these to skip searching the array if not.
-	 */
-	bool		trig_insert_before_row;
-	bool		trig_insert_after_row;
-	bool		trig_insert_instead_row;
-	bool		trig_insert_before_statement;
-	bool		trig_insert_after_statement;
-	bool		trig_update_before_row;
-	bool		trig_update_after_row;
-	bool		trig_update_instead_row;
-	bool		trig_update_before_statement;
-	bool		trig_update_after_statement;
-	bool		trig_delete_before_row;
-	bool		trig_delete_after_row;
-	bool		trig_delete_instead_row;
-	bool		trig_delete_before_statement;
-	bool		trig_delete_after_statement;
-	/* there are no row-level truncate triggers */
-	bool		trig_truncate_before_statement;
-	bool		trig_truncate_after_statement;
-} TriggerDesc;
-
 
 /*
  * Cached lookup information for the index access method functions defined
diff --git a/src/include/utils/reltrigger.h b/src/include/utils/reltrigger.h
new file mode 100644
index 00000000000..eaf5abd447e
--- /dev/null
+++ b/src/include/utils/reltrigger.h
@@ -0,0 +1,74 @@
+/*-------------------------------------------------------------------------
+ *
+ * reltrigger.h
+ *	  POSTGRES relation trigger definitions.
+ *
+ *
+ * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * src/include/utils/reltrigger.h
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef RELTRIGGER_H
+#define RELTRIGGER_H
+
+
+/*
+ * These struct really belongs to trigger.h, but we put it separately so that
+ * it can be cleanly included in rel.h and other places.
+ */
+
+typedef struct Trigger
+{
+	Oid			tgoid;			/* OID of trigger (pg_trigger row) */
+	/* Remaining fields are copied from pg_trigger, see pg_trigger.h */
+	char	   *tgname;
+	Oid			tgfoid;
+	int16		tgtype;
+	char		tgenabled;
+	bool		tgisinternal;
+	Oid			tgconstrrelid;
+	Oid			tgconstrindid;
+	Oid			tgconstraint;
+	bool		tgdeferrable;
+	bool		tginitdeferred;
+	int16		tgnargs;
+	int16		tgnattr;
+	int16	   *tgattr;
+	char	  **tgargs;
+	char	   *tgqual;
+} Trigger;
+
+typedef struct TriggerDesc
+{
+	Trigger    *triggers;		/* array of Trigger structs */
+	int			numtriggers;	/* number of array entries */
+
+	/*
+	 * These flags indicate whether the array contains at least one of each
+	 * type of trigger.  We use these to skip searching the array if not.
+	 */
+	bool		trig_insert_before_row;
+	bool		trig_insert_after_row;
+	bool		trig_insert_instead_row;
+	bool		trig_insert_before_statement;
+	bool		trig_insert_after_statement;
+	bool		trig_update_before_row;
+	bool		trig_update_after_row;
+	bool		trig_update_instead_row;
+	bool		trig_update_before_statement;
+	bool		trig_update_after_statement;
+	bool		trig_delete_before_row;
+	bool		trig_delete_after_row;
+	bool		trig_delete_instead_row;
+	bool		trig_delete_before_statement;
+	bool		trig_delete_after_statement;
+	/* there are no row-level truncate triggers */
+	bool		trig_truncate_before_statement;
+	bool		trig_truncate_after_statement;
+} TriggerDesc;
+
+
+#endif   /* RELTRIGGER_H */
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index 61252308cd8..8fd4cfb550b 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -34,6 +34,7 @@
 #include "utils/hsearch.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 #include "utils/typcache.h"
 
diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c
index 75098ec6deb..afd20b4872d 100644
--- a/src/pl/plpgsql/src/pl_comp.c
+++ b/src/pl/plpgsql/src/pl_comp.c
@@ -32,6 +32,7 @@
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 
 
diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c
index 906a485853f..7f948d5f808 100644
--- a/src/pl/plpgsql/src/pl_exec.c
+++ b/src/pl/plpgsql/src/pl_exec.c
@@ -33,6 +33,7 @@
 #include "utils/datum.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/snapmgr.h"
 #include "utils/typcache.h"
 
diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c
index 9081cffb498..0227f1a1829 100644
--- a/src/pl/plpython/plpython.c
+++ b/src/pl/plpython/plpython.c
@@ -108,6 +108,7 @@ typedef int Py_ssize_t;
 #include "utils/hsearch.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 #include "utils/typcache.h"
 
diff --git a/src/pl/tcl/pltcl.c b/src/pl/tcl/pltcl.c
index f5171444987..be8fe7a0f21 100644
--- a/src/pl/tcl/pltcl.c
+++ b/src/pl/tcl/pltcl.c
@@ -31,6 +31,7 @@
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
+#include "utils/rel.h"
 #include "utils/syscache.h"
 #include "utils/typcache.h"
 
diff --git a/src/test/regress/regress.c b/src/test/regress/regress.c
index 8e4286a643b..daee5af49e4 100644
--- a/src/test/regress/regress.c
+++ b/src/test/regress/regress.c
@@ -16,6 +16,7 @@
 #include "executor/spi.h"
 #include "utils/builtins.h"
 #include "utils/geo_decls.h"
+#include "utils/rel.h"
 
 
 #define P_MAXDIG 12
-- 
GitLab