diff options
author | Tom Lane | 2016-03-11 15:24:33 +0000 |
---|---|---|
committer | Tom Lane | 2016-03-11 15:24:55 +0000 |
commit | 49635d7b3e86c0088eadd80db1563a210bc89efd (patch) | |
tree | e87fb02c921f5c4f27ef1e7468ce40115eb56ff9 /src/include | |
parent | 92f03fe76fe6be683a8b7497579158b8a82b2c25 (diff) |
Minor additional refactoring of planner.c's PathTarget handling.
Teach make_group_input_target() and make_window_input_target() to work
entirely with the PathTarget representation of tlists, rather than
constructing a tlist and immediately deconstructing it into PathTarget
format. In itself this only saves a few palloc's; the bigger picture is
that it opens the door for sharing cost_qual_eval work across all of
planner.c's constructions of PathTargets. I'll come back to that later.
In support of this, flesh out tlist.c's infrastructure for PathTargets
a bit more.
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/optimizer/tlist.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/include/optimizer/tlist.h b/src/include/optimizer/tlist.h index 2c79a80391..0d745a0891 100644 --- a/src/include/optimizer/tlist.h +++ b/src/include/optimizer/tlist.h @@ -55,8 +55,11 @@ extern bool grouping_is_hashable(List *groupClause); extern PathTarget *make_pathtarget_from_tlist(List *tlist); extern List *make_tlist_from_pathtarget(PathTarget *target); extern PathTarget *copy_pathtarget(PathTarget *src); +extern PathTarget *create_empty_pathtarget(void); extern void add_column_to_pathtarget(PathTarget *target, Expr *expr, Index sortgroupref); +extern void add_new_column_to_pathtarget(PathTarget *target, Expr *expr); +extern void add_new_columns_to_pathtarget(PathTarget *target, List *exprs); extern void apply_pathtarget_labeling_to_tlist(List *tlist, PathTarget *target); /* Convenience macro to get a PathTarget with valid cost/width fields */ |