238 errmsg(
"internal function \"%s\" is not in internal lookup table",
409 elog(
ERROR,
"unrecognized function API version: %d",
472 errmsg(
"could not find function information for function \"%s\"",
474 errhint(
"SQL-callable functions need an accompanying PG_FUNCTION_INFO_V1(funcname).")));
479 inforec = (*infofunc) ();
492 errmsg(
"unrecognized API version %d reported by info function \"%s\"",
640 int save_sec_context;
647 if (!fcinfo->flinfo->fn_extra)
659 fcinfo->flinfo->fn_mcxt,
true);
660 fcache->flinfo.fn_expr = fcinfo->flinfo->fn_expr;
665 elog(
ERROR,
"cache lookup failed for function %u",
666 fcinfo->flinfo->fn_oid);
699 fcinfo->flinfo->fn_extra =
fcache;
702 fcache = fcinfo->flinfo->fn_extra;
728 action,
true, 0,
false);
744 fcinfo->flinfo = &
fcache->flinfo;
756 (fcinfo->resultinfo ==
NULL ||
801 fcinfo->args[0].value =
arg1;
802 fcinfo->args[0].isnull =
false;
804 result = (*func) (fcinfo);
808 elog(
ERROR,
"function %p returned NULL", (
void *) func);
821 fcinfo->args[0].value =
arg1;
822 fcinfo->args[0].isnull =
false;
823 fcinfo->args[1].value =
arg2;
824 fcinfo->args[1].isnull =
false;
826 result = (*func) (fcinfo);
830 elog(
ERROR,
"function %p returned NULL", (
void *) func);
844 fcinfo->args[0].value =
arg1;
845 fcinfo->args[0].isnull =
false;
846 fcinfo->args[1].value =
arg2;
847 fcinfo->args[1].isnull =
false;
848 fcinfo->args[2].value =
arg3;
849 fcinfo->args[2].isnull =
false;
851 result = (*func) (fcinfo);
855 elog(
ERROR,
"function %p returned NULL", (
void *) func);
869 fcinfo->args[0].value =
arg1;
870 fcinfo->args[0].isnull =
false;
871 fcinfo->args[1].value =
arg2;
872 fcinfo->args[1].isnull =
false;
873 fcinfo->args[2].value =
arg3;
874 fcinfo->args[2].isnull =
false;
875 fcinfo->args[3].value =
arg4;
876 fcinfo->args[3].isnull =
false;
878 result = (*func) (fcinfo);
882 elog(
ERROR,
"function %p returned NULL", (
void *) func);
896 fcinfo->args[0].value =
arg1;
897 fcinfo->args[0].isnull =
false;
898 fcinfo->args[1].value =
arg2;
899 fcinfo->args[1].isnull =
false;
900 fcinfo->args[2].value =
arg3;
901 fcinfo->args[2].isnull =
false;
902 fcinfo->args[3].value =
arg4;
903 fcinfo->args[3].isnull =
false;
904 fcinfo->args[4].value =
arg5;
905 fcinfo->args[4].isnull =
false;
907 result = (*func) (fcinfo);
911 elog(
ERROR,
"function %p returned NULL", (
void *) func);
926 fcinfo->args[0].value =
arg1;
927 fcinfo->args[0].isnull =
false;
928 fcinfo->args[1].value =
arg2;
929 fcinfo->args[1].isnull =
false;
930 fcinfo->args[2].value =
arg3;
931 fcinfo->args[2].isnull =
false;
932 fcinfo->args[3].value =
arg4;
933 fcinfo->args[3].isnull =
false;
934 fcinfo->args[4].value =
arg5;
935 fcinfo->args[4].isnull =
false;
936 fcinfo->args[5].value =
arg6;
937 fcinfo->args[5].isnull =
false;
939 result = (*func) (fcinfo);
943 elog(
ERROR,
"function %p returned NULL", (
void *) func);
958 fcinfo->args[0].value =
arg1;
959 fcinfo->args[0].isnull =
false;
960 fcinfo->args[1].value =
arg2;
961 fcinfo->args[1].isnull =
false;
962 fcinfo->args[2].value =
arg3;
963 fcinfo->args[2].isnull =
false;
964 fcinfo->args[3].value =
arg4;
965 fcinfo->args[3].isnull =
false;
966 fcinfo->args[4].value =
arg5;
967 fcinfo->args[4].isnull =
false;
968 fcinfo->args[5].value =
arg6;
969 fcinfo->args[5].isnull =
false;
970 fcinfo->args[6].value =
arg7;
971 fcinfo->args[6].isnull =
false;
973 result = (*func) (fcinfo);
977 elog(
ERROR,
"function %p returned NULL", (
void *) func);
992 fcinfo->args[0].value =
arg1;
993 fcinfo->args[0].isnull =
false;
994 fcinfo->args[1].value =
arg2;
995 fcinfo->args[1].isnull =
false;
996 fcinfo->args[2].value =
arg3;
997 fcinfo->args[2].isnull =
false;
998 fcinfo->args[3].value =
arg4;
999 fcinfo->args[3].isnull =
false;
1000 fcinfo->args[4].value =
arg5;
1001 fcinfo->args[4].isnull =
false;
1002 fcinfo->args[5].value =
arg6;
1003 fcinfo->args[5].isnull =
false;
1004 fcinfo->args[6].value =
arg7;
1005 fcinfo->args[6].isnull =
false;
1006 fcinfo->args[7].value =
arg8;
1007 fcinfo->args[7].isnull =
false;
1009 result = (*func) (fcinfo);
1013 elog(
ERROR,
"function %p returned NULL", (
void *) func);
1029 fcinfo->args[0].value =
arg1;
1030 fcinfo->args[0].isnull =
false;
1031 fcinfo->args[1].value =
arg2;
1032 fcinfo->args[1].isnull =
false;
1033 fcinfo->args[2].value =
arg3;
1034 fcinfo->args[2].isnull =
false;
1035 fcinfo->args[3].value =
arg4;
1036 fcinfo->args[3].isnull =
false;
1037 fcinfo->args[4].value =
arg5;
1038 fcinfo->args[4].isnull =
false;
1039 fcinfo->args[5].value =
arg6;
1040 fcinfo->args[5].isnull =
false;
1041 fcinfo->args[6].value =
arg7;
1042 fcinfo->args[6].isnull =
false;
1043 fcinfo->args[7].value =
arg8;
1044 fcinfo->args[7].isnull =
false;
1045 fcinfo->args[8].value =
arg9;
1046 fcinfo->args[8].isnull =
false;
1048 result = (*func) (fcinfo);
1052 elog(
ERROR,
"function %p returned NULL", (
void *) func);
1074 fcinfo->args[0].value =
arg1;
1075 fcinfo->args[0].isnull =
false;
1077 result = (*func) (fcinfo);
1081 elog(
ERROR,
"function %p returned NULL", (
void *) func);
1094 fcinfo->args[0].value =
arg1;
1095 fcinfo->args[0].isnull =
false;
1096 fcinfo->args[1].value =
arg2;
1097 fcinfo->args[1].isnull =
false;
1099 result = (*func) (fcinfo);
1103 elog(
ERROR,
"function %p returned NULL", (
void *) func);
1138 fcinfo->args[0].value =
arg1;
1139 fcinfo->args[0].isnull =
false;
1158 fcinfo->args[0].value =
arg1;
1159 fcinfo->args[0].isnull =
false;
1160 fcinfo->args[1].value =
arg2;
1161 fcinfo->args[1].isnull =
false;
1181 fcinfo->args[0].value =
arg1;
1182 fcinfo->args[0].isnull =
false;
1183 fcinfo->args[1].value =
arg2;
1184 fcinfo->args[1].isnull =
false;
1185 fcinfo->args[2].value =
arg3;
1186 fcinfo->args[2].isnull =
false;
1206 fcinfo->args[0].value =
arg1;
1207 fcinfo->args[0].isnull =
false;
1208 fcinfo->args[1].value =
arg2;
1209 fcinfo->args[1].isnull =
false;
1210 fcinfo->args[2].value =
arg3;
1211 fcinfo->args[2].isnull =
false;
1212 fcinfo->args[3].value =
arg4;
1213 fcinfo->args[3].isnull =
false;
1233 fcinfo->args[0].value =
arg1;
1234 fcinfo->args[0].isnull =
false;
1235 fcinfo->args[1].value =
arg2;
1236 fcinfo->args[1].isnull =
false;
1237 fcinfo->args[2].value =
arg3;
1238 fcinfo->args[2].isnull =
false;
1239 fcinfo->args[3].value =
arg4;
1240 fcinfo->args[3].isnull =
false;
1241 fcinfo->args[4].value =
arg5;
1242 fcinfo->args[4].isnull =
false;
1263 fcinfo->args[0].value =
arg1;
1264 fcinfo->args[0].isnull =
false;
1265 fcinfo->args[1].value =
arg2;
1266 fcinfo->args[1].isnull =
false;
1267 fcinfo->args[2].value =
arg3;
1268 fcinfo->args[2].isnull =
false;
1269 fcinfo->args[3].value =
arg4;
1270 fcinfo->args[3].isnull =
false;
1271 fcinfo->args[4].value =
arg5;
1272 fcinfo->args[4].isnull =
false;
1273 fcinfo->args[5].value =
arg6;
1274 fcinfo->args[5].isnull =
false;
1295 fcinfo->args[0].value =
arg1;
1296 fcinfo->args[0].isnull =
false;
1297 fcinfo->args[1].value =
arg2;
1298 fcinfo->args[1].isnull =
false;
1299 fcinfo->args[2].value =
arg3;
1300 fcinfo->args[2].isnull =
false;
1301 fcinfo->args[3].value =
arg4;
1302 fcinfo->args[3].isnull =
false;
1303 fcinfo->args[4].value =
arg5;
1304 fcinfo->args[4].isnull =
false;
1305 fcinfo->args[5].value =
arg6;
1306 fcinfo->args[5].isnull =
false;
1307 fcinfo->args[6].value =
arg7;
1308 fcinfo->args[6].isnull =
false;
1329 fcinfo->args[0].value =
arg1;
1330 fcinfo->args[0].isnull =
false;
1331 fcinfo->args[1].value =
arg2;
1332 fcinfo->args[1].isnull =
false;
1333 fcinfo->args[2].value =
arg3;
1334 fcinfo->args[2].isnull =
false;
1335 fcinfo->args[3].value =
arg4;
1336 fcinfo->args[3].isnull =
false;
1337 fcinfo->args[4].value =
arg5;
1338 fcinfo->args[4].isnull =
false;
1339 fcinfo->args[5].value =
arg6;
1340 fcinfo->args[5].isnull =
false;
1341 fcinfo->args[6].value =
arg7;
1342 fcinfo->args[6].isnull =
false;
1343 fcinfo->args[7].value =
arg8;
1344 fcinfo->args[7].isnull =
false;
1366 fcinfo->args[0].value =
arg1;
1367 fcinfo->args[0].isnull =
false;
1368 fcinfo->args[1].value =
arg2;
1369 fcinfo->args[1].isnull =
false;
1370 fcinfo->args[2].value =
arg3;
1371 fcinfo->args[2].isnull =
false;
1372 fcinfo->args[3].value =
arg4;
1373 fcinfo->args[3].isnull =
false;
1374 fcinfo->args[4].value =
arg5;
1375 fcinfo->args[4].isnull =
false;
1376 fcinfo->args[5].value =
arg6;
1377 fcinfo->args[5].isnull =
false;
1378 fcinfo->args[6].value =
arg7;
1379 fcinfo->args[6].isnull =
false;
1380 fcinfo->args[7].value =
arg8;
1381 fcinfo->args[7].isnull =
false;
1382 fcinfo->args[8].value =
arg9;
1383 fcinfo->args[8].isnull =
false;
1543 fcinfo->args[0].isnull =
false;
1545 fcinfo->args[1].isnull =
false;
1547 fcinfo->args[2].isnull =
false;
1554 if (!fcinfo->isnull)
1555 elog(
ERROR,
"input function %u returned non-NULL",
1561 elog(
ERROR,
"input function %u returned NULL",
1595 *result = (
Datum) 0;
1602 fcinfo->args[0].isnull =
false;
1604 fcinfo->args[1].isnull =
false;
1606 fcinfo->args[2].isnull =
false;
1617 if (!fcinfo->isnull)
1618 elog(
ERROR,
"input function %u returned non-NULL",
1624 elog(
ERROR,
"input function %u returned NULL",
1650 *result = (
Datum) 0;
1657 fcinfo->args[0].isnull =
false;
1659 fcinfo->args[1].isnull =
false;
1661 fcinfo->args[2].isnull =
false;
1663 *result = (*func) (fcinfo);
1671 elog(
ERROR,
"input function %p returned NULL", (
void *) func);
1710 fcinfo->args[0].isnull =
false;
1712 fcinfo->args[1].isnull =
false;
1714 fcinfo->args[2].isnull =
false;
1721 if (!fcinfo->isnull)
1722 elog(
ERROR,
"receive function %u returned non-NULL",
1728 elog(
ERROR,
"receive function %u returned NULL",
1906 args = ((
OpExpr *) expr)->args;
1971 args = ((
OpExpr *) expr)->args;
2024 return ((
FuncExpr *) expr)->funcvariadic;
2054 return !expr->constisnull;
2075 errmsg(
"operator class options info is absent in function call context")));
2142 errmsg(
"language validation function %u called for language %u instead of %u",
void aclcheck_error(AclResult aclerr, ObjectType objtype, const char *objectname)
AclResult object_aclcheck(Oid classid, Oid objectid, Oid roleid, AclMode mode)
#define DatumGetArrayTypeP(X)
#define TextDatumGetCString(d)
#define OidIsValid(objectId)
varlena * detoast_attr(varlena *attr)
varlena * detoast_attr_slice(varlena *attr, int32 sliceoffset, int32 slicelength)
void * lookup_external_function(void *filehandle, const char *funcname)
void * load_external_function(const char *filename, const char *funcname, bool signalNotFound, void **filehandle)
void * hash_search(HTAB *hashp, const void *keyPtr, HASHACTION action, bool *foundPtr)
HTAB * hash_create(const char *tabname, int64 nelem, const HASHCTL *info, int flags)
int errcode(int sqlerrcode)
int errhint(const char *fmt,...) pg_attribute_printf(1
#define ereport(elevel,...)
Datum FunctionCall4Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4)
Datum OidFunctionCall2Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2)
void set_fn_opclass_options(FmgrInfo *flinfo, bytea *options)
Oid fmgr_internal_function(const char *proname)
Datum OidFunctionCall9Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9)
bool get_fn_expr_arg_stable(FmgrInfo *flinfo, int argnum)
Datum OidFunctionCall6Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6)
Datum FunctionCall6Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6)
Datum OidFunctionCall5Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
Datum FunctionCall8Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8)
bool CheckFunctionValidatorAccess(Oid validatorOid, Oid functionOid)
Datum OidReceiveFunctionCall(Oid functionId, StringInfo buf, Oid typioparam, int32 typmod)
Datum InputFunctionCall(FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod)
Datum FunctionCall2Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2)
static const FmgrBuiltin * fmgr_lookupByName(const char *name)
void fmgr_info(Oid functionId, FmgrInfo *finfo)
varlena * pg_detoast_datum(varlena *datum)
Datum OidInputFunctionCall(Oid functionId, char *str, Oid typioparam, int32 typmod)
PGDLLIMPORT needs_fmgr_hook_type needs_fmgr_hook
Datum DirectFunctionCall2Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2)
static void fmgr_info_C_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple)
bool DirectInputFunctionCallSafe(PGFunction func, char *str, Oid typioparam, int32 typmod, Node *escontext, Datum *result)
varlena * pg_detoast_datum_copy(varlena *datum)
char * OidOutputFunctionCall(Oid functionId, Datum val)
Datum FunctionCall5Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
static void fmgr_info_other_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple)
varlena * pg_detoast_datum_packed(varlena *datum)
varlena * pg_detoast_datum_slice(varlena *datum, int32 first, int32 count)
const Pg_finfo_record * fetch_finfo_record(void *filehandle, const char *funcname)
Datum OidFunctionCall3Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3)
void fmgr_info_cxt(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt)
Datum OidFunctionCall8Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8)
bytea * SendFunctionCall(FmgrInfo *flinfo, Datum val)
Datum OidFunctionCall4Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4)
Datum DirectFunctionCall4Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4)
Datum OidFunctionCall7Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7)
PGDLLIMPORT fmgr_hook_type fmgr_hook
bool has_fn_opclass_options(FmgrInfo *flinfo)
bool InputFunctionCallSafe(FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod, Node *escontext, Datum *result)
Datum CallerFInfoFunctionCall2(PGFunction func, FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2)
Datum CallerFInfoFunctionCall1(PGFunction func, FmgrInfo *flinfo, Oid collation, Datum arg1)
Datum DirectFunctionCall6Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6)
Datum DirectFunctionCall5Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
Datum OidFunctionCall1Coll(Oid functionId, Oid collation, Datum arg1)
char * OutputFunctionCall(FmgrInfo *flinfo, Datum val)
bool get_fn_expr_variadic(FmgrInfo *flinfo)
Datum DirectFunctionCall1Coll(PGFunction func, Oid collation, Datum arg1)
bytea * get_fn_opclass_options(FmgrInfo *flinfo)
Datum FunctionCall3Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3)
Datum DirectFunctionCall3Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3)
Oid get_call_expr_argtype(Node *expr, int argnum)
Datum FunctionCall7Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7)
Oid get_fn_expr_argtype(FmgrInfo *flinfo, int argnum)
Datum OidFunctionCall0Coll(Oid functionId, Oid collation)
void fmgr_symbol(Oid functionId, char **mod, char **fn)
Datum DirectFunctionCall9Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9)
bytea * OidSendFunctionCall(Oid functionId, Datum val)
Datum FunctionCall1Coll(FmgrInfo *flinfo, Oid collation, Datum arg1)
Datum fmgr_security_definer(PG_FUNCTION_ARGS)
Oid get_fn_expr_rettype(FmgrInfo *flinfo)
void fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, MemoryContext destcxt)
static void record_C_func(HeapTuple procedureTuple, PGFunction user_fn, const Pg_finfo_record *inforec)
static void fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt, bool ignore_security)
Datum FunctionCall0Coll(FmgrInfo *flinfo, Oid collation)
Datum FunctionCall9Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9)
Datum DirectFunctionCall7Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7)
static CFuncHashTabEntry * lookup_C_func(HeapTuple procedureTuple)
static const FmgrBuiltin * fmgr_isbuiltin(Oid id)
bool get_call_expr_arg_stable(Node *expr, int argnum)
Datum ReceiveFunctionCall(FmgrInfo *flinfo, StringInfo buf, Oid typioparam, int32 typmod)
Datum DirectFunctionCall8Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8)
const Pg_finfo_record *(* PGFInfoFunction)(void)
bool(* needs_fmgr_hook_type)(Oid fn_oid)
#define InitFunctionCallInfoData(Fcinfo, Flinfo, Nargs, Collation, Context, Resultinfo)
#define LOCAL_FCINFO(name, nargs)
#define FunctionCall1(flinfo, arg1)
#define FunctionCallInvoke(fcinfo)
void(* fmgr_hook_type)(FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg)
Datum(* PGFunction)(FunctionCallInfo fcinfo)
#define FmgrHookIsNeeded(fn_oid)
#define DatumGetByteaP(X)
PGDLLIMPORT const Oid fmgr_last_builtin_oid
PGDLLIMPORT const int fmgr_nbuiltins
PGDLLIMPORT const FmgrBuiltin fmgr_builtins[]
#define InvalidOidBuiltinMapping
PGDLLIMPORT const uint16 fmgr_builtin_oid_index[]
Datum fmgr_sql(PG_FUNCTION_ARGS)
int NewGUCNestLevel(void)
config_handle * get_config_handle(const char *name)
int set_config_with_handle(const char *name, config_handle *handle, const char *value, GucContext context, GucSource source, Oid srole, GucAction action, bool changeVal, int elevel, bool is_reload)
void TransformGUCArray(ArrayType *array, List **names, List **values)
void AtEOXact_GUC(bool isCommit, int nestLevel)
bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc)
#define HeapTupleIsValid(tuple)
static TransactionId HeapTupleHeaderGetRawXmin(const HeapTupleHeaderData *tup)
static void * GETSTRUCT(const HeapTupleData *tuple)
bool ItemPointerEquals(const ItemPointerData *pointer1, const ItemPointerData *pointer2)
List * lappend(List *list, void *datum)
Oid get_base_element_type(Oid typid)
Const * makeConst(Oid consttype, int32 consttypmod, Oid constcollid, int constlen, Datum constvalue, bool constisnull, bool constbyval)
void * MemoryContextAllocZero(MemoryContext context, Size size)
char * pstrdup(const char *in)
void pfree(void *pointer)
MemoryContext CurrentMemoryContext
#define SECURITY_LOCAL_USERID_CHANGE
void GetUserIdAndSecContext(Oid *userid, int *sec_context)
void SetUserIdAndSecContext(Oid userid, int sec_context)
#define SOFT_ERROR_OCCURRED(escontext)
Oid exprType(const Node *expr)
#define IsA(nodeptr, _type_)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
END_CATALOG_STRUCT typedef FormData_pg_language * Form_pg_language
static int list_length(const List *l)
#define forthree(cell1, list1, cell2, list2, cell3, list3)
static void * list_nth(const List *list, int n)
END_CATALOG_STRUCT typedef FormData_pg_proc * Form_pg_proc
static rewind_source * source
static char buf[DEFAULT_XLOG_SEG_SIZE]
void pgstat_init_function_usage(FunctionCallInfo fcinfo, PgStat_FunctionCallUsage *fcu)
void pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, bool finalize)
static Datum PointerGetDatum(const void *X)
static Datum ObjectIdGetDatum(Oid X)
static char * DatumGetCString(Datum X)
static Datum CStringGetDatum(const char *X)
static Datum Int32GetDatum(int32 X)
char * psprintf(const char *fmt,...)
const Pg_finfo_record * inforec
void ReleaseSysCache(HeapTuple tuple)
Datum SysCacheGetAttrNotNull(SysCacheIdentifier cacheId, HeapTuple tup, AttrNumber attributeNumber)
HeapTuple SearchSysCache1(SysCacheIdentifier cacheId, Datum key1)
Datum SysCacheGetAttr(SysCacheIdentifier cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull)
static void * fn(void *arg)
static bool VARATT_IS_EXTENDED(const void *PTR)
static bool VARATT_IS_EXTERNAL(const void *PTR)
static Size VARSIZE(const void *PTR)
static bool VARATT_IS_COMPRESSED(const void *PTR)