506 workspace = (
int *)
palloc(len * 3 *
sizeof(
int));
524 foreach(tl, targetList)
528 bool isSimpleVar =
false;
530 if (variable !=
NULL &&
541 if (!attr->attisdropped && variable->
vartype == attr->atttypid)
551 varNumbers[numSimpleVars] = attnum;
552 varOutputCols[numSimpleVars] = tle->
resno;
553 if (tle->
resno != numSimpleVars + 1)
556 switch (variable->
varno)
586 exprlist =
lappend(exprlist, gstate);
620 switch (variable->
varno)
765 if (resultRelInfos[i].ri_RangeTableIndex == scanrelid)
818 (
errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
819 errmsg(
"materialized view \"%s\" has not been populated",
821 errhint(
"Use the REFRESH MATERIALIZED VIEW command.")));
917 while ((ecxt_callback = *prev_callback) !=
NULL)
919 if (ecxt_callback->
function ==
function && ecxt_callback->
arg == arg)
921 *prev_callback = ecxt_callback->
next;
922 pfree(ecxt_callback);
925 prev_callback = &ecxt_callback->
next;
962 pfree(ecxt_callback);
ExprContext * CreateStandaloneExprContext(void)
JunkFilter * es_junkFilter
#define IsA(nodeptr, _type_)
void MemoryContextDelete(MemoryContext context)
int errhint(const char *fmt,...)
int ExecTargetListLength(List *targetlist)
ProjectionInfo * ps_ProjInfo
TupleTableSlot * es_trig_newtup_slot
#define RelationIsScannable(relation)
void UnregisterExprContextCallback(ExprContext *econtext, ExprContextCallbackFunction function, Datum arg)
ExprContext * ps_ExprContext
MemoryContext ecxt_per_tuple_memory
Form_pg_attribute * attrs
ExprDoneCond * pi_itemIsDone
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
PlannedStmt * es_plannedstmt
Snapshot es_crosscheck_snapshot
int errcode(int sqlerrcode)
ExprContext * es_per_tuple_exprcontext
#define EXEC_FLAG_WITH_NO_DATA
TupleTableSlot * ss_ScanTupleSlot
void MemoryContextReset(MemoryContext context)
List * list_delete_ptr(List *list, void *datum)
void ExecFreeExprContext(PlanState *planstate)
void ExecAssignResultType(PlanState *planstate, TupleDesc tupDesc)
ScanDirection es_direction
#define ALLOCSET_DEFAULT_MINSIZE
void ExecAssignResultTypeFromTL(PlanState *planstate)
void FreeExecutorState(EState *estate)
TupleTableSlot * ps_ResultTupleSlot
ParamExecData * es_param_exec_vals
void pfree(void *pointer)
MemoryContext es_query_cxt
ExprContextCallbackFunction function
Bitmapset * bms_join(Bitmapset *a, Bitmapset *b)
Relation ExecOpenScanRelation(EState *estate, Index scanrelid, int eflags)
ExprContext_CB * ecxt_callbacks
#define outerPlanState(node)
void ExecAssignProjectionInfo(PlanState *planstate, TupleDesc inputDesc)
ResultRelInfo * es_result_relations
ProjectionInfo * ExecBuildProjectionInfo(List *targetList, ExprContext *econtext, TupleTableSlot *slot, TupleDesc inputDesc)
TupleTableSlot * ecxt_innertuple
TupleTableSlot * es_trig_oldtup_slot
ParamExecData * ecxt_param_exec_vals
#define RelationGetRelationName(relation)
struct EState * ecxt_estate
FormData_pg_attribute * Form_pg_attribute
MemoryContext CurrentMemoryContext
TupleTableSlot * es_trig_tuple_slot
#define ereport(elevel, rest)
EState * CreateExecutorState(void)
TupleDesc ExecTypeFromTL(List *targetList, bool hasoid)
struct ExprContext_CB * next
List * lappend(List *list, void *datum)
bool bms_is_empty(const Bitmapset *a)
static void ShutdownExprContext(ExprContext *econtext, bool isCommit)
TupleDesc tts_tupleDescriptor
List * es_trig_target_relations
MemoryContext AllocSetContextCreate(MemoryContext parent, const char *name, Size minContextSize, Size initBlockSize, Size maxBlockSize)
List * es_auxmodifytables
void ExecSetSlotDescriptor(TupleTableSlot *slot, TupleDesc tupdesc)
Bitmapset * bms_intersect(const Bitmapset *a, const Bitmapset *b)
void FreeExprContext(ExprContext *econtext, bool isCommit)
Relation heap_open(Oid relationId, LOCKMODE lockmode)
int es_num_result_relations
static bool get_last_attnums(Node *node, ProjectionInfo *projInfo)
void UpdateChangedParamSet(PlanState *node, Bitmapset *newchg)
List * lcons(void *datum, List *list)
void bms_free(Bitmapset *a)
TupleTableSlot * ecxt_outertuple
void RegisterExprContextCallback(ExprContext *econtext, ExprContextCallbackFunction function, Datum arg)
void ExecAssignExprContext(EState *estate, PlanState *planstate)
bool expression_tree_walker(Node *node, bool(*walker)(), void *context)
void ExecCloseScanRelation(Relation scanrel)
TupleTableSlot * ecxt_scantuple
void ReScanExprContext(ExprContext *econtext)
MemoryContext ecxt_per_query_memory
TupleDesc ExecGetResultType(PlanState *planstate)
void ExecAssignScanTypeFromOuterPlan(ScanState *scanstate)
int errmsg(const char *fmt,...)
#define getrelid(rangeindex, rangetable)
void * MemoryContextAlloc(MemoryContext context, Size size)
ExprContext * MakePerTupleExprContext(EState *estate)
#define ALLOCSET_DEFAULT_INITSIZE
ExprContext * CreateExprContext(EState *estate)
void ExecAssignScanType(ScanState *scanstate, TupleDesc tupDesc)
ParamListInfo es_param_list_info
#define ALLOCSET_DEFAULT_MAXSIZE
bool ExecContextForcesOids(PlanState *planstate, bool *hasoids)
void(* ExprContextCallbackFunction)(Datum arg)
ParamListInfo ecxt_param_list_info
ExprContext * pi_exprContext
#define EXEC_FLAG_EXPLAIN_ONLY
bool ExecRelationIsTargetRelation(EState *estate, Index scanrelid)
#define offsetof(type, field)
ExecRowMark * ExecFindRowMark(EState *estate, Index rti, bool missing_ok)
ResultRelInfo * es_result_relation_info