1/*-------------------------------------------------------------------------
2 *
3 * placeholder.h
4 * prototypes for optimizer/util/placeholder.c.
5 *
6 *
7 * Portions Copyright (c) 1996-2019, 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
20extern PlaceHolderVar *make_placeholder_expr(PlannerInfo *root, Expr *expr,
21 Relids phrels);
22extern PlaceHolderInfo *find_placeholder_info(PlannerInfo *root,
23 PlaceHolderVar *phv, bool create_new_ph);
24extern void find_placeholders_in_jointree(PlannerInfo *root);
25extern void update_placeholder_eval_levels(PlannerInfo *root,
26 SpecialJoinInfo *new_sjinfo);
27extern void fix_placeholder_input_needed_levels(PlannerInfo *root);
28extern void add_placeholders_to_base_rels(PlannerInfo *root);
29extern void add_placeholders_to_joinrel(PlannerInfo *root, RelOptInfo *joinrel,
30 RelOptInfo *outer_rel, RelOptInfo *inner_rel);
31
32#endif /* PLACEHOLDER_H */
33