summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2019-01-29 16:49:25 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2019-01-29 16:49:25 -0500
commitfa2cf164aaf91e074be653c28e035f65d80eb666 (patch)
treef492596ab11137cf1cfa38400ebfa7d191d19eda
parentf09346a9c6218dd239fdf3a79a729716c0d305bd (diff)
downloadpostgresql-fa2cf164aaf91e074be653c28e035f65d80eb666.tar.gz
Rename nodes/relation.h to nodes/pathnodes.h.
The old name of this file was never a very good indication of what it was for. Now that there's also access/relation.h, we have a potential confusion hazard as well, so let's rename it to something more apropos. Per discussion, "pathnodes.h" is reasonable, since a good fraction of the file is Path node definitions. While at it, tweak a couple of other headers that were gratuitously importing relation.h into modules that don't need it. Discussion: https://postgr.es/m/7719.1548688728@sss.pgh.pa.us
-rw-r--r--contrib/bloom/bloom.h2
-rw-r--r--contrib/postgres_fdw/postgres_fdw.h2
-rw-r--r--src/backend/executor/execAmi.c3
-rw-r--r--src/backend/executor/nodeCustom.c1
-rw-r--r--src/backend/nodes/README2
-rw-r--r--src/backend/nodes/copyfuncs.c4
-rw-r--r--src/backend/nodes/equalfuncs.c4
-rw-r--r--src/backend/nodes/nodeFuncs.c2
-rw-r--r--src/backend/nodes/outfuncs.c4
-rw-r--r--src/backend/nodes/print.c2
-rw-r--r--src/backend/optimizer/path/costsize.c4
-rw-r--r--src/backend/optimizer/util/predtest.c2
-rw-r--r--src/backend/rewrite/rewriteManip.c2
-rw-r--r--src/backend/statistics/dependencies.c2
-rw-r--r--src/backend/statistics/extended_stats.c1
-rw-r--r--src/include/access/tsmapi.h2
-rw-r--r--src/include/executor/executor.h2
-rw-r--r--src/include/executor/nodeCustom.h1
-rw-r--r--src/include/foreign/fdwapi.h2
-rw-r--r--src/include/nodes/extensible.h2
-rw-r--r--src/include/nodes/nodes.h8
-rw-r--r--src/include/nodes/pathnodes.h (renamed from src/include/nodes/relation.h)12
-rw-r--r--src/include/optimizer/appendinfo.h2
-rw-r--r--src/include/optimizer/clauses.h2
-rw-r--r--src/include/optimizer/cost.h2
-rw-r--r--src/include/optimizer/geqo.h2
-rw-r--r--src/include/optimizer/inherit.h2
-rw-r--r--src/include/optimizer/joininfo.h2
-rw-r--r--src/include/optimizer/optimizer.h4
-rw-r--r--src/include/optimizer/orclauses.h2
-rw-r--r--src/include/optimizer/paramassign.h2
-rw-r--r--src/include/optimizer/pathnode.h2
-rw-r--r--src/include/optimizer/paths.h2
-rw-r--r--src/include/optimizer/placeholder.h2
-rw-r--r--src/include/optimizer/plancat.h2
-rw-r--r--src/include/optimizer/planmain.h2
-rw-r--r--src/include/optimizer/planner.h2
-rw-r--r--src/include/optimizer/prep.h2
-rw-r--r--src/include/optimizer/restrictinfo.h2
-rw-r--r--src/include/optimizer/subselect.h2
-rw-r--r--src/include/optimizer/tlist.h2
-rw-r--r--src/include/partitioning/partprune.h9
-rw-r--r--src/include/statistics/statistics.h2
-rw-r--r--src/include/utils/selfuncs.h2
44 files changed, 60 insertions, 59 deletions
diff --git a/contrib/bloom/bloom.h b/contrib/bloom/bloom.h
index 24200fb5fa..d641361aef 100644
--- a/contrib/bloom/bloom.h
+++ b/contrib/bloom/bloom.h
@@ -17,7 +17,7 @@
#include "access/generic_xlog.h"
#include "access/itup.h"
#include "access/xlog.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
#include "fmgr.h"
/* Support procedures numbers */
diff --git a/contrib/postgres_fdw/postgres_fdw.h b/contrib/postgres_fdw/postgres_fdw.h
index ce24c2a4d2..3f50103285 100644
--- a/contrib/postgres_fdw/postgres_fdw.h
+++ b/contrib/postgres_fdw/postgres_fdw.h
@@ -15,7 +15,7 @@
#include "foreign/foreign.h"
#include "lib/stringinfo.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
#include "utils/relcache.h"
#include "libpq-fe.h"
diff --git a/src/backend/executor/execAmi.c b/src/backend/executor/execAmi.c
index cd77f9927e..187f892421 100644
--- a/src/backend/executor/execAmi.c
+++ b/src/backend/executor/execAmi.c
@@ -56,8 +56,9 @@
#include "executor/nodeValuesscan.h"
#include "executor/nodeWindowAgg.h"
#include "executor/nodeWorktablescan.h"
+#include "nodes/extensible.h"
#include "nodes/nodeFuncs.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/executor/nodeCustom.c b/src/backend/executor/nodeCustom.c
index eb65a6385f..6dd0916818 100644
--- a/src/backend/executor/nodeCustom.c
+++ b/src/backend/executor/nodeCustom.c
@@ -14,6 +14,7 @@
#include "executor/executor.h"
#include "executor/nodeCustom.h"
#include "nodes/execnodes.h"
+#include "nodes/extensible.h"
#include "nodes/plannodes.h"
#include "miscadmin.h"
#include "parser/parsetree.h"
diff --git a/src/backend/nodes/README b/src/backend/nodes/README
index 2df4389437..dcd66d7243 100644
--- a/src/backend/nodes/README
+++ b/src/backend/nodes/README
@@ -36,8 +36,8 @@ FILES IN src/include/nodes/
nodes.h - define node tags (NodeTag)
primnodes.h - primitive nodes
parsenodes.h - parse tree nodes
+ pathnodes.h - path tree nodes and planner internal structures
plannodes.h - plan tree nodes
- relation.h - planner internal nodes
execnodes.h - executor nodes
memnodes.h - memory nodes
pg_list.h - generic list
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index 3eb7e95d64..807393dfaa 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -24,8 +24,8 @@
#include "miscadmin.h"
#include "nodes/extensible.h"
+#include "nodes/pathnodes.h"
#include "nodes/plannodes.h"
-#include "nodes/relation.h"
#include "utils/datum.h"
#include "utils/rel.h"
@@ -2196,7 +2196,7 @@ _copyOnConflictExpr(const OnConflictExpr *from)
}
/* ****************************************************************
- * relation.h copy functions
+ * pathnodes.h copy functions
*
* We don't support copying RelOptInfo, IndexOptInfo, or Path nodes.
* There are some subsidiary structs that are useful to copy, though.
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index 5c4fa7d077..a397de155e 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -31,7 +31,7 @@
#include "miscadmin.h"
#include "nodes/extensible.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
#include "utils/datum.h"
@@ -814,7 +814,7 @@ _equalOnConflictExpr(const OnConflictExpr *a, const OnConflictExpr *b)
}
/*
- * Stuff from relation.h
+ * Stuff from pathnodes.h
*/
static bool
diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c
index ecb9abd7fe..1275c7168f 100644
--- a/src/backend/nodes/nodeFuncs.c
+++ b/src/backend/nodes/nodeFuncs.c
@@ -20,7 +20,7 @@
#include "nodes/makefuncs.h"
#include "nodes/execnodes.h"
#include "nodes/nodeFuncs.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index 33f7939e05..9d44e3e4c6 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -32,8 +32,8 @@
#include "lib/stringinfo.h"
#include "miscadmin.h"
#include "nodes/extensible.h"
+#include "nodes/pathnodes.h"
#include "nodes/plannodes.h"
-#include "nodes/relation.h"
#include "utils/datum.h"
#include "utils/rel.h"
@@ -1676,7 +1676,7 @@ _outOnConflictExpr(StringInfo str, const OnConflictExpr *node)
/*****************************************************************************
*
- * Stuff from relation.h.
+ * Stuff from pathnodes.h.
*
*****************************************************************************/
diff --git a/src/backend/nodes/print.c b/src/backend/nodes/print.c
index 6d6da5299f..4b9e141404 100644
--- a/src/backend/nodes/print.c
+++ b/src/backend/nodes/print.c
@@ -22,8 +22,8 @@
#include "access/printtup.h"
#include "lib/stringinfo.h"
#include "nodes/nodeFuncs.h"
+#include "nodes/pathnodes.h"
#include "nodes/print.h"
-#include "nodes/relation.h"
#include "parser/parsetree.h"
#include "utils/lsyscache.h"
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c
index 532de4484f..b8d406f230 100644
--- a/src/backend/optimizer/path/costsize.c
+++ b/src/backend/optimizer/path/costsize.c
@@ -540,7 +540,7 @@ cost_index(IndexPath *path, PlannerInfo *root, double loop_count,
* for scanning the index, as well as the selectivity of the index (ie,
* the fraction of main-table tuples we will have to retrieve) and its
* correlation to the main-table tuple order. We need a cast here because
- * relation.h uses a weak function type to avoid including amapi.h.
+ * pathnodes.h uses a weak function type to avoid including amapi.h.
*/
amcostestimate = (amcostestimate_function) index->amcostestimate;
amcostestimate(root, path, loop_count,
@@ -4072,7 +4072,7 @@ get_restriction_qual_cost(PlannerInfo *root, RelOptInfo *baserel,
* sjinfo: SpecialJoinInfo relevant to this join
* restrictlist: join quals
* Output parameters:
- * *semifactors is filled in (see relation.h for field definitions)
+ * *semifactors is filled in (see pathnodes.h for field definitions)
*/
void
compute_semi_anti_join_factors(PlannerInfo *root,
diff --git a/src/backend/optimizer/util/predtest.c b/src/backend/optimizer/util/predtest.c
index 3b260b1e3c..01f64eeab5 100644
--- a/src/backend/optimizer/util/predtest.c
+++ b/src/backend/optimizer/util/predtest.c
@@ -21,7 +21,7 @@
#include "miscadmin.h"
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
#include "optimizer/optimizer.h"
#include "utils/array.h"
#include "utils/inval.h"
diff --git a/src/backend/rewrite/rewriteManip.c b/src/backend/rewrite/rewriteManip.c
index 57aee3d760..8fa5c11cc7 100644
--- a/src/backend/rewrite/rewriteManip.c
+++ b/src/backend/rewrite/rewriteManip.c
@@ -16,8 +16,8 @@
#include "catalog/pg_type.h"
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
+#include "nodes/pathnodes.h"
#include "nodes/plannodes.h"
-#include "nodes/relation.h"
#include "parser/parse_coerce.h"
#include "parser/parse_relation.h"
#include "parser/parsetree.h"
diff --git a/src/backend/statistics/dependencies.c b/src/backend/statistics/dependencies.c
index 13492ceb9c..96916eafe1 100644
--- a/src/backend/statistics/dependencies.c
+++ b/src/backend/statistics/dependencies.c
@@ -22,7 +22,7 @@
#include "optimizer/clauses.h"
#include "optimizer/optimizer.h"
#include "nodes/nodes.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
#include "statistics/extended_stats_internal.h"
#include "statistics/statistics.h"
#include "utils/bytea.h"
diff --git a/src/backend/statistics/extended_stats.c b/src/backend/statistics/extended_stats.c
index 7f13e434a8..d429a531de 100644
--- a/src/backend/statistics/extended_stats.c
+++ b/src/backend/statistics/extended_stats.c
@@ -22,7 +22,6 @@
#include "catalog/indexing.h"
#include "catalog/pg_collation.h"
#include "catalog/pg_statistic_ext.h"
-#include "nodes/relation.h"
#include "postmaster/autovacuum.h"
#include "statistics/extended_stats_internal.h"
#include "statistics/statistics.h"
diff --git a/src/include/access/tsmapi.h b/src/include/access/tsmapi.h
index f39c55d8d6..a5c0b4cafe 100644
--- a/src/include/access/tsmapi.h
+++ b/src/include/access/tsmapi.h
@@ -13,7 +13,7 @@
#define TSMAPI_H
#include "nodes/execnodes.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
/*
diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h
index 3831cceedf..537fe5cef0 100644
--- a/src/include/executor/executor.h
+++ b/src/include/executor/executor.h
@@ -87,7 +87,7 @@ extern PGDLLIMPORT ExecutorCheckPerms_hook_type ExecutorCheckPerms_hook;
/*
* prototypes from functions in execAmi.c
*/
-struct Path; /* avoid including relation.h here */
+struct Path; /* avoid including pathnodes.h here */
extern void ExecReScan(PlanState *node);
extern void ExecMarkPos(PlanState *node);
diff --git a/src/include/executor/nodeCustom.h b/src/include/executor/nodeCustom.h
index 0ef5870006..3c1dd19a4a 100644
--- a/src/include/executor/nodeCustom.h
+++ b/src/include/executor/nodeCustom.h
@@ -14,7 +14,6 @@
#include "access/parallel.h"
#include "nodes/execnodes.h"
-#include "nodes/extensible.h"
/*
* General executor code
diff --git a/src/include/foreign/fdwapi.h b/src/include/foreign/fdwapi.h
index e19d53a41f..01c95c3267 100644
--- a/src/include/foreign/fdwapi.h
+++ b/src/include/foreign/fdwapi.h
@@ -14,7 +14,7 @@
#include "access/parallel.h"
#include "nodes/execnodes.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
/* To avoid including explain.h here, reference ExplainState thus: */
struct ExplainState;
diff --git a/src/include/nodes/extensible.h b/src/include/nodes/extensible.h
index 7f9b6d8052..58878edba2 100644
--- a/src/include/nodes/extensible.h
+++ b/src/include/nodes/extensible.h
@@ -17,8 +17,8 @@
#include "access/parallel.h"
#include "commands/explain.h"
#include "nodes/execnodes.h"
+#include "nodes/pathnodes.h"
#include "nodes/plannodes.h"
-#include "nodes/relation.h"
/* maximum length of an extensible node identifier */
#define EXTNODENAME_MAX_LEN 64
diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
index 4808a9e76d..fbe2dc14a7 100644
--- a/src/include/nodes/nodes.h
+++ b/src/include/nodes/nodes.h
@@ -215,7 +215,7 @@ typedef enum NodeTag
T_DomainConstraintState,
/*
- * TAGS FOR PLANNER NODES (relation.h)
+ * TAGS FOR PLANNER NODES (pathnodes.h)
*/
T_PlannerInfo,
T_PlannerGlobal,
@@ -741,7 +741,7 @@ typedef enum JoinType
* AggStrategy -
* overall execution strategies for Agg plan nodes
*
- * This is needed in both plannodes.h and relation.h, so put it here...
+ * This is needed in both pathnodes.h and plannodes.h, so put it here...
*/
typedef enum AggStrategy
{
@@ -755,7 +755,7 @@ typedef enum AggStrategy
* AggSplit -
* splitting (partial aggregation) modes for Agg plan nodes
*
- * This is needed in both plannodes.h and relation.h, so put it here...
+ * This is needed in both pathnodes.h and plannodes.h, so put it here...
*/
/* Primitive options supported by nodeAgg.c: */
@@ -785,7 +785,7 @@ typedef enum AggSplit
* SetOpCmd and SetOpStrategy -
* overall semantics and execution strategies for SetOp plan nodes
*
- * This is needed in both plannodes.h and relation.h, so put it here...
+ * This is needed in both pathnodes.h and plannodes.h, so put it here...
*/
typedef enum SetOpCmd
{
diff --git a/src/include/nodes/relation.h b/src/include/nodes/pathnodes.h
index 7917b889ae..d3c477a542 100644
--- a/src/include/nodes/relation.h
+++ b/src/include/nodes/pathnodes.h
@@ -1,18 +1,18 @@
/*-------------------------------------------------------------------------
*
- * relation.h
- * Definitions for planner's internal data structures.
+ * pathnodes.h
+ * Definitions for planner's internal data structures, especially Paths.
*
*
* Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * src/include/nodes/relation.h
+ * src/include/nodes/pathnodes.h
*
*-------------------------------------------------------------------------
*/
-#ifndef RELATION_H
-#define RELATION_H
+#ifndef PATHNODES_H
+#define PATHNODES_H
#include "access/sdir.h"
#include "fmgr.h"
@@ -2433,4 +2433,4 @@ typedef struct JoinCostWorkspace
double inner_rows_total;
} JoinCostWorkspace;
-#endif /* RELATION_H */
+#endif /* PATHNODES_H */
diff --git a/src/include/optimizer/appendinfo.h b/src/include/optimizer/appendinfo.h
index 604e36d73c..790914c1b0 100644
--- a/src/include/optimizer/appendinfo.h
+++ b/src/include/optimizer/appendinfo.h
@@ -14,7 +14,7 @@
#ifndef APPENDINFO_H
#define APPENDINFO_H
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
#include "utils/relcache.h"
extern AppendRelInfo *make_append_rel_info(Relation parentrel,
diff --git a/src/include/optimizer/clauses.h b/src/include/optimizer/clauses.h
index cfedd424ce..23073c0402 100644
--- a/src/include/optimizer/clauses.h
+++ b/src/include/optimizer/clauses.h
@@ -15,7 +15,7 @@
#define CLAUSES_H
#include "access/htup.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
typedef struct
{
diff --git a/src/include/optimizer/cost.h b/src/include/optimizer/cost.h
index 48efbe58f7..ac6de0f6be 100644
--- a/src/include/optimizer/cost.h
+++ b/src/include/optimizer/cost.h
@@ -14,8 +14,8 @@
#ifndef COST_H
#define COST_H
+#include "nodes/pathnodes.h"
#include "nodes/plannodes.h"
-#include "nodes/relation.h"
/* defaults for costsize.c's Cost parameters */
diff --git a/src/include/optimizer/geqo.h b/src/include/optimizer/geqo.h
index dc88fbbc1b..5b3327665e 100644
--- a/src/include/optimizer/geqo.h
+++ b/src/include/optimizer/geqo.h
@@ -22,7 +22,7 @@
#ifndef GEQO_H
#define GEQO_H
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
#include "optimizer/geqo_gene.h"
diff --git a/src/include/optimizer/inherit.h b/src/include/optimizer/inherit.h
index b2687abd4e..d2418f15cf 100644
--- a/src/include/optimizer/inherit.h
+++ b/src/include/optimizer/inherit.h
@@ -14,7 +14,7 @@
#ifndef INHERIT_H
#define INHERIT_H
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
extern void expand_inherited_tables(PlannerInfo *root);
diff --git a/src/include/optimizer/joininfo.h b/src/include/optimizer/joininfo.h
index 6598174331..c6e4be6cf4 100644
--- a/src/include/optimizer/joininfo.h
+++ b/src/include/optimizer/joininfo.h
@@ -14,7 +14,7 @@
#ifndef JOININFO_H
#define JOININFO_H
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
extern bool have_relevant_joinclause(PlannerInfo *root,
diff --git a/src/include/optimizer/optimizer.h b/src/include/optimizer/optimizer.h
index 1cd5c80e76..ffaf5b9450 100644
--- a/src/include/optimizer/optimizer.h
+++ b/src/include/optimizer/optimizer.h
@@ -25,10 +25,10 @@
#include "nodes/parsenodes.h"
/*
- * We don't want to include nodes/relation.h here, because non-planner
+ * We don't want to include nodes/pathnodes.h here, because non-planner
* code should generally treat PlannerInfo as an opaque typedef.
* But we'd like such code to use that typedef name, so define the
- * typedef either here or in relation.h, whichever is read first.
+ * typedef either here or in pathnodes.h, whichever is read first.
*/
#ifndef HAVE_PLANNERINFO_TYPEDEF
typedef struct PlannerInfo PlannerInfo;
diff --git a/src/include/optimizer/orclauses.h b/src/include/optimizer/orclauses.h
index 8ccb98e567..b527900189 100644
--- a/src/include/optimizer/orclauses.h
+++ b/src/include/optimizer/orclauses.h
@@ -14,7 +14,7 @@
#ifndef ORCLAUSES_H
#define ORCLAUSES_H
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
extern void extract_restriction_or_clauses(PlannerInfo *root);
diff --git a/src/include/optimizer/paramassign.h b/src/include/optimizer/paramassign.h
index d18c85c938..e18f420eb4 100644
--- a/src/include/optimizer/paramassign.h
+++ b/src/include/optimizer/paramassign.h
@@ -13,7 +13,7 @@
#ifndef PARAMASSIGN_H
#define PARAMASSIGN_H
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
extern Param *replace_outer_var(PlannerInfo *root, Var *var);
extern Param *replace_outer_placeholdervar(PlannerInfo *root,
diff --git a/src/include/optimizer/pathnode.h b/src/include/optimizer/pathnode.h
index aaaf3f4ff5..d0c8f99d0a 100644
--- a/src/include/optimizer/pathnode.h
+++ b/src/include/optimizer/pathnode.h
@@ -15,7 +15,7 @@
#define PATHNODE_H
#include "nodes/bitmapset.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
/*
diff --git a/src/include/optimizer/paths.h b/src/include/optimizer/paths.h
index 666217c189..1b02b3b889 100644
--- a/src/include/optimizer/paths.h
+++ b/src/include/optimizer/paths.h
@@ -14,7 +14,7 @@
#ifndef PATHS_H
#define PATHS_H
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
/*
diff --git a/src/include/optimizer/placeholder.h b/src/include/optimizer/placeholder.h
index c7764a7226..86a1e5d039 100644
--- a/src/include/optimizer/placeholder.h
+++ b/src/include/optimizer/placeholder.h
@@ -14,7 +14,7 @@
#ifndef PLACEHOLDER_H
#define PLACEHOLDER_H
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
extern PlaceHolderVar *make_placeholder_expr(PlannerInfo *root, Expr *expr,
diff --git a/src/include/optimizer/plancat.h b/src/include/optimizer/plancat.h
index a1b23251a1..40f70f9f2b 100644
--- a/src/include/optimizer/plancat.h
+++ b/src/include/optimizer/plancat.h
@@ -14,7 +14,7 @@
#ifndef PLANCAT_H
#define PLANCAT_H
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
#include "utils/relcache.h"
/* Hook for plugins to get control in get_relation_info() */
diff --git a/src/include/optimizer/planmain.h b/src/include/optimizer/planmain.h
index b2e1c07732..3bbdb5e2f7 100644
--- a/src/include/optimizer/planmain.h
+++ b/src/include/optimizer/planmain.h
@@ -14,8 +14,8 @@
#ifndef PLANMAIN_H
#define PLANMAIN_H
+#include "nodes/pathnodes.h"
#include "nodes/plannodes.h"
-#include "nodes/relation.h"
/* GUC parameters */
#define DEFAULT_CURSOR_TUPLE_FRACTION 0.1
diff --git a/src/include/optimizer/planner.h b/src/include/optimizer/planner.h
index 769a2f8e01..cb41e409dc 100644
--- a/src/include/optimizer/planner.h
+++ b/src/include/optimizer/planner.h
@@ -18,8 +18,8 @@
#ifndef PLANNER_H
#define PLANNER_H
+#include "nodes/pathnodes.h"
#include "nodes/plannodes.h"
-#include "nodes/relation.h"
/* Hook for plugins to get control in planner() */
diff --git a/src/include/optimizer/prep.h b/src/include/optimizer/prep.h
index 5277e990ed..a9b2c9026c 100644
--- a/src/include/optimizer/prep.h
+++ b/src/include/optimizer/prep.h
@@ -14,8 +14,8 @@
#ifndef PREP_H
#define PREP_H
+#include "nodes/pathnodes.h"
#include "nodes/plannodes.h"
-#include "nodes/relation.h"
/*
diff --git a/src/include/optimizer/restrictinfo.h b/src/include/optimizer/restrictinfo.h
index bca480f446..feeaf0e674 100644
--- a/src/include/optimizer/restrictinfo.h
+++ b/src/include/optimizer/restrictinfo.h
@@ -14,7 +14,7 @@
#ifndef RESTRICTINFO_H
#define RESTRICTINFO_H
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
/* Convenience macro for the common case of a valid-everywhere qual */
diff --git a/src/include/optimizer/subselect.h b/src/include/optimizer/subselect.h
index 22959ff423..2d2c3bcbc0 100644
--- a/src/include/optimizer/subselect.h
+++ b/src/include/optimizer/subselect.h
@@ -13,8 +13,8 @@
#ifndef SUBSELECT_H
#define SUBSELECT_H
+#include "nodes/pathnodes.h"
#include "nodes/plannodes.h"
-#include "nodes/relation.h"
extern void SS_process_ctes(PlannerInfo *root);
extern JoinExpr *convert_ANY_sublink_to_join(PlannerInfo *root,
diff --git a/src/include/optimizer/tlist.h b/src/include/optimizer/tlist.h
index 13ac7b88b4..58db79203b 100644
--- a/src/include/optimizer/tlist.h
+++ b/src/include/optimizer/tlist.h
@@ -14,7 +14,7 @@
#ifndef TLIST_H
#define TLIST_H
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
extern TargetEntry *tlist_member(Expr *node, List *targetlist);
diff --git a/src/include/partitioning/partprune.h b/src/include/partitioning/partprune.h
index ce9bc8d9fd..397ffaab36 100644
--- a/src/include/partitioning/partprune.h
+++ b/src/include/partitioning/partprune.h
@@ -15,7 +15,8 @@
#define PARTPRUNE_H
#include "nodes/execnodes.h"
-#include "nodes/relation.h"
+struct PlannerInfo; /* avoid including pathnodes.h here */
+struct RelOptInfo;
/*
@@ -71,12 +72,12 @@ typedef struct PartitionPruneContext
#define PruneCxtStateIdx(partnatts, step_id, keyno) \
((partnatts) * (step_id) + (keyno))
-extern PartitionPruneInfo *make_partition_pruneinfo(PlannerInfo *root,
- RelOptInfo *parentrel,
+extern PartitionPruneInfo *make_partition_pruneinfo(struct PlannerInfo *root,
+ struct RelOptInfo *parentrel,
List *subpaths,
List *partitioned_rels,
List *prunequal);
-extern Relids prune_append_rel_partitions(RelOptInfo *rel);
+extern Bitmapset *prune_append_rel_partitions(struct RelOptInfo *rel);
extern Bitmapset *get_matching_partitions(PartitionPruneContext *context,
List *pruning_steps);
diff --git a/src/include/statistics/statistics.h b/src/include/statistics/statistics.h
index 02d1efb54d..4876e9523f 100644
--- a/src/include/statistics/statistics.h
+++ b/src/include/statistics/statistics.h
@@ -14,7 +14,7 @@
#define STATISTICS_H
#include "commands/vacuum.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
#define STATS_MAX_DIMENSIONS 8 /* max number of attributes */
diff --git a/src/include/utils/selfuncs.h b/src/include/utils/selfuncs.h
index 5cc4cf15e2..6b1ef91af6 100644
--- a/src/include/utils/selfuncs.h
+++ b/src/include/utils/selfuncs.h
@@ -17,7 +17,7 @@
#include "fmgr.h"
#include "access/htup.h"
-#include "nodes/relation.h"
+#include "nodes/pathnodes.h"
/*