summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera2008-06-19 00:46:06 +0000
committerAlvaro Herrera2008-06-19 00:46:06 +0000
commitd89193919e6d320c458e3efef5cb0dc3019eab04 (patch)
tree7b02a2b5b7686596db3beca6c005248399523864
parent2c11e111c8498a980eb4a851af27718224618306 (diff)
Improve our #include situation by moving pointer types away from the
corresponding struct definitions. This allows other headers to avoid including certain highly-loaded headers such as rel.h and relscan.h, instead using just relcache.h, heapam.h or genam.h, which are more lightweight and thus cause less unnecessary dependencies.
-rw-r--r--contrib/btree_gist/btree_numeric.c3
-rw-r--r--contrib/btree_gist/btree_utils_num.h3
-rw-r--r--contrib/btree_gist/btree_utils_var.c3
-rw-r--r--contrib/pgrowlocks/pgrowlocks.c1
-rw-r--r--contrib/pgstattuple/pgstattuple.c3
-rw-r--r--src/backend/access/gin/ginbtree.c1
-rw-r--r--src/backend/access/gin/gindatapage.c1
-rw-r--r--src/backend/access/gin/ginentrypage.c1
-rw-r--r--src/backend/access/gin/ginget.c1
-rw-r--r--src/backend/access/gin/ginscan.c3
-rw-r--r--src/backend/access/gist/gistget.c1
-rw-r--r--src/backend/access/gist/gistscan.c1
-rw-r--r--src/backend/access/gist/gistsplit.c1
-rw-r--r--src/backend/access/gist/gistutil.c1
-rw-r--r--src/backend/access/gist/gistxlog.c1
-rw-r--r--src/backend/access/hash/hash.c2
-rw-r--r--src/backend/access/hash/hashinsert.c1
-rw-r--r--src/backend/access/hash/hashovfl.c1
-rw-r--r--src/backend/access/hash/hashscan.c2
-rw-r--r--src/backend/access/hash/hashsearch.c2
-rw-r--r--src/backend/access/hash/hashutil.c2
-rw-r--r--src/backend/access/heap/heapam.c1
-rw-r--r--src/backend/access/heap/pruneheap.c1
-rw-r--r--src/backend/access/heap/rewriteheap.c1
-rw-r--r--src/backend/access/heap/tuptoaster.c1
-rw-r--r--src/backend/access/index/genam.c4
-rw-r--r--src/backend/access/index/indexam.c3
-rw-r--r--src/backend/access/nbtree/nbtree.c1
-rw-r--r--src/backend/access/nbtree/nbtsearch.c2
-rw-r--r--src/backend/access/nbtree/nbtsort.c1
-rw-r--r--src/backend/access/nbtree/nbtutils.c1
-rw-r--r--src/backend/access/transam/xlogutils.c1
-rw-r--r--src/backend/catalog/aclchk.c1
-rw-r--r--src/backend/catalog/catalog.c2
-rw-r--r--src/backend/catalog/index.c1
-rw-r--r--src/backend/catalog/namespace.c1
-rw-r--r--src/backend/catalog/pg_aggregate.c1
-rw-r--r--src/backend/catalog/pg_constraint.c1
-rw-r--r--src/backend/catalog/pg_conversion.c1
-rw-r--r--src/backend/catalog/pg_depend.c1
-rw-r--r--src/backend/catalog/pg_enum.c1
-rw-r--r--src/backend/catalog/pg_largeobject.c1
-rw-r--r--src/backend/catalog/pg_namespace.c1
-rw-r--r--src/backend/catalog/pg_operator.c1
-rw-r--r--src/backend/catalog/pg_type.c1
-rw-r--r--src/backend/commands/cluster.c1
-rw-r--r--src/backend/commands/comment.c1
-rw-r--r--src/backend/commands/conversioncmds.c1
-rw-r--r--src/backend/commands/functioncmds.c1
-rw-r--r--src/backend/commands/lockcmds.c1
-rw-r--r--src/backend/commands/opclasscmds.c1
-rw-r--r--src/backend/commands/operatorcmds.c1
-rw-r--r--src/backend/commands/proclang.c1
-rw-r--r--src/backend/commands/tablecmds.c1
-rw-r--r--src/backend/commands/tablespace.c1
-rw-r--r--src/backend/commands/tsearchcmds.c1
-rw-r--r--src/backend/commands/view.c1
-rw-r--r--src/backend/executor/nodeBitmapHeapscan.c1
-rw-r--r--src/backend/executor/nodeIndexscan.c1
-rw-r--r--src/backend/executor/nodeSeqscan.c1
-rw-r--r--src/backend/nodes/print.c1
-rw-r--r--src/backend/optimizer/plan/planagg.c1
-rw-r--r--src/backend/optimizer/prep/preptlist.c1
-rw-r--r--src/backend/optimizer/prep/prepunion.c1
-rw-r--r--src/backend/optimizer/util/plancat.c2
-rw-r--r--src/backend/parser/analyze.c1
-rw-r--r--src/backend/parser/parse_clause.c1
-rw-r--r--src/backend/postmaster/pgstat.c1
-rw-r--r--src/backend/rewrite/rewriteDefine.c1
-rw-r--r--src/backend/rewrite/rewriteRemove.c1
-rw-r--r--src/backend/rewrite/rewriteSupport.c1
-rw-r--r--src/backend/storage/buffer/bufmgr.c1
-rw-r--r--src/backend/storage/large_object/inv_api.c1
-rw-r--r--src/backend/utils/adt/dbsize.c2
-rw-r--r--src/backend/utils/adt/regproc.c1
-rw-r--r--src/backend/utils/adt/tid.c1
-rw-r--r--src/backend/utils/cache/catcache.c3
-rw-r--r--src/backend/utils/cache/inval.c2
-rw-r--r--src/backend/utils/cache/syscache.c1
-rw-r--r--src/backend/utils/cache/typcache.c1
-rw-r--r--src/backend/utils/resowner/resowner.c2
-rw-r--r--src/backend/utils/sort/tuplesort.c1
-rw-r--r--src/include/access/genam.h25
-rw-r--r--src/include/access/gin.h2
-rw-r--r--src/include/access/gist.h3
-rw-r--r--src/include/access/gist_private.h4
-rw-r--r--src/include/access/hash.h3
-rw-r--r--src/include/access/heapam.h13
-rw-r--r--src/include/access/hio.h2
-rw-r--r--src/include/access/nbtree.h2
-rw-r--r--src/include/access/relscan.h31
-rw-r--r--src/include/access/rewriteheap.h2
-rw-r--r--src/include/access/tuptoaster.h2
-rw-r--r--src/include/access/xlogutils.h4
-rw-r--r--src/include/catalog/catalog.h4
-rw-r--r--src/include/catalog/indexing.h2
-rw-r--r--src/include/commands/cluster.h2
-rw-r--r--src/include/commands/tablecmds.h2
-rw-r--r--src/include/commands/vacuum.h2
-rw-r--r--src/include/nodes/execnodes.h10
-rw-r--r--src/include/nodes/print.h2
-rw-r--r--src/include/optimizer/plancat.h2
-rw-r--r--src/include/parser/parse_node.h2
-rw-r--r--src/include/pgstat.h2
-rw-r--r--src/include/rewrite/rewriteDefine.h2
-rw-r--r--src/include/rewrite/rewriteHandler.h2
-rw-r--r--src/include/storage/buf_internals.h2
-rw-r--r--src/include/storage/bufmgr.h4
-rw-r--r--src/include/utils/catcache.h2
-rw-r--r--src/include/utils/inval.h2
-rw-r--r--src/include/utils/rel.h13
-rw-r--r--src/include/utils/relcache.h15
-rw-r--r--src/include/utils/tuplesort.h3
113 files changed, 182 insertions, 95 deletions
diff --git a/contrib/btree_gist/btree_numeric.c b/contrib/btree_gist/btree_numeric.c
index 9ea096edcb..866dd08f62 100644
--- a/contrib/btree_gist/btree_numeric.c
+++ b/contrib/btree_gist/btree_numeric.c
@@ -1,5 +1,5 @@
/*
- * $PostgreSQL:$
+ * $PostgreSQL$
*/
#include "btree_gist.h"
@@ -9,6 +9,7 @@
#include "btree_utils_var.h"
#include "utils/builtins.h"
#include "utils/numeric.h"
+#include "utils/rel.h"
/*
** Bytea ops
diff --git a/contrib/btree_gist/btree_utils_num.h b/contrib/btree_gist/btree_utils_num.h
index 372518af6e..9df73cec69 100644
--- a/contrib/btree_gist/btree_utils_num.h
+++ b/contrib/btree_gist/btree_utils_num.h
@@ -1,10 +1,11 @@
/*
- * $PostgreSQL:$
+ * $PostgreSQL$
*/
#ifndef __BTREE_UTILS_NUM_H__
#define __BTREE_UTILS_NUM_H__
#include "btree_gist.h"
+#include "utils/rel.h"
#include <math.h>
#include <float.h>
diff --git a/contrib/btree_gist/btree_utils_var.c b/contrib/btree_gist/btree_utils_var.c
index e4058e8e8d..1bb061c3ff 100644
--- a/contrib/btree_gist/btree_utils_var.c
+++ b/contrib/btree_gist/btree_utils_var.c
@@ -1,5 +1,5 @@
/*
- * $PostgreSQL:$
+ * $PostgreSQL$
*/
#include "btree_gist.h"
@@ -10,6 +10,7 @@
#include "btree_utils_var.h"
#include "utils/pg_locale.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
PG_FUNCTION_INFO_V1(gbt_var_decompress);
Datum gbt_var_decompress(PG_FUNCTION_ARGS);
diff --git a/contrib/pgrowlocks/pgrowlocks.c b/contrib/pgrowlocks/pgrowlocks.c
index 5633c24693..01c64c408b 100644
--- a/contrib/pgrowlocks/pgrowlocks.c
+++ b/contrib/pgrowlocks/pgrowlocks.c
@@ -26,6 +26,7 @@
#include "access/heapam.h"
#include "access/multixact.h"
+#include "access/relscan.h"
#include "access/xact.h"
#include "catalog/namespace.h"
#include "funcapi.h"
diff --git a/contrib/pgstattuple/pgstattuple.c b/contrib/pgstattuple/pgstattuple.c
index 08e1f0c9b7..cce2676a33 100644
--- a/contrib/pgstattuple/pgstattuple.c
+++ b/contrib/pgstattuple/pgstattuple.c
@@ -26,9 +26,8 @@
#include "access/gist_private.h"
#include "access/hash.h"
-#include "access/heapam.h"
-#include "access/htup.h"
#include "access/nbtree.h"
+#include "access/relscan.h"
#include "catalog/namespace.h"
#include "funcapi.h"
#include "miscadmin.h"
diff --git a/src/backend/access/gin/ginbtree.c b/src/backend/access/gin/ginbtree.c
index 910f9b6a75..a3ac34b84b 100644
--- a/src/backend/access/gin/ginbtree.c
+++ b/src/backend/access/gin/ginbtree.c
@@ -17,6 +17,7 @@
#include "access/gin.h"
#include "miscadmin.h"
#include "storage/bufmgr.h"
+#include "utils/rel.h"
/*
* Locks buffer by needed method for search.
diff --git a/src/backend/access/gin/gindatapage.c b/src/backend/access/gin/gindatapage.c
index 38316331e6..7b63ecb434 100644
--- a/src/backend/access/gin/gindatapage.c
+++ b/src/backend/access/gin/gindatapage.c
@@ -16,6 +16,7 @@
#include "access/gin.h"
#include "storage/bufmgr.h"
+#include "utils/rel.h"
int
compareItemPointers(ItemPointer a, ItemPointer b)
diff --git a/src/backend/access/gin/ginentrypage.c b/src/backend/access/gin/ginentrypage.c
index 5ee5024a94..931041b888 100644
--- a/src/backend/access/gin/ginentrypage.c
+++ b/src/backend/access/gin/ginentrypage.c
@@ -17,6 +17,7 @@
#include "access/gin.h"
#include "access/tuptoaster.h"
#include "storage/bufmgr.h"
+#include "utils/rel.h"
/*
* forms tuple for entry tree. On leaf page, Index tuple has
diff --git a/src/backend/access/gin/ginget.c b/src/backend/access/gin/ginget.c
index 37b85bef8d..2d62a573a7 100644
--- a/src/backend/access/gin/ginget.c
+++ b/src/backend/access/gin/ginget.c
@@ -15,6 +15,7 @@
#include "postgres.h"
#include "access/gin.h"
+#include "access/relscan.h"
#include "catalog/index.h"
#include "miscadmin.h"
#include "storage/bufmgr.h"
diff --git a/src/backend/access/gin/ginscan.c b/src/backend/access/gin/ginscan.c
index f4f1c4dad3..a82e840a94 100644
--- a/src/backend/access/gin/ginscan.c
+++ b/src/backend/access/gin/ginscan.c
@@ -14,11 +14,12 @@
#include "postgres.h"
-#include "access/genam.h"
#include "access/gin.h"
+#include "access/relscan.h"
#include "pgstat.h"
#include "storage/bufmgr.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
Datum
diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c
index 5ace610311..dbbebd7d63 100644
--- a/src/backend/access/gist/gistget.c
+++ b/src/backend/access/gist/gistget.c
@@ -15,6 +15,7 @@
#include "postgres.h"
#include "access/gist_private.h"
+#include "access/relscan.h"
#include "executor/execdebug.h"
#include "miscadmin.h"
#include "pgstat.h"
diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c
index dfd7ca6eec..948f479e15 100644
--- a/src/backend/access/gist/gistscan.c
+++ b/src/backend/access/gist/gistscan.c
@@ -17,6 +17,7 @@
#include "access/genam.h"
#include "access/gist_private.h"
#include "access/gistscan.h"
+#include "access/relscan.h"
#include "storage/bufmgr.h"
#include "utils/memutils.h"
diff --git a/src/backend/access/gist/gistsplit.c b/src/backend/access/gist/gistsplit.c
index afbc15c13f..56d0f66e0c 100644
--- a/src/backend/access/gist/gistsplit.c
+++ b/src/backend/access/gist/gistsplit.c
@@ -15,6 +15,7 @@
#include "postgres.h"
#include "access/gist_private.h"
+#include "utils/rel.h"
typedef struct
{
diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c
index 54b5060e37..f1c5bab3ba 100644
--- a/src/backend/access/gist/gistutil.c
+++ b/src/backend/access/gist/gistutil.c
@@ -18,6 +18,7 @@
#include "storage/freespace.h"
#include "storage/lmgr.h"
#include "storage/bufmgr.h"
+#include "utils/rel.h"
/*
* static *S used for temrorary storage (saves stack and palloc() call)
diff --git a/src/backend/access/gist/gistxlog.c b/src/backend/access/gist/gistxlog.c
index b97ab2fb76..7d35f2f3c1 100644
--- a/src/backend/access/gist/gistxlog.c
+++ b/src/backend/access/gist/gistxlog.c
@@ -18,6 +18,7 @@
#include "miscadmin.h"
#include "storage/bufmgr.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
typedef struct
diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c
index f794e6d9ac..6a5c0009db 100644
--- a/src/backend/access/hash/hash.c
+++ b/src/backend/access/hash/hash.c
@@ -18,8 +18,8 @@
#include "postgres.h"
-#include "access/genam.h"
#include "access/hash.h"
+#include "access/relscan.h"
#include "catalog/index.h"
#include "commands/vacuum.h"
#include "miscadmin.h"
diff --git a/src/backend/access/hash/hashinsert.c b/src/backend/access/hash/hashinsert.c
index 6779980224..3eb226a8a5 100644
--- a/src/backend/access/hash/hashinsert.c
+++ b/src/backend/access/hash/hashinsert.c
@@ -17,6 +17,7 @@
#include "access/hash.h"
#include "storage/bufmgr.h"
+#include "utils/rel.h"
static OffsetNumber _hash_pgaddtup(Relation rel, Buffer buf,
diff --git a/src/backend/access/hash/hashovfl.c b/src/backend/access/hash/hashovfl.c
index c8c6f0c364..cc10135d80 100644
--- a/src/backend/access/hash/hashovfl.c
+++ b/src/backend/access/hash/hashovfl.c
@@ -19,6 +19,7 @@
#include "access/hash.h"
#include "storage/bufmgr.h"
+#include "utils/rel.h"
static Buffer _hash_getovflpage(Relation rel, Buffer metabuf);
diff --git a/src/backend/access/hash/hashscan.c b/src/backend/access/hash/hashscan.c
index 2f0a3244a1..fe2966f61f 100644
--- a/src/backend/access/hash/hashscan.c
+++ b/src/backend/access/hash/hashscan.c
@@ -16,7 +16,9 @@
#include "postgres.h"
#include "access/hash.h"
+#include "access/relscan.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/resowner.h"
diff --git a/src/backend/access/hash/hashsearch.c b/src/backend/access/hash/hashsearch.c
index 648408c06e..258526be73 100644
--- a/src/backend/access/hash/hashsearch.c
+++ b/src/backend/access/hash/hashsearch.c
@@ -15,8 +15,10 @@
#include "postgres.h"
#include "access/hash.h"
+#include "access/relscan.h"
#include "pgstat.h"
#include "storage/bufmgr.h"
+#include "utils/rel.h"
/*
diff --git a/src/backend/access/hash/hashutil.c b/src/backend/access/hash/hashutil.c
index 637d23fc63..41e2eef85c 100644
--- a/src/backend/access/hash/hashutil.c
+++ b/src/backend/access/hash/hashutil.c
@@ -14,9 +14,9 @@
*/
#include "postgres.h"
-#include "access/genam.h"
#include "access/hash.h"
#include "access/reloptions.h"
+#include "access/relscan.h"
#include "executor/execdebug.h"
#include "storage/bufmgr.h"
#include "utils/lsyscache.h"
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index 205771ec69..733e73c5d0 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -42,6 +42,7 @@
#include "access/heapam.h"
#include "access/hio.h"
#include "access/multixact.h"
+#include "access/relscan.h"
#include "access/sysattr.h"
#include "access/transam.h"
#include "access/tuptoaster.h"
diff --git a/src/backend/access/heap/pruneheap.c b/src/backend/access/heap/pruneheap.c
index 62a2ba5059..840045e02f 100644
--- a/src/backend/access/heap/pruneheap.c
+++ b/src/backend/access/heap/pruneheap.c
@@ -22,6 +22,7 @@
#include "storage/bufmgr.h"
#include "storage/off.h"
#include "utils/inval.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/access/heap/rewriteheap.c b/src/backend/access/heap/rewriteheap.c
index 22cd90d1a6..29d6d25b44 100644
--- a/src/backend/access/heap/rewriteheap.c
+++ b/src/backend/access/heap/rewriteheap.c
@@ -109,6 +109,7 @@
#include "storage/bufmgr.h"
#include "storage/smgr.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
/*
diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c
index 0c880ad378..19159848a3 100644
--- a/src/backend/access/heap/tuptoaster.c
+++ b/src/backend/access/heap/tuptoaster.c
@@ -37,6 +37,7 @@
#include "catalog/catalog.h"
#include "utils/fmgroids.h"
#include "utils/pg_lzcompress.h"
+#include "utils/rel.h"
#include "utils/typcache.h"
#include "utils/tqual.h"
diff --git a/src/backend/access/index/genam.c b/src/backend/access/index/genam.c
index 124d1f1629..9fb6f80742 100644
--- a/src/backend/access/index/genam.c
+++ b/src/backend/access/index/genam.c
@@ -19,12 +19,12 @@
#include "postgres.h"
-#include "access/genam.h"
-#include "access/heapam.h"
+#include "access/relscan.h"
#include "access/transam.h"
#include "miscadmin.h"
#include "pgstat.h"
#include "storage/bufmgr.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c
index 2bf97039e6..13c4726fc9 100644
--- a/src/backend/access/index/indexam.c
+++ b/src/backend/access/index/indexam.c
@@ -62,8 +62,7 @@
#include "postgres.h"
-#include "access/genam.h"
-#include "access/heapam.h"
+#include "access/relscan.h"
#include "access/transam.h"
#include "pgstat.h"
#include "storage/bufmgr.h"
diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c
index 21768f0a2d..f0b1f85f61 100644
--- a/src/backend/access/nbtree/nbtree.c
+++ b/src/backend/access/nbtree/nbtree.c
@@ -20,6 +20,7 @@
#include "access/genam.h"
#include "access/nbtree.h"
+#include "access/relscan.h"
#include "catalog/index.h"
#include "commands/vacuum.h"
#include "miscadmin.h"
diff --git a/src/backend/access/nbtree/nbtsearch.c b/src/backend/access/nbtree/nbtsearch.c
index 1761908470..8c4f422c2f 100644
--- a/src/backend/access/nbtree/nbtsearch.c
+++ b/src/backend/access/nbtree/nbtsearch.c
@@ -17,9 +17,11 @@
#include "access/genam.h"
#include "access/nbtree.h"
+#include "access/relscan.h"
#include "pgstat.h"
#include "storage/bufmgr.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
static bool _bt_readpage(IndexScanDesc scan, ScanDirection dir,
diff --git a/src/backend/access/nbtree/nbtsort.c b/src/backend/access/nbtree/nbtsort.c
index 64c2cff205..3accb01943 100644
--- a/src/backend/access/nbtree/nbtsort.c
+++ b/src/backend/access/nbtree/nbtsort.c
@@ -68,6 +68,7 @@
#include "access/nbtree.h"
#include "miscadmin.h"
#include "storage/smgr.h"
+#include "utils/rel.h"
#include "utils/tuplesort.h"
diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c
index 0419b68c7e..48260e2327 100644
--- a/src/backend/access/nbtree/nbtutils.c
+++ b/src/backend/access/nbtree/nbtutils.c
@@ -20,6 +20,7 @@
#include "access/genam.h"
#include "access/nbtree.h"
#include "access/reloptions.h"
+#include "access/relscan.h"
#include "executor/execdebug.h"
#include "miscadmin.h"
#include "storage/bufmgr.h"
diff --git a/src/backend/access/transam/xlogutils.c b/src/backend/access/transam/xlogutils.c
index 27f1501fb1..801323c481 100644
--- a/src/backend/access/transam/xlogutils.c
+++ b/src/backend/access/transam/xlogutils.c
@@ -21,6 +21,7 @@
#include "storage/bufmgr.h"
#include "storage/smgr.h"
#include "utils/hsearch.h"
+#include "utils/rel.h"
/*
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
index dc6ddece7b..15f5af0b96 100644
--- a/src/backend/catalog/aclchk.c
+++ b/src/backend/catalog/aclchk.c
@@ -43,6 +43,7 @@
#include "utils/acl.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/catalog/catalog.c b/src/backend/catalog/catalog.c
index cc34dd96d0..927e45077c 100644
--- a/src/backend/catalog/catalog.c
+++ b/src/backend/catalog/catalog.c
@@ -38,7 +38,7 @@
#include "miscadmin.h"
#include "storage/fd.h"
#include "utils/fmgroids.h"
-#include "utils/relcache.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 629c58d89b..49b371d3ad 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -25,6 +25,7 @@
#include "access/genam.h"
#include "access/heapam.h"
+#include "access/relscan.h"
#include "access/sysattr.h"
#include "access/transam.h"
#include "access/xact.h"
diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c
index 2fa63d08bd..08fa2debc6 100644
--- a/src/backend/catalog/namespace.c
+++ b/src/backend/catalog/namespace.c
@@ -46,6 +46,7 @@
#include "utils/inval.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/catalog/pg_aggregate.c b/src/backend/catalog/pg_aggregate.c
index 1a6c850206..c5a6f52f86 100644
--- a/src/backend/catalog/pg_aggregate.c
+++ b/src/backend/catalog/pg_aggregate.c
@@ -30,6 +30,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/pg_constraint.c b/src/backend/catalog/pg_constraint.c
index 4d631f261a..7b5be3c62f 100644
--- a/src/backend/catalog/pg_constraint.c
+++ b/src/backend/catalog/pg_constraint.c
@@ -26,6 +26,7 @@
#include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c
index 2efc2eee76..136239842c 100644
--- a/src/backend/catalog/pg_conversion.c
+++ b/src/backend/catalog/pg_conversion.c
@@ -27,6 +27,7 @@
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/catalog/pg_depend.c b/src/backend/catalog/pg_depend.c
index 775d6f18bb..8262720f80 100644
--- a/src/backend/catalog/pg_depend.c
+++ b/src/backend/catalog/pg_depend.c
@@ -23,6 +23,7 @@
#include "miscadmin.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/catalog/pg_enum.c b/src/backend/catalog/pg_enum.c
index 24a1e8e653..ff87b053a7 100644
--- a/src/backend/catalog/pg_enum.c
+++ b/src/backend/catalog/pg_enum.c
@@ -20,6 +20,7 @@
#include "catalog/pg_enum.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
static int oid_cmp(const void *p1, const void *p2);
diff --git a/src/backend/catalog/pg_largeobject.c b/src/backend/catalog/pg_largeobject.c
index 90ffc3b34a..3bb7acb883 100644
--- a/src/backend/catalog/pg_largeobject.c
+++ b/src/backend/catalog/pg_largeobject.c
@@ -20,6 +20,7 @@
#include "catalog/pg_largeobject.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/catalog/pg_namespace.c b/src/backend/catalog/pg_namespace.c
index 1f8033da6f..489692a349 100644
--- a/src/backend/catalog/pg_namespace.c
+++ b/src/backend/catalog/pg_namespace.c
@@ -19,6 +19,7 @@
#include "catalog/indexing.h"
#include "catalog/pg_namespace.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/catalog/pg_operator.c b/src/backend/catalog/pg_operator.c
index 9218c45e8f..f1bca005a1 100644
--- a/src/backend/catalog/pg_operator.c
+++ b/src/backend/catalog/pg_operator.c
@@ -31,6 +31,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/pg_type.c b/src/backend/catalog/pg_type.c
index cde8cc3835..7c41aa961e 100644
--- a/src/backend/catalog/pg_type.c
+++ b/src/backend/catalog/pg_type.c
@@ -29,6 +29,7 @@
#include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c
index 50bb542284..df75c48dce 100644
--- a/src/backend/commands/cluster.c
+++ b/src/backend/commands/cluster.c
@@ -19,6 +19,7 @@
#include "access/genam.h"
#include "access/heapam.h"
+#include "access/relscan.h"
#include "access/rewriteheap.h"
#include "access/transam.h"
#include "access/xact.h"
diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c
index 6d3efcca2d..b1c0f0a8c5 100644
--- a/src/backend/commands/comment.c
+++ b/src/backend/commands/comment.c
@@ -51,6 +51,7 @@
#include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/commands/conversioncmds.c b/src/backend/commands/conversioncmds.c
index 14f819761a..2ab0759b4d 100644
--- a/src/backend/commands/conversioncmds.c
+++ b/src/backend/commands/conversioncmds.c
@@ -27,6 +27,7 @@
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
static void AlterConversionOwner_internal(Relation rel, Oid conversionOid,
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index 639c5a6ded..4cb17fc4bf 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -55,6 +55,7 @@
#include "utils/fmgroids.h"
#include "utils/guc.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/commands/lockcmds.c b/src/backend/commands/lockcmds.c
index dfabb9fb32..b93bcbeb3c 100644
--- a/src/backend/commands/lockcmds.c
+++ b/src/backend/commands/lockcmds.c
@@ -20,6 +20,7 @@
#include "miscadmin.h"
#include "utils/acl.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
/*
diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c
index dcd40e6f57..733b0269af 100644
--- a/src/backend/commands/opclasscmds.c
+++ b/src/backend/commands/opclasscmds.c
@@ -39,6 +39,7 @@
#include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/commands/operatorcmds.c b/src/backend/commands/operatorcmds.c
index ff07c9f5c8..eda7101b6f 100644
--- a/src/backend/commands/operatorcmds.c
+++ b/src/backend/commands/operatorcmds.c
@@ -45,6 +45,7 @@
#include "parser/parse_type.h"
#include "utils/acl.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c
index cb027825b0..1dbe8a7a76 100644
--- a/src/backend/commands/proclang.c
+++ b/src/backend/commands/proclang.c
@@ -34,6 +34,7 @@
#include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index a9934ea876..1257397f35 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -17,6 +17,7 @@
#include "access/genam.h"
#include "access/heapam.h"
#include "access/reloptions.h"
+#include "access/relscan.h"
#include "access/sysattr.h"
#include "access/xact.h"
#include "catalog/catalog.h"
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c
index ffc5883236..fd459fc0c1 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -66,6 +66,7 @@
#include "utils/guc.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c
index 407a7334c2..47e113a74f 100644
--- a/src/backend/commands/tsearchcmds.c
+++ b/src/backend/commands/tsearchcmds.c
@@ -43,6 +43,7 @@
#include "utils/catcache.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c
index e09ea26c9e..d08dcbb643 100644
--- a/src/backend/commands/view.c
+++ b/src/backend/commands/view.c
@@ -31,6 +31,7 @@
#include "rewrite/rewriteSupport.h"
#include "utils/acl.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
static void checkViewTupleDesc(TupleDesc newdesc, TupleDesc olddesc);
diff --git a/src/backend/executor/nodeBitmapHeapscan.c b/src/backend/executor/nodeBitmapHeapscan.c
index 2c107141cd..daa12dd382 100644
--- a/src/backend/executor/nodeBitmapHeapscan.c
+++ b/src/backend/executor/nodeBitmapHeapscan.c
@@ -36,6 +36,7 @@
#include "postgres.h"
#include "access/heapam.h"
+#include "access/relscan.h"
#include "executor/execdebug.h"
#include "executor/nodeBitmapHeapscan.h"
#include "pgstat.h"
diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c
index 48464bc827..c6fcc015b2 100644
--- a/src/backend/executor/nodeIndexscan.c
+++ b/src/backend/executor/nodeIndexscan.c
@@ -26,6 +26,7 @@
#include "access/genam.h"
#include "access/nbtree.h"
+#include "access/relscan.h"
#include "executor/execdebug.h"
#include "executor/nodeIndexscan.h"
#include "nodes/nodeFuncs.h"
diff --git a/src/backend/executor/nodeSeqscan.c b/src/backend/executor/nodeSeqscan.c
index 605c38326f..bcbcbdc457 100644
--- a/src/backend/executor/nodeSeqscan.c
+++ b/src/backend/executor/nodeSeqscan.c
@@ -25,6 +25,7 @@
#include "postgres.h"
#include "access/heapam.h"
+#include "access/relscan.h"
#include "executor/execdebug.h"
#include "executor/nodeSeqscan.h"
diff --git a/src/backend/nodes/print.c b/src/backend/nodes/print.c
index 79c84b201b..5c35a5b687 100644
--- a/src/backend/nodes/print.c
+++ b/src/backend/nodes/print.c
@@ -25,6 +25,7 @@
#include "optimizer/clauses.h"
#include "parser/parsetree.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
/*
diff --git a/src/backend/optimizer/plan/planagg.c b/src/backend/optimizer/plan/planagg.c
index fc62b99a2e..56a5a58791 100644
--- a/src/backend/optimizer/plan/planagg.c
+++ b/src/backend/optimizer/plan/planagg.c
@@ -15,6 +15,7 @@
#include "postgres.h"
#include "catalog/pg_aggregate.h"
+#include "catalog/pg_am.h"
#include "catalog/pg_type.h"
#include "nodes/makefuncs.h"
#include "optimizer/clauses.h"
diff --git a/src/backend/optimizer/prep/preptlist.c b/src/backend/optimizer/prep/preptlist.c
index 42549b2948..f402f92255 100644
--- a/src/backend/optimizer/prep/preptlist.c
+++ b/src/backend/optimizer/prep/preptlist.c
@@ -34,6 +34,7 @@
#include "parser/analyze.h"
#include "parser/parsetree.h"
#include "parser/parse_coerce.h"
+#include "utils/rel.h"
static List *expand_targetlist(List *tlist, int command_type,
diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c
index aa8815fe34..3521653325 100644
--- a/src/backend/optimizer/prep/prepunion.c
+++ b/src/backend/optimizer/prep/prepunion.c
@@ -44,6 +44,7 @@
#include "parser/parse_expr.h"
#include "parser/parsetree.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
static Plan *recurse_set_operations(Node *setOp, PlannerInfo *root,
diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c
index 475c313775..1a4f09e372 100644
--- a/src/backend/optimizer/util/plancat.c
+++ b/src/backend/optimizer/util/plancat.c
@@ -36,7 +36,7 @@
#include "storage/bufmgr.h"
#include "utils/fmgroids.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/parser/analyze.c b/src/backend/parser/analyze.c
index 4d5bd304b7..340fc86043 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -36,6 +36,7 @@
#include "parser/parse_relation.h"
#include "parser/parse_target.h"
#include "parser/parsetree.h"
+#include "utils/rel.h"
typedef struct
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index e293d68771..31f3ac4345 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -34,6 +34,7 @@
#include "rewrite/rewriteManip.h"
#include "utils/guc.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#define ORDER_CLAUSE 0
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 11cbf31da6..f178fe31d3 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -59,6 +59,7 @@
#include "utils/guc.h"
#include "utils/memutils.h"
#include "utils/ps_status.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
index 7468df7c20..c93d70c250 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -31,6 +31,7 @@
#include "utils/builtins.h"
#include "utils/inval.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/rewrite/rewriteRemove.c b/src/backend/rewrite/rewriteRemove.c
index 3b256717c0..a83a060325 100644
--- a/src/backend/rewrite/rewriteRemove.c
+++ b/src/backend/rewrite/rewriteRemove.c
@@ -26,6 +26,7 @@
#include "utils/acl.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/rewrite/rewriteSupport.c b/src/backend/rewrite/rewriteSupport.c
index 1c5986bb4c..4d4825d4a5 100644
--- a/src/backend/rewrite/rewriteSupport.c
+++ b/src/backend/rewrite/rewriteSupport.c
@@ -16,6 +16,7 @@
#include "access/heapam.h"
#include "catalog/indexing.h"
+#include "catalog/pg_class.h"
#include "rewrite/rewriteSupport.h"
#include "utils/inval.h"
#include "utils/syscache.h"
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 406de72065..9666fc49a1 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -40,6 +40,7 @@
#include "storage/ipc.h"
#include "storage/proc.h"
#include "storage/smgr.h"
+#include "utils/rel.h"
#include "utils/resowner.h"
#include "pgstat.h"
diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c
index 2a4b054776..867dd65a4e 100644
--- a/src/backend/storage/large_object/inv_api.c
+++ b/src/backend/storage/large_object/inv_api.c
@@ -41,6 +41,7 @@
#include "libpq/libpq-fs.h"
#include "storage/large_object.h"
#include "utils/fmgroids.h"
+#include "utils/rel.h"
#include "utils/resowner.h"
#include "utils/snapmgr.h"
#include "utils/tqual.h"
diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c
index a7ba411760..e9330cdf24 100644
--- a/src/backend/utils/adt/dbsize.c
+++ b/src/backend/utils/adt/dbsize.c
@@ -24,8 +24,8 @@
#include "storage/fd.h"
#include "utils/acl.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
-#include "utils/relcache.h"
/* Return physical size of directory contents, or 0 if dir doesn't exist */
diff --git a/src/backend/utils/adt/regproc.c b/src/backend/utils/adt/regproc.c
index 7e52e79dde..37905882a5 100644
--- a/src/backend/utils/adt/regproc.c
+++ b/src/backend/utils/adt/regproc.c
@@ -25,6 +25,7 @@
#include "access/heapam.h"
#include "catalog/indexing.h"
#include "catalog/namespace.h"
+#include "catalog/pg_class.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_ts_config.h"
diff --git a/src/backend/utils/adt/tid.c b/src/backend/utils/adt/tid.c
index 1ab73a66fc..40dcbd7e42 100644
--- a/src/backend/utils/adt/tid.c
+++ b/src/backend/utils/adt/tid.c
@@ -29,6 +29,7 @@
#include "parser/parsetree.h"
#include "utils/acl.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c
index 7affec2d09..ded8020196 100644
--- a/src/backend/utils/cache/catcache.c
+++ b/src/backend/utils/cache/catcache.c
@@ -17,6 +17,7 @@
#include "access/genam.h"
#include "access/hash.h"
#include "access/heapam.h"
+#include "access/relscan.h"
#include "access/sysattr.h"
#include "access/valid.h"
#include "catalog/pg_operator.h"
@@ -28,7 +29,7 @@
#include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/memutils.h"
-#include "utils/relcache.h"
+#include "utils/rel.h"
#include "utils/resowner.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c
index 78f3268e21..4c9ca1bce6 100644
--- a/src/backend/utils/cache/inval.c
+++ b/src/backend/utils/cache/inval.c
@@ -94,7 +94,7 @@
#include "storage/smgr.h"
#include "utils/inval.h"
#include "utils/memutils.h"
-#include "utils/relcache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c
index adb4d6b80a..019a010453 100644
--- a/src/backend/utils/cache/syscache.c
+++ b/src/backend/utils/cache/syscache.c
@@ -46,6 +46,7 @@
#include "catalog/pg_ts_parser.h"
#include "catalog/pg_ts_template.h"
#include "catalog/pg_type.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c
index c8fa4dc8de..d8f991e641 100644
--- a/src/backend/utils/cache/typcache.c
+++ b/src/backend/utils/cache/typcache.c
@@ -49,6 +49,7 @@
#include "commands/defrem.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
diff --git a/src/backend/utils/resowner/resowner.c b/src/backend/utils/resowner/resowner.c
index b68014d76c..7ea4f160bd 100644
--- a/src/backend/utils/resowner/resowner.c
+++ b/src/backend/utils/resowner/resowner.c
@@ -24,8 +24,8 @@
#include "storage/bufmgr.h"
#include "storage/proc.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/resowner.h"
-#include "utils/relcache.h"
/*
diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c
index a0a6bd7a50..3dda4bac3a 100644
--- a/src/backend/utils/sort/tuplesort.c
+++ b/src/backend/utils/sort/tuplesort.c
@@ -112,6 +112,7 @@
#include "utils/lsyscache.h"
#include "utils/memutils.h"
#include "utils/pg_rusage.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tuplesort.h"
diff --git a/src/include/access/genam.h b/src/include/access/genam.h
index 39a5d3719e..a2219d6fda 100644
--- a/src/include/access/genam.h
+++ b/src/include/access/genam.h
@@ -14,12 +14,13 @@
#ifndef GENAM_H
#define GENAM_H
-#include "access/relscan.h"
#include "access/sdir.h"
+#include "access/skey.h"
#include "nodes/tidbitmap.h"
#include "storage/buf.h"
#include "storage/lock.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
+#include "utils/snapshot.h"
/*
* Struct for statistics returned by ambuild
@@ -73,21 +74,21 @@ typedef struct IndexBulkDeleteResult
/* Typedef for callback function to determine if a tuple is bulk-deletable */
typedef bool (*IndexBulkDeleteCallback) (ItemPointer itemptr, void *state);
-/* Struct for heap-or-index scans of system tables */
-typedef struct SysScanDescData
-{
- Relation heap_rel; /* catalog being scanned */
- Relation irel; /* NULL if doing heap scan */
- HeapScanDesc scan; /* only valid in heap-scan case */
- IndexScanDesc iscan; /* only valid in index-scan case */
-} SysScanDescData;
-
-typedef SysScanDescData *SysScanDesc;
+/* struct definitions appear in relscan.h */
+typedef struct IndexScanDescData *IndexScanDesc;
+typedef struct SysScanDescData *SysScanDesc;
/*
* generalized index_ interface routines (in indexam.c)
*/
+
+/*
+ * IndexScanIsValid
+ * True iff the index scan is valid.
+ */
+#define IndexScanIsValid(scan) PointerIsValid(scan)
+
extern Relation index_open(Oid relationId, LOCKMODE lockmode);
extern void index_close(Relation relation, LOCKMODE lockmode);
diff --git a/src/include/access/gin.h b/src/include/access/gin.h
index f40f48e6d9..1de07d1a60 100644
--- a/src/include/access/gin.h
+++ b/src/include/access/gin.h
@@ -12,8 +12,8 @@
#ifndef GIN_H
#define GIN_H
+#include "access/genam.h"
#include "access/itup.h"
-#include "access/relscan.h"
#include "access/xlog.h"
#include "fmgr.h"
#include "nodes/tidbitmap.h"
diff --git a/src/include/access/gist.h b/src/include/access/gist.h
index 106de89a06..fb6f764a93 100644
--- a/src/include/access/gist.h
+++ b/src/include/access/gist.h
@@ -18,8 +18,9 @@
#include "access/xlog.h"
#include "access/xlogdefs.h"
+#include "storage/block.h"
#include "storage/bufpage.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
/*
* amproc indexes for GiST indexes.
diff --git a/src/include/access/gist_private.h b/src/include/access/gist_private.h
index d220751a51..463a190aee 100644
--- a/src/include/access/gist_private.h
+++ b/src/include/access/gist_private.h
@@ -16,9 +16,7 @@
#include "access/gist.h"
#include "access/itup.h"
-#include "access/xlog.h"
-#include "access/xlogdefs.h"
-#include "fmgr.h"
+#include "storage/bufmgr.h"
#define GIST_UNLOCK BUFFER_LOCK_UNLOCK
#define GIST_SHARE BUFFER_LOCK_SHARE
diff --git a/src/include/access/hash.h b/src/include/access/hash.h
index c1169cba30..ab0824d909 100644
--- a/src/include/access/hash.h
+++ b/src/include/access/hash.h
@@ -17,12 +17,13 @@
#ifndef HASH_H
#define HASH_H
+#include "access/genam.h"
#include "access/itup.h"
-#include "access/relscan.h"
#include "access/sdir.h"
#include "access/xlog.h"
#include "fmgr.h"
#include "storage/lock.h"
+#include "utils/relcache.h"
/*
* Mapping from hash bucket number to physical block number of bucket's
diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h
index 0acb633439..832167d46a 100644
--- a/src/include/access/heapam.h
+++ b/src/include/access/heapam.h
@@ -15,11 +15,13 @@
#define HEAPAM_H
#include "access/htup.h"
-#include "access/relscan.h"
#include "access/sdir.h"
+#include "access/skey.h"
#include "access/xlog.h"
#include "nodes/primnodes.h"
+#include "storage/bufpage.h"
#include "storage/lock.h"
+#include "utils/relcache.h"
#include "utils/snapshot.h"
@@ -50,6 +52,15 @@ extern Relation heap_openrv(const RangeVar *relation, LOCKMODE lockmode);
#define heap_close(r,l) relation_close(r,l)
+/* struct definition appears in relscan.h */
+typedef struct HeapScanDescData *HeapScanDesc;
+
+/*
+ * HeapScanIsValid
+ * True iff the heap scan is valid.
+ */
+#define HeapScanIsValid(scan) PointerIsValid(scan)
+
extern HeapScanDesc heap_beginscan(Relation relation, Snapshot snapshot,
int nkeys, ScanKey key);
extern HeapScanDesc heap_beginscan_strat(Relation relation, Snapshot snapshot,
diff --git a/src/include/access/hio.h b/src/include/access/hio.h
index 9e09a6ca18..7205fcbc50 100644
--- a/src/include/access/hio.h
+++ b/src/include/access/hio.h
@@ -15,7 +15,7 @@
#define HIO_H
#include "access/htup.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
#include "storage/buf.h"
extern void RelationPutHeapTuple(Relation relation, Buffer buffer,
diff --git a/src/include/access/nbtree.h b/src/include/access/nbtree.h
index 13399119db..3eafe6285d 100644
--- a/src/include/access/nbtree.h
+++ b/src/include/access/nbtree.h
@@ -14,8 +14,8 @@
#ifndef NBTREE_H
#define NBTREE_H
+#include "access/genam.h"
#include "access/itup.h"
-#include "access/relscan.h"
#include "access/sdir.h"
#include "access/xlog.h"
#include "access/xlogutils.h"
diff --git a/src/include/access/relscan.h b/src/include/access/relscan.h
index d13af93739..ac628911b7 100644
--- a/src/include/access/relscan.h
+++ b/src/include/access/relscan.h
@@ -14,11 +14,8 @@
#ifndef RELSCAN_H
#define RELSCAN_H
-#include "access/htup.h"
-#include "access/skey.h"
-#include "storage/bufpage.h"
-#include "utils/rel.h"
-#include "utils/snapshot.h"
+#include "access/genam.h"
+#include "access/heapam.h"
typedef struct HeapScanDescData
@@ -54,8 +51,6 @@ typedef struct HeapScanDescData
OffsetNumber rs_vistuples[MaxHeapTuplesPerPage]; /* their offsets */
} HeapScanDescData;
-typedef HeapScanDescData *HeapScanDesc;
-
/*
* We use the same IndexScanDescData structure for both amgettuple-based
* and amgetbitmap-based index scans. Some fields are only relevant in
@@ -89,19 +84,13 @@ typedef struct IndexScanDescData
TransactionId xs_prev_xmax; /* previous HOT chain member's XMAX, if any */
} IndexScanDescData;
-typedef IndexScanDescData *IndexScanDesc;
-
-
-/*
- * HeapScanIsValid
- * True iff the heap scan is valid.
- */
-#define HeapScanIsValid(scan) PointerIsValid(scan)
-
-/*
- * IndexScanIsValid
- * True iff the index scan is valid.
- */
-#define IndexScanIsValid(scan) PointerIsValid(scan)
+/* Struct for heap-or-index scans of system tables */
+typedef struct SysScanDescData
+{
+ Relation heap_rel; /* catalog being scanned */
+ Relation irel; /* NULL if doing heap scan */
+ HeapScanDesc scan; /* only valid in heap-scan case */
+ IndexScanDesc iscan; /* only valid in index-scan case */
+} SysScanDescData;
#endif /* RELSCAN_H */
diff --git a/src/include/access/rewriteheap.h b/src/include/access/rewriteheap.h
index 2d923ab127..14f6c18278 100644
--- a/src/include/access/rewriteheap.h
+++ b/src/include/access/rewriteheap.h
@@ -14,7 +14,7 @@
#define REWRITE_HEAP_H
#include "access/htup.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
/* struct definition is private to rewriteheap.c */
typedef struct RewriteStateData *RewriteState;
diff --git a/src/include/access/tuptoaster.h b/src/include/access/tuptoaster.h
index 47b015fb44..57e5c3c64d 100644
--- a/src/include/access/tuptoaster.h
+++ b/src/include/access/tuptoaster.h
@@ -15,7 +15,7 @@
#include "access/htup.h"
#include "storage/bufpage.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
/*
* This enables de-toasting of index entries. Needed until VACUUM is
diff --git a/src/include/access/xlogutils.h b/src/include/access/xlogutils.h
index 88e2b127cf..dbcdb1b034 100644
--- a/src/include/access/xlogutils.h
+++ b/src/include/access/xlogutils.h
@@ -12,7 +12,9 @@
#define XLOG_UTILS_H
#include "storage/buf.h"
-#include "utils/rel.h"
+#include "storage/relfilenode.h"
+#include "storage/block.h"
+#include "utils/relcache.h"
extern void XLogCheckInvalidPages(void);
diff --git a/src/include/catalog/catalog.h b/src/include/catalog/catalog.h
index 1510ccc00f..c493ca0ef1 100644
--- a/src/include/catalog/catalog.h
+++ b/src/include/catalog/catalog.h
@@ -14,7 +14,9 @@
#ifndef CATALOG_H
#define CATALOG_H
-#include "utils/rel.h"
+#include "catalog/pg_class.h"
+#include "storage/relfilenode.h"
+#include "utils/relcache.h"
extern char *relpath(RelFileNode rnode);
diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h
index 7dc5215885..881d4929d3 100644
--- a/src/include/catalog/indexing.h
+++ b/src/include/catalog/indexing.h
@@ -16,7 +16,7 @@
#define INDEXING_H
#include "access/htup.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
/*
* The state object used by CatalogOpenIndexes and friends is actually the
diff --git a/src/include/commands/cluster.h b/src/include/commands/cluster.h
index 94d9600b42..f6e8763643 100644
--- a/src/include/commands/cluster.h
+++ b/src/include/commands/cluster.h
@@ -14,7 +14,7 @@
#define CLUSTER_H
#include "nodes/parsenodes.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
extern void cluster(ClusterStmt *stmt, bool isTopLevel);
diff --git a/src/include/commands/tablecmds.h b/src/include/commands/tablecmds.h
index 622e53183f..5a43d27962 100644
--- a/src/include/commands/tablecmds.h
+++ b/src/include/commands/tablecmds.h
@@ -15,7 +15,7 @@
#define TABLECMDS_H
#include "nodes/parsenodes.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
extern Oid DefineRelation(CreateStmt *stmt, char relkind);
diff --git a/src/include/commands/vacuum.h b/src/include/commands/vacuum.h
index d40ecacb00..05ba32cb83 100644
--- a/src/include/commands/vacuum.h
+++ b/src/include/commands/vacuum.h
@@ -20,7 +20,7 @@
#include "nodes/parsenodes.h"
#include "storage/buf.h"
#include "storage/lock.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
/*----------
diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h
index df3f3b609d..0f4e86bc37 100644
--- a/src/include/nodes/execnodes.h
+++ b/src/include/nodes/execnodes.h
@@ -14,11 +14,15 @@
#ifndef EXECNODES_H
#define EXECNODES_H
-#include "access/relscan.h"
+#include "access/genam.h"
+#include "access/heapam.h"
+#include "access/skey.h"
#include "nodes/params.h"
-#include "nodes/plannodes.h"
-#include "nodes/tidbitmap.h"
+#include "nodes/plannodes.h"
+#include "nodes/tidbitmap.h"
#include "utils/hsearch.h"
+#include "utils/rel.h"
+#include "utils/snapshot.h"
#include "utils/tuplestore.h"
diff --git a/src/include/nodes/print.h b/src/include/nodes/print.h
index 5db8cc00fd..717ad3b8b5 100644
--- a/src/include/nodes/print.h
+++ b/src/include/nodes/print.h
@@ -15,7 +15,7 @@
#define PRINT_H
#include "nodes/parsenodes.h"
-#include "nodes/execnodes.h"
+#include "executor/tuptable.h"
#define nodeDisplay(x) pprint(x)
diff --git a/src/include/optimizer/plancat.h b/src/include/optimizer/plancat.h
index bd23b2f1c2..e006e99d2c 100644
--- a/src/include/optimizer/plancat.h
+++ b/src/include/optimizer/plancat.h
@@ -15,7 +15,7 @@
#define PLANCAT_H
#include "nodes/relation.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
/* Hook for plugins to get control in get_relation_info() */
typedef void (*get_relation_info_hook_type) (PlannerInfo *root,
diff --git a/src/include/parser/parse_node.h b/src/include/parser/parse_node.h
index 1b49005a8e..9aab580bd7 100644
--- a/src/include/parser/parse_node.h
+++ b/src/include/parser/parse_node.h
@@ -15,7 +15,7 @@
#define PARSE_NODE_H
#include "nodes/parsenodes.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
/*
* State information used during parse analysis
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index c82b62a1cc..a9f5501143 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -14,7 +14,7 @@
#include "libpq/pqcomm.h"
#include "portability/instr_time.h"
#include "utils/hsearch.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
#include "utils/timestamp.h"
diff --git a/src/include/rewrite/rewriteDefine.h b/src/include/rewrite/rewriteDefine.h
index 93fe22a089..26ad1694a3 100644
--- a/src/include/rewrite/rewriteDefine.h
+++ b/src/include/rewrite/rewriteDefine.h
@@ -15,7 +15,7 @@
#define REWRITEDEFINE_H
#include "nodes/parsenodes.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
#define RULE_FIRES_ON_ORIGIN 'O'
#define RULE_FIRES_ALWAYS 'A'
diff --git a/src/include/rewrite/rewriteHandler.h b/src/include/rewrite/rewriteHandler.h
index 499115c8d2..2ebbeb9374 100644
--- a/src/include/rewrite/rewriteHandler.h
+++ b/src/include/rewrite/rewriteHandler.h
@@ -14,7 +14,7 @@
#ifndef REWRITEHANDLER_H
#define REWRITEHANDLER_H
-#include "utils/rel.h"
+#include "utils/relcache.h"
#include "nodes/parsenodes.h"
extern List *QueryRewrite(Query *parsetree);
diff --git a/src/include/storage/buf_internals.h b/src/include/storage/buf_internals.h
index 356dbe695f..37b8b28f4e 100644
--- a/src/include/storage/buf_internals.h
+++ b/src/include/storage/buf_internals.h
@@ -20,7 +20,7 @@
#include "storage/shmem.h"
#include "storage/smgr.h"
#include "storage/spin.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
/*
diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h
index c860f30b95..9d2dd83c6f 100644
--- a/src/include/storage/bufmgr.h
+++ b/src/include/storage/bufmgr.h
@@ -14,9 +14,11 @@
#ifndef BUFMGR_H
#define BUFMGR_H
+#include "storage/block.h"
#include "storage/buf.h"
#include "storage/bufpage.h"
-#include "utils/rel.h"
+#include "storage/relfilenode.h"
+#include "utils/relcache.h"
typedef void *Block;
diff --git a/src/include/utils/catcache.h b/src/include/utils/catcache.h
index 1a1136b3cb..22865d940e 100644
--- a/src/include/utils/catcache.h
+++ b/src/include/utils/catcache.h
@@ -23,7 +23,7 @@
#include "access/htup.h"
#include "access/skey.h"
#include "lib/dllist.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
/*
* struct catctup: individual tuple in the cache.
diff --git a/src/include/utils/inval.h b/src/include/utils/inval.h
index ce2d100bcf..86ea2442b1 100644
--- a/src/include/utils/inval.h
+++ b/src/include/utils/inval.h
@@ -15,7 +15,7 @@
#define INVAL_H
#include "access/htup.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
typedef void (*CacheCallbackFunction) (Datum arg, Oid relid);
diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h
index 607ac654d2..f5fb98e30e 100644
--- a/src/include/utils/rel.h
+++ b/src/include/utils/rel.h
@@ -23,6 +23,7 @@
#include "rewrite/prs2lock.h"
#include "storage/block.h"
#include "storage/relfilenode.h"
+#include "utils/relcache.h"
/*
@@ -198,18 +199,6 @@ typedef struct RelationData
struct PgStat_TableStatus *pgstat_info; /* statistics collection area */
} RelationData;
-typedef RelationData *Relation;
-
-
-/* ----------------
- * RelationPtr is used in the executor to support index scans
- * where we have to keep track of several index relations in an
- * array. -cim 9/10/89
- * ----------------
- */
-typedef Relation *RelationPtr;
-
-
/*
* StdRdOptions
* Standard contents of rd_options for heaps and generic indexes.
diff --git a/src/include/utils/relcache.h b/src/include/utils/relcache.h
index 96c089d231..2aedabacd5 100644
--- a/src/include/utils/relcache.h
+++ b/src/include/utils/relcache.h
@@ -14,7 +14,20 @@
#ifndef RELCACHE_H
#define RELCACHE_H
-#include "utils/rel.h"
+#include "access/tupdesc.h"
+#include "nodes/bitmapset.h"
+#include "nodes/pg_list.h"
+
+
+typedef struct RelationData *Relation;
+
+/* ----------------
+ * RelationPtr is used in the executor to support index scans
+ * where we have to keep track of several index relations in an
+ * array. -cim 9/10/89
+ * ----------------
+ */
+typedef Relation *RelationPtr;
/*
* Routines to open (lookup) and close a relcache entry
diff --git a/src/include/utils/tuplesort.h b/src/include/utils/tuplesort.h
index ce3261dc35..068618abab 100644
--- a/src/include/utils/tuplesort.h
+++ b/src/include/utils/tuplesort.h
@@ -22,7 +22,8 @@
#include "access/itup.h"
#include "executor/tuptable.h"
-#include "utils/rel.h"
+#include "fmgr.h"
+#include "utils/relcache.h"
/* Tuplesortstate is an opaque type whose details are not known outside