173 var->varnullingrels);
198 context->
root != NULL)
221 if (phv->
phid < context->
root->placeholder_array_size)
222 phinfo = context->
root->placeholder_array[phv->
phid];
250 newevalat =
bms_join(newevalat, delta);
301 context.
varno = varno;
418 if (((
Var *) node)->varlevelsup == 0)
446 int sublevels_up = levelsup;
461 if (((
Var *) node)->varlevelsup == *sublevels_up)
467 if (*sublevels_up == 0)
523 if (((
Var *) node)->varlevelsup == 0 &&
666 context.
flags = flags;
679 if (((
Var *) node)->varlevelsup != 0)
680 elog(
ERROR,
"Upper-level Var found where not expected");
686 if (((
Aggref *) node)->agglevelsup != 0)
687 elog(
ERROR,
"Upper-level Aggref found where not expected");
699 elog(
ERROR,
"Aggref found where not expected");
704 elog(
ERROR,
"Upper-level GROUPING found where not expected");
716 elog(
ERROR,
"GROUPING found where not expected");
732 elog(
ERROR,
"WindowFunc found where not expected");
737 elog(
ERROR,
"Upper-level PlaceHolderVar found where not expected");
749 elog(
ERROR,
"PlaceHolderVar found where not expected");
801 context.
query = query;
839 forboth(lv, rte->joinaliasvars, ln, rte->eref->colnames)
859 fields =
lappend(fields, newvar);
864 rowexpr->
args = fields;
865 rowexpr->row_typeid = var->vartype;
868 rowexpr->colnames = colnames;
925 bool save_inserted_sublink;
937 return (
Node *) newnode;
980 context.
query = query;
1050 return (
Node *) agg;
1079 bool save_inserted_sublink;
1091 return (
Node *) newnode;
1109 if (oldvar->varnullingrels == NULL)
1130 oldvar->varnullingrels);
1161 newnode = (
Node *) newphv;
1175 if (oldvar->varnullingrels == NULL)
1196 elog(
ERROR,
"unsupported join alias expression");
1206 newnode = (
Node *) newphv;
1211 elog(
ERROR,
"unsupported join alias expression");
1227 if (newnode == NULL)
1283 foreach(lc, cexpr->
args)
1304 Var *newvar = (
Var *) newnode;
1307 oldvar->varnullingrels);
1315 oldvar->varnullingrels);
1347 foreach(lc, cexpr->
args)
#define InvalidAttrNumber
Bitmapset * bms_difference(const Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_make_singleton(int x)
bool bms_equal(const Bitmapset *a, const Bitmapset *b)
int bms_next_member(const Bitmapset *a, int prevbit)
Bitmapset * bms_del_member(Bitmapset *a, int x)
Bitmapset * bms_add_member(Bitmapset *a, int x)
Bitmapset * bms_add_members(Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_join(Bitmapset *a, Bitmapset *b)
Bitmapset * bms_copy(const Bitmapset *a)
#define Assert(condition)
bool contain_agg_clause(Node *clause)
bool contain_window_function(Node *clause)
bool contain_volatile_functions(Node *clause)
List * lappend(List *list, void *datum)
bool expression_returns_set(Node *clause)
#define expression_tree_mutator(n, m, c)
#define query_tree_walker(q, w, c, f)
#define query_or_expression_tree_walker(n, w, c, f)
#define QTW_IGNORE_GROUPEXPRS
#define expression_tree_walker(n, w, c)
#define query_tree_mutator(q, m, c, f)
#define QTW_IGNORE_JOINALIASES
#define IsA(nodeptr, _type_)
#define PVC_RECURSE_AGGREGATES
#define PVC_RECURSE_PLACEHOLDERS
#define PVC_RECURSE_WINDOWFUNCS
#define PVC_INCLUDE_WINDOWFUNCS
#define PVC_INCLUDE_PLACEHOLDERS
#define PVC_INCLUDE_AGGREGATES
#define rt_fetch(rangetable_index, rangetable)
static int list_length(const List *l)
#define forboth(cell1, list1, cell2, list2)
static void * list_nth(const List *list, int n)
PlaceHolderVar * make_placeholder_expr(PlannerInfo *root, Expr *expr, Relids phrels)
Relids get_relids_for_join(Query *query, int joinrelid)
Relids get_relids_in_jointree(Node *jtnode, bool include_outer_joins, bool include_inner_joins)
bool checkExprHasSubLink(Node *node)
Node * add_nulling_relids(Node *node, const Bitmapset *target_relids, const Bitmapset *added_relids)
void IncrementVarSublevelsUp(Node *node, int delta_sublevels_up, int min_sublevels_up)
#define FirstLowInvalidHeapAttributeNumber
static bool pull_varattnos_walker(Node *node, pull_varattnos_context *context)
static Node * add_nullingrels_if_needed(PlannerInfo *root, Node *newnode, Var *oldvar)
bool contain_vars_of_level(Node *node, int levelsup)
Node * flatten_group_exprs(PlannerInfo *root, Query *query, Node *node)
static Node * flatten_join_alias_vars_mutator(Node *node, flatten_join_alias_vars_context *context)
bool contain_var_clause(Node *node)
Relids pull_varnos_of_level(PlannerInfo *root, Node *node, int levelsup)
Relids pull_varnos(PlannerInfo *root, Node *node)
static bool pull_varnos_walker(Node *node, pull_varnos_context *context)
static bool pull_var_clause_walker(Node *node, pull_var_clause_context *context)
static Node * flatten_group_exprs_mutator(Node *node, flatten_join_alias_vars_context *context)
List * pull_vars_of_level(Node *node, int levelsup)
List * pull_var_clause(Node *node, int flags)
static Relids alias_relid_set(Query *query, Relids relids)
static bool contain_vars_of_level_walker(Node *node, int *sublevels_up)
static bool contain_vars_returning_old_or_new_walker(Node *node, void *context)
Node * flatten_join_alias_vars(PlannerInfo *root, Query *query, Node *node)
static bool is_standard_join_alias_expression(Node *newnode, Var *oldvar)
static Node * mark_nullable_by_grouping(PlannerInfo *root, Node *newnode, Var *oldvar)
void pull_varattnos(Node *node, Index varno, Bitmapset **varattnos)
static void adjust_standard_join_alias_expression(Node *newnode, Var *oldvar)
static bool locate_var_of_level_walker(Node *node, locate_var_of_level_context *context)
int locate_var_of_level(Node *node, int levelsup)
bool contain_vars_returning_old_or_new(Node *node)
static bool contain_var_clause_walker(Node *node, void *context)
static bool pull_vars_walker(Node *node, pull_vars_context *context)