00001 /*------------------------------------------------------------------------- 00002 * 00003 * placeholder.h 00004 * prototypes for optimizer/util/placeholder.c. 00005 * 00006 * 00007 * Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group 00008 * Portions Copyright (c) 1994, Regents of the University of California 00009 * 00010 * src/include/optimizer/placeholder.h 00011 * 00012 *------------------------------------------------------------------------- 00013 */ 00014 #ifndef PLACEHOLDER_H 00015 #define PLACEHOLDER_H 00016 00017 #include "nodes/relation.h" 00018 00019 00020 extern PlaceHolderVar *make_placeholder_expr(PlannerInfo *root, Expr *expr, 00021 Relids phrels); 00022 extern PlaceHolderInfo *find_placeholder_info(PlannerInfo *root, 00023 PlaceHolderVar *phv, bool create_new_ph); 00024 extern void find_placeholders_in_jointree(PlannerInfo *root); 00025 extern void mark_placeholder_maybe_needed(PlannerInfo *root, 00026 PlaceHolderInfo *phinfo, Relids relids); 00027 extern void update_placeholder_eval_levels(PlannerInfo *root, 00028 SpecialJoinInfo *new_sjinfo); 00029 extern void fix_placeholder_input_needed_levels(PlannerInfo *root); 00030 extern void add_placeholders_to_base_rels(PlannerInfo *root); 00031 extern void add_placeholders_to_joinrel(PlannerInfo *root, 00032 RelOptInfo *joinrel); 00033 00034 #endif /* PLACEHOLDER_H */