73 Datum *resv,
bool *resnull);
75 Oid funcid,
Oid inputcollid,
79 Datum *resv,
bool *resnull);
89 Datum *resv,
bool *resnull);
93 Datum *resv,
bool *resnull);
97 int transno,
int setno,
int setoff,
bool ishash,
100 Datum *resv,
bool *resnull,
105 Datum *resv,
bool *resnull);
155 state->parent = parent;
156 state->ext_params = NULL;
192 state->parent = NULL;
193 state->ext_params = ext_params;
243 state->parent = parent;
244 state->ext_params = NULL;
276 state->steps_len - 1);
386 state->parent = parent;
387 state->ext_params = NULL;
389 state->resultslot = slot;
395 foreach(lc, targetList)
400 bool isSafeVar =
false;
410 if (tle->
expr != NULL &&
412 ((
Var *) tle->
expr)->varattno > 0)
418 if (inputDesc == NULL)
420 else if (attnum <= inputDesc->natts)
429 if (!attr->attisdropped &&
variable->vartype == attr->atttypid)
574 state->parent = parent;
575 state->ext_params = NULL;
577 state->resultslot = slot;
585 foreach(lc, targetList)
594 elog(
ERROR,
"subplan target list is out of order");
601 elog(
ERROR,
"targetColnos does not match subplan target list");
609 foreach(lc, targetColnos)
653 forboth(lc, targetList, lc2, targetColnos)
664 if (targetattnum <= 0 || targetattnum > relDesc->
natts)
666 (
errcode(ERRCODE_DATATYPE_MISMATCH),
667 errmsg(
"table row type and query-specified row type do not match"),
668 errdetail(
"Query has too many columns.")));
671 if (attr->attisdropped)
673 (
errcode(ERRCODE_DATATYPE_MISMATCH),
674 errmsg(
"table row type and query-specified row type do not match"),
675 errdetail(
"Query provides a value for a dropped column at ordinal position %d.",
679 (
errcode(ERRCODE_DATATYPE_MISMATCH),
680 errmsg(
"table row type and query-specified row type do not match"),
681 errdetail(
"Table has type %s at ordinal position %d, but query expects %s.",
920 Datum *resv,
bool *resnull)
928 Assert(resv != NULL && resnull != NULL);
1052 if (
state->ext_params)
1053 params =
state->ext_params;
1054 else if (
state->parent &&
1055 state->parent->state)
1056 params =
state->parent->state->es_param_list_info;
1073 elog(
ERROR,
"unrecognized paramkind: %d",
1096 elog(
ERROR,
"Aggref found in non-Agg plan node");
1103 case T_GroupingFunc:
1110 elog(
ERROR,
"GroupingFunc found in non-Agg plan node");
1114 agg = (
Agg *) (
state->parent->plan);
1130 wfstate->
wfunc = wfunc;
1156 (
errcode(ERRCODE_WINDOWING_ERROR),
1157 errmsg(
"window function calls cannot be nested")));
1162 elog(
ERROR,
"WindowFunc found in non-WindowAgg plan node");
1171 case T_MergeSupportFunc:
1174 if (!
state->parent ||
1177 elog(
ERROR,
"MergeSupportFunc found in non-merge plan node");
1184 case T_SubscriptingRef:
1208 op->
args, op->opfuncid, op->inputcollid,
1214 case T_DistinctExpr:
1219 op->
args, op->opfuncid, op->inputcollid,
1241 op->
args, op->opfuncid, op->inputcollid,
1266 case T_ScalarArrayOpExpr:
1285 cmpfuncid = opexpr->negfuncid;
1288 cmpfuncid = opexpr->opfuncid;
1320 opexpr->inputcollid, NULL, NULL);
1407 foreach(lc, boolexpr->
args)
1415 switch (boolexpr->
boolop)
1422 else if (off + 1 == nargs)
1432 else if (off + 1 == nargs)
1451 state->steps_len - 1);
1456 foreach(lc, adjust_jumps)
1520 ncolumns = tupDesc->
natts;
1525 nulls = (
bool *)
palloc(
sizeof(
bool) * ncolumns);
1548 Datum *save_innermost_caseval;
1549 bool *save_innermost_casenull;
1551 if (fieldnum <= 0 || fieldnum > ncolumns)
1552 elog(
ERROR,
"field number %d is out of range in FieldStore",
1579 save_innermost_caseval =
state->innermost_caseval;
1580 save_innermost_casenull =
state->innermost_casenull;
1582 state->innermost_casenull = &nulls[fieldnum - 1];
1586 &nulls[fieldnum - 1]);
1588 state->innermost_caseval = save_innermost_caseval;
1589 state->innermost_casenull = save_innermost_casenull;
1631 if (
state->escontext == NULL)
1641 &iofunc, &typisvarlena);
1653 &iofunc, &typioparam);
1676 case T_ArrayCoerceExpr:
1688 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
1689 errmsg(
"target type is not an array")));
1743 case T_ConvertRowtypeExpr:
1774 Datum *caseval = NULL;
1775 bool *casenull = NULL;
1783 if (caseExpr->
arg != NULL)
1787 casenull =
palloc(
sizeof(
bool));
1817 foreach(lc, caseExpr->
args)
1820 Datum *save_innermost_caseval;
1821 bool *save_innermost_casenull;
1834 save_innermost_caseval =
state->innermost_caseval;
1835 save_innermost_casenull =
state->innermost_casenull;
1836 state->innermost_caseval = caseval;
1837 state->innermost_casenull = casenull;
1842 state->innermost_caseval = save_innermost_caseval;
1843 state->innermost_casenull = save_innermost_casenull;
1849 whenstep =
state->steps_len - 1;
1867 state->steps_len - 1);
1873 state->steps[whenstep].d.jump.jumpdone =
state->steps_len;
1884 foreach(lc, adjust_jumps)
1896 case T_CaseTestExpr:
1907 if (
state->innermost_caseval == NULL)
1935 (
bool *)
palloc(
sizeof(
bool) * nelems);
1950 foreach(lc, arrayexpr->elements)
1974 if (rowexpr->row_typeid == RECORDOID)
1997 Assert(nelems <= tupdesc->natts);
1998 nelems =
Max(nelems, tupdesc->
natts);
2011 (
bool *)
palloc(
sizeof(
bool) * nelems);
2013 memset(scratch.
d.
row.
elemnulls,
true,
sizeof(
bool) * nelems);
2017 foreach(l, rowexpr->
args)
2022 if (!att->attisdropped)
2032 (
errcode(ERRCODE_DATATYPE_MISMATCH),
2033 errmsg(
"ROW() column has type %s instead of type %s",
2059 case T_RowCompareExpr:
2082 l_right_expr, rcexpr->
rargs,
2083 l_opno, rcexpr->opnos,
2084 l_opfamily, rcexpr->opfamilies,
2085 l_inputcollid, rcexpr->inputcollids)
2108 elog(
ERROR,
"missing support function %d(%u,%u) in opfamily %u",
2117 inputcollid, NULL, NULL);
2142 state->steps_len - 1);
2163 foreach(lc, adjust_jumps)
2180 case T_CoalesceExpr:
2193 foreach(lc, coalesce->
args)
2206 state->steps_len - 1);
2216 foreach(lc, adjust_jumps)
2243 (
errcode(ERRCODE_UNDEFINED_FUNCTION),
2244 errmsg(
"could not identify a comparison function for type %s",
2260 minmaxexpr->inputcollid, NULL, NULL);
2267 (
bool *)
palloc(
sizeof(
bool) * nelems);
2276 foreach(lc, minmaxexpr->
args)
2291 case T_SQLValueFunction:
2319 (
bool *)
palloc(
sizeof(
bool) * nnamed);
2332 (
bool *)
palloc(
sizeof(
bool) * nargs);
2368 case T_JsonValueExpr:
2379 case T_JsonConstructorExpr:
2410 jcstate->
nargs = nargs;
2423 jcstate->
arg_values[argno] = con->constvalue;
2424 jcstate->
arg_nulls[argno] = con->constisnull;
2444 for (
int i = 0;
i < nargs;
i++)
2451 &category, &outfuncid);
2463 Datum *innermost_caseval =
state->innermost_caseval;
2464 bool *innermost_isnull =
state->innermost_casenull;
2466 state->innermost_caseval = resv;
2467 state->innermost_casenull = resnull;
2471 state->innermost_caseval = innermost_caseval;
2472 state->innermost_casenull = innermost_isnull;
2477 case T_JsonIsPredicate:
2513 if (ntest->argisrow)
2520 if (ntest->argisrow)
2527 elog(
ERROR,
"unrecognized nulltesttype: %d",
2577 elog(
ERROR,
"unrecognized booltesttype: %d",
2585 case T_CoerceToDomain:
2594 case T_CoerceToDomainValue:
2604 if (
state->innermost_domainval == NULL)
2617 case T_CurrentOfExpr:
2624 case T_NextValueExpr:
2636 case T_ReturningExpr:
2647 retstep =
state->steps_len - 1;
2653 state->steps[retstep].d.returningexpr.jumpdone =
state->steps_len;
2665 elog(
ERROR,
"unrecognized node type: %d",
2728 (
errcode(ERRCODE_TOO_MANY_ARGUMENTS),
2729 errmsg_plural(
"cannot pass more than %d argument to a function",
2730 "cannot pass more than %d arguments to a function",
2746 nargs, inputcollid, NULL, NULL);
2755 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
2756 errmsg(
"set-valued function called in context that cannot accept a set"),
2775 fcinfo->
args[argno].
value = con->constvalue;
2776 fcinfo->
args[argno].
isnull = con->constisnull;
2788 if (pgstat_track_functions <= flinfo->fn_stats)
2795 else if (nargs == 2)
2823 Datum *resv,
bool *resnull)
2831 elog(
ERROR,
"SubPlan found with no parent plan");
3005 switch (
variable->varreturningtype)
3067 bool isfixed =
false;
3139 if (isfixed && desc != NULL && tts_ops != NULL)
3200 case T_SubqueryScanState:
3203 case T_CteScanState:
3212 bool junk_filter_needed =
false;
3222 junk_filter_needed =
true;
3228 if (junk_filter_needed)
3261 (
errcode(ERRCODE_DATATYPE_MISMATCH),
3262 errmsg(
"cannot subscript type %s because it does not support subscripting",
3270 (nupper + nlower) * (
sizeof(
Datum) +
3280 ptr += nupper *
sizeof(
Datum);
3282 ptr += nlower *
sizeof(
Datum);
3284 ptr += nupper *
sizeof(bool);
3286 ptr += nlower *
sizeof(bool);
3288 ptr += nupper *
sizeof(bool);
3298 memset(&methods, 0,
sizeof(methods));
3299 sbsroutines->
exec_setup(sbsref, sbsrefstate, &methods);
3320 state->steps_len - 1);
3378 state->steps_len - 1);
3383 Datum *save_innermost_caseval;
3384 bool *save_innermost_casenull;
3389 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
3390 errmsg(
"type %s does not support subscripted assignment",
3411 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
3412 errmsg(
"type %s does not support subscripted assignment",
3421 save_innermost_caseval =
state->innermost_caseval;
3422 save_innermost_casenull =
state->innermost_casenull;
3430 state->innermost_caseval = save_innermost_caseval;
3431 state->innermost_casenull = save_innermost_casenull;
3449 foreach(lc, adjust_jumps)
3526 Datum *domainval = NULL;
3527 bool *domainnull = NULL;
3575 Datum *save_innermost_domainval;
3576 bool *save_innermost_domainnull;
3593 (
bool *)
palloc(
sizeof(
bool));
3600 if (domainval == NULL)
3612 domainnull = (
bool *)
palloc(
sizeof(
bool));
3617 scratch2.
resnull = domainnull;
3626 domainnull = resnull;
3636 save_innermost_domainval =
state->innermost_domainval;
3637 save_innermost_domainnull =
state->innermost_domainnull;
3638 state->innermost_domainval = domainval;
3639 state->innermost_domainnull = domainnull;
3646 state->innermost_domainval = save_innermost_domainval;
3647 state->innermost_domainnull = save_innermost_domainnull;
3655 elog(
ERROR,
"unrecognized constraint type: %d",
3678 bool doSort,
bool doHash,
bool nullcheck)
3687 state->parent = parent;
3696 for (
int transno = 0; transno < aggstate->
numtrans; transno++)
3716 for (
int transno = 0; transno < aggstate->
numtrans; transno++)
3722 bool *strictnulls = NULL;
3742 state->steps_len - 1);
3761 strictargs = trans_fcinfo->
args + 1;
3809 state->steps_len - 1);
3828 strictargs = trans_fcinfo->
args + 1;
3866 strictnulls = &
state->resnull;
3881 strictnulls = nulls;
3888 &
values[argno], &nulls[argno]);
3913 state->steps_len - 1);
3928 state->steps_len - 1);
3938 int processGroupingSets =
Max(phase->
numsets, 1);
3941 for (
int setno = 0; setno < processGroupingSets; setno++)
3944 pertrans, transno, setno, setoff,
false,
3961 for (
int setno = 0; setno < numHashes; setno++)
3964 pertrans, transno, setno, setoff,
true,
3971 foreach(
bail, adjust_bailout)
4022 int transno,
int setno,
int setoff,
bool ishash,
4026 int adjust_jumpnull = -1;
4041 adjust_jumpnull =
state->steps_len - 1;
4114 if (adjust_jumpnull != -1)
4154 state->parent = parent;
4161 if ((
int64) numCols + (init_value != 0) > 1)
4165 for (
int i = 0;
i < numCols;
i++)
4166 last_attnum =
Max(last_attnum, keyColIdx[
i]);
4176 if (init_value == 0)
4206 for (
int i = 0;
i < numCols;
i++)
4210 Oid inputcollid = collations[
i];
4213 finfo = &hashfunctions[
i];
4235 if (
i == numCols - 1)
4301 const Oid *hashfunc_oids,
const List *collations,
4302 const List *hash_exprs,
const bool *opstrict,
4311 intptr_t strict_opcode;
4317 state->parent = parent;
4327 if ((
int64) num_exprs + (init_value != 0) > 1)
4330 if (init_value == 0)
4362 forboth(lc, hash_exprs, lc2, collations)
4371 funcid = hashfunc_oids[
i];
4388 if (
i == num_exprs - 1)
4416 scratch.
opcode = opstrict[
i] && !keep_nulls ? strict_opcode : opcode;
4431 foreach(lc, adjust_jumps)
4469 const Oid *eqfunctions,
4470 const Oid *collations,
4488 state->parent = parent;
4494 for (
int natt = 0; natt < numCols; natt++)
4496 int attno = keyColIdx[natt];
4524 for (
int natt = numCols; --natt >= 0;)
4526 int attno = keyColIdx[natt];
4529 Oid foid = eqfunctions[natt];
4585 state->steps_len - 1);
4589 foreach(lc, adjust_jumps)
4627 const Oid *eqfunctions,
4628 const Oid *collations,
4629 const List *param_exprs,
4640 state->parent = parent;
4662 for (
int attno = 0; attno < maxatt; attno++)
4665 Oid foid = eqfunctions[attno];
4721 state->steps_len - 1);
4725 foreach(lc, adjust_jumps)
4749 Datum *resv,
bool *resnull,
4755 List *jumps_return_null =
NIL;
4759 bool returning_domain =
4764 jsestate->
jsexpr = jsexpr;
4827 foreach(lc, jumps_return_null)
4943 saved_escontext =
state->escontext;
4944 state->escontext = escontext;
4946 state, resv, resnull);
4947 state->escontext = saved_escontext;
5006 saved_escontext =
state->escontext;
5007 state->escontext = escontext;
5009 state, resv, resnull);
5010 state->escontext = saved_escontext;
5035 foreach(lc, jumps_to_end)
5053 Datum *resv,
bool *resnull)
void aclcheck_error(AclResult aclerr, ObjectType objtype, const char *objectname)
AclResult object_aclcheck(Oid classid, Oid objectid, Oid roleid, AclMode mode)
#define InvalidAttrNumber
bool bms_is_member(int x, const Bitmapset *a)
Bitmapset * bms_add_member(Bitmapset *a, int x)
static Datum values[MAXATTR]
#define OidIsValid(objectId)
int errmsg_plural(const char *fmt_singular, const char *fmt_plural, unsigned long n,...)
int errdetail(const char *fmt,...)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
void ExecReadyInterpretedExpr(ExprState *state)
static void ExecInitCoerceToDomain(ExprEvalStep *scratch, CoerceToDomain *ctest, ExprState *state, Datum *resv, bool *resnull)
static void ExecInitSubPlanExpr(SubPlan *subplan, ExprState *state, Datum *resv, bool *resnull)
ExprState * ExecBuildHash32FromAttrs(TupleDesc desc, const TupleTableSlotOps *ops, FmgrInfo *hashfunctions, Oid *collations, int numCols, AttrNumber *keyColIdx, PlanState *parent, uint32 init_value)
ExprState * ExecInitExpr(Expr *node, PlanState *parent)
ExprState * ExecPrepareExpr(Expr *node, EState *estate)
bool ExecCheck(ExprState *state, ExprContext *econtext)
ExprState * ExecInitCheck(List *qual, PlanState *parent)
static void ExecPushExprSetupSteps(ExprState *state, ExprSetupInfo *info)
static void ExecInitExprRec(Expr *node, ExprState *state, Datum *resv, bool *resnull)
static void ExecBuildAggTransCall(ExprState *state, AggState *aggstate, ExprEvalStep *scratch, FunctionCallInfo fcinfo, AggStatePerTrans pertrans, int transno, int setno, int setoff, bool ishash, bool nullcheck)
static void ExecInitWholeRowVar(ExprEvalStep *scratch, Var *variable, ExprState *state)
void ExprEvalPushStep(ExprState *es, const ExprEvalStep *s)
ProjectionInfo * ExecBuildProjectionInfo(List *targetList, ExprContext *econtext, TupleTableSlot *slot, PlanState *parent, TupleDesc inputDesc)
struct ExprSetupInfo ExprSetupInfo
static bool isAssignmentIndirectionExpr(Expr *expr)
static void ExecInitSubscriptingRef(ExprEvalStep *scratch, SubscriptingRef *sbsref, ExprState *state, Datum *resv, bool *resnull)
ExprState * ExecPrepareQual(List *qual, EState *estate)
ExprState * ExecInitQual(List *qual, PlanState *parent)
static bool expr_setup_walker(Node *node, ExprSetupInfo *info)
static void ExecInitJsonCoercion(ExprState *state, JsonReturning *returning, ErrorSaveContext *escontext, bool omit_quotes, bool exists_coerce, Datum *resv, bool *resnull)
List * ExecInitExprList(List *nodes, PlanState *parent)
ExprState * ExecInitExprWithParams(Expr *node, ParamListInfo ext_params)
ProjectionInfo * ExecBuildUpdateProjection(List *targetList, bool evalTargetList, List *targetColnos, TupleDesc relDesc, ExprContext *econtext, TupleTableSlot *slot, PlanState *parent)
ExprState * ExecBuildGroupingEqual(TupleDesc ldesc, TupleDesc rdesc, const TupleTableSlotOps *lops, const TupleTableSlotOps *rops, int numCols, const AttrNumber *keyColIdx, const Oid *eqfunctions, const Oid *collations, PlanState *parent)
static bool ExecComputeSlotInfo(ExprState *state, ExprEvalStep *op)
ExprState * ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase, bool doSort, bool doHash, bool nullcheck)
static void ExecInitFunc(ExprEvalStep *scratch, Expr *node, List *args, Oid funcid, Oid inputcollid, ExprState *state)
static void ExecCreateExprSetupSteps(ExprState *state, Node *node)
List * ExecPrepareExprList(List *nodes, EState *estate)
static void ExecReadyExpr(ExprState *state)
static void ExecInitJsonExpr(JsonExpr *jsexpr, ExprState *state, Datum *resv, bool *resnull, ExprEvalStep *scratch)
ExprState * ExecBuildParamSetEqual(TupleDesc desc, const TupleTableSlotOps *lops, const TupleTableSlotOps *rops, const Oid *eqfunctions, const Oid *collations, const List *param_exprs, PlanState *parent)
ExprState * ExecBuildHash32Expr(TupleDesc desc, const TupleTableSlotOps *ops, const Oid *hashfunc_oids, const List *collations, const List *hash_exprs, const bool *opstrict, PlanState *parent, uint32 init_value, bool keep_nulls)
ExprState * ExecPrepareCheck(List *qual, EState *estate)
@ EEOP_FUNCEXPR_STRICT_FUSAGE
@ EEOP_HASHDATUM_NEXT32_STRICT
@ EEOP_JSONEXPR_COERCION_FINISH
@ EEOP_HASHDATUM_FIRST_STRICT
@ EEOP_AGG_PLAIN_PERGROUP_NULLCHECK
@ EEOP_AGG_STRICT_DESERIALIZE
@ EEOP_BOOLTEST_IS_NOT_FALSE
@ EEOP_AGG_PLAIN_TRANS_BYREF
@ EEOP_AGG_PRESORTED_DISTINCT_MULTI
@ EEOP_AGG_PLAIN_TRANS_BYVAL
@ EEOP_NULLTEST_ROWISNOTNULL
@ EEOP_ASSIGN_TMP_MAKE_RO
@ EEOP_BOOL_OR_STEP_FIRST
@ EEOP_AGG_STRICT_INPUT_CHECK_NULLS
@ EEOP_AGG_STRICT_INPUT_CHECK_ARGS_1
@ EEOP_AGG_STRICT_INPUT_CHECK_ARGS
@ EEOP_NULLTEST_ROWISNULL
@ EEOP_NULLTEST_ISNOTNULL
@ EEOP_MERGE_SUPPORT_FUNC
@ EEOP_AGG_PRESORTED_DISTINCT_SINGLE
@ EEOP_BOOL_AND_STEP_FIRST
@ EEOP_DOMAIN_TESTVAL_EXT
@ EEOP_BOOL_AND_STEP_LAST
@ EEOP_AGG_ORDERED_TRANS_DATUM
@ EEOP_HASHDATUM_SET_INITVAL
@ EEOP_AGG_PLAIN_TRANS_STRICT_BYREF
@ EEOP_BOOLTEST_IS_NOT_TRUE
@ EEOP_AGG_PLAIN_TRANS_INIT_STRICT_BYVAL
@ EEOP_AGG_PLAIN_TRANS_STRICT_BYVAL
@ EEOP_AGG_PLAIN_TRANS_INIT_STRICT_BYREF
@ EEOP_HASHED_SCALARARRAYOP
@ EEOP_AGG_ORDERED_TRANS_TUPLE
JunkFilter * ExecInitJunkFilter(List *targetList, TupleTableSlot *slot)
TupleDesc BlessTupleDesc(TupleDesc tupdesc)
const TupleTableSlotOps TTSOpsVirtual
void ExecTypeSetColNames(TupleDesc typeInfo, List *namesList)
TupleTableSlot * ExecInitExtraTupleSlot(EState *estate, TupleDesc tupledesc, const TupleTableSlotOps *tts_ops)
TupleDesc ExecTypeFromExprList(List *exprList)
TupleDesc ExecGetResultType(PlanState *planstate)
int executor_errposition(EState *estate, int location)
const TupleTableSlotOps * ExecGetResultSlotOps(PlanState *planstate, bool *isfixed)
#define outerPlanState(node)
#define EEO_FLAG_NEW_IS_NULL
#define innerPlanState(node)
#define EEO_FLAG_OLD_IS_NULL
static Datum ExecEvalExprSwitchContext(ExprState *state, ExprContext *econtext, bool *isNull)
void fmgr_info(Oid functionId, FmgrInfo *finfo)
#define SizeForFunctionCallInfo(nargs)
#define InitFunctionCallInfoData(Fcinfo, Flinfo, Nargs, Collation, Context, Resultinfo)
#define fmgr_info_set_expr(expr, finfo)
Assert(PointerIsAligned(start, uint64))
if(TABLE==NULL||TABLE_index==NULL)
bool jit_compile_expr(struct ExprState *state)
void json_categorize_type(Oid typoid, bool is_jsonb, JsonTypeCategory *tcategory, Oid *outfuncoid)
List * lappend(List *list, void *datum)
List * lappend_int(List *list, int datum)
void get_op_opfamily_properties(Oid opno, Oid opfamily, bool ordering_op, int *strategy, Oid *lefttype, Oid *righttype)
Oid get_element_type(Oid typid)
void getTypeOutputInfo(Oid type, Oid *typOutput, bool *typIsVarlena)
void get_typlenbyvalalign(Oid typid, int16 *typlen, bool *typbyval, char *typalign)
Oid get_opfamily_proc(Oid opfamily, Oid lefttype, Oid righttype, int16 procnum)
void getTypeInputInfo(Oid type, Oid *typInput, Oid *typIOParam)
const struct SubscriptRoutines * getSubscriptingRoutines(Oid typid, Oid *typelemp)
char * get_func_name(Oid funcid)
int16 get_typlen(Oid typid)
char get_typtype(Oid typid)
Oid getBaseType(Oid typid)
Expr * make_ands_explicit(List *andclauses)
Const * makeNullConst(Oid consttype, int32 consttypmod, Oid constcollid)
void * repalloc(void *pointer, Size size)
void * palloc0(Size size)
MemoryContext CurrentMemoryContext
Oid exprType(const Node *expr)
int32 exprTypmod(const Node *expr)
int exprLocation(const Node *expr)
#define expression_tree_walker(n, w, c)
SubPlanState * ExecInitSubPlan(SubPlan *subplan, PlanState *parent)
#define IsA(nodeptr, _type_)
#define DO_AGGSPLIT_COMBINE(as)
#define castNode(_type_, nodeptr)
#define InvokeFunctionExecuteHook(objectId)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
FormData_pg_attribute * Form_pg_attribute
#define lfirst_node(type, lc)
static int list_length(const List *l)
#define forboth(cell1, list1, cell2, list2)
#define foreach_current_index(var_or_cell)
#define foreach_ptr(type, var, lst)
#define forfive(cell1, list1, cell2, list2, cell3, list3, cell4, list4, cell5, list5)
#define foreach_int(var, lst)
Expr * expression_planner(Expr *expr)
static bool DatumGetBool(Datum X)
static Datum PointerGetDatum(const void *X)
static Datum ObjectIdGetDatum(Oid X)
static Datum Int32GetDatum(int32 X)
static Datum UInt32GetDatum(uint32 X)
void check_stack_depth(void)
TupleTableSlot * sortslot
FunctionCallInfo deserialfn_fcinfo
FunctionCallInfo transfn_fcinfo
AggStatePerTrans pertrans
ExprContext * hashcontext
ExprContext ** aggcontexts
BoolTestType booltesttype
DomainConstraintType constrainttype
MemoryContext es_query_cxt
ExprState * elemexprstate
struct ExprEvalStep::@55::@94 grouping_func
struct ExprEvalStep::@55::@66 jump
WindowFuncExprState * wfstate
void * json_coercion_cache
ExecEvalBoolSubroutine subscriptfunc
struct ExprEvalStep::@55::@81 fieldselect
struct ExprEvalStep::@55::@90 hashedscalararrayop
struct ExprEvalStep::@55::@92 json_constructor
struct ExprEvalStep::@55::@60 assign_tmp
struct ExprEvalStep::@55::@71 make_readonly
struct ExprEvalStep::@55::@57 var
struct ExprEvalStep::@55::@82 fieldstore
struct ExprEvalStep::@55::@85 domaincheck
struct ExprEvalStep::@55::@102 is_json
struct SubscriptingRefState * state
VarReturningType varreturningtype
AggStatePerTrans pertrans
struct ExprEvalStep::@55::@104 jsonexpr_coercion
struct ExprEvalStep::@55::@78 rowcompare_step
struct ExprEvalStep::@55::@83 sbsref_subscript
struct JsonExprState * jsestate
struct ExprEvalStep::@55::@91 xmlexpr
struct ExprEvalStep::@55::@84 sbsref
struct ExprEvalStep::@55::@67 nulltest_row
FunctionCallInfo fcinfo_data_in
struct ExprEvalStep::@55::@77 row
ExprEvalRowtypeCache * incache
struct ExprEvalStep::@55::@103 jsonexpr
struct ExprEvalStep::@55::@74 nextvalueexpr
struct ExprEvalStep::@55::@86 hashdatum_initvalue
const TupleTableSlotOps * kind
struct ExprEvalStep::@55::@99 agg_plain_pergroup_nullcheck
struct ExprEvalStep::@55::@62 constval
FunctionCallInfo fcinfo_data
struct ExprEvalStep::@55::@93 aggref
struct ExprEvalStep::@55::@97 agg_deserialize
struct ExprEvalStep::@55::@95 window_func
struct ExprEvalStep::@55::@61 returningexpr
struct ExprEvalStep::@55::@72 iocoerce
ErrorSaveContext * escontext
union ExprEvalStep::@55 d
struct ExprEvalStep::@55::@98 agg_strict_input_check
struct ExprEvalStep::@55::@80 minmax
struct ExprEvalStep::@55::@88 convert_rowtype
struct ExprEvalStep::@55::@79 rowcompare_final
struct ExprEvalStep::@55::@70 casetest
struct ExprEvalStep::@55::@75 arrayexpr
struct ExprEvalStep::@55::@89 scalararrayop
struct ExprEvalStep::@55::@100 agg_presorted_distinctcheck
struct ExprEvalStep::@55::@65 qualexpr
struct ExprEvalStep::@55::@58 wholerow
struct ExprEvalStep::@55::@101 agg_trans
FunctionCallInfo fcinfo_data_out
ExprEvalRowtypeCache * outcache
struct ExprEvalStep::@55::@68 param
struct ExprEvalStep::@55::@87 hashdatum
struct ExprEvalStep::@55::@96 subplan
struct ExprEvalStep::@55::@63 func
struct ExprEvalStep::@55::@73 sqlvaluefunction
struct ExprEvalStep::@55::@64 boolexpr
ExprEvalRowtypeCache rowcache
struct JsonConstructorExprState * jcstate
struct ExprEvalStep::@55::@56 fetch
struct ExprEvalStep::@55::@59 assign_var
struct ArrayMapState * amstate
struct ExprEvalStep::@55::@76 arraycoerce
List * multiexpr_subplans
struct ExprEvalStep * steps
struct PlanState * parent
bool * innermost_casenull
Datum * innermost_caseval
NullableDatum args[FLEXIBLE_ARRAY_MEMBER]
JsonConstructorExpr * constructor
struct JsonConstructorExprState::@105 * arg_type_cache
JsonReturning * returning
FunctionCallInfo input_fcinfo
ErrorSaveContext escontext
NullableDatum formatted_expr
JsonReturning * returning
NullTestType nulltesttype
ParamCompileHook paramCompile
const TupleTableSlotOps * outerops
const TupleTableSlotOps * innerops
const TupleTableSlotOps * scanops
ExprContext * pi_exprContext
ExecEvalSubroutine sbs_fetch_old
ExecEvalBoolSubroutine sbs_check_subscripts
ExecEvalSubroutine sbs_assign
ExecEvalSubroutine sbs_fetch
SubscriptExecSetup exec_setup
#define ReleaseTupleDesc(tupdesc)
static FormData_pg_attribute * TupleDescAttr(TupleDesc tupdesc, int i)
static CompactAttribute * TupleDescCompactAttr(TupleDesc tupdesc, int i)
void InitDomainConstraintRef(Oid type_id, DomainConstraintRef *ref, MemoryContext refctx, bool need_exprstate)
TupleDesc lookup_rowtype_tupdesc(Oid type_id, int32 typmod)
bool DomainHasConstraints(Oid type_id)
TupleDesc lookup_rowtype_tupdesc_copy(Oid type_id, int32 typmod)
TypeCacheEntry * lookup_type_cache(Oid type_id, int flags)
#define TYPECACHE_CMP_PROC
static void convert(const int32 val, char *const buf)