aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/plan/initsplan.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-03-10 15:52:58 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2016-03-10 15:53:07 -0500
commit364a9f47ab363250f62dd2c381c4da435283725a (patch)
tree47e0cd694ab7d5e4ea61ae8b2a5fda55b2a97a73 /src/backend/optimizer/plan/initsplan.c
parent37c54863cf71a4a1126d21db8eb68974bef34374 (diff)
downloadpostgresql-364a9f47ab363250f62dd2c381c4da435283725a.tar.gz
postgresql-364a9f47ab363250f62dd2c381c4da435283725a.zip
Refactor pull_var_clause's API to make it less tedious to extend.
In commit 1d97c19a0f748e94 and later c1d9579dd8bf3c92, we extended pull_var_clause's API by adding enum-type arguments. That's sort of a pain to maintain, though, because it means every time we add a new behavior we must touch every last one of the call sites, even if there's a reasonable default behavior that most of them could use. Let's switch over to using a bitmask of flags, instead; that seems more maintainable and might save a nanosecond or two as well. This commit changes no behavior in itself, though I'm going to follow it up with one that does add a new behavior. In passing, remove flatten_tlist(), which has not been used since 9.1 and would otherwise need the same API changes. Removing these enums means that optimizer/tlist.h no longer needs to depend on optimizer/var.h. Changing that caused a number of C files to need addition of #include "optimizer/var.h" (probably we can thank old runs of pgrminclude for that); but on balance it seems like a good change anyway.
Diffstat (limited to 'src/backend/optimizer/plan/initsplan.c')
-rw-r--r--src/backend/optimizer/plan/initsplan.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/backend/optimizer/plan/initsplan.c b/src/backend/optimizer/plan/initsplan.c
index 37fb5862097..4cbaa5a8816 100644
--- a/src/backend/optimizer/plan/initsplan.c
+++ b/src/backend/optimizer/plan/initsplan.c
@@ -146,7 +146,7 @@ void
build_base_rel_tlists(PlannerInfo *root, List *final_tlist)
{
List *tlist_vars = pull_var_clause((Node *) final_tlist,
- PVC_RECURSE_AGGREGATES,
+ PVC_RECURSE_AGGREGATES |
PVC_INCLUDE_PLACEHOLDERS);
if (tlist_vars != NIL)
@@ -161,7 +161,7 @@ build_base_rel_tlists(PlannerInfo *root, List *final_tlist)
if (root->parse->havingQual)
{
List *having_vars = pull_var_clause(root->parse->havingQual,
- PVC_RECURSE_AGGREGATES,
+ PVC_RECURSE_AGGREGATES |
PVC_INCLUDE_PLACEHOLDERS);
if (having_vars != NIL)
@@ -1787,7 +1787,7 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause,
if (bms_membership(relids) == BMS_MULTIPLE)
{
List *vars = pull_var_clause(clause,
- PVC_RECURSE_AGGREGATES,
+ PVC_RECURSE_AGGREGATES |
PVC_INCLUDE_PLACEHOLDERS);
add_vars_to_targetlist(root, vars, relids, false);