75 Oid funcid,
Oid inputcollid,
97 int transno,
int setno,
int setoff,
bool ishash,
175 state->parent = parent;
214 state->ext_params = ext_params;
264 state->parent = parent;
294 scratch.d.qualexpr.jumpdone = -1;
297 state->steps_len - 1);
306 Assert(
as->d.qualexpr.jumpdone == -1);
307 as->d.qualexpr.jumpdone =
state->steps_len;
402 projInfo->pi_exprContext = econtext;
407 state->parent = parent;
410 state->resultslot = slot;
416 foreach(
lc, targetList)
433 ((
Var *)
tle->expr)->varattno > 0)
450 if (!attr->attisdropped &&
variable->vartype == attr->atttypid)
498 scratch.d.assign_var.resultnum =
tle->resno - 1;
522 scratch.d.assign_tmp.resultnum =
tle->resno - 1;
587 projInfo->pi_exprContext = econtext;
595 state->parent = parent;
598 state->resultslot = slot;
606 foreach(
lc, targetList)
615 elog(
ERROR,
"subplan target list is out of order");
622 elog(
ERROR,
"targetColnos does not match subplan target list");
688 errmsg(
"table row type and query-specified row type do not match"),
689 errdetail(
"Query has too many columns.")));
692 if (attr->attisdropped)
695 errmsg(
"table row type and query-specified row type do not match"),
696 errdetail(
"Query provides a value for a dropped column at ordinal position %d.",
701 errmsg(
"table row type and query-specified row type do not match"),
702 errdetail(
"Table has type %s at ordinal position %d, but query expects %s.",
749 scratch.d.constval.isnull =
true;
1030 switch (
variable->varreturningtype)
1057 scratch.d.constval.value = con->constvalue;
1058 scratch.d.constval.isnull = con->constisnull;
1085 if (
state->ext_params)
1086 params =
state->ext_params;
1087 else if (
state->parent &&
1088 state->parent->state)
1089 params =
state->parent->state->es_param_list_info;
1106 elog(
ERROR,
"unrecognized paramkind: %d",
1118 scratch.d.aggref.aggno = aggref->aggno;
1129 elog(
ERROR,
"Aggref found in non-Agg plan node");
1143 elog(
ERROR,
"GroupingFunc found in non-Agg plan node");
1149 if (
agg->groupingSets)
1163 wfstate->
wfunc = wfunc;
1190 errmsg(
"window function calls cannot be nested")));
1195 elog(
ERROR,
"WindowFunc found in non-WindowAgg plan node");
1199 scratch.d.window_func.wfstate = wfstate;
1207 if (!
state->parent ||
1210 elog(
ERROR,
"MergeSupportFunc found in non-merge plan node");
1241 op->
args, op->opfuncid, op->inputcollid,
1252 op->
args, op->opfuncid, op->inputcollid,
1274 op->
args, op->opfuncid, op->inputcollid,
1379 scratch.d.hashedscalararrayop.inclause = opexpr->
useOr;
1380 scratch.d.hashedscalararrayop.finfo = finfo;
1381 scratch.d.hashedscalararrayop.fcinfo_data = fcinfo;
1382 scratch.d.hashedscalararrayop.saop = opexpr;
1406 scratch.d.scalararrayop.finfo = finfo;
1407 scratch.d.scalararrayop.fcinfo_data = fcinfo;
1440 foreach(
lc, boolexpr->
args)
1448 switch (boolexpr->
boolop)
1455 else if (off + 1 == nargs)
1465 else if (off + 1 == nargs)
1481 scratch.d.boolexpr.jumpdone = -1;
1484 state->steps_len - 1);
1493 Assert(
as->d.boolexpr.jumpdone == -1);
1494 as->d.boolexpr.jumpdone =
state->steps_len;
1514 scratch.d.constval.isnull =
true;
1553 ncolumns = tupDesc->
natts;
1569 scratch.d.fieldstore.fstore = fstore;
1572 scratch.d.fieldstore.nulls = nulls;
1573 scratch.d.fieldstore.ncolumns = ncolumns;
1585 elog(
ERROR,
"field number %d is out of range in FieldStore",
1615 state->innermost_casenull = &nulls[fieldnum - 1];
1619 &nulls[fieldnum - 1]);
1627 scratch.d.fieldstore.fstore = fstore;
1630 scratch.d.fieldstore.nulls = nulls;
1631 scratch.d.fieldstore.ncolumns = ncolumns;
1722 errmsg(
"target type is not an array")));
1758 scratch.d.arraycoerce.resultelemtype = resultelemtype;
1790 scratch.d.convert_rowtype.inputtype =
1899 state->steps_len - 1);
1922 as->d.jump.jumpdone =
state->steps_len;
1964 scratch.d.arrayexpr.elemvalues =
1966 scratch.d.arrayexpr.elemnulls =
1968 scratch.d.arrayexpr.nelems = nelems;
1971 scratch.d.arrayexpr.multidims = arrayexpr->multidims;
1972 scratch.d.arrayexpr.elemtype = arrayexpr->element_typeid;
1976 &
scratch.d.arrayexpr.elemlength,
1977 &
scratch.d.arrayexpr.elembyval,
1978 &
scratch.d.arrayexpr.elemalign);
1982 foreach(
lc, arrayexpr->elements)
2030 nelems =
Max(nelems, tupdesc->
natts);
2037 scratch.d.row.tupdesc = tupdesc;
2045 memset(
scratch.d.row.elemnulls,
true,
sizeof(
bool) * nelems);
2049 foreach(l, rowexpr->
args)
2054 if (!
att->attisdropped)
2065 errmsg(
"ROW() column has type %s instead of type %s",
2140 elog(
ERROR,
"missing support function %d(%u,%u) in opfamily %u",
2165 scratch.d.rowcompare_step.finfo = finfo;
2166 scratch.d.rowcompare_step.fcinfo_data = fcinfo;
2169 scratch.d.rowcompare_step.jumpnull = -1;
2170 scratch.d.rowcompare_step.jumpdone = -1;
2174 state->steps_len - 1);
2185 scratch.d.constval.isnull =
false;
2200 Assert(
as->d.rowcompare_step.jumpdone == -1);
2201 Assert(
as->d.rowcompare_step.jumpnull == -1);
2204 as->d.rowcompare_step.jumpdone =
state->steps_len - 1;
2206 as->d.rowcompare_step.jumpnull =
state->steps_len;
2238 state->steps_len - 1);
2254 as->d.jump.jumpdone =
state->steps_len;
2276 errmsg(
"could not identify a comparison function for type %s",
2298 scratch.d.minmax.nelems = nelems;
2301 scratch.d.minmax.finfo = finfo;
2302 scratch.d.minmax.fcinfo_data = fcinfo;
2311 &
scratch.d.minmax.values[off],
2312 &
scratch.d.minmax.nulls[off]);
2326 scratch.d.sqlvaluefunction.svf = svf;
2341 scratch.d.xmlexpr.xexpr = xexpr;
2373 &
scratch.d.xmlexpr.named_argvalue[off],
2374 &
scratch.d.xmlexpr.named_argnull[off]);
2384 &
scratch.d.xmlexpr.argvalue[off],
2385 &
scratch.d.xmlexpr.argnull[off]);
2430 scratch.d.json_constructor.jcstate = jcstate;
2436 jcstate->
nargs = nargs;
2470 for (
int i = 0;
i < nargs;
i++)
2477 &category, &outfuncid);
2489 Datum *innermost_caseval =
state->innermost_caseval;
2493 state->innermost_casenull = resnull;
2497 state->innermost_caseval = innermost_caseval;
2510 scratch.d.is_json.pred = pred;
2539 if (
ntest->argisrow)
2546 if (
ntest->argisrow)
2553 elog(
ERROR,
"unrecognized nulltesttype: %d",
2554 (
int)
ntest->nulltesttype);
2580 switch (
btest->booltesttype)
2603 elog(
ERROR,
"unrecognized booltesttype: %d",
2604 (
int)
btest->booltesttype);
2637 scratch.d.casetest.isnull =
state->innermost_domainnull;
2656 scratch.d.nextvalueexpr.seqtypid =
nve->typeId;
2671 scratch.d.returningexpr.jumpdone = -1;
2691 elog(
ERROR,
"unrecognized node type: %d",
2755 errmsg_plural(
"cannot pass more than %d argument to a function",
2756 "cannot pass more than %d arguments to a function",
2763 flinfo =
scratch->d.func.finfo;
2764 fcinfo =
scratch->d.func.fcinfo_data;
2776 scratch->d.func.nargs = nargs;
2782 errmsg(
"set-valued function called in context that cannot accept a set"),
2821 else if (nargs == 2)
2857 elog(
ERROR,
"SubPlan found with no parent plan");
2884 scratch.d.param.paramid = paramid;
2899 scratch.d.subplan.sstate = sstate;
2941 scratch.d.fetch.fixed =
false;
2951 scratch.d.fetch.fixed =
false;
2961 scratch.d.fetch.fixed =
false;
2971 scratch.d.fetch.fixed =
false;
2981 scratch.d.fetch.fixed =
false;
3033 switch (
variable->varreturningtype)
3095 bool isfixed =
false;
3167 if (isfixed && desc !=
NULL && tts_ops !=
NULL)
3199 scratch->d.wholerow.first =
true;
3200 scratch->d.wholerow.slow =
false;
3258 scratch->d.wholerow.junkFilter =
3290 errmsg(
"cannot subscript type %s because it does not support subscripting",
3326 memset(&methods, 0,
sizeof(methods));
3345 scratch->d.jump.jumpdone = -1;
3348 state->steps_len - 1);
3403 scratch->d.sbsref_subscript.jumpdone = -1;
3406 state->steps_len - 1);
3418 errmsg(
"type %s does not support subscripted assignment",
3440 errmsg(
"type %s does not support subscripted assignment",
3483 Assert(
as->d.sbsref_subscript.jumpdone == -1);
3484 as->d.sbsref_subscript.jumpdone =
state->steps_len;
3490 as->d.jump.jumpdone =
state->steps_len;
3605 scratch->d.domaincheck.constraintname = con->
name;
3617 scratch->d.domaincheck.checkvalue =
3619 scratch->d.domaincheck.checknull =
3646 scratch2.d.make_readonly.isnull = resnull;
3670 scratch->d.domaincheck.checkvalue,
3671 scratch->d.domaincheck.checknull);
3682 elog(
ERROR,
"unrecognized constraint type: %d",
3714 state->parent = parent;
3723 for (
int transno = 0; transno <
aggstate->numtrans; transno++)
3743 for (
int transno = 0; transno <
aggstate->numtrans; transno++)
3769 state->steps_len - 1);
3828 scratch.d.agg_deserialize.jumpnull = -1;
3836 state->steps_len - 1);
3936 scratch.d.agg_strict_input_check.jumpnull = -1;
3940 state->steps_len - 1);
3951 scratch.d.agg_presorted_distinctcheck.pertrans = pertrans;
3952 scratch.d.agg_presorted_distinctcheck.jumpdistinct = -1;
3955 state->steps_len - 1);
3971 pertrans, transno, setno, setoff,
false,
3988 for (
int setno = 0; setno <
numHashes; setno++)
3991 pertrans, transno, setno, setoff,
true,
4005 as->d.jump.jumpdone =
state->steps_len;
4011 Assert(
as->d.agg_strict_input_check.jumpnull == -1);
4012 as->d.agg_strict_input_check.jumpnull =
state->steps_len;
4016 Assert(
as->d.agg_deserialize.jumpnull == -1);
4017 as->d.agg_deserialize.jumpnull =
state->steps_len;
4022 Assert(
as->d.agg_presorted_distinctcheck.jumpdistinct == -1);
4023 as->d.agg_presorted_distinctcheck.jumpdistinct =
state->steps_len;
4049 int transno,
int setno,
int setoff,
bool ishash,
4056 aggcontext =
aggstate->hashcontext;
4058 aggcontext =
aggstate->aggcontexts[setno];
4064 scratch->d.agg_plain_pergroup_nullcheck.setoff = setoff;
4066 scratch->d.agg_plain_pergroup_nullcheck.jumpnull = -1;
4133 scratch->d.agg_trans.pertrans = pertrans;
4134 scratch->d.agg_trans.setno = setno;
4135 scratch->d.agg_trans.setoff = setoff;
4136 scratch->d.agg_trans.transno = transno;
4137 scratch->d.agg_trans.aggcontext = aggcontext;
4146 Assert(
as->d.agg_plain_pergroup_nullcheck.jumpnull == -1);
4147 as->d.agg_plain_pergroup_nullcheck.jumpnull =
state->steps_len;
4181 state->parent = parent;
4188 if ((
int64) numCols + (init_value != 0) > 1)
4192 for (
int i = 0;
i < numCols;
i++)
4197 scratch.d.fetch.fixed =
false;
4199 scratch.d.fetch.known_desc = desc;
4203 if (init_value == 0)
4233 for (
int i = 0;
i < numCols;
i++)
4237 Oid inputcollid = collations[
i];
4240 finfo = &hashfunctions[
i];
4262 if (
i == numCols - 1)
4284 scratch.d.hashdatum.iresult = iresult;
4286 scratch.d.hashdatum.finfo = finfo;
4287 scratch.d.hashdatum.fcinfo_data = fcinfo;
4289 scratch.d.hashdatum.jumpdone = -1;
4346 state->parent = parent;
4359 if (init_value == 0)
4436 scratch.d.hashdatum.iresult = iresult;
4441 scratch.d.hashdatum.finfo = finfo;
4442 scratch.d.hashdatum.fcinfo_data = fcinfo;
4446 scratch.d.hashdatum.jumpdone = -1;
4468 Assert(
as->d.hashdatum.jumpdone == -1);
4469 as->d.hashdatum.jumpdone =
state->steps_len;
4498 const Oid *eqfunctions,
4499 const Oid *collations,
4517 state->parent = parent;
4525 int attno = keyColIdx[
natt];
4535 scratch.d.fetch.fixed =
false;
4543 scratch.d.fetch.fixed =
false;
4553 for (
int natt = numCols; --
natt >= 0;)
4555 int attno = keyColIdx[
natt];
4581 scratch.d.var.attnum = attno - 1;
4590 scratch.d.var.attnum = attno - 1;
4600 scratch.d.func.fcinfo_data = fcinfo;
4609 scratch.d.qualexpr.jumpdone = -1;
4614 state->steps_len - 1);
4623 Assert(
as->d.qualexpr.jumpdone == -1);
4624 as->d.qualexpr.jumpdone =
state->steps_len;
4656 const Oid *eqfunctions,
4657 const Oid *collations,
4658 const List *param_exprs,
4669 state->parent = parent;
4677 scratch.d.fetch.fixed =
false;
4678 scratch.d.fetch.known_desc = desc;
4685 scratch.d.fetch.fixed =
false;
4686 scratch.d.fetch.known_desc = desc;
4691 for (
int attno = 0; attno <
maxatt; attno++)
4694 Oid foid = eqfunctions[attno];
4736 scratch.d.func.fcinfo_data = fcinfo;
4745 scratch.d.qualexpr.jumpdone = -1;
4750 state->steps_len - 1);
4759 Assert(
as->d.qualexpr.jumpdone == -1);
4760 as->d.qualexpr.jumpdone =
state->steps_len;
4793 jsestate->
jsexpr = jsexpr;
4807 scratch->d.jump.jumpdone = -1;
4822 scratch->d.jump.jumpdone = -1;
4848 scratch->d.jsonexpr.jsestate = jsestate;
4860 as->d.jump.jumpdone =
state->steps_len;
4866 scratch->d.constval.isnull =
true;
4933 scratch->d.jsonexpr.jsestate = jsestate;
4965 scratch->d.jump.jumpdone = -1;
4973 state->escontext = escontext;
4995 scratch->d.jsonexpr.jsestate = jsestate;
5002 scratch->d.jump.jumpdone = -1;
5028 scratch->d.jump.jumpdone = -1;
5036 state->escontext = escontext;
5059 scratch->d.jsonexpr.jsestate = jsestate;
5068 as->d.jump.jumpdone =
state->steps_len;
5090 scratch.d.jsonexpr_coercion.targettype = returning->
typid;
5091 scratch.d.jsonexpr_coercion.targettypmod = returning->
typmod;
5092 scratch.d.jsonexpr_coercion.json_coercion_cache =
NULL;
5093 scratch.d.jsonexpr_coercion.escontext = escontext;
5094 scratch.d.jsonexpr_coercion.omit_quotes = omit_quotes;
5095 scratch.d.jsonexpr_coercion.exists_coerce = exists_coerce;
5096 scratch.d.jsonexpr_coercion.exists_cast_to_int = exists_coerce &&
5098 scratch.d.jsonexpr_coercion.exists_check_domain = exists_coerce &&
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 Assert(condition)
#define OidIsValid(objectId)
int errcode(int sqlerrcode)
int errdetail(const char *fmt,...) pg_attribute_printf(1
int int int errmsg_plural(const char *fmt_singular, const char *fmt_plural, unsigned long n,...) pg_attribute_printf(1
#define ereport(elevel,...)
void ExecReadyInterpretedExpr(ExprState *state)
ExprState * ExecInitExprWithContext(Expr *node, PlanState *parent, Node *escontext)
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 * 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)
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)
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)
ExprState * ExecPrepareExprWithContext(Expr *node, EState *estate, Node *escontext)
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 * 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)
#define palloc_object(type)
#define palloc_array(type, count)
#define palloc0_object(type)
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)
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
DomainConstraintType constrainttype
MemoryContext es_query_cxt
union ExprEvalStep::@60 d
const TupleTableSlotOps * kind
struct ExprEvalStep::@60::@61 fetch
List * multiexpr_subplans
struct ExprEvalStep * steps
NullableDatum args[FLEXIBLE_ARRAY_MEMBER]
JsonConstructorExpr * constructor
struct JsonConstructorExprState::@110 * arg_type_cache
FunctionCallInfo input_fcinfo
ErrorSaveContext escontext
NullableDatum formatted_expr
JsonReturning * returning
ParamCompileHook paramCompile
const TupleTableSlotOps * outerops
const TupleTableSlotOps * innerops
const TupleTableSlotOps * scanops
ExecEvalSubroutine sbs_fetch_old
ExecEvalBoolSubroutine sbs_check_subscripts
ExecEvalSubroutine sbs_assign
ExecEvalSubroutine sbs_fetch
#define ReleaseTupleDesc(tupdesc)
static FormData_pg_attribute * TupleDescAttr(TupleDesc tupdesc, int i)
static CompactAttribute * TupleDescCompactAttr(TupleDesc tupdesc, int i)
bool DomainHasConstraints(Oid type_id, bool *has_volatile)
void InitDomainConstraintRef(Oid type_id, DomainConstraintRef *ref, MemoryContext refctx, bool need_exprstate)
TupleDesc lookup_rowtype_tupdesc(Oid type_id, int32 typmod)
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 int_fast32_t val, char *const buf)