1 /*-------------------------------------------------------------------------
2  *
3  * placeholder.h
4  *	  prototypes for optimizer/util/placeholder.c.
5  *
6  *
7  * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * src/include/optimizer/placeholder.h
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef PLACEHOLDER_H
15 #define PLACEHOLDER_H
16 
17 #include "nodes/pathnodes.h"
18 
19 
20 extern PlaceHolderVar *make_placeholder_expr(PlannerInfo *root, Expr *expr,
21 											 Relids phrels);
22 extern PlaceHolderInfo *find_placeholder_info(PlannerInfo *root,
23 											  PlaceHolderVar *phv, bool create_new_ph);
24 extern void find_placeholders_in_jointree(PlannerInfo *root);
25 extern void update_placeholder_eval_levels(PlannerInfo *root,
26 										   SpecialJoinInfo *new_sjinfo);
27 extern void fix_placeholder_input_needed_levels(PlannerInfo *root);
28 extern void add_placeholders_to_base_rels(PlannerInfo *root);
29 extern void add_placeholders_to_joinrel(PlannerInfo *root, RelOptInfo *joinrel,
30 										RelOptInfo *outer_rel, RelOptInfo *inner_rel);
31 
32 #endif							/* PLACEHOLDER_H */
33