diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2016-03-10 15:52:58 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2016-03-10 15:53:07 -0500 |
commit | 364a9f47ab363250f62dd2c381c4da435283725a (patch) | |
tree | 47e0cd694ab7d5e4ea61ae8b2a5fda55b2a97a73 /src/backend/optimizer/plan/planner.c | |
parent | 37c54863cf71a4a1126d21db8eb68974bef34374 (diff) | |
download | postgresql-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/planner.c')
-rw-r--r-- | src/backend/optimizer/plan/planner.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 8937e717d06..0161acf5223 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -43,6 +43,7 @@ #include "optimizer/prep.h" #include "optimizer/subselect.h" #include "optimizer/tlist.h" +#include "optimizer/var.h" #include "parser/analyze.h" #include "parser/parsetree.h" #include "parser/parse_agg.h" @@ -3840,7 +3841,7 @@ make_group_input_target(PlannerInfo *root, List *tlist) * pulled out here, too. */ non_group_vars = pull_var_clause((Node *) non_group_cols, - PVC_RECURSE_AGGREGATES, + PVC_RECURSE_AGGREGATES | PVC_INCLUDE_PLACEHOLDERS); sub_tlist = add_to_flat_tlist(sub_tlist, non_group_vars); @@ -4088,7 +4089,7 @@ make_window_input_target(PlannerInfo *root, * at higher levels. */ flattenable_vars = pull_var_clause((Node *) flattenable_cols, - PVC_INCLUDE_AGGREGATES, + PVC_INCLUDE_AGGREGATES | PVC_INCLUDE_PLACEHOLDERS); new_tlist = add_to_flat_tlist(new_tlist, flattenable_vars); |