Refactor pull_var_clause's API to make it less tedious to extend.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 10 Mar 2016 20:52:58 +0000 (15:52 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 10 Mar 2016 20:53:07 +0000 (15:53 -0500)
commit364a9f47ab363250f62dd2c381c4da435283725a
tree47e0cd694ab7d5e4ea61ae8b2a5fda55b2a97a73
parent37c54863cf71a4a1126d21db8eb68974bef34374
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.
20 files changed:
contrib/postgres_fdw/deparse.c
src/backend/catalog/heap.c
src/backend/commands/trigger.c
src/backend/optimizer/path/allpaths.c
src/backend/optimizer/path/equivclass.c
src/backend/optimizer/plan/analyzejoins.c
src/backend/optimizer/plan/createplan.c
src/backend/optimizer/plan/initsplan.c
src/backend/optimizer/plan/planner.c
src/backend/optimizer/plan/setrefs.c
src/backend/optimizer/prep/prepjointree.c
src/backend/optimizer/prep/preptlist.c
src/backend/optimizer/util/placeholder.c
src/backend/optimizer/util/tlist.c
src/backend/optimizer/util/var.c
src/backend/parser/parse_agg.c
src/backend/parser/parse_clause.c
src/backend/utils/adt/selfuncs.c
src/include/optimizer/tlist.h
src/include/optimizer/var.h