PostgreSQL Source Code git master
fmgr.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  FmgrInfo
 
struct  FunctionCallInfoBaseData
 
struct  Pg_finfo_record
 
struct  Pg_magic_struct
 

Macros

#define FIELDNO_FUNCTIONCALLINFODATA_ISNULL   4
 
#define FIELDNO_FUNCTIONCALLINFODATA_ARGS   6
 
#define SizeForFunctionCallInfo(nargs)
 
#define LOCAL_FCINFO(name, nargs)
 
#define fmgr_info_set_expr(expr, finfo)    ((finfo)->fn_expr = (expr))
 
#define InitFunctionCallInfoData(Fcinfo, Flinfo, Nargs, Collation, Context, Resultinfo)
 
#define FunctionCallInvoke(fcinfo)   ((* (fcinfo)->flinfo->fn_addr) (fcinfo))
 
#define PG_FUNCTION_ARGS   FunctionCallInfo fcinfo
 
#define PG_GET_COLLATION()   (fcinfo->fncollation)
 
#define PG_NARGS()   (fcinfo->nargs)
 
#define PG_ARGISNULL(n)   (fcinfo->args[n].isnull)
 
#define PG_DETOAST_DATUM(datum)    pg_detoast_datum((struct varlena *) DatumGetPointer(datum))
 
#define PG_DETOAST_DATUM_COPY(datum)    pg_detoast_datum_copy((struct varlena *) DatumGetPointer(datum))
 
#define PG_DETOAST_DATUM_SLICE(datum, f, c)
 
#define PG_DETOAST_DATUM_PACKED(datum)    pg_detoast_datum_packed((struct varlena *) DatumGetPointer(datum))
 
#define PG_FREE_IF_COPY(ptr, n)
 
#define PG_GETARG_DATUM(n)   (fcinfo->args[n].value)
 
#define PG_GETARG_INT32(n)   DatumGetInt32(PG_GETARG_DATUM(n))
 
#define PG_GETARG_UINT32(n)   DatumGetUInt32(PG_GETARG_DATUM(n))
 
#define PG_GETARG_INT16(n)   DatumGetInt16(PG_GETARG_DATUM(n))
 
#define PG_GETARG_UINT16(n)   DatumGetUInt16(PG_GETARG_DATUM(n))
 
#define PG_GETARG_CHAR(n)   DatumGetChar(PG_GETARG_DATUM(n))
 
#define PG_GETARG_BOOL(n)   DatumGetBool(PG_GETARG_DATUM(n))
 
#define PG_GETARG_OID(n)   DatumGetObjectId(PG_GETARG_DATUM(n))
 
#define PG_GETARG_POINTER(n)   DatumGetPointer(PG_GETARG_DATUM(n))
 
#define PG_GETARG_CSTRING(n)   DatumGetCString(PG_GETARG_DATUM(n))
 
#define PG_GETARG_NAME(n)   DatumGetName(PG_GETARG_DATUM(n))
 
#define PG_GETARG_TRANSACTIONID(n)   DatumGetTransactionId(PG_GETARG_DATUM(n))
 
#define PG_GETARG_FLOAT4(n)   DatumGetFloat4(PG_GETARG_DATUM(n))
 
#define PG_GETARG_FLOAT8(n)   DatumGetFloat8(PG_GETARG_DATUM(n))
 
#define PG_GETARG_INT64(n)   DatumGetInt64(PG_GETARG_DATUM(n))
 
#define PG_GETARG_RAW_VARLENA_P(n)   ((struct varlena *) PG_GETARG_POINTER(n))
 
#define PG_GETARG_VARLENA_P(n)   PG_DETOAST_DATUM(PG_GETARG_DATUM(n))
 
#define PG_GETARG_VARLENA_PP(n)   PG_DETOAST_DATUM_PACKED(PG_GETARG_DATUM(n))
 
#define DatumGetByteaPP(X)   ((bytea *) PG_DETOAST_DATUM_PACKED(X))
 
#define DatumGetTextPP(X)   ((text *) PG_DETOAST_DATUM_PACKED(X))
 
#define DatumGetBpCharPP(X)   ((BpChar *) PG_DETOAST_DATUM_PACKED(X))
 
#define DatumGetVarCharPP(X)   ((VarChar *) PG_DETOAST_DATUM_PACKED(X))
 
#define DatumGetHeapTupleHeader(X)   ((HeapTupleHeader) PG_DETOAST_DATUM(X))
 
#define DatumGetByteaPCopy(X)   ((bytea *) PG_DETOAST_DATUM_COPY(X))
 
#define DatumGetTextPCopy(X)   ((text *) PG_DETOAST_DATUM_COPY(X))
 
#define DatumGetBpCharPCopy(X)   ((BpChar *) PG_DETOAST_DATUM_COPY(X))
 
#define DatumGetVarCharPCopy(X)   ((VarChar *) PG_DETOAST_DATUM_COPY(X))
 
#define DatumGetHeapTupleHeaderCopy(X)   ((HeapTupleHeader) PG_DETOAST_DATUM_COPY(X))
 
#define DatumGetByteaPSlice(X, m, n)   ((bytea *) PG_DETOAST_DATUM_SLICE(X,m,n))
 
#define DatumGetTextPSlice(X, m, n)   ((text *) PG_DETOAST_DATUM_SLICE(X,m,n))
 
#define DatumGetBpCharPSlice(X, m, n)   ((BpChar *) PG_DETOAST_DATUM_SLICE(X,m,n))
 
#define DatumGetVarCharPSlice(X, m, n)   ((VarChar *) PG_DETOAST_DATUM_SLICE(X,m,n))
 
#define PG_GETARG_BYTEA_PP(n)   DatumGetByteaPP(PG_GETARG_DATUM(n))
 
#define PG_GETARG_TEXT_PP(n)   DatumGetTextPP(PG_GETARG_DATUM(n))
 
#define PG_GETARG_BPCHAR_PP(n)   DatumGetBpCharPP(PG_GETARG_DATUM(n))
 
#define PG_GETARG_VARCHAR_PP(n)   DatumGetVarCharPP(PG_GETARG_DATUM(n))
 
#define PG_GETARG_HEAPTUPLEHEADER(n)   DatumGetHeapTupleHeader(PG_GETARG_DATUM(n))
 
#define PG_GETARG_BYTEA_P_COPY(n)   DatumGetByteaPCopy(PG_GETARG_DATUM(n))
 
#define PG_GETARG_TEXT_P_COPY(n)   DatumGetTextPCopy(PG_GETARG_DATUM(n))
 
#define PG_GETARG_BPCHAR_P_COPY(n)   DatumGetBpCharPCopy(PG_GETARG_DATUM(n))
 
#define PG_GETARG_VARCHAR_P_COPY(n)   DatumGetVarCharPCopy(PG_GETARG_DATUM(n))
 
#define PG_GETARG_HEAPTUPLEHEADER_COPY(n)   DatumGetHeapTupleHeaderCopy(PG_GETARG_DATUM(n))
 
#define PG_GETARG_BYTEA_P_SLICE(n, a, b)   DatumGetByteaPSlice(PG_GETARG_DATUM(n),a,b)
 
#define PG_GETARG_TEXT_P_SLICE(n, a, b)   DatumGetTextPSlice(PG_GETARG_DATUM(n),a,b)
 
#define PG_GETARG_BPCHAR_P_SLICE(n, a, b)   DatumGetBpCharPSlice(PG_GETARG_DATUM(n),a,b)
 
#define PG_GETARG_VARCHAR_P_SLICE(n, a, b)   DatumGetVarCharPSlice(PG_GETARG_DATUM(n),a,b)
 
#define DatumGetByteaP(X)   ((bytea *) PG_DETOAST_DATUM(X))
 
#define DatumGetTextP(X)   ((text *) PG_DETOAST_DATUM(X))
 
#define DatumGetBpCharP(X)   ((BpChar *) PG_DETOAST_DATUM(X))
 
#define DatumGetVarCharP(X)   ((VarChar *) PG_DETOAST_DATUM(X))
 
#define PG_GETARG_BYTEA_P(n)   DatumGetByteaP(PG_GETARG_DATUM(n))
 
#define PG_GETARG_TEXT_P(n)   DatumGetTextP(PG_GETARG_DATUM(n))
 
#define PG_GETARG_BPCHAR_P(n)   DatumGetBpCharP(PG_GETARG_DATUM(n))
 
#define PG_GETARG_VARCHAR_P(n)   DatumGetVarCharP(PG_GETARG_DATUM(n))
 
#define PG_HAS_OPCLASS_OPTIONS()   has_fn_opclass_options(fcinfo->flinfo)
 
#define PG_GET_OPCLASS_OPTIONS()   get_fn_opclass_options(fcinfo->flinfo)
 
#define PG_RETURN_NULL()    do { fcinfo->isnull = true; return (Datum) 0; } while (0)
 
#define PG_RETURN_VOID()   return (Datum) 0
 
#define PG_RETURN_DATUM(x)   return (x)
 
#define PG_RETURN_INT32(x)   return Int32GetDatum(x)
 
#define PG_RETURN_UINT32(x)   return UInt32GetDatum(x)
 
#define PG_RETURN_INT16(x)   return Int16GetDatum(x)
 
#define PG_RETURN_UINT16(x)   return UInt16GetDatum(x)
 
#define PG_RETURN_CHAR(x)   return CharGetDatum(x)
 
#define PG_RETURN_BOOL(x)   return BoolGetDatum(x)
 
#define PG_RETURN_OID(x)   return ObjectIdGetDatum(x)
 
#define PG_RETURN_POINTER(x)   return PointerGetDatum(x)
 
#define PG_RETURN_CSTRING(x)   return CStringGetDatum(x)
 
#define PG_RETURN_NAME(x)   return NameGetDatum(x)
 
#define PG_RETURN_TRANSACTIONID(x)   return TransactionIdGetDatum(x)
 
#define PG_RETURN_FLOAT4(x)   return Float4GetDatum(x)
 
#define PG_RETURN_FLOAT8(x)   return Float8GetDatum(x)
 
#define PG_RETURN_INT64(x)   return Int64GetDatum(x)
 
#define PG_RETURN_UINT64(x)   return UInt64GetDatum(x)
 
#define PG_RETURN_BYTEA_P(x)   PG_RETURN_POINTER(x)
 
#define PG_RETURN_TEXT_P(x)   PG_RETURN_POINTER(x)
 
#define PG_RETURN_BPCHAR_P(x)   PG_RETURN_POINTER(x)
 
#define PG_RETURN_VARCHAR_P(x)   PG_RETURN_POINTER(x)
 
#define PG_RETURN_HEAPTUPLEHEADER(x)   return HeapTupleHeaderGetDatum(x)
 
#define PG_FUNCTION_INFO_V1(funcname)
 
#define PG_MODULE_MAGIC_DATA
 
#define PG_MAGIC_FUNCTION_NAME   Pg_magic_func
 
#define PG_MAGIC_FUNCTION_NAME_STRING   "Pg_magic_func"
 
#define PG_MODULE_MAGIC
 
#define DirectFunctionCall1(func, arg1)    DirectFunctionCall1Coll(func, InvalidOid, arg1)
 
#define DirectFunctionCall2(func, arg1, arg2)    DirectFunctionCall2Coll(func, InvalidOid, arg1, arg2)
 
#define DirectFunctionCall3(func, arg1, arg2, arg3)    DirectFunctionCall3Coll(func, InvalidOid, arg1, arg2, arg3)
 
#define DirectFunctionCall4(func, arg1, arg2, arg3, arg4)    DirectFunctionCall4Coll(func, InvalidOid, arg1, arg2, arg3, arg4)
 
#define DirectFunctionCall5(func, arg1, arg2, arg3, arg4, arg5)    DirectFunctionCall5Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5)
 
#define DirectFunctionCall6(func, arg1, arg2, arg3, arg4, arg5, arg6)    DirectFunctionCall6Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)
 
#define DirectFunctionCall7(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7)    DirectFunctionCall7Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
 
#define DirectFunctionCall8(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)    DirectFunctionCall8Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
 
#define DirectFunctionCall9(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)    DirectFunctionCall9Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
 
#define FunctionCall1(flinfo, arg1)    FunctionCall1Coll(flinfo, InvalidOid, arg1)
 
#define FunctionCall2(flinfo, arg1, arg2)    FunctionCall2Coll(flinfo, InvalidOid, arg1, arg2)
 
#define FunctionCall3(flinfo, arg1, arg2, arg3)    FunctionCall3Coll(flinfo, InvalidOid, arg1, arg2, arg3)
 
#define FunctionCall4(flinfo, arg1, arg2, arg3, arg4)    FunctionCall4Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4)
 
#define FunctionCall5(flinfo, arg1, arg2, arg3, arg4, arg5)    FunctionCall5Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5)
 
#define FunctionCall6(flinfo, arg1, arg2, arg3, arg4, arg5, arg6)    FunctionCall6Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)
 
#define FunctionCall7(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7)    FunctionCall7Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
 
#define FunctionCall8(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)    FunctionCall8Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
 
#define FunctionCall9(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)    FunctionCall9Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
 
#define OidFunctionCall0(functionId)    OidFunctionCall0Coll(functionId, InvalidOid)
 
#define OidFunctionCall1(functionId, arg1)    OidFunctionCall1Coll(functionId, InvalidOid, arg1)
 
#define OidFunctionCall2(functionId, arg1, arg2)    OidFunctionCall2Coll(functionId, InvalidOid, arg1, arg2)
 
#define OidFunctionCall3(functionId, arg1, arg2, arg3)    OidFunctionCall3Coll(functionId, InvalidOid, arg1, arg2, arg3)
 
#define OidFunctionCall4(functionId, arg1, arg2, arg3, arg4)    OidFunctionCall4Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4)
 
#define OidFunctionCall5(functionId, arg1, arg2, arg3, arg4, arg5)    OidFunctionCall5Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5)
 
#define OidFunctionCall6(functionId, arg1, arg2, arg3, arg4, arg5, arg6)    OidFunctionCall6Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)
 
#define OidFunctionCall7(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7)    OidFunctionCall7Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
 
#define OidFunctionCall8(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)    OidFunctionCall8Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
 
#define OidFunctionCall9(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)    OidFunctionCall9Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
 
#define AGG_CONTEXT_AGGREGATE   1 /* regular aggregate */
 
#define AGG_CONTEXT_WINDOW   2 /* window function */
 
#define FmgrHookIsNeeded(fn_oid)    (!needs_fmgr_hook ? false : (*needs_fmgr_hook)(fn_oid))
 

Typedefs

typedef struct NodefmNodePtr
 
typedef struct AggreffmAggrefPtr
 
typedef void(* fmExprContextCallbackFunction) (Datum arg)
 
typedef struct StringInfoDatafmStringInfo
 
typedef struct FunctionCallInfoBaseDataFunctionCallInfo
 
typedef Datum(* PGFunction) (FunctionCallInfo fcinfo)
 
typedef struct FmgrInfo FmgrInfo
 
typedef struct FunctionCallInfoBaseData FunctionCallInfoBaseData
 
typedef const Pg_finfo_record *(* PGFInfoFunction) (void)
 
typedef const Pg_magic_struct *(* PGModuleMagicFunction) (void)
 
typedef enum FmgrHookEventType FmgrHookEventType
 
typedef bool(* needs_fmgr_hook_type) (Oid fn_oid)
 
typedef void(* fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg)
 

Enumerations

enum  FmgrHookEventType { FHET_START , FHET_END , FHET_ABORT }
 

Functions

void fmgr_info (Oid functionId, FmgrInfo *finfo)
 
void fmgr_info_cxt (Oid functionId, FmgrInfo *finfo, MemoryContext mcxt)
 
void fmgr_info_copy (FmgrInfo *dstinfo, FmgrInfo *srcinfo, MemoryContext destcxt)
 
void fmgr_symbol (Oid functionId, char **mod, char **fn)
 
struct varlenapg_detoast_datum (struct varlena *datum)
 
struct varlenapg_detoast_datum_copy (struct varlena *datum)
 
struct varlenapg_detoast_datum_slice (struct varlena *datum, int32 first, int32 count)
 
struct varlenapg_detoast_datum_packed (struct varlena *datum)
 
PGDLLEXPORT void _PG_init (void)
 
 StaticAssertDecl (sizeof(FMGR_ABI_EXTRA)<=sizeof(((Pg_magic_struct *) 0) ->abi_extra), "FMGR_ABI_EXTRA too long")
 
Datum DirectFunctionCall1Coll (PGFunction func, Oid collation, Datum arg1)
 
Datum DirectFunctionCall2Coll (PGFunction func, Oid collation, Datum arg1, Datum arg2)
 
Datum DirectFunctionCall3Coll (PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3)
 
Datum DirectFunctionCall4Coll (PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4)
 
Datum DirectFunctionCall5Coll (PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
 
Datum DirectFunctionCall6Coll (PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6)
 
Datum DirectFunctionCall7Coll (PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7)
 
Datum DirectFunctionCall8Coll (PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8)
 
Datum DirectFunctionCall9Coll (PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9)
 
Datum CallerFInfoFunctionCall1 (PGFunction func, FmgrInfo *flinfo, Oid collation, Datum arg1)
 
Datum CallerFInfoFunctionCall2 (PGFunction func, FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2)
 
Datum FunctionCall0Coll (FmgrInfo *flinfo, Oid collation)
 
Datum FunctionCall1Coll (FmgrInfo *flinfo, Oid collation, Datum arg1)
 
Datum FunctionCall2Coll (FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2)
 
Datum FunctionCall3Coll (FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3)
 
Datum FunctionCall4Coll (FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4)
 
Datum FunctionCall5Coll (FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
 
Datum FunctionCall6Coll (FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6)
 
Datum FunctionCall7Coll (FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7)
 
Datum FunctionCall8Coll (FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8)
 
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 OidFunctionCall0Coll (Oid functionId, Oid collation)
 
Datum OidFunctionCall1Coll (Oid functionId, Oid collation, Datum arg1)
 
Datum OidFunctionCall2Coll (Oid functionId, Oid collation, Datum arg1, Datum arg2)
 
Datum OidFunctionCall3Coll (Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3)
 
Datum OidFunctionCall4Coll (Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4)
 
Datum OidFunctionCall5Coll (Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
 
Datum OidFunctionCall6Coll (Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6)
 
Datum OidFunctionCall7Coll (Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7)
 
Datum OidFunctionCall8Coll (Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8)
 
Datum OidFunctionCall9Coll (Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9)
 
Datum InputFunctionCall (FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod)
 
bool InputFunctionCallSafe (FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod, fmNodePtr escontext, Datum *result)
 
bool DirectInputFunctionCallSafe (PGFunction func, char *str, Oid typioparam, int32 typmod, fmNodePtr escontext, Datum *result)
 
Datum OidInputFunctionCall (Oid functionId, char *str, Oid typioparam, int32 typmod)
 
char * OutputFunctionCall (FmgrInfo *flinfo, Datum val)
 
char * OidOutputFunctionCall (Oid functionId, Datum val)
 
Datum ReceiveFunctionCall (FmgrInfo *flinfo, fmStringInfo buf, Oid typioparam, int32 typmod)
 
Datum OidReceiveFunctionCall (Oid functionId, fmStringInfo buf, Oid typioparam, int32 typmod)
 
byteaSendFunctionCall (FmgrInfo *flinfo, Datum val)
 
byteaOidSendFunctionCall (Oid functionId, Datum val)
 
const Pg_finfo_recordfetch_finfo_record (void *filehandle, const char *funcname)
 
Oid fmgr_internal_function (const char *proname)
 
Oid get_fn_expr_rettype (FmgrInfo *flinfo)
 
Oid get_fn_expr_argtype (FmgrInfo *flinfo, int argnum)
 
Oid get_call_expr_argtype (fmNodePtr expr, int argnum)
 
bool get_fn_expr_arg_stable (FmgrInfo *flinfo, int argnum)
 
bool get_call_expr_arg_stable (fmNodePtr expr, int argnum)
 
bool get_fn_expr_variadic (FmgrInfo *flinfo)
 
byteaget_fn_opclass_options (FmgrInfo *flinfo)
 
bool has_fn_opclass_options (FmgrInfo *flinfo)
 
void set_fn_opclass_options (FmgrInfo *flinfo, bytea *options)
 
bool CheckFunctionValidatorAccess (Oid validatorOid, Oid functionOid)
 
void * load_external_function (const char *filename, const char *funcname, bool signalNotFound, void **filehandle)
 
void * lookup_external_function (void *filehandle, const char *funcname)
 
void load_file (const char *filename, bool restricted)
 
void ** find_rendezvous_variable (const char *varName)
 
Size EstimateLibraryStateSpace (void)
 
void SerializeLibraryState (Size maxsize, char *start_address)
 
void RestoreLibraryState (char *start_address)
 
int AggCheckCallContext (FunctionCallInfo fcinfo, MemoryContext *aggcontext)
 
fmAggrefPtr AggGetAggref (FunctionCallInfo fcinfo)
 
MemoryContext AggGetTempMemoryContext (FunctionCallInfo fcinfo)
 
bool AggStateIsShared (FunctionCallInfo fcinfo)
 
void AggRegisterCallback (FunctionCallInfo fcinfo, fmExprContextCallbackFunction func, Datum arg)
 

Variables

PGDLLIMPORT char * Dynamic_library_path
 
PGDLLIMPORT needs_fmgr_hook_type needs_fmgr_hook
 
PGDLLIMPORT fmgr_hook_type fmgr_hook
 

Macro Definition Documentation

◆ AGG_CONTEXT_AGGREGATE

#define AGG_CONTEXT_AGGREGATE   1 /* regular aggregate */

Definition at line 760 of file fmgr.h.

◆ AGG_CONTEXT_WINDOW

#define AGG_CONTEXT_WINDOW   2 /* window function */

Definition at line 761 of file fmgr.h.

◆ DatumGetBpCharP

#define DatumGetBpCharP (   X)    ((BpChar *) PG_DETOAST_DATUM(X))

Definition at line 333 of file fmgr.h.

◆ DatumGetBpCharPCopy

#define DatumGetBpCharPCopy (   X)    ((BpChar *) PG_DETOAST_DATUM_COPY(X))

Definition at line 299 of file fmgr.h.

◆ DatumGetBpCharPP

#define DatumGetBpCharPP (   X)    ((BpChar *) PG_DETOAST_DATUM_PACKED(X))

Definition at line 293 of file fmgr.h.

◆ DatumGetBpCharPSlice

#define DatumGetBpCharPSlice (   X,
  m,
 
)    ((BpChar *) PG_DETOAST_DATUM_SLICE(X,m,n))

Definition at line 305 of file fmgr.h.

◆ DatumGetByteaP

#define DatumGetByteaP (   X)    ((bytea *) PG_DETOAST_DATUM(X))

Definition at line 331 of file fmgr.h.

◆ DatumGetByteaPCopy

#define DatumGetByteaPCopy (   X)    ((bytea *) PG_DETOAST_DATUM_COPY(X))

Definition at line 297 of file fmgr.h.

◆ DatumGetByteaPP

#define DatumGetByteaPP (   X)    ((bytea *) PG_DETOAST_DATUM_PACKED(X))

Definition at line 291 of file fmgr.h.

◆ DatumGetByteaPSlice

#define DatumGetByteaPSlice (   X,
  m,
 
)    ((bytea *) PG_DETOAST_DATUM_SLICE(X,m,n))

Definition at line 303 of file fmgr.h.

◆ DatumGetHeapTupleHeader

#define DatumGetHeapTupleHeader (   X)    ((HeapTupleHeader) PG_DETOAST_DATUM(X))

Definition at line 295 of file fmgr.h.

◆ DatumGetHeapTupleHeaderCopy

#define DatumGetHeapTupleHeaderCopy (   X)    ((HeapTupleHeader) PG_DETOAST_DATUM_COPY(X))

Definition at line 301 of file fmgr.h.

◆ DatumGetTextP

#define DatumGetTextP (   X)    ((text *) PG_DETOAST_DATUM(X))

Definition at line 332 of file fmgr.h.

◆ DatumGetTextPCopy

#define DatumGetTextPCopy (   X)    ((text *) PG_DETOAST_DATUM_COPY(X))

Definition at line 298 of file fmgr.h.

◆ DatumGetTextPP

#define DatumGetTextPP (   X)    ((text *) PG_DETOAST_DATUM_PACKED(X))

Definition at line 292 of file fmgr.h.

◆ DatumGetTextPSlice

#define DatumGetTextPSlice (   X,
  m,
 
)    ((text *) PG_DETOAST_DATUM_SLICE(X,m,n))

Definition at line 304 of file fmgr.h.

◆ DatumGetVarCharP

#define DatumGetVarCharP (   X)    ((VarChar *) PG_DETOAST_DATUM(X))

Definition at line 334 of file fmgr.h.

◆ DatumGetVarCharPCopy

#define DatumGetVarCharPCopy (   X)    ((VarChar *) PG_DETOAST_DATUM_COPY(X))

Definition at line 300 of file fmgr.h.

◆ DatumGetVarCharPP

#define DatumGetVarCharPP (   X)    ((VarChar *) PG_DETOAST_DATUM_PACKED(X))

Definition at line 294 of file fmgr.h.

◆ DatumGetVarCharPSlice

#define DatumGetVarCharPSlice (   X,
  m,
 
)    ((VarChar *) PG_DETOAST_DATUM_SLICE(X,m,n))

Definition at line 306 of file fmgr.h.

◆ DirectFunctionCall1

#define DirectFunctionCall1 (   func,
  arg1 
)     DirectFunctionCall1Coll(func, InvalidOid, arg1)

Definition at line 641 of file fmgr.h.

◆ DirectFunctionCall2

#define DirectFunctionCall2 (   func,
  arg1,
  arg2 
)     DirectFunctionCall2Coll(func, InvalidOid, arg1, arg2)

Definition at line 643 of file fmgr.h.

◆ DirectFunctionCall3

#define DirectFunctionCall3 (   func,
  arg1,
  arg2,
  arg3 
)     DirectFunctionCall3Coll(func, InvalidOid, arg1, arg2, arg3)

Definition at line 645 of file fmgr.h.

◆ DirectFunctionCall4

#define DirectFunctionCall4 (   func,
  arg1,
  arg2,
  arg3,
  arg4 
)     DirectFunctionCall4Coll(func, InvalidOid, arg1, arg2, arg3, arg4)

Definition at line 647 of file fmgr.h.

◆ DirectFunctionCall5

#define DirectFunctionCall5 (   func,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5 
)     DirectFunctionCall5Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5)

Definition at line 649 of file fmgr.h.

◆ DirectFunctionCall6

#define DirectFunctionCall6 (   func,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6 
)     DirectFunctionCall6Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)

Definition at line 651 of file fmgr.h.

◆ DirectFunctionCall7

#define DirectFunctionCall7 (   func,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6,
  arg7 
)     DirectFunctionCall7Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)

Definition at line 653 of file fmgr.h.

◆ DirectFunctionCall8

#define DirectFunctionCall8 (   func,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6,
  arg7,
  arg8 
)     DirectFunctionCall8Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)

Definition at line 655 of file fmgr.h.

◆ DirectFunctionCall9

#define DirectFunctionCall9 (   func,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6,
  arg7,
  arg8,
  arg9 
)     DirectFunctionCall9Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)

Definition at line 657 of file fmgr.h.

◆ FIELDNO_FUNCTIONCALLINFODATA_ARGS

#define FIELDNO_FUNCTIONCALLINFODATA_ARGS   6

Definition at line 94 of file fmgr.h.

◆ FIELDNO_FUNCTIONCALLINFODATA_ISNULL

#define FIELDNO_FUNCTIONCALLINFODATA_ISNULL   4

Definition at line 91 of file fmgr.h.

◆ fmgr_info_set_expr

#define fmgr_info_set_expr (   expr,
  finfo 
)     ((finfo)->fn_expr = (expr))

Definition at line 135 of file fmgr.h.

◆ FmgrHookIsNeeded

#define FmgrHookIsNeeded (   fn_oid)     (!needs_fmgr_hook ? false : (*needs_fmgr_hook)(fn_oid))

Definition at line 796 of file fmgr.h.

◆ FunctionCall1

#define FunctionCall1 (   flinfo,
  arg1 
)     FunctionCall1Coll(flinfo, InvalidOid, arg1)

Definition at line 659 of file fmgr.h.

◆ FunctionCall2

#define FunctionCall2 (   flinfo,
  arg1,
  arg2 
)     FunctionCall2Coll(flinfo, InvalidOid, arg1, arg2)

Definition at line 661 of file fmgr.h.

◆ FunctionCall3

#define FunctionCall3 (   flinfo,
  arg1,
  arg2,
  arg3 
)     FunctionCall3Coll(flinfo, InvalidOid, arg1, arg2, arg3)

Definition at line 663 of file fmgr.h.

◆ FunctionCall4

#define FunctionCall4 (   flinfo,
  arg1,
  arg2,
  arg3,
  arg4 
)     FunctionCall4Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4)

Definition at line 665 of file fmgr.h.

◆ FunctionCall5

#define FunctionCall5 (   flinfo,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5 
)     FunctionCall5Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5)

Definition at line 667 of file fmgr.h.

◆ FunctionCall6

#define FunctionCall6 (   flinfo,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6 
)     FunctionCall6Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)

Definition at line 669 of file fmgr.h.

◆ FunctionCall7

#define FunctionCall7 (   flinfo,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6,
  arg7 
)     FunctionCall7Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)

Definition at line 671 of file fmgr.h.

◆ FunctionCall8

#define FunctionCall8 (   flinfo,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6,
  arg7,
  arg8 
)     FunctionCall8Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)

Definition at line 673 of file fmgr.h.

◆ FunctionCall9

#define FunctionCall9 (   flinfo,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6,
  arg7,
  arg8,
  arg9 
)     FunctionCall9Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)

Definition at line 675 of file fmgr.h.

◆ FunctionCallInvoke

#define FunctionCallInvoke (   fcinfo)    ((* (fcinfo)->flinfo->fn_addr) (fcinfo))

Definition at line 172 of file fmgr.h.

◆ InitFunctionCallInfoData

#define InitFunctionCallInfoData (   Fcinfo,
  Flinfo,
  Nargs,
  Collation,
  Context,
  Resultinfo 
)
Value:
do { \
(Fcinfo).flinfo = (Flinfo); \
(Fcinfo).context = (Context); \
(Fcinfo).resultinfo = (Resultinfo); \
(Fcinfo).fncollation = (Collation); \
(Fcinfo).isnull = false; \
(Fcinfo).nargs = (Nargs); \
} while (0)

Definition at line 150 of file fmgr.h.

◆ LOCAL_FCINFO

#define LOCAL_FCINFO (   name,
  nargs 
)
Value:
/* use union with FunctionCallInfoBaseData to guarantee alignment */ \
union \
{ \
FunctionCallInfoBaseData fcinfo; \
/* ensure enough space for nargs args is available */ \
char fcinfo_data[SizeForFunctionCallInfo(nargs)]; \
} name##data; \
FunctionCallInfo name = &name##data.fcinfo
#define SizeForFunctionCallInfo(nargs)
Definition: fmgr.h:102
const void * data
const char * name

Definition at line 110 of file fmgr.h.

◆ OidFunctionCall0

#define OidFunctionCall0 (   functionId)     OidFunctionCall0Coll(functionId, InvalidOid)

Definition at line 677 of file fmgr.h.

◆ OidFunctionCall1

#define OidFunctionCall1 (   functionId,
  arg1 
)     OidFunctionCall1Coll(functionId, InvalidOid, arg1)

Definition at line 679 of file fmgr.h.

◆ OidFunctionCall2

#define OidFunctionCall2 (   functionId,
  arg1,
  arg2 
)     OidFunctionCall2Coll(functionId, InvalidOid, arg1, arg2)

Definition at line 681 of file fmgr.h.

◆ OidFunctionCall3

#define OidFunctionCall3 (   functionId,
  arg1,
  arg2,
  arg3 
)     OidFunctionCall3Coll(functionId, InvalidOid, arg1, arg2, arg3)

Definition at line 683 of file fmgr.h.

◆ OidFunctionCall4

#define OidFunctionCall4 (   functionId,
  arg1,
  arg2,
  arg3,
  arg4 
)     OidFunctionCall4Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4)

Definition at line 685 of file fmgr.h.

◆ OidFunctionCall5

#define OidFunctionCall5 (   functionId,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5 
)     OidFunctionCall5Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5)

Definition at line 687 of file fmgr.h.

◆ OidFunctionCall6

#define OidFunctionCall6 (   functionId,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6 
)     OidFunctionCall6Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)

Definition at line 689 of file fmgr.h.

◆ OidFunctionCall7

#define OidFunctionCall7 (   functionId,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6,
  arg7 
)     OidFunctionCall7Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)

Definition at line 691 of file fmgr.h.

◆ OidFunctionCall8

#define OidFunctionCall8 (   functionId,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6,
  arg7,
  arg8 
)     OidFunctionCall8Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)

Definition at line 693 of file fmgr.h.

◆ OidFunctionCall9

#define OidFunctionCall9 (   functionId,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5,
  arg6,
  arg7,
  arg8,
  arg9 
)     OidFunctionCall9Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)

Definition at line 695 of file fmgr.h.

◆ PG_ARGISNULL

#define PG_ARGISNULL (   n)    (fcinfo->args[n].isnull)

Definition at line 209 of file fmgr.h.

◆ PG_DETOAST_DATUM

#define PG_DETOAST_DATUM (   datum)     pg_detoast_datum((struct varlena *) DatumGetPointer(datum))

Definition at line 240 of file fmgr.h.

◆ PG_DETOAST_DATUM_COPY

#define PG_DETOAST_DATUM_COPY (   datum)     pg_detoast_datum_copy((struct varlena *) DatumGetPointer(datum))

Definition at line 242 of file fmgr.h.

◆ PG_DETOAST_DATUM_PACKED

#define PG_DETOAST_DATUM_PACKED (   datum)     pg_detoast_datum_packed((struct varlena *) DatumGetPointer(datum))

Definition at line 248 of file fmgr.h.

◆ PG_DETOAST_DATUM_SLICE

#define PG_DETOAST_DATUM_SLICE (   datum,
  f,
  c 
)
Value:
(int32) (f), (int32) (c))
int32_t int32
Definition: c.h:484
struct varlena * pg_detoast_datum_slice(struct varlena *datum, int32 first, int32 count)
Definition: fmgr.c:1857
static Pointer DatumGetPointer(Datum X)
Definition: postgres.h:317
char * c
Definition: c.h:644

Definition at line 244 of file fmgr.h.

◆ PG_FREE_IF_COPY

#define PG_FREE_IF_COPY (   ptr,
 
)
Value:
do { \
if ((Pointer) (ptr) != PG_GETARG_POINTER(n)) \
pfree(ptr); \
} while (0)
char * Pointer
Definition: c.h:479
#define PG_GETARG_POINTER(n)
Definition: fmgr.h:276

Definition at line 260 of file fmgr.h.

◆ PG_FUNCTION_ARGS

#define PG_FUNCTION_ARGS   FunctionCallInfo fcinfo

Definition at line 193 of file fmgr.h.

◆ PG_FUNCTION_INFO_V1

#define PG_FUNCTION_INFO_V1 (   funcname)
Value:
extern PGDLLEXPORT const Pg_finfo_record * CppConcat(pg_finfo_,funcname)(void); \
const Pg_finfo_record * \
CppConcat(pg_finfo_,funcname) (void) \
{ \
static const Pg_finfo_record my_finfo = { 1 }; \
return &my_finfo; \
} \
extern int no_such_variable
#define CppConcat(x, y)
Definition: c.h:350
#define PGDLLEXPORT
Definition: c.h:1292
#define PG_FUNCTION_ARGS
Definition: fmgr.h:193
#define funcname
Definition: indent_codes.h:69
uintptr_t Datum
Definition: postgres.h:69

Definition at line 415 of file fmgr.h.

◆ PG_GET_COLLATION

#define PG_GET_COLLATION ( )    (fcinfo->fncollation)

Definition at line 198 of file fmgr.h.

◆ PG_GET_OPCLASS_OPTIONS

#define PG_GET_OPCLASS_OPTIONS ( )    get_fn_opclass_options(fcinfo->flinfo)

Definition at line 342 of file fmgr.h.

◆ PG_GETARG_BOOL

#define PG_GETARG_BOOL (   n)    DatumGetBool(PG_GETARG_DATUM(n))

Definition at line 274 of file fmgr.h.

◆ PG_GETARG_BPCHAR_P

#define PG_GETARG_BPCHAR_P (   n)    DatumGetBpCharP(PG_GETARG_DATUM(n))

Definition at line 337 of file fmgr.h.

◆ PG_GETARG_BPCHAR_P_COPY

#define PG_GETARG_BPCHAR_P_COPY (   n)    DatumGetBpCharPCopy(PG_GETARG_DATUM(n))

Definition at line 316 of file fmgr.h.

◆ PG_GETARG_BPCHAR_P_SLICE

#define PG_GETARG_BPCHAR_P_SLICE (   n,
  a,
  b 
)    DatumGetBpCharPSlice(PG_GETARG_DATUM(n),a,b)

Definition at line 322 of file fmgr.h.

◆ PG_GETARG_BPCHAR_PP

#define PG_GETARG_BPCHAR_PP (   n)    DatumGetBpCharPP(PG_GETARG_DATUM(n))

Definition at line 310 of file fmgr.h.

◆ PG_GETARG_BYTEA_P

#define PG_GETARG_BYTEA_P (   n)    DatumGetByteaP(PG_GETARG_DATUM(n))

Definition at line 335 of file fmgr.h.

◆ PG_GETARG_BYTEA_P_COPY

#define PG_GETARG_BYTEA_P_COPY (   n)    DatumGetByteaPCopy(PG_GETARG_DATUM(n))

Definition at line 314 of file fmgr.h.

◆ PG_GETARG_BYTEA_P_SLICE

#define PG_GETARG_BYTEA_P_SLICE (   n,
  a,
  b 
)    DatumGetByteaPSlice(PG_GETARG_DATUM(n),a,b)

Definition at line 320 of file fmgr.h.

◆ PG_GETARG_BYTEA_PP

#define PG_GETARG_BYTEA_PP (   n)    DatumGetByteaPP(PG_GETARG_DATUM(n))

Definition at line 308 of file fmgr.h.

◆ PG_GETARG_CHAR

#define PG_GETARG_CHAR (   n)    DatumGetChar(PG_GETARG_DATUM(n))

Definition at line 273 of file fmgr.h.

◆ PG_GETARG_CSTRING

#define PG_GETARG_CSTRING (   n)    DatumGetCString(PG_GETARG_DATUM(n))

Definition at line 277 of file fmgr.h.

◆ PG_GETARG_DATUM

#define PG_GETARG_DATUM (   n)    (fcinfo->args[n].value)

Definition at line 268 of file fmgr.h.

◆ PG_GETARG_FLOAT4

#define PG_GETARG_FLOAT4 (   n)    DatumGetFloat4(PG_GETARG_DATUM(n))

Definition at line 281 of file fmgr.h.

◆ PG_GETARG_FLOAT8

#define PG_GETARG_FLOAT8 (   n)    DatumGetFloat8(PG_GETARG_DATUM(n))

Definition at line 282 of file fmgr.h.

◆ PG_GETARG_HEAPTUPLEHEADER

#define PG_GETARG_HEAPTUPLEHEADER (   n)    DatumGetHeapTupleHeader(PG_GETARG_DATUM(n))

Definition at line 312 of file fmgr.h.

◆ PG_GETARG_HEAPTUPLEHEADER_COPY

#define PG_GETARG_HEAPTUPLEHEADER_COPY (   n)    DatumGetHeapTupleHeaderCopy(PG_GETARG_DATUM(n))

Definition at line 318 of file fmgr.h.

◆ PG_GETARG_INT16

#define PG_GETARG_INT16 (   n)    DatumGetInt16(PG_GETARG_DATUM(n))

Definition at line 271 of file fmgr.h.

◆ PG_GETARG_INT32

#define PG_GETARG_INT32 (   n)    DatumGetInt32(PG_GETARG_DATUM(n))

Definition at line 269 of file fmgr.h.

◆ PG_GETARG_INT64

#define PG_GETARG_INT64 (   n)    DatumGetInt64(PG_GETARG_DATUM(n))

Definition at line 283 of file fmgr.h.

◆ PG_GETARG_NAME

#define PG_GETARG_NAME (   n)    DatumGetName(PG_GETARG_DATUM(n))

Definition at line 278 of file fmgr.h.

◆ PG_GETARG_OID

#define PG_GETARG_OID (   n)    DatumGetObjectId(PG_GETARG_DATUM(n))

Definition at line 275 of file fmgr.h.

◆ PG_GETARG_POINTER

#define PG_GETARG_POINTER (   n)    DatumGetPointer(PG_GETARG_DATUM(n))

Definition at line 276 of file fmgr.h.

◆ PG_GETARG_RAW_VARLENA_P

#define PG_GETARG_RAW_VARLENA_P (   n)    ((struct varlena *) PG_GETARG_POINTER(n))

Definition at line 285 of file fmgr.h.

◆ PG_GETARG_TEXT_P

#define PG_GETARG_TEXT_P (   n)    DatumGetTextP(PG_GETARG_DATUM(n))

Definition at line 336 of file fmgr.h.

◆ PG_GETARG_TEXT_P_COPY

#define PG_GETARG_TEXT_P_COPY (   n)    DatumGetTextPCopy(PG_GETARG_DATUM(n))

Definition at line 315 of file fmgr.h.

◆ PG_GETARG_TEXT_P_SLICE

#define PG_GETARG_TEXT_P_SLICE (   n,
  a,
  b 
)    DatumGetTextPSlice(PG_GETARG_DATUM(n),a,b)

Definition at line 321 of file fmgr.h.

◆ PG_GETARG_TEXT_PP

#define PG_GETARG_TEXT_PP (   n)    DatumGetTextPP(PG_GETARG_DATUM(n))

Definition at line 309 of file fmgr.h.

◆ PG_GETARG_TRANSACTIONID

#define PG_GETARG_TRANSACTIONID (   n)    DatumGetTransactionId(PG_GETARG_DATUM(n))

Definition at line 279 of file fmgr.h.

◆ PG_GETARG_UINT16

#define PG_GETARG_UINT16 (   n)    DatumGetUInt16(PG_GETARG_DATUM(n))

Definition at line 272 of file fmgr.h.

◆ PG_GETARG_UINT32

#define PG_GETARG_UINT32 (   n)    DatumGetUInt32(PG_GETARG_DATUM(n))

Definition at line 270 of file fmgr.h.

◆ PG_GETARG_VARCHAR_P

#define PG_GETARG_VARCHAR_P (   n)    DatumGetVarCharP(PG_GETARG_DATUM(n))

Definition at line 338 of file fmgr.h.

◆ PG_GETARG_VARCHAR_P_COPY

#define PG_GETARG_VARCHAR_P_COPY (   n)    DatumGetVarCharPCopy(PG_GETARG_DATUM(n))

Definition at line 317 of file fmgr.h.

◆ PG_GETARG_VARCHAR_P_SLICE

#define PG_GETARG_VARCHAR_P_SLICE (   n,
  a,
  b 
)    DatumGetVarCharPSlice(PG_GETARG_DATUM(n),a,b)

Definition at line 323 of file fmgr.h.

◆ PG_GETARG_VARCHAR_PP

#define PG_GETARG_VARCHAR_PP (   n)    DatumGetVarCharPP(PG_GETARG_DATUM(n))

Definition at line 311 of file fmgr.h.

◆ PG_GETARG_VARLENA_P

#define PG_GETARG_VARLENA_P (   n)    PG_DETOAST_DATUM(PG_GETARG_DATUM(n))

Definition at line 287 of file fmgr.h.

◆ PG_GETARG_VARLENA_PP

#define PG_GETARG_VARLENA_PP (   n)    PG_DETOAST_DATUM_PACKED(PG_GETARG_DATUM(n))

Definition at line 289 of file fmgr.h.

◆ PG_HAS_OPCLASS_OPTIONS

#define PG_HAS_OPCLASS_OPTIONS ( )    has_fn_opclass_options(fcinfo->flinfo)

Definition at line 341 of file fmgr.h.

◆ PG_MAGIC_FUNCTION_NAME

#define PG_MAGIC_FUNCTION_NAME   Pg_magic_func

Definition at line 495 of file fmgr.h.

◆ PG_MAGIC_FUNCTION_NAME_STRING

#define PG_MAGIC_FUNCTION_NAME_STRING   "Pg_magic_func"

Definition at line 496 of file fmgr.h.

◆ PG_MODULE_MAGIC

#define PG_MODULE_MAGIC
Value:
const Pg_magic_struct * \
PG_MAGIC_FUNCTION_NAME(void) \
{ \
static const Pg_magic_struct Pg_magic_data = PG_MODULE_MAGIC_DATA; \
return &Pg_magic_data; \
} \
extern int no_such_variable
#define PG_MODULE_MAGIC_DATA
Definition: fmgr.h:475
#define PG_MAGIC_FUNCTION_NAME
Definition: fmgr.h:495

Definition at line 498 of file fmgr.h.

◆ PG_MODULE_MAGIC_DATA

#define PG_MODULE_MAGIC_DATA
Value:
{ \
sizeof(Pg_magic_struct), \
PG_VERSION_NUM / 100, \
FUNC_MAX_ARGS, \
INDEX_MAX_KEYS, \
NAMEDATALEN, \
FLOAT8PASSBYVAL, \
FMGR_ABI_EXTRA, \
}

Definition at line 475 of file fmgr.h.

◆ PG_NARGS

#define PG_NARGS ( )    (fcinfo->nargs)

Definition at line 203 of file fmgr.h.

◆ PG_RETURN_BOOL

#define PG_RETURN_BOOL (   x)    return BoolGetDatum(x)

Definition at line 359 of file fmgr.h.

◆ PG_RETURN_BPCHAR_P

#define PG_RETURN_BPCHAR_P (   x)    PG_RETURN_POINTER(x)

Definition at line 373 of file fmgr.h.

◆ PG_RETURN_BYTEA_P

#define PG_RETURN_BYTEA_P (   x)    PG_RETURN_POINTER(x)

Definition at line 371 of file fmgr.h.

◆ PG_RETURN_CHAR

#define PG_RETURN_CHAR (   x)    return CharGetDatum(x)

Definition at line 358 of file fmgr.h.

◆ PG_RETURN_CSTRING

#define PG_RETURN_CSTRING (   x)    return CStringGetDatum(x)

Definition at line 362 of file fmgr.h.

◆ PG_RETURN_DATUM

#define PG_RETURN_DATUM (   x)    return (x)

Definition at line 353 of file fmgr.h.

◆ PG_RETURN_FLOAT4

#define PG_RETURN_FLOAT4 (   x)    return Float4GetDatum(x)

Definition at line 366 of file fmgr.h.

◆ PG_RETURN_FLOAT8

#define PG_RETURN_FLOAT8 (   x)    return Float8GetDatum(x)

Definition at line 367 of file fmgr.h.

◆ PG_RETURN_HEAPTUPLEHEADER

#define PG_RETURN_HEAPTUPLEHEADER (   x)    return HeapTupleHeaderGetDatum(x)

Definition at line 375 of file fmgr.h.

◆ PG_RETURN_INT16

#define PG_RETURN_INT16 (   x)    return Int16GetDatum(x)

Definition at line 356 of file fmgr.h.

◆ PG_RETURN_INT32

#define PG_RETURN_INT32 (   x)    return Int32GetDatum(x)

Definition at line 354 of file fmgr.h.

◆ PG_RETURN_INT64

#define PG_RETURN_INT64 (   x)    return Int64GetDatum(x)

Definition at line 368 of file fmgr.h.

◆ PG_RETURN_NAME

#define PG_RETURN_NAME (   x)    return NameGetDatum(x)

Definition at line 363 of file fmgr.h.

◆ PG_RETURN_NULL

#define PG_RETURN_NULL ( )     do { fcinfo->isnull = true; return (Datum) 0; } while (0)

Definition at line 345 of file fmgr.h.

◆ PG_RETURN_OID

#define PG_RETURN_OID (   x)    return ObjectIdGetDatum(x)

Definition at line 360 of file fmgr.h.

◆ PG_RETURN_POINTER

#define PG_RETURN_POINTER (   x)    return PointerGetDatum(x)

Definition at line 361 of file fmgr.h.

◆ PG_RETURN_TEXT_P

#define PG_RETURN_TEXT_P (   x)    PG_RETURN_POINTER(x)

Definition at line 372 of file fmgr.h.

◆ PG_RETURN_TRANSACTIONID

#define PG_RETURN_TRANSACTIONID (   x)    return TransactionIdGetDatum(x)

Definition at line 364 of file fmgr.h.

◆ PG_RETURN_UINT16

#define PG_RETURN_UINT16 (   x)    return UInt16GetDatum(x)

Definition at line 357 of file fmgr.h.

◆ PG_RETURN_UINT32

#define PG_RETURN_UINT32 (   x)    return UInt32GetDatum(x)

Definition at line 355 of file fmgr.h.

◆ PG_RETURN_UINT64

#define PG_RETURN_UINT64 (   x)    return UInt64GetDatum(x)

Definition at line 369 of file fmgr.h.

◆ PG_RETURN_VARCHAR_P

#define PG_RETURN_VARCHAR_P (   x)    PG_RETURN_POINTER(x)

Definition at line 374 of file fmgr.h.

◆ PG_RETURN_VOID

#define PG_RETURN_VOID ( )    return (Datum) 0

Definition at line 349 of file fmgr.h.

◆ SizeForFunctionCallInfo

#define SizeForFunctionCallInfo (   nargs)
Value:

Definition at line 102 of file fmgr.h.

Typedef Documentation

◆ fmAggrefPtr

typedef struct Aggref* fmAggrefPtr

Definition at line 23 of file fmgr.h.

◆ fmExprContextCallbackFunction

typedef void(* fmExprContextCallbackFunction) (Datum arg)

Definition at line 26 of file fmgr.h.

◆ fmgr_hook_type

typedef void(* fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg)

Definition at line 790 of file fmgr.h.

◆ FmgrHookEventType

◆ FmgrInfo

typedef struct FmgrInfo FmgrInfo

◆ fmNodePtr

typedef struct Node* fmNodePtr

Definition at line 22 of file fmgr.h.

◆ fmStringInfo

typedef struct StringInfoData* fmStringInfo

Definition at line 29 of file fmgr.h.

◆ FunctionCallInfo

Definition at line 38 of file fmgr.h.

◆ FunctionCallInfoBaseData

◆ needs_fmgr_hook_type

typedef bool(* needs_fmgr_hook_type) (Oid fn_oid)

Definition at line 788 of file fmgr.h.

◆ PGFInfoFunction

typedef const Pg_finfo_record *(* PGFInfoFunction) (void)

Definition at line 401 of file fmgr.h.

◆ PGFunction

typedef Datum(* PGFunction) (FunctionCallInfo fcinfo)

Definition at line 40 of file fmgr.h.

◆ PGModuleMagicFunction

typedef const Pg_magic_struct *(* PGModuleMagicFunction) (void)

Definition at line 493 of file fmgr.h.

Enumeration Type Documentation

◆ FmgrHookEventType

Enumerator
FHET_START 
FHET_END 
FHET_ABORT 

Definition at line 781 of file fmgr.h.

782{
784 FHET_END,
FmgrHookEventType
Definition: fmgr.h:782
@ FHET_END
Definition: fmgr.h:784
@ FHET_ABORT
Definition: fmgr.h:785
@ FHET_START
Definition: fmgr.h:783

Function Documentation

◆ _PG_init()

PGDLLEXPORT void _PG_init ( void  )

Definition at line 52 of file auth_delay.c.

53{
54 /* Define custom GUC variables */
55 DefineCustomIntVariable("auth_delay.milliseconds",
56 "Milliseconds to delay before reporting authentication failure",
57 NULL,
59 0,
60 0, INT_MAX / 1000,
63 NULL,
64 NULL,
65 NULL);
66
67 MarkGUCPrefixReserved("auth_delay");
68
69 /* Install Hooks */
72}
ClientAuthentication_hook_type ClientAuthentication_hook
Definition: auth.c:214
static void auth_delay_checks(Port *port, int status)
Definition: auth_delay.c:31
static int auth_delay_milliseconds
Definition: auth_delay.c:22
static ClientAuthentication_hook_type original_client_auth_hook
Definition: auth_delay.c:25
void MarkGUCPrefixReserved(const char *className)
Definition: guc.c:5279
void DefineCustomIntVariable(const char *name, const char *short_desc, const char *long_desc, int *valueAddr, int bootValue, int minValue, int maxValue, GucContext context, int flags, GucIntCheckHook check_hook, GucIntAssignHook assign_hook, GucShowHook show_hook)
Definition: guc.c:5158
#define GUC_UNIT_MS
Definition: guc.h:239
@ PGC_SIGHUP
Definition: guc.h:75

References AccessExclusiveLock, add_int_reloption(), add_reloption_kind(), apw_start_leader_worker(), archive_directory, AssertVariableIsOfType, auth_delay_checks(), auth_delay_milliseconds, auto_explain_log_analyze, auto_explain_log_buffers, auto_explain_log_format, auto_explain_log_level, auto_explain_log_min_duration, auto_explain_log_nested_statements, auto_explain_log_parameter_max_length, auto_explain_log_settings, auto_explain_log_timing, auto_explain_log_triggers, auto_explain_log_verbose, auto_explain_log_wal, auto_explain_sample_rate, autoprewarm, autoprewarm_interval, BaseBackupAddTarget(), BC_ON, BackgroundWorker::bgw_flags, BackgroundWorker::bgw_function_name, BackgroundWorker::bgw_library_name, BackgroundWorker::bgw_main_arg, BGW_MAXLEN, BackgroundWorker::bgw_name, BGW_NEVER_RESTART, BackgroundWorker::bgw_notify_pid, BackgroundWorker::bgw_restart_time, BackgroundWorker::bgw_start_time, BackgroundWorker::bgw_type, BGWORKER_BACKEND_DATABASE_CONNECTION, BGWORKER_SHMEM_ACCESS, BgWorkerStart_RecoveryFinished, bl_relopt_kind, bl_relopt_tab, buf, builtin_crypto_enabled, builtin_crypto_options, check_archive_directory(), check_password(), check_password_hook, ClientAuthentication_hook, create_reloptions_table(), DEFAULT_BLOOM_BITS, DEFAULT_BLOOM_LENGTH, DefineCustomBoolVariable(), DefineCustomEnumVariable(), DefineCustomIntVariable(), DefineCustomRealVariable(), DefineCustomStringVariable(), delay_execution_planner(), dummy_object_relabel(), EAN13_index, EAN13_range, elog, EnableQueryId(), HASHCTL::entrysize, ereport, errcode(), errdetail(), errmsg(), ERROR, ExecutorCheckPerms_hook, ExecutorEnd_hook, ExecutorFinish_hook, ExecutorRun_hook, ExecutorStart_hook, explain_ExecutorEnd(), explain_ExecutorFinish(), explain_ExecutorRun(), explain_ExecutorStart(), EXPLAIN_FORMAT_TEXT, find_rendezvous_variable(), format_options, gettext_noop, GUC_LIST_INPUT, GUC_NOT_IN_SAMPLE, GUC_UNIT_BYTE, GUC_UNIT_MS, GUC_UNIT_S, HASH_BLOBS, hash_create(), HASH_ELEM, hstoreCheckKeyLen, hstoreCheckKeyLen_p, hstoreCheckValLen, hstoreCheckValLen_p, hstorePairs, hstorePairs_p, hstoreUniquePairs, hstoreUniquePairs_p, hstoreUpgrade, hstoreUpgrade_p, i, INDEX_MAX_KEYS, inj_stats_enabled, injection_shmem_request(), injection_shmem_startup(), Int32GetDatum(), ISBN_index, ISBN_range, ISMN_index, ISMN_range, ISN_DEBUG, ISSN_index, ISSN_range, IsUnderPostmaster, HASHCTL::keysize, ldap_password_hook, load_external_function(), LOG, loglevel_options, MarkGUCPrefixReserved(), MAX_BLOOM_BITS, MAX_BLOOM_LENGTH, MemoryContextStrdup(), min_password_length, next_exec_check_perms_hook, next_object_access_hook, next_object_access_hook_str, next_ProcessUtility_hook, object_access_hook, object_access_hook_str, relopt_parse_elt::offset, openssl_tls_init_hook, relopt_parse_elt::optname, relopt_parse_elt::opttype, original_client_auth_hook, pg_bindtextdomain(), PGC_POSTMASTER, PGC_SIGHUP, PGC_SUSET, PGC_USERSET, pgfdw_application_name, pgss_ExecutorEnd(), pgss_ExecutorFinish(), pgss_ExecutorRun(), pgss_ExecutorStart(), pgss_max, pgss_planner(), pgss_post_parse_analyze(), pgss_ProcessUtility(), pgss_save, pgss_shmem_request(), pgss_shmem_startup(), pgss_track, pgss_track_planning, PGSS_TRACK_TOP, pgss_track_utility, pgstat_register_inj(), pgstat_register_inj_fixed(), planner_hook, plperl_held_interp, plperl_init_interp(), plperl_interp_hash, plperl_on_init, plperl_on_plperl_init, plperl_on_plperlu_init, plperl_opmask, plperl_proc_hash, plperl_use_strict, plpgsql_check_asserts, plpgsql_extra_checks_check_hook(), plpgsql_extra_errors_assign_hook(), plpgsql_extra_errors_string, plpgsql_extra_warnings_assign_hook(), plpgsql_extra_warnings_string, plpgsql_HashTableInit(), plpgsql_plugin_ptr, plpgsql_print_strict_params, PLPGSQL_RESOLVE_ERROR, plpgsql_subxact_cb(), plpgsql_variable_conflict, plpgsql_xact_cb(), plpython_version_bitmask, plpython_version_bitmask_ptr, pltcl_AlertNotifier(), pltcl_CreateFileHandler(), pltcl_DeleteFileHandler(), pltcl_FinalizeNotifier(), pltcl_hold_interp, pltcl_InitNotifier(), pltcl_interp_htab, pltcl_pm_init_done, pltcl_proc_htab, pltcl_ServiceModeHook(), pltcl_SetTimer(), pltcl_start_proc, pltcl_WaitForEvent(), pltclu_start_proc, PLy_elog_impl(), PLy_elog_impl_p, PLyObject_AsString, PLyObject_AsString_p, PLyUnicode_FromStringAndSize, PLyUnicode_FromStringAndSize_p, post_parse_analyze_hook, post_planning_lock_id, PQWalReceiverFunctions, prev_check_password_hook, prev_ExecutorEnd, prev_ExecutorFinish, prev_ExecutorRun, prev_ExecutorStart, prev_planner_hook, prev_post_parse_analyze_hook, prev_ProcessUtility, prev_shmem_request_hook, prev_shmem_startup_hook, process_shared_preload_libraries_in_progress, ProcessUtility_hook, register_label_provider(), RegisterBackgroundWorker(), RegisterCustomRmgr(), RegisterSubXactCallback(), RegisterXactCallback(), REGRESS_audit, REGRESS_deny_alter_system, REGRESS_deny_exec_perms, REGRESS_deny_object_access, REGRESS_deny_set_variable, REGRESS_deny_utility_commands, REGRESS_exec_check_perms(), REGRESS_object_access_hook(), REGRESS_object_access_hook_str(), REGRESS_suset_variable1, REGRESS_suset_variable2, REGRESS_userset_variable1, REGRESS_userset_variable2, REGRESS_utility_command(), RELOPT_TYPE_INT, RM_TESTCUSTOMRMGRS_ID, rot13_passphrase(), row_security_policy_hook_permissive, row_security_policy_hook_restrictive, sepgsql_avc_init(), sepgsql_context_info, sepgsql_debug_audit, sepgsql_exec_check_perms(), sepgsql_init_client_label(), SEPGSQL_LABEL_TAG, SEPGSQL_MODE_DISABLED, sepgsql_object_access(), sepgsql_object_relabel(), sepgsql_permissive, sepgsql_set_mode(), sepgsql_utility_command(), set_rot13(), shell_check_detail(), shell_command, shell_get_sink(), shell_required_role, shmem_request_hook, shmem_startup_hook, similarity_threshold, snprintf, sprintf, ssl_passphrase, strict_word_similarity_threshold, test_rls_hooks_permissive(), test_rls_hooks_restrictive(), test_slru_shmem_request(), test_slru_shmem_startup(), testcustomrmgrs_rmgr, TEXTDOMAIN, TopMemoryContext, track_options, UPC_index, UPC_range, variable_conflict_options, WalReceiverFunctions, word_similarity_threshold, worker_spi_database, worker_spi_naptime, worker_spi_role, and worker_spi_total_workers.

◆ AggCheckCallContext()

int AggCheckCallContext ( FunctionCallInfo  fcinfo,
MemoryContext aggcontext 
)

Definition at line 4546 of file nodeAgg.c.

4547{
4548 if (fcinfo->context && IsA(fcinfo->context, AggState))
4549 {
4550 if (aggcontext)
4551 {
4552 AggState *aggstate = ((AggState *) fcinfo->context);
4553 ExprContext *cxt = aggstate->curaggcontext;
4554
4555 *aggcontext = cxt->ecxt_per_tuple_memory;
4556 }
4557 return AGG_CONTEXT_AGGREGATE;
4558 }
4559 if (fcinfo->context && IsA(fcinfo->context, WindowAggState))
4560 {
4561 if (aggcontext)
4562 *aggcontext = ((WindowAggState *) fcinfo->context)->curaggcontext;
4563 return AGG_CONTEXT_WINDOW;
4564 }
4565
4566 /* this is just to prevent "uninitialized variable" warnings */
4567 if (aggcontext)
4568 *aggcontext = NULL;
4569 return 0;
4570}
#define AGG_CONTEXT_WINDOW
Definition: fmgr.h:761
#define AGG_CONTEXT_AGGREGATE
Definition: fmgr.h:760
#define IsA(nodeptr, _type_)
Definition: nodes.h:158
ExprContext * curaggcontext
Definition: execnodes.h:2539
MemoryContext ecxt_per_tuple_memory
Definition: execnodes.h:275
fmNodePtr context
Definition: fmgr.h:88

References AGG_CONTEXT_AGGREGATE, AGG_CONTEXT_WINDOW, FunctionCallInfoBaseData::context, AggState::curaggcontext, ExprContext::ecxt_per_tuple_memory, and IsA.

Referenced by array_agg_array_combine(), array_agg_array_deserialize(), array_agg_array_finalfn(), array_agg_array_serialize(), array_agg_array_transfn(), array_agg_combine(), array_agg_deserialize(), array_agg_finalfn(), array_agg_serialize(), array_agg_transfn(), bytea_string_agg_finalfn(), fetch_array_arg_replace_nulls(), float4_accum(), float8_accum(), float8_combine(), float8_regr_accum(), float8_regr_combine(), hypothetical_dense_rank_final(), hypothetical_rank_common(), int2_avg_accum(), int2_avg_accum_inv(), int2_sum(), int4_avg_accum(), int4_avg_accum_inv(), int4_avg_combine(), int4_sum(), int8_avg_combine(), int8_avg_deserialize(), int8_avg_serialize(), int8dec(), int8inc(), interval_avg_deserialize(), interval_avg_serialize(), json_agg_finalfn(), json_agg_transfn_worker(), json_object_agg_finalfn(), json_object_agg_transfn_worker(), jsonb_agg_finalfn(), jsonb_agg_transfn_worker(), jsonb_object_agg_finalfn(), jsonb_object_agg_transfn_worker(), makeBoolAggState(), makeIntervalAggState(), makeNumericAggState(), makeStringAggState(), mode_final(), multirange_agg_transfn(), multirange_intersect_agg_transfn(), numeric_avg_combine(), numeric_avg_deserialize(), numeric_avg_serialize(), numeric_combine(), numeric_deserialize(), numeric_poly_combine(), numeric_poly_deserialize(), numeric_poly_serialize(), numeric_serialize(), ordered_set_startup(), percentile_cont_final_common(), percentile_cont_multi_final_common(), percentile_disc_final(), percentile_disc_multi_final(), range_agg_finalfn(), range_agg_transfn(), range_intersect_agg_transfn(), string_agg_combine(), string_agg_deserialize(), string_agg_finalfn(), and string_agg_serialize().

◆ AggGetAggref()

fmAggrefPtr AggGetAggref ( FunctionCallInfo  fcinfo)

Definition at line 4590 of file nodeAgg.c.

4591{
4592 if (fcinfo->context && IsA(fcinfo->context, AggState))
4593 {
4594 AggState *aggstate = (AggState *) fcinfo->context;
4595 AggStatePerAgg curperagg;
4596 AggStatePerTrans curpertrans;
4597
4598 /* check curperagg (valid when in a final function) */
4599 curperagg = aggstate->curperagg;
4600
4601 if (curperagg)
4602 return curperagg->aggref;
4603
4604 /* check curpertrans (valid when in a transition function) */
4605 curpertrans = aggstate->curpertrans;
4606
4607 if (curpertrans)
4608 return curpertrans->aggref;
4609 }
4610 return NULL;
4611}
if(TABLE==NULL||TABLE_index==NULL)
Definition: isn.c:76
Aggref * aggref
Definition: nodeAgg.h:44
AggStatePerTrans curpertrans
Definition: execnodes.h:2542
AggStatePerAgg curperagg
Definition: execnodes.h:2540

References AggStatePerTransData::aggref, FunctionCallInfoBaseData::context, AggState::curperagg, AggState::curpertrans, if(), and IsA.

Referenced by ordered_set_startup().

◆ AggGetTempMemoryContext()

MemoryContext AggGetTempMemoryContext ( FunctionCallInfo  fcinfo)

Definition at line 4624 of file nodeAgg.c.

4625{
4626 if (fcinfo->context && IsA(fcinfo->context, AggState))
4627 {
4628 AggState *aggstate = (AggState *) fcinfo->context;
4629
4630 return aggstate->tmpcontext->ecxt_per_tuple_memory;
4631 }
4632 return NULL;
4633}
ExprContext * tmpcontext
Definition: execnodes.h:2537

References FunctionCallInfoBaseData::context, ExprContext::ecxt_per_tuple_memory, IsA, and AggState::tmpcontext.

◆ AggRegisterCallback()

void AggRegisterCallback ( FunctionCallInfo  fcinfo,
fmExprContextCallbackFunction  func,
Datum  arg 
)

Definition at line 4689 of file nodeAgg.c.

4692{
4693 if (fcinfo->context && IsA(fcinfo->context, AggState))
4694 {
4695 AggState *aggstate = (AggState *) fcinfo->context;
4696 ExprContext *cxt = aggstate->curaggcontext;
4697
4698 RegisterExprContextCallback(cxt, func, arg);
4699
4700 return;
4701 }
4702 elog(ERROR, "aggregate function cannot register a callback in this context");
4703}
#define ERROR
Definition: elog.h:39
#define elog(elevel,...)
Definition: elog.h:225
void RegisterExprContextCallback(ExprContext *econtext, ExprContextCallbackFunction function, Datum arg)
Definition: execUtils.c:953
void * arg

References arg, FunctionCallInfoBaseData::context, AggState::curaggcontext, elog, ERROR, IsA, and RegisterExprContextCallback().

Referenced by ordered_set_startup().

◆ AggStateIsShared()

bool AggStateIsShared ( FunctionCallInfo  fcinfo)

Definition at line 4650 of file nodeAgg.c.

4651{
4652 if (fcinfo->context && IsA(fcinfo->context, AggState))
4653 {
4654 AggState *aggstate = (AggState *) fcinfo->context;
4655 AggStatePerAgg curperagg;
4656 AggStatePerTrans curpertrans;
4657
4658 /* check curperagg (valid when in a final function) */
4659 curperagg = aggstate->curperagg;
4660
4661 if (curperagg)
4662 return aggstate->pertrans[curperagg->transno].aggshared;
4663
4664 /* check curpertrans (valid when in a transition function) */
4665 curpertrans = aggstate->curpertrans;
4666
4667 if (curpertrans)
4668 return curpertrans->aggshared;
4669 }
4670 return true;
4671}
AggStatePerTrans pertrans
Definition: execnodes.h:2534

References AggStatePerTransData::aggshared, FunctionCallInfoBaseData::context, AggState::curperagg, AggState::curpertrans, if(), IsA, and AggState::pertrans.

Referenced by ordered_set_startup().

◆ CallerFInfoFunctionCall1()

Datum CallerFInfoFunctionCall1 ( PGFunction  func,
FmgrInfo flinfo,
Oid  collation,
Datum  arg1 
)

Definition at line 1065 of file fmgr.c.

1066{
1067 LOCAL_FCINFO(fcinfo, 1);
1068 Datum result;
1069
1070 InitFunctionCallInfoData(*fcinfo, flinfo, 1, collation, NULL, NULL);
1071
1072 fcinfo->args[0].value = arg1;
1073 fcinfo->args[0].isnull = false;
1074
1075 result = (*func) (fcinfo);
1076
1077 /* Check for null result, since caller is clearly not expecting one */
1078 if (fcinfo->isnull)
1079 elog(ERROR, "function %p returned NULL", (void *) func);
1080
1081 return result;
1082}
#define InitFunctionCallInfoData(Fcinfo, Flinfo, Nargs, Collation, Context, Resultinfo)
Definition: fmgr.h:150
#define LOCAL_FCINFO(name, nargs)
Definition: fmgr.h:110

References elog, ERROR, fmgr_security_definer_cache::flinfo, InitFunctionCallInfoData, and LOCAL_FCINFO.

◆ CallerFInfoFunctionCall2()

Datum CallerFInfoFunctionCall2 ( PGFunction  func,
FmgrInfo flinfo,
Oid  collation,
Datum  arg1,
Datum  arg2 
)

Definition at line 1085 of file fmgr.c.

1086{
1087 LOCAL_FCINFO(fcinfo, 2);
1088 Datum result;
1089
1090 InitFunctionCallInfoData(*fcinfo, flinfo, 2, collation, NULL, NULL);
1091
1092 fcinfo->args[0].value = arg1;
1093 fcinfo->args[0].isnull = false;
1094 fcinfo->args[1].value = arg2;
1095 fcinfo->args[1].isnull = false;
1096
1097 result = (*func) (fcinfo);
1098
1099 /* Check for null result, since caller is clearly not expecting one */
1100 if (fcinfo->isnull)
1101 elog(ERROR, "function %p returned NULL", (void *) func);
1102
1103 return result;
1104}

References elog, ERROR, fmgr_security_definer_cache::flinfo, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by gbt_enumge(), gbt_enumgt(), gbt_enumkey_cmp(), gbt_enumle(), gbt_enumlt(), gin_btree_compare_prefix(), and gin_enum_cmp().

◆ CheckFunctionValidatorAccess()

bool CheckFunctionValidatorAccess ( Oid  validatorOid,
Oid  functionOid 
)

Definition at line 2145 of file fmgr.c.

2146{
2147 HeapTuple procTup;
2148 HeapTuple langTup;
2149 Form_pg_proc procStruct;
2150 Form_pg_language langStruct;
2151 AclResult aclresult;
2152
2153 /*
2154 * Get the function's pg_proc entry. Throw a user-facing error for bad
2155 * OID, because validators can be called with user-specified OIDs.
2156 */
2157 procTup = SearchSysCache1(PROCOID, ObjectIdGetDatum(functionOid));
2158 if (!HeapTupleIsValid(procTup))
2159 ereport(ERROR,
2160 (errcode(ERRCODE_UNDEFINED_FUNCTION),
2161 errmsg("function with OID %u does not exist", functionOid)));
2162 procStruct = (Form_pg_proc) GETSTRUCT(procTup);
2163
2164 /*
2165 * Fetch pg_language entry to know if this is the correct validation
2166 * function for that pg_proc entry.
2167 */
2168 langTup = SearchSysCache1(LANGOID, ObjectIdGetDatum(procStruct->prolang));
2169 if (!HeapTupleIsValid(langTup))
2170 elog(ERROR, "cache lookup failed for language %u", procStruct->prolang);
2171 langStruct = (Form_pg_language) GETSTRUCT(langTup);
2172
2173 if (langStruct->lanvalidator != validatorOid)
2174 ereport(ERROR,
2175 (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
2176 errmsg("language validation function %u called for language %u instead of %u",
2177 validatorOid, procStruct->prolang,
2178 langStruct->lanvalidator)));
2179
2180 /* first validate that we have permissions to use the language */
2181 aclresult = object_aclcheck(LanguageRelationId, procStruct->prolang, GetUserId(),
2182 ACL_USAGE);
2183 if (aclresult != ACLCHECK_OK)
2185 NameStr(langStruct->lanname));
2186
2187 /*
2188 * Check whether we are allowed to execute the function itself. If we can
2189 * execute it, there should be no possible side-effect of
2190 * compiling/validation that execution can't have.
2191 */
2192 aclresult = object_aclcheck(ProcedureRelationId, functionOid, GetUserId(), ACL_EXECUTE);
2193 if (aclresult != ACLCHECK_OK)
2194 aclcheck_error(aclresult, OBJECT_FUNCTION, NameStr(procStruct->proname));
2195
2196 ReleaseSysCache(procTup);
2197 ReleaseSysCache(langTup);
2198
2199 return true;
2200}
AclResult
Definition: acl.h:182
@ ACLCHECK_OK
Definition: acl.h:183
void aclcheck_error(AclResult aclerr, ObjectType objtype, const char *objectname)
Definition: aclchk.c:2622
AclResult object_aclcheck(Oid classid, Oid objectid, Oid roleid, AclMode mode)
Definition: aclchk.c:3804
#define NameStr(name)
Definition: c.h:703
int errcode(int sqlerrcode)
Definition: elog.c:853
int errmsg(const char *fmt,...)
Definition: elog.c:1070
#define ereport(elevel,...)
Definition: elog.h:149
#define HeapTupleIsValid(tuple)
Definition: htup.h:78
static void * GETSTRUCT(const HeapTupleData *tuple)
Definition: htup_details.h:728
Oid GetUserId(void)
Definition: miscinit.c:517
#define ACL_USAGE
Definition: parsenodes.h:84
@ OBJECT_LANGUAGE
Definition: parsenodes.h:2333
@ OBJECT_FUNCTION
Definition: parsenodes.h:2331
#define ACL_EXECUTE
Definition: parsenodes.h:83
FormData_pg_language * Form_pg_language
Definition: pg_language.h:65
FormData_pg_proc * Form_pg_proc
Definition: pg_proc.h:136
static Datum ObjectIdGetDatum(Oid X)
Definition: postgres.h:257
void ReleaseSysCache(HeapTuple tuple)
Definition: syscache.c:269
HeapTuple SearchSysCache1(int cacheId, Datum key1)
Definition: syscache.c:221

References ACL_EXECUTE, ACL_USAGE, aclcheck_error(), ACLCHECK_OK, elog, ereport, errcode(), errmsg(), ERROR, GETSTRUCT(), GetUserId(), HeapTupleIsValid, NameStr, object_aclcheck(), OBJECT_FUNCTION, OBJECT_LANGUAGE, ObjectIdGetDatum(), ReleaseSysCache(), and SearchSysCache1().

Referenced by fmgr_c_validator(), fmgr_internal_validator(), fmgr_sql_validator(), plperl_validator(), plpgsql_validator(), and plpython3_validator().

◆ DirectFunctionCall1Coll()

Datum DirectFunctionCall1Coll ( PGFunction  func,
Oid  collation,
Datum  arg1 
)

Definition at line 792 of file fmgr.c.

793{
794 LOCAL_FCINFO(fcinfo, 1);
795 Datum result;
796
797 InitFunctionCallInfoData(*fcinfo, NULL, 1, collation, NULL, NULL);
798
799 fcinfo->args[0].value = arg1;
800 fcinfo->args[0].isnull = false;
801
802 result = (*func) (fcinfo);
803
804 /* Check for null result, since caller is clearly not expecting one */
805 if (fcinfo->isnull)
806 elog(ERROR, "function %p returned NULL", (void *) func);
807
808 return result;
809}

References elog, ERROR, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by Generic_Text_IC_like(), libpqrcv_create_slot(), and texthashfast().

◆ DirectFunctionCall2Coll()

Datum DirectFunctionCall2Coll ( PGFunction  func,
Oid  collation,
Datum  arg1,
Datum  arg2 
)

Definition at line 812 of file fmgr.c.

813{
814 LOCAL_FCINFO(fcinfo, 2);
815 Datum result;
816
817 InitFunctionCallInfoData(*fcinfo, NULL, 2, collation, NULL, NULL);
818
819 fcinfo->args[0].value = arg1;
820 fcinfo->args[0].isnull = false;
821 fcinfo->args[1].value = arg2;
822 fcinfo->args[1].isnull = false;
823
824 result = (*func) (fcinfo);
825
826 /* Check for null result, since caller is clearly not expecting one */
827 if (fcinfo->isnull)
828 elog(ERROR, "function %p returned NULL", (void *) func);
829
830 return result;
831}

References elog, ERROR, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by gbt_bpcharcmp(), gbt_bpchareq(), gbt_bpcharge(), gbt_bpchargt(), gbt_bpcharle(), gbt_bpcharlt(), gbt_textcmp(), gbt_texteq(), gbt_textge(), gbt_textgt(), gbt_textle(), gbt_textlt(), spg_text_leaf_consistent(), t_starts_with(), text_isequal(), and texteqfast().

◆ DirectFunctionCall3Coll()

Datum DirectFunctionCall3Coll ( PGFunction  func,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3 
)

Definition at line 834 of file fmgr.c.

836{
837 LOCAL_FCINFO(fcinfo, 3);
838 Datum result;
839
840 InitFunctionCallInfoData(*fcinfo, NULL, 3, collation, NULL, NULL);
841
842 fcinfo->args[0].value = arg1;
843 fcinfo->args[0].isnull = false;
844 fcinfo->args[1].value = arg2;
845 fcinfo->args[1].isnull = false;
846 fcinfo->args[2].value = arg3;
847 fcinfo->args[2].isnull = false;
848
849 result = (*func) (fcinfo);
850
851 /* Check for null result, since caller is clearly not expecting one */
852 if (fcinfo->isnull)
853 elog(ERROR, "function %p returned NULL", (void *) func);
854
855 return result;
856}

References elog, ERROR, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by execute_extension_script().

◆ DirectFunctionCall4Coll()

Datum DirectFunctionCall4Coll ( PGFunction  func,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4 
)

Definition at line 859 of file fmgr.c.

861{
862 LOCAL_FCINFO(fcinfo, 4);
863 Datum result;
864
865 InitFunctionCallInfoData(*fcinfo, NULL, 4, collation, NULL, NULL);
866
867 fcinfo->args[0].value = arg1;
868 fcinfo->args[0].isnull = false;
869 fcinfo->args[1].value = arg2;
870 fcinfo->args[1].isnull = false;
871 fcinfo->args[2].value = arg3;
872 fcinfo->args[2].isnull = false;
873 fcinfo->args[3].value = arg4;
874 fcinfo->args[3].isnull = false;
875
876 result = (*func) (fcinfo);
877
878 /* Check for null result, since caller is clearly not expecting one */
879 if (fcinfo->isnull)
880 elog(ERROR, "function %p returned NULL", (void *) func);
881
882 return result;
883}

References elog, ERROR, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by execute_extension_script().

◆ DirectFunctionCall5Coll()

Datum DirectFunctionCall5Coll ( PGFunction  func,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5 
)

Definition at line 886 of file fmgr.c.

888{
889 LOCAL_FCINFO(fcinfo, 5);
890 Datum result;
891
892 InitFunctionCallInfoData(*fcinfo, NULL, 5, collation, NULL, NULL);
893
894 fcinfo->args[0].value = arg1;
895 fcinfo->args[0].isnull = false;
896 fcinfo->args[1].value = arg2;
897 fcinfo->args[1].isnull = false;
898 fcinfo->args[2].value = arg3;
899 fcinfo->args[2].isnull = false;
900 fcinfo->args[3].value = arg4;
901 fcinfo->args[3].isnull = false;
902 fcinfo->args[4].value = arg5;
903 fcinfo->args[4].isnull = false;
904
905 result = (*func) (fcinfo);
906
907 /* Check for null result, since caller is clearly not expecting one */
908 if (fcinfo->isnull)
909 elog(ERROR, "function %p returned NULL", (void *) func);
910
911 return result;
912}

References elog, ERROR, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by neqjoinsel().

◆ DirectFunctionCall6Coll()

Datum DirectFunctionCall6Coll ( PGFunction  func,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6 
)

Definition at line 915 of file fmgr.c.

918{
919 LOCAL_FCINFO(fcinfo, 6);
920 Datum result;
921
922 InitFunctionCallInfoData(*fcinfo, NULL, 6, collation, NULL, NULL);
923
924 fcinfo->args[0].value = arg1;
925 fcinfo->args[0].isnull = false;
926 fcinfo->args[1].value = arg2;
927 fcinfo->args[1].isnull = false;
928 fcinfo->args[2].value = arg3;
929 fcinfo->args[2].isnull = false;
930 fcinfo->args[3].value = arg4;
931 fcinfo->args[3].isnull = false;
932 fcinfo->args[4].value = arg5;
933 fcinfo->args[4].isnull = false;
934 fcinfo->args[5].value = arg6;
935 fcinfo->args[5].isnull = false;
936
937 result = (*func) (fcinfo);
938
939 /* Check for null result, since caller is clearly not expecting one */
940 if (fcinfo->isnull)
941 elog(ERROR, "function %p returned NULL", (void *) func);
942
943 return result;
944}

References elog, ERROR, InitFunctionCallInfoData, and LOCAL_FCINFO.

◆ DirectFunctionCall7Coll()

Datum DirectFunctionCall7Coll ( PGFunction  func,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6,
Datum  arg7 
)

Definition at line 947 of file fmgr.c.

950{
951 LOCAL_FCINFO(fcinfo, 7);
952 Datum result;
953
954 InitFunctionCallInfoData(*fcinfo, NULL, 7, collation, NULL, NULL);
955
956 fcinfo->args[0].value = arg1;
957 fcinfo->args[0].isnull = false;
958 fcinfo->args[1].value = arg2;
959 fcinfo->args[1].isnull = false;
960 fcinfo->args[2].value = arg3;
961 fcinfo->args[2].isnull = false;
962 fcinfo->args[3].value = arg4;
963 fcinfo->args[3].isnull = false;
964 fcinfo->args[4].value = arg5;
965 fcinfo->args[4].isnull = false;
966 fcinfo->args[5].value = arg6;
967 fcinfo->args[5].isnull = false;
968 fcinfo->args[6].value = arg7;
969 fcinfo->args[6].isnull = false;
970
971 result = (*func) (fcinfo);
972
973 /* Check for null result, since caller is clearly not expecting one */
974 if (fcinfo->isnull)
975 elog(ERROR, "function %p returned NULL", (void *) func);
976
977 return result;
978}

References elog, ERROR, InitFunctionCallInfoData, and LOCAL_FCINFO.

◆ DirectFunctionCall8Coll()

Datum DirectFunctionCall8Coll ( PGFunction  func,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6,
Datum  arg7,
Datum  arg8 
)

Definition at line 981 of file fmgr.c.

984{
985 LOCAL_FCINFO(fcinfo, 8);
986 Datum result;
987
988 InitFunctionCallInfoData(*fcinfo, NULL, 8, collation, NULL, NULL);
989
990 fcinfo->args[0].value = arg1;
991 fcinfo->args[0].isnull = false;
992 fcinfo->args[1].value = arg2;
993 fcinfo->args[1].isnull = false;
994 fcinfo->args[2].value = arg3;
995 fcinfo->args[2].isnull = false;
996 fcinfo->args[3].value = arg4;
997 fcinfo->args[3].isnull = false;
998 fcinfo->args[4].value = arg5;
999 fcinfo->args[4].isnull = false;
1000 fcinfo->args[5].value = arg6;
1001 fcinfo->args[5].isnull = false;
1002 fcinfo->args[6].value = arg7;
1003 fcinfo->args[6].isnull = false;
1004 fcinfo->args[7].value = arg8;
1005 fcinfo->args[7].isnull = false;
1006
1007 result = (*func) (fcinfo);
1008
1009 /* Check for null result, since caller is clearly not expecting one */
1010 if (fcinfo->isnull)
1011 elog(ERROR, "function %p returned NULL", (void *) func);
1012
1013 return result;
1014}

References elog, ERROR, InitFunctionCallInfoData, and LOCAL_FCINFO.

◆ DirectFunctionCall9Coll()

Datum DirectFunctionCall9Coll ( PGFunction  func,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6,
Datum  arg7,
Datum  arg8,
Datum  arg9 
)

Definition at line 1017 of file fmgr.c.

1021{
1022 LOCAL_FCINFO(fcinfo, 9);
1023 Datum result;
1024
1025 InitFunctionCallInfoData(*fcinfo, NULL, 9, collation, NULL, NULL);
1026
1027 fcinfo->args[0].value = arg1;
1028 fcinfo->args[0].isnull = false;
1029 fcinfo->args[1].value = arg2;
1030 fcinfo->args[1].isnull = false;
1031 fcinfo->args[2].value = arg3;
1032 fcinfo->args[2].isnull = false;
1033 fcinfo->args[3].value = arg4;
1034 fcinfo->args[3].isnull = false;
1035 fcinfo->args[4].value = arg5;
1036 fcinfo->args[4].isnull = false;
1037 fcinfo->args[5].value = arg6;
1038 fcinfo->args[5].isnull = false;
1039 fcinfo->args[6].value = arg7;
1040 fcinfo->args[6].isnull = false;
1041 fcinfo->args[7].value = arg8;
1042 fcinfo->args[7].isnull = false;
1043 fcinfo->args[8].value = arg9;
1044 fcinfo->args[8].isnull = false;
1045
1046 result = (*func) (fcinfo);
1047
1048 /* Check for null result, since caller is clearly not expecting one */
1049 if (fcinfo->isnull)
1050 elog(ERROR, "function %p returned NULL", (void *) func);
1051
1052 return result;
1053}

References elog, ERROR, InitFunctionCallInfoData, and LOCAL_FCINFO.

◆ DirectInputFunctionCallSafe()

bool DirectInputFunctionCallSafe ( PGFunction  func,
char *  str,
Oid  typioparam,
int32  typmod,
fmNodePtr  escontext,
Datum result 
)

Definition at line 1640 of file fmgr.c.

1644{
1645 LOCAL_FCINFO(fcinfo, 3);
1646
1647 if (str == NULL)
1648 {
1649 *result = (Datum) 0; /* just return null result */
1650 return true;
1651 }
1652
1653 InitFunctionCallInfoData(*fcinfo, NULL, 3, InvalidOid, escontext, NULL);
1654
1655 fcinfo->args[0].value = CStringGetDatum(str);
1656 fcinfo->args[0].isnull = false;
1657 fcinfo->args[1].value = ObjectIdGetDatum(typioparam);
1658 fcinfo->args[1].isnull = false;
1659 fcinfo->args[2].value = Int32GetDatum(typmod);
1660 fcinfo->args[2].isnull = false;
1661
1662 *result = (*func) (fcinfo);
1663
1664 /* Result value is garbage, and could be null, if an error was reported */
1665 if (SOFT_ERROR_OCCURRED(escontext))
1666 return false;
1667
1668 /* Otherwise, shouldn't get null result */
1669 if (fcinfo->isnull)
1670 elog(ERROR, "input function %p returned NULL", (void *) func);
1671
1672 return true;
1673}
const char * str
#define SOFT_ERROR_OCCURRED(escontext)
Definition: miscnodes.h:53
static Datum CStringGetDatum(const char *X)
Definition: postgres.h:355
static Datum Int32GetDatum(int32 X)
Definition: postgres.h:217
#define InvalidOid
Definition: postgres_ext.h:37

References CStringGetDatum(), elog, ERROR, InitFunctionCallInfoData, Int32GetDatum(), InvalidOid, LOCAL_FCINFO, ObjectIdGetDatum(), SOFT_ERROR_OCCURRED, and str.

Referenced by executeItemOptUnwrapTarget(), jsonb_in_scalar(), parseNumericOid(), to_regclass(), to_regcollation(), to_regnamespace(), to_regoper(), to_regoperator(), to_regproc(), to_regprocedure(), to_regrole(), and to_regtype().

◆ EstimateLibraryStateSpace()

Size EstimateLibraryStateSpace ( void  )

Definition at line 631 of file dfmgr.c.

632{
633 DynamicFileList *file_scanner;
634 Size size = 1;
635
636 for (file_scanner = file_list;
637 file_scanner != NULL;
638 file_scanner = file_scanner->next)
639 size = add_size(size, strlen(file_scanner->filename) + 1);
640
641 return size;
642}
size_t Size
Definition: c.h:562
static DynamicFileList * file_list
Definition: dfmgr.c:57
Size add_size(Size s1, Size s2)
Definition: shmem.c:488
static pg_noinline void Size size
Definition: slab.c:607
Definition: dfmgr.c:46
struct df_files * next
Definition: dfmgr.c:47
char filename[FLEXIBLE_ARRAY_MEMBER]
Definition: dfmgr.c:54

References add_size(), file_list, df_files::filename, df_files::next, and size.

Referenced by InitializeParallelDSM().

◆ fetch_finfo_record()

const Pg_finfo_record * fetch_finfo_record ( void *  filehandle,
const char *  funcname 
)

Definition at line 455 of file fmgr.c.

456{
457 char *infofuncname;
458 PGFInfoFunction infofunc;
459 const Pg_finfo_record *inforec;
460
461 infofuncname = psprintf("pg_finfo_%s", funcname);
462
463 /* Try to look up the info function */
464 infofunc = (PGFInfoFunction) lookup_external_function(filehandle,
465 infofuncname);
466 if (infofunc == NULL)
467 {
469 (errcode(ERRCODE_UNDEFINED_FUNCTION),
470 errmsg("could not find function information for function \"%s\"",
471 funcname),
472 errhint("SQL-callable functions need an accompanying PG_FUNCTION_INFO_V1(funcname).")));
473 return NULL; /* silence compiler */
474 }
475
476 /* Found, so call it */
477 inforec = (*infofunc) ();
478
479 /* Validate result as best we can */
480 if (inforec == NULL)
481 elog(ERROR, "null result from info function \"%s\"", infofuncname);
482 switch (inforec->api_version)
483 {
484 case 1:
485 /* OK, no additional fields to validate */
486 break;
487 default:
489 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
490 errmsg("unrecognized API version %d reported by info function \"%s\"",
491 inforec->api_version, infofuncname)));
492 break;
493 }
494
495 pfree(infofuncname);
496 return inforec;
497}
void * lookup_external_function(void *filehandle, const char *funcname)
Definition: dfmgr.c:156
int errhint(const char *fmt,...)
Definition: elog.c:1317
const Pg_finfo_record *(* PGFInfoFunction)(void)
Definition: fmgr.h:401
void pfree(void *pointer)
Definition: mcxt.c:1521
char * psprintf(const char *fmt,...)
Definition: psprintf.c:43
int api_version
Definition: fmgr.h:396

References Pg_finfo_record::api_version, elog, ereport, errcode(), errhint(), errmsg(), ERROR, funcname, lookup_external_function(), pfree(), and psprintf().

Referenced by fmgr_c_validator(), and fmgr_info_C_lang().

◆ find_rendezvous_variable()

void ** find_rendezvous_variable ( const char *  varName)

Definition at line 593 of file dfmgr.c.

594{
595 static HTAB *rendezvousHash = NULL;
596
597 rendezvousHashEntry *hentry;
598 bool found;
599
600 /* Create a hashtable if we haven't already done so in this process */
601 if (rendezvousHash == NULL)
602 {
603 HASHCTL ctl;
604
605 ctl.keysize = NAMEDATALEN;
606 ctl.entrysize = sizeof(rendezvousHashEntry);
607 rendezvousHash = hash_create("Rendezvous variable hash",
608 16,
609 &ctl,
611 }
612
613 /* Find or create the hashtable entry for this varName */
614 hentry = (rendezvousHashEntry *) hash_search(rendezvousHash,
615 varName,
617 &found);
618
619 /* Initialize to NULL if first time */
620 if (!found)
621 hentry->varValue = NULL;
622
623 return &hentry->varValue;
624}
void * hash_search(HTAB *hashp, const void *keyPtr, HASHACTION action, bool *foundPtr)
Definition: dynahash.c:955
HTAB * hash_create(const char *tabname, long nelem, const HASHCTL *info, int flags)
Definition: dynahash.c:352
#define HASH_STRINGS
Definition: hsearch.h:96
@ HASH_ENTER
Definition: hsearch.h:114
#define HASH_ELEM
Definition: hsearch.h:95
#define NAMEDATALEN
tree ctl
Definition: radixtree.h:1838
Definition: dynahash.c:220
void * varValue
Definition: dfmgr.c:38

References ctl, hash_create(), HASH_ELEM, HASH_ENTER, hash_search(), HASH_STRINGS, NAMEDATALEN, and rendezvousHashEntry::varValue.

Referenced by _PG_init().

◆ fmgr_info()

void fmgr_info ( Oid  functionId,
FmgrInfo finfo 
)

Definition at line 127 of file fmgr.c.

128{
129 fmgr_info_cxt_security(functionId, finfo, CurrentMemoryContext, false);
130}
static void fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt, bool ignore_security)
Definition: fmgr.c:147
MemoryContext CurrentMemoryContext
Definition: mcxt.c:143

References CurrentMemoryContext, and fmgr_info_cxt_security().

Referenced by _bt_compare_array_scankey_args(), _bt_find_extreme_element(), _sv_to_datum_finfo(), attribute_statistics_update(), BeginCopyFrom(), brin_minmax_multi_summary_out(), brin_page_items(), build_pertrans_for_aggref(), call_pltcl_start_proc(), CompareOpclassOptions(), compute_distinct_stats(), create_foreign_modify(), DoCopyTo(), eqjoinsel_inner(), eqjoinsel_semi(), EventTriggerInvoke(), ExecBuildGroupingEqual(), ExecBuildHash32Expr(), ExecBuildParamSetEqual(), ExecCallTriggerFunc(), ExecEvalHashedScalarArrayOp(), ExecInitAgg(), ExecInitExprRec(), ExecInitFunc(), ExecInitHashJoin(), ExecInitJsonExpr(), ExecInitMemoize(), ExecInitSubPlan(), ExecInitTableFuncScan(), ExecInitWindowAgg(), execTuplesHashPrepare(), ExecuteCallStmt(), fetch_fp_info(), generic_restriction_selectivity(), get_stats_slot_range(), gincost_pattern(), hash_array(), inet_mcv_join_sel(), initialize_peragg(), match_pattern_prefix(), mcv_get_match_bitmap(), networkjoinsel_semi(), networksel(), OidFunctionCall0Coll(), OidFunctionCall1Coll(), OidFunctionCall2Coll(), OidFunctionCall3Coll(), OidFunctionCall4Coll(), OidFunctionCall5Coll(), OidFunctionCall6Coll(), OidFunctionCall7Coll(), OidFunctionCall8Coll(), OidFunctionCall9Coll(), OidInputFunctionCall(), OidOutputFunctionCall(), OidReceiveFunctionCall(), OidSendFunctionCall(), patternsel_common(), pg_get_catalog_foreign_keys(), pg_stats_ext_mcvlist_items(), plperl_ref_from_pg_array(), prefix_selectivity(), prepare_query_params(), printtup_prepare_info(), scalararraysel(), scalarineqsel(), ScanKeyEntryInitialize(), ScanKeyInit(), serialize_prepare_info(), text_format(), TupleDescGetAttInMetadata(), and var_eq_const().

◆ fmgr_info_copy()

void fmgr_info_copy ( FmgrInfo dstinfo,
FmgrInfo srcinfo,
MemoryContext  destcxt 
)

◆ fmgr_info_cxt()

◆ fmgr_internal_function()

Oid fmgr_internal_function ( const char *  proname)

Definition at line 595 of file fmgr.c.

596{
598
599 if (fbp == NULL)
600 return InvalidOid;
601 return fbp->foid;
602}
static const FmgrBuiltin * fmgr_lookupByName(const char *name)
Definition: fmgr.c:101
NameData proname
Definition: pg_proc.h:35
Oid foid
Definition: fmgrtab.h:27

References fmgr_lookupByName(), FmgrBuiltin::foid, InvalidOid, and proname.

Referenced by fmgr_internal_validator().

◆ fmgr_symbol()

void fmgr_symbol ( Oid  functionId,
char **  mod,
char **  fn 
)

Definition at line 281 of file fmgr.c.

282{
283 HeapTuple procedureTuple;
284 Form_pg_proc procedureStruct;
285 Datum prosrcattr;
286 Datum probinattr;
287
288 procedureTuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(functionId));
289 if (!HeapTupleIsValid(procedureTuple))
290 elog(ERROR, "cache lookup failed for function %u", functionId);
291 procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple);
292
293 if (procedureStruct->prosecdef ||
294 !heap_attisnull(procedureTuple, Anum_pg_proc_proconfig, NULL) ||
295 FmgrHookIsNeeded(functionId))
296 {
297 *mod = NULL; /* core binary */
298 *fn = pstrdup("fmgr_security_definer");
299 ReleaseSysCache(procedureTuple);
300 return;
301 }
302
303 /* see fmgr_info_cxt_security for the individual cases */
304 switch (procedureStruct->prolang)
305 {
306 case INTERNALlanguageId:
307 prosrcattr = SysCacheGetAttrNotNull(PROCOID, procedureTuple,
308 Anum_pg_proc_prosrc);
309
310 *mod = NULL; /* core binary */
311 *fn = TextDatumGetCString(prosrcattr);
312 break;
313
314 case ClanguageId:
315 prosrcattr = SysCacheGetAttrNotNull(PROCOID, procedureTuple,
316 Anum_pg_proc_prosrc);
317
318 probinattr = SysCacheGetAttrNotNull(PROCOID, procedureTuple,
319 Anum_pg_proc_probin);
320
321 /*
322 * No need to check symbol presence / API version here, already
323 * checked in fmgr_info_cxt_security.
324 */
325 *mod = TextDatumGetCString(probinattr);
326 *fn = TextDatumGetCString(prosrcattr);
327 break;
328
329 case SQLlanguageId:
330 *mod = NULL; /* core binary */
331 *fn = pstrdup("fmgr_sql");
332 break;
333
334 default:
335 *mod = NULL;
336 *fn = NULL; /* unknown, pass pointer */
337 break;
338 }
339
340 ReleaseSysCache(procedureTuple);
341}
#define TextDatumGetCString(d)
Definition: builtins.h:98
#define FmgrHookIsNeeded(fn_oid)
Definition: fmgr.h:796
bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc)
Definition: heaptuple.c:456
char * pstrdup(const char *in)
Definition: mcxt.c:1696
Datum SysCacheGetAttrNotNull(int cacheId, HeapTuple tup, AttrNumber attributeNumber)
Definition: syscache.c:631
static void * fn(void *arg)
Definition: thread-alloc.c:119

References elog, ERROR, FmgrHookIsNeeded, fn(), GETSTRUCT(), heap_attisnull(), HeapTupleIsValid, ObjectIdGetDatum(), pstrdup(), ReleaseSysCache(), SearchSysCache1(), SysCacheGetAttrNotNull(), and TextDatumGetCString.

Referenced by llvm_function_reference().

◆ FunctionCall0Coll()

Datum FunctionCall0Coll ( FmgrInfo flinfo,
Oid  collation 
)

Definition at line 1112 of file fmgr.c.

1113{
1114 LOCAL_FCINFO(fcinfo, 0);
1115 Datum result;
1116
1117 InitFunctionCallInfoData(*fcinfo, flinfo, 0, collation, NULL, NULL);
1118
1119 result = FunctionCallInvoke(fcinfo);
1120
1121 /* Check for null result, since caller is clearly not expecting one */
1122 if (fcinfo->isnull)
1123 elog(ERROR, "function %u returned NULL", flinfo->fn_oid);
1124
1125 return result;
1126}
#define FunctionCallInvoke(fcinfo)
Definition: fmgr.h:172
Oid fn_oid
Definition: fmgr.h:59

References elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FunctionCallInvoke, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by OidFunctionCall0Coll().

◆ FunctionCall1Coll()

Datum FunctionCall1Coll ( FmgrInfo flinfo,
Oid  collation,
Datum  arg1 
)

Definition at line 1129 of file fmgr.c.

1130{
1131 LOCAL_FCINFO(fcinfo, 1);
1132 Datum result;
1133
1134 InitFunctionCallInfoData(*fcinfo, flinfo, 1, collation, NULL, NULL);
1135
1136 fcinfo->args[0].value = arg1;
1137 fcinfo->args[0].isnull = false;
1138
1139 result = FunctionCallInvoke(fcinfo);
1140
1141 /* Check for null result, since caller is clearly not expecting one */
1142 if (fcinfo->isnull)
1143 elog(ERROR, "function %u returned NULL", flinfo->fn_oid);
1144
1145 return result;
1146}

References elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FunctionCallInvoke, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by _hash_datum2hashkey(), brin_bloom_add_value(), brin_bloom_consistent(), brin_inclusion_add_value(), element_hash(), ExecHashBuildSkewHash(), gistCompressValues(), gistdentryinit(), gistFetchAtt(), hash_multirange(), hash_range(), MemoizeHash_hash(), OidFunctionCall1Coll(), signValue(), and spgdoinsert().

◆ FunctionCall2Coll()

Datum FunctionCall2Coll ( FmgrInfo flinfo,
Oid  collation,
Datum  arg1,
Datum  arg2 
)

Definition at line 1149 of file fmgr.c.

1150{
1151 LOCAL_FCINFO(fcinfo, 2);
1152 Datum result;
1153
1154 InitFunctionCallInfoData(*fcinfo, flinfo, 2, collation, NULL, NULL);
1155
1156 fcinfo->args[0].value = arg1;
1157 fcinfo->args[0].isnull = false;
1158 fcinfo->args[1].value = arg2;
1159 fcinfo->args[1].isnull = false;
1160
1161 result = FunctionCallInvoke(fcinfo);
1162
1163 /* Check for null result, since caller is clearly not expecting one */
1164 if (fcinfo->isnull)
1165 elog(ERROR, "function %u returned NULL", flinfo->fn_oid);
1166
1167 return result;
1168}

References elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FunctionCallInvoke, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by _bt_check_compare(), _bt_check_rowcompare(), _bt_compare(), _bt_compare_array_elements(), _bt_compare_array_skey(), _bt_compare_scankey_args(), _bt_find_extreme_element(), _bt_keep_natts(), _hash_checkqual(), array_position_common(), array_positions(), AssertCheckExpandedRanges(), AssertCheckRanges(), brin_inclusion_add_value(), brin_inclusion_consistent(), brin_inclusion_union(), brin_minmax_add_value(), brin_minmax_consistent(), brin_minmax_multi_consistent(), brin_minmax_union(), build_distances(), call_subtype_diff(), cmpEntries(), compare_expanded_ranges(), compare_values(), CompareOpclassOptions(), compute_distinct_stats(), compute_partition_hash_value(), compute_range_stats(), create_range_bounds(), doPickSplit(), element_compare(), ExecEvalPreOrderedDistinctSingle(), execTuplesUnequal(), genericPickSplit(), get_distance(), get_partition_for_tuple(), get_position(), get_stats_slot_range(), ginCompareEntries(), gistMakeUnionItVec(), gistMakeUnionKey(), gistUserPicksplit(), has_matching_range(), hash_multirange_extended(), hash_range_extended(), HeapKeyTest(), ineq_histogram_selectivity(), make_greater_string(), mcv_get_match_bitmap(), merge_list_bounds(), merge_overlapping_ranges(), mode_final(), multirange_elem_bsearch_comparison(), OidFunctionCall2Coll(), partition_list_bsearch(), partition_rbound_cmp(), partition_rbound_datum_cmp(), process_ordered_aggregate_single(), qsort_partition_list_value_cmp(), range_cmp_bound_values(), range_cmp_bounds(), range_contains_elem_internal(), range_contains_value(), ri_CompareWithCast(), satisfies_hash_partition(), spgdoinsert(), spgGetCache(), spgInnerTest(), spgLeafTest(), and tuples_equal().

◆ FunctionCall3Coll()

Datum FunctionCall3Coll ( FmgrInfo flinfo,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3 
)

Definition at line 1171 of file fmgr.c.

1173{
1174 LOCAL_FCINFO(fcinfo, 3);
1175 Datum result;
1176
1177 InitFunctionCallInfoData(*fcinfo, flinfo, 3, collation, NULL, NULL);
1178
1179 fcinfo->args[0].value = arg1;
1180 fcinfo->args[0].isnull = false;
1181 fcinfo->args[1].value = arg2;
1182 fcinfo->args[1].isnull = false;
1183 fcinfo->args[2].value = arg3;
1184 fcinfo->args[2].isnull = false;
1185
1186 result = FunctionCallInvoke(fcinfo);
1187
1188 /* Check for null result, since caller is clearly not expecting one */
1189 if (fcinfo->isnull)
1190 elog(ERROR, "function %u returned NULL", flinfo->fn_oid);
1191
1192 return result;
1193}

References elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FunctionCallInvoke, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by bringetbitmap(), ginExtractEntries(), gistKeyIsEQ(), gistpenalty(), OidFunctionCall3Coll(), and union_tuples().

◆ FunctionCall4Coll()

Datum FunctionCall4Coll ( FmgrInfo flinfo,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4 
)

Definition at line 1196 of file fmgr.c.

1198{
1199 LOCAL_FCINFO(fcinfo, 4);
1200 Datum result;
1201
1202 InitFunctionCallInfoData(*fcinfo, flinfo, 4, collation, NULL, NULL);
1203
1204 fcinfo->args[0].value = arg1;
1205 fcinfo->args[0].isnull = false;
1206 fcinfo->args[1].value = arg2;
1207 fcinfo->args[1].isnull = false;
1208 fcinfo->args[2].value = arg3;
1209 fcinfo->args[2].isnull = false;
1210 fcinfo->args[3].value = arg4;
1211 fcinfo->args[3].isnull = false;
1212
1213 result = FunctionCallInvoke(fcinfo);
1214
1215 /* Check for null result, since caller is clearly not expecting one */
1216 if (fcinfo->isnull)
1217 elog(ERROR, "function %u returned NULL", flinfo->fn_oid);
1218
1219 return result;
1220}

References elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FunctionCallInvoke, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by add_values_to_range(), bringetbitmap(), collectMatchBitmap(), matchPartialInPendingList(), OidFunctionCall4Coll(), and scalararraysel().

◆ FunctionCall5Coll()

Datum FunctionCall5Coll ( FmgrInfo flinfo,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5 
)

Definition at line 1223 of file fmgr.c.

1225{
1226 LOCAL_FCINFO(fcinfo, 5);
1227 Datum result;
1228
1229 InitFunctionCallInfoData(*fcinfo, flinfo, 5, collation, NULL, NULL);
1230
1231 fcinfo->args[0].value = arg1;
1232 fcinfo->args[0].isnull = false;
1233 fcinfo->args[1].value = arg2;
1234 fcinfo->args[1].isnull = false;
1235 fcinfo->args[2].value = arg3;
1236 fcinfo->args[2].isnull = false;
1237 fcinfo->args[3].value = arg4;
1238 fcinfo->args[3].isnull = false;
1239 fcinfo->args[4].value = arg5;
1240 fcinfo->args[4].isnull = false;
1241
1242 result = FunctionCallInvoke(fcinfo);
1243
1244 /* Check for null result, since caller is clearly not expecting one */
1245 if (fcinfo->isnull)
1246 elog(ERROR, "function %u returned NULL", flinfo->fn_oid);
1247
1248 return result;
1249}

References elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FunctionCallInvoke, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by gistindex_keytest(), OidFunctionCall5Coll(), scalararraysel(), update_frameheadpos(), and update_frametailpos().

◆ FunctionCall6Coll()

Datum FunctionCall6Coll ( FmgrInfo flinfo,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6 
)

Definition at line 1252 of file fmgr.c.

1255{
1256 LOCAL_FCINFO(fcinfo, 6);
1257 Datum result;
1258
1259 InitFunctionCallInfoData(*fcinfo, flinfo, 6, collation, NULL, NULL);
1260
1261 fcinfo->args[0].value = arg1;
1262 fcinfo->args[0].isnull = false;
1263 fcinfo->args[1].value = arg2;
1264 fcinfo->args[1].isnull = false;
1265 fcinfo->args[2].value = arg3;
1266 fcinfo->args[2].isnull = false;
1267 fcinfo->args[3].value = arg4;
1268 fcinfo->args[3].isnull = false;
1269 fcinfo->args[4].value = arg5;
1270 fcinfo->args[4].isnull = false;
1271 fcinfo->args[5].value = arg6;
1272 fcinfo->args[5].isnull = false;
1273
1274 result = FunctionCallInvoke(fcinfo);
1275
1276 /* Check for null result, since caller is clearly not expecting one */
1277 if (fcinfo->isnull)
1278 elog(ERROR, "function %u returned NULL", flinfo->fn_oid);
1279
1280 return result;
1281}

References elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FunctionCallInvoke, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by OidFunctionCall6Coll().

◆ FunctionCall7Coll()

Datum FunctionCall7Coll ( FmgrInfo flinfo,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6,
Datum  arg7 
)

Definition at line 1284 of file fmgr.c.

1287{
1288 LOCAL_FCINFO(fcinfo, 7);
1289 Datum result;
1290
1291 InitFunctionCallInfoData(*fcinfo, flinfo, 7, collation, NULL, NULL);
1292
1293 fcinfo->args[0].value = arg1;
1294 fcinfo->args[0].isnull = false;
1295 fcinfo->args[1].value = arg2;
1296 fcinfo->args[1].isnull = false;
1297 fcinfo->args[2].value = arg3;
1298 fcinfo->args[2].isnull = false;
1299 fcinfo->args[3].value = arg4;
1300 fcinfo->args[3].isnull = false;
1301 fcinfo->args[4].value = arg5;
1302 fcinfo->args[4].isnull = false;
1303 fcinfo->args[5].value = arg6;
1304 fcinfo->args[5].isnull = false;
1305 fcinfo->args[6].value = arg7;
1306 fcinfo->args[6].isnull = false;
1307
1308 result = FunctionCallInvoke(fcinfo);
1309
1310 /* Check for null result, since caller is clearly not expecting one */
1311 if (fcinfo->isnull)
1312 elog(ERROR, "function %u returned NULL", flinfo->fn_oid);
1313
1314 return result;
1315}

References elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FunctionCallInvoke, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by directTriConsistentFn(), gincost_pattern(), OidFunctionCall7Coll(), and shimBoolConsistentFn().

◆ FunctionCall8Coll()

Datum FunctionCall8Coll ( FmgrInfo flinfo,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6,
Datum  arg7,
Datum  arg8 
)

Definition at line 1318 of file fmgr.c.

1321{
1322 LOCAL_FCINFO(fcinfo, 8);
1323 Datum result;
1324
1325 InitFunctionCallInfoData(*fcinfo, flinfo, 8, collation, NULL, NULL);
1326
1327 fcinfo->args[0].value = arg1;
1328 fcinfo->args[0].isnull = false;
1329 fcinfo->args[1].value = arg2;
1330 fcinfo->args[1].isnull = false;
1331 fcinfo->args[2].value = arg3;
1332 fcinfo->args[2].isnull = false;
1333 fcinfo->args[3].value = arg4;
1334 fcinfo->args[3].isnull = false;
1335 fcinfo->args[4].value = arg5;
1336 fcinfo->args[4].isnull = false;
1337 fcinfo->args[5].value = arg6;
1338 fcinfo->args[5].isnull = false;
1339 fcinfo->args[6].value = arg7;
1340 fcinfo->args[6].isnull = false;
1341 fcinfo->args[7].value = arg8;
1342 fcinfo->args[7].isnull = false;
1343
1344 result = FunctionCallInvoke(fcinfo);
1345
1346 /* Check for null result, since caller is clearly not expecting one */
1347 if (fcinfo->isnull)
1348 elog(ERROR, "function %u returned NULL", flinfo->fn_oid);
1349
1350 return result;
1351}

References elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FunctionCallInvoke, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by directBoolConsistentFn(), and OidFunctionCall8Coll().

◆ FunctionCall9Coll()

Datum FunctionCall9Coll ( FmgrInfo flinfo,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6,
Datum  arg7,
Datum  arg8,
Datum  arg9 
)

Definition at line 1354 of file fmgr.c.

1358{
1359 LOCAL_FCINFO(fcinfo, 9);
1360 Datum result;
1361
1362 InitFunctionCallInfoData(*fcinfo, flinfo, 9, collation, NULL, NULL);
1363
1364 fcinfo->args[0].value = arg1;
1365 fcinfo->args[0].isnull = false;
1366 fcinfo->args[1].value = arg2;
1367 fcinfo->args[1].isnull = false;
1368 fcinfo->args[2].value = arg3;
1369 fcinfo->args[2].isnull = false;
1370 fcinfo->args[3].value = arg4;
1371 fcinfo->args[3].isnull = false;
1372 fcinfo->args[4].value = arg5;
1373 fcinfo->args[4].isnull = false;
1374 fcinfo->args[5].value = arg6;
1375 fcinfo->args[5].isnull = false;
1376 fcinfo->args[6].value = arg7;
1377 fcinfo->args[6].isnull = false;
1378 fcinfo->args[7].value = arg8;
1379 fcinfo->args[7].isnull = false;
1380 fcinfo->args[8].value = arg9;
1381 fcinfo->args[8].isnull = false;
1382
1383 result = FunctionCallInvoke(fcinfo);
1384
1385 /* Check for null result, since caller is clearly not expecting one */
1386 if (fcinfo->isnull)
1387 elog(ERROR, "function %u returned NULL", flinfo->fn_oid);
1388
1389 return result;
1390}

References elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FunctionCallInvoke, InitFunctionCallInfoData, and LOCAL_FCINFO.

Referenced by OidFunctionCall9Coll().

◆ get_call_expr_arg_stable()

bool get_call_expr_arg_stable ( fmNodePtr  expr,
int  argnum 
)

◆ get_call_expr_argtype()

Oid get_call_expr_argtype ( fmNodePtr  expr,
int  argnum 
)

◆ get_fn_expr_arg_stable()

bool get_fn_expr_arg_stable ( FmgrInfo flinfo,
int  argnum 
)

Definition at line 1975 of file fmgr.c.

1976{
1977 /*
1978 * can't return anything useful if we have no FmgrInfo or if its fn_expr
1979 * node has not been initialized
1980 */
1981 if (!flinfo || !flinfo->fn_expr)
1982 return false;
1983
1984 return get_call_expr_arg_stable(flinfo->fn_expr, argnum);
1985}
bool get_call_expr_arg_stable(Node *expr, int argnum)
Definition: fmgr.c:1994
fmNodePtr fn_expr
Definition: fmgr.h:66

References FmgrInfo::fn_expr, and get_call_expr_arg_stable().

Referenced by extract_variadic_args(), leadlag_common(), pg_input_is_valid_common(), and window_nth_value().

◆ get_fn_expr_argtype()

◆ get_fn_expr_rettype()

Oid get_fn_expr_rettype ( FmgrInfo flinfo)

Definition at line 1888 of file fmgr.c.

1889{
1890 Node *expr;
1891
1892 /*
1893 * can't return anything useful if we have no FmgrInfo or if its fn_expr
1894 * node has not been initialized
1895 */
1896 if (!flinfo || !flinfo->fn_expr)
1897 return InvalidOid;
1898
1899 expr = flinfo->fn_expr;
1900
1901 return exprType(expr);
1902}
Oid exprType(const Node *expr)
Definition: nodeFuncs.c:42
Definition: nodes.h:129

References exprType(), FmgrInfo::fn_expr, and InvalidOid.

Referenced by do_compile(), multirange_constructor0(), multirange_constructor1(), multirange_constructor2(), range_agg_finalfn(), range_constructor2(), and range_constructor3().

◆ get_fn_expr_variadic()

bool get_fn_expr_variadic ( FmgrInfo flinfo)

Definition at line 2044 of file fmgr.c.

2045{
2046 Node *expr;
2047
2048 /*
2049 * can't return anything useful if we have no FmgrInfo or if its fn_expr
2050 * node has not been initialized
2051 */
2052 if (!flinfo || !flinfo->fn_expr)
2053 return false;
2054
2055 expr = flinfo->fn_expr;
2056
2057 if (IsA(expr, FuncExpr))
2058 return ((FuncExpr *) expr)->funcvariadic;
2059 else
2060 return false;
2061}

References FmgrInfo::fn_expr, and IsA.

Referenced by concat_internal(), count_nulls(), extract_variadic_args(), satisfies_hash_partition(), and text_format().

◆ get_fn_opclass_options()

bytea * get_fn_opclass_options ( FmgrInfo flinfo)

Definition at line 2097 of file fmgr.c.

2098{
2099 if (flinfo && flinfo->fn_expr && IsA(flinfo->fn_expr, Const))
2100 {
2101 Const *expr = (Const *) flinfo->fn_expr;
2102
2103 if (expr->consttype == BYTEAOID)
2104 return expr->constisnull ? NULL : DatumGetByteaP(expr->constvalue);
2105 }
2106
2107 ereport(ERROR,
2108 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2109 errmsg("operator class options info is absent in function call context")));
2110
2111 return NULL;
2112}
#define DatumGetByteaP(X)
Definition: fmgr.h:331
Oid consttype
Definition: primnodes.h:329

References Const::consttype, DatumGetByteaP, ereport, errcode(), errmsg(), ERROR, FmgrInfo::fn_expr, if(), and IsA.

◆ has_fn_opclass_options()

bool has_fn_opclass_options ( FmgrInfo flinfo)

Definition at line 2081 of file fmgr.c.

2082{
2083 if (flinfo && flinfo->fn_expr && IsA(flinfo->fn_expr, Const))
2084 {
2085 Const *expr = (Const *) flinfo->fn_expr;
2086
2087 if (expr->consttype == BYTEAOID)
2088 return !expr->constisnull;
2089 }
2090 return false;
2091}

References Const::consttype, FmgrInfo::fn_expr, if(), and IsA.

◆ InputFunctionCall()

Datum InputFunctionCall ( FmgrInfo flinfo,
char *  str,
Oid  typioparam,
int32  typmod 
)

Definition at line 1530 of file fmgr.c.

1531{
1532 LOCAL_FCINFO(fcinfo, 3);
1533 Datum result;
1534
1535 if (str == NULL && flinfo->fn_strict)
1536 return (Datum) 0; /* just return null result */
1537
1538 InitFunctionCallInfoData(*fcinfo, flinfo, 3, InvalidOid, NULL, NULL);
1539
1540 fcinfo->args[0].value = CStringGetDatum(str);
1541 fcinfo->args[0].isnull = false;
1542 fcinfo->args[1].value = ObjectIdGetDatum(typioparam);
1543 fcinfo->args[1].isnull = false;
1544 fcinfo->args[2].value = Int32GetDatum(typmod);
1545 fcinfo->args[2].isnull = false;
1546
1547 result = FunctionCallInvoke(fcinfo);
1548
1549 /* Should get null result if and only if str is NULL */
1550 if (str == NULL)
1551 {
1552 if (!fcinfo->isnull)
1553 elog(ERROR, "input function %u returned non-NULL",
1554 flinfo->fn_oid);
1555 }
1556 else
1557 {
1558 if (fcinfo->isnull)
1559 elog(ERROR, "input function %u returned NULL",
1560 flinfo->fn_oid);
1561 }
1562
1563 return result;
1564}
bool fn_strict
Definition: fmgr.h:61

References CStringGetDatum(), elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FmgrInfo::fn_strict, FunctionCallInvoke, InitFunctionCallInfoData, Int32GetDatum(), InvalidOid, LOCAL_FCINFO, ObjectIdGetDatum(), and str.

Referenced by BuildTupleFromCStrings(), hstore_populate_record(), make_tuple_from_result_row(), OidInputFunctionCall(), plperl_sv_to_datum(), plsample_func_handler(), pltcl_func_handler(), pltcl_returnnext(), pltcl_SPI_execute_plan(), PLyObject_ToScalar(), PLyUnicode_ToComposite(), and XmlTableGetValue().

◆ InputFunctionCallSafe()

bool InputFunctionCallSafe ( FmgrInfo flinfo,
char *  str,
Oid  typioparam,
int32  typmod,
fmNodePtr  escontext,
Datum result 
)

Definition at line 1585 of file fmgr.c.

1589{
1590 LOCAL_FCINFO(fcinfo, 3);
1591
1592 if (str == NULL && flinfo->fn_strict)
1593 {
1594 *result = (Datum) 0; /* just return null result */
1595 return true;
1596 }
1597
1598 InitFunctionCallInfoData(*fcinfo, flinfo, 3, InvalidOid, escontext, NULL);
1599
1600 fcinfo->args[0].value = CStringGetDatum(str);
1601 fcinfo->args[0].isnull = false;
1602 fcinfo->args[1].value = ObjectIdGetDatum(typioparam);
1603 fcinfo->args[1].isnull = false;
1604 fcinfo->args[2].value = Int32GetDatum(typmod);
1605 fcinfo->args[2].isnull = false;
1606
1607 *result = FunctionCallInvoke(fcinfo);
1608
1609 /* Result value is garbage, and could be null, if an error was reported */
1610 if (SOFT_ERROR_OCCURRED(escontext))
1611 return false;
1612
1613 /* Otherwise, should get null result if and only if str is NULL */
1614 if (str == NULL)
1615 {
1616 if (!fcinfo->isnull)
1617 elog(ERROR, "input function %u returned non-NULL",
1618 flinfo->fn_oid);
1619 }
1620 else
1621 {
1622 if (fcinfo->isnull)
1623 elog(ERROR, "input function %u returned NULL",
1624 flinfo->fn_oid);
1625 }
1626
1627 return true;
1628}

References CStringGetDatum(), elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FmgrInfo::fn_strict, FunctionCallInvoke, InitFunctionCallInfoData, Int32GetDatum(), InvalidOid, LOCAL_FCINFO, ObjectIdGetDatum(), SOFT_ERROR_OCCURRED, and str.

Referenced by domain_in(), multirange_in(), NextCopyFrom(), pg_input_is_valid_common(), populate_scalar(), range_in(), ReadArrayStr(), and record_in().

◆ load_external_function()

void * load_external_function ( const char *  filename,
const char *  funcname,
bool  signalNotFound,
void **  filehandle 
)

Definition at line 95 of file dfmgr.c.

97{
98 char *fullname;
99 void *lib_handle;
100 void *retval;
101
102 /* Expand the possibly-abbreviated filename to an exact path name */
104
105 /* Load the shared library, unless we already did */
106 lib_handle = internal_load_library(fullname);
107
108 /* Return handle if caller wants it */
109 if (filehandle)
110 *filehandle = lib_handle;
111
112 /* Look up the function within the library. */
113 retval = dlsym(lib_handle, funcname);
114
115 if (retval == NULL && signalNotFound)
117 (errcode(ERRCODE_UNDEFINED_FUNCTION),
118 errmsg("could not find function \"%s\" in file \"%s\"",
119 funcname, fullname)));
120
121 pfree(fullname);
122 return retval;
123}
static char * expand_dynamic_library_name(const char *name)
Definition: dfmgr.c:408
static void * internal_load_library(const char *libname)
Definition: dfmgr.c:174
static char * filename
Definition: pg_dumpall.c:119
void * dlsym(void *handle, const char *symbol)
Definition: win32dlopen.c:61

References dlsym(), ereport, errcode(), errmsg(), ERROR, expand_dynamic_library_name(), filename, funcname, internal_load_library(), and pfree().

Referenced by _PG_init(), fmgr_c_validator(), fmgr_info_C_lang(), llvm_resolve_symbol(), LoadArchiveLibrary(), LoadOutputPlugin(), LookupBackgroundWorkerFunction(), LookupParallelWorkerFunction(), and provider_init().

◆ load_file()

void load_file ( const char *  filename,
bool  restricted 
)

Definition at line 134 of file dfmgr.c.

135{
136 char *fullname;
137
138 /* Apply security restriction if requested */
139 if (restricted)
141
142 /* Expand the possibly-abbreviated filename to an exact path name */
144
145 /* Load the shared library, unless we already did */
146 (void) internal_load_library(fullname);
147
148 pfree(fullname);
149}
static void check_restricted_library_name(const char *name)
Definition: dfmgr.c:463

References check_restricted_library_name(), expand_dynamic_library_name(), filename, internal_load_library(), and pfree().

Referenced by AlterSubscription(), AlterSubscription_refresh(), CreateSubscription(), DropSubscription(), load_libraries(), pg_sync_replication_slots(), ReplicationSlotDropAtPubNode(), ReplSlotSyncWorkerMain(), SetupApplyOrSyncWorker(), standard_ProcessUtility(), and WalReceiverMain().

◆ lookup_external_function()

void * lookup_external_function ( void *  filehandle,
const char *  funcname 
)

Definition at line 156 of file dfmgr.c.

157{
158 return dlsym(filehandle, funcname);
159}

References dlsym(), and funcname.

Referenced by fetch_finfo_record().

◆ OidFunctionCall0Coll()

Datum OidFunctionCall0Coll ( Oid  functionId,
Oid  collation 
)

Definition at line 1401 of file fmgr.c.

1402{
1403 FmgrInfo flinfo;
1404
1405 fmgr_info(functionId, &flinfo);
1406
1407 return FunctionCall0Coll(&flinfo, collation);
1408}
void fmgr_info(Oid functionId, FmgrInfo *finfo)
Definition: fmgr.c:127
Datum FunctionCall0Coll(FmgrInfo *flinfo, Oid collation)
Definition: fmgr.c:1112

References fmgr_security_definer_cache::flinfo, fmgr_info(), and FunctionCall0Coll().

◆ OidFunctionCall1Coll()

Datum OidFunctionCall1Coll ( Oid  functionId,
Oid  collation,
Datum  arg1 
)

Definition at line 1411 of file fmgr.c.

1412{
1413 FmgrInfo flinfo;
1414
1415 fmgr_info(functionId, &flinfo);
1416
1417 return FunctionCall1Coll(&flinfo, collation, arg1);
1418}
Datum FunctionCall1Coll(FmgrInfo *flinfo, Oid collation, Datum arg1)
Definition: fmgr.c:1129

References fmgr_security_definer_cache::flinfo, fmgr_info(), and FunctionCall1Coll().

Referenced by _bt_allequalimage(), _hash_datum2hashkey_type(), and gisttranslatecmptype().

◆ OidFunctionCall2Coll()

Datum OidFunctionCall2Coll ( Oid  functionId,
Oid  collation,
Datum  arg1,
Datum  arg2 
)

Definition at line 1421 of file fmgr.c.

1422{
1423 FmgrInfo flinfo;
1424
1425 fmgr_info(functionId, &flinfo);
1426
1427 return FunctionCall2Coll(&flinfo, collation, arg1, arg2);
1428}
Datum FunctionCall2Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2)
Definition: fmgr.c:1149

References fmgr_security_definer_cache::flinfo, fmgr_info(), and FunctionCall2Coll().

Referenced by _bt_compare_scankey_args(), and index_recheck_constraint().

◆ OidFunctionCall3Coll()

Datum OidFunctionCall3Coll ( Oid  functionId,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3 
)

Definition at line 1431 of file fmgr.c.

1433{
1434 FmgrInfo flinfo;
1435
1436 fmgr_info(functionId, &flinfo);
1437
1438 return FunctionCall3Coll(&flinfo, collation, arg1, arg2, arg3);
1439}
Datum FunctionCall3Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3)
Definition: fmgr.c:1171

References fmgr_security_definer_cache::flinfo, fmgr_info(), and FunctionCall3Coll().

◆ OidFunctionCall4Coll()

Datum OidFunctionCall4Coll ( Oid  functionId,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4 
)

Definition at line 1442 of file fmgr.c.

1444{
1445 FmgrInfo flinfo;
1446
1447 fmgr_info(functionId, &flinfo);
1448
1449 return FunctionCall4Coll(&flinfo, collation, arg1, arg2, arg3, arg4);
1450}
Datum FunctionCall4Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4)
Definition: fmgr.c:1196

References fmgr_security_definer_cache::flinfo, fmgr_info(), and FunctionCall4Coll().

Referenced by restriction_selectivity().

◆ OidFunctionCall5Coll()

Datum OidFunctionCall5Coll ( Oid  functionId,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5 
)

Definition at line 1453 of file fmgr.c.

1455{
1456 FmgrInfo flinfo;
1457
1458 fmgr_info(functionId, &flinfo);
1459
1460 return FunctionCall5Coll(&flinfo, collation, arg1, arg2, arg3, arg4, arg5);
1461}
Datum FunctionCall5Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
Definition: fmgr.c:1223

References fmgr_security_definer_cache::flinfo, fmgr_info(), and FunctionCall5Coll().

Referenced by join_selectivity().

◆ OidFunctionCall6Coll()

Datum OidFunctionCall6Coll ( Oid  functionId,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6 
)

Definition at line 1464 of file fmgr.c.

1467{
1468 FmgrInfo flinfo;
1469
1470 fmgr_info(functionId, &flinfo);
1471
1472 return FunctionCall6Coll(&flinfo, collation, arg1, arg2, arg3, arg4, arg5,
1473 arg6);
1474}
Datum FunctionCall6Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6)
Definition: fmgr.c:1252

References fmgr_security_definer_cache::flinfo, fmgr_info(), and FunctionCall6Coll().

◆ OidFunctionCall7Coll()

Datum OidFunctionCall7Coll ( Oid  functionId,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6,
Datum  arg7 
)

Definition at line 1477 of file fmgr.c.

1480{
1481 FmgrInfo flinfo;
1482
1483 fmgr_info(functionId, &flinfo);
1484
1485 return FunctionCall7Coll(&flinfo, collation, arg1, arg2, arg3, arg4, arg5,
1486 arg6, arg7);
1487}
Datum FunctionCall7Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7)
Definition: fmgr.c:1284

References fmgr_security_definer_cache::flinfo, fmgr_info(), and FunctionCall7Coll().

◆ OidFunctionCall8Coll()

Datum OidFunctionCall8Coll ( Oid  functionId,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6,
Datum  arg7,
Datum  arg8 
)

Definition at line 1490 of file fmgr.c.

1493{
1494 FmgrInfo flinfo;
1495
1496 fmgr_info(functionId, &flinfo);
1497
1498 return FunctionCall8Coll(&flinfo, collation, arg1, arg2, arg3, arg4, arg5,
1499 arg6, arg7, arg8);
1500}
Datum FunctionCall8Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8)
Definition: fmgr.c:1318

References fmgr_security_definer_cache::flinfo, fmgr_info(), and FunctionCall8Coll().

◆ OidFunctionCall9Coll()

Datum OidFunctionCall9Coll ( Oid  functionId,
Oid  collation,
Datum  arg1,
Datum  arg2,
Datum  arg3,
Datum  arg4,
Datum  arg5,
Datum  arg6,
Datum  arg7,
Datum  arg8,
Datum  arg9 
)

Definition at line 1503 of file fmgr.c.

1507{
1508 FmgrInfo flinfo;
1509
1510 fmgr_info(functionId, &flinfo);
1511
1512 return FunctionCall9Coll(&flinfo, collation, arg1, arg2, arg3, arg4, arg5,
1513 arg6, arg7, arg8, arg9);
1514}
Datum FunctionCall9Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9)
Definition: fmgr.c:1354

References fmgr_security_definer_cache::flinfo, fmgr_info(), and FunctionCall9Coll().

◆ OidInputFunctionCall()

Datum OidInputFunctionCall ( Oid  functionId,
char *  str,
Oid  typioparam,
int32  typmod 
)

Definition at line 1754 of file fmgr.c.

1755{
1756 FmgrInfo flinfo;
1757
1758 fmgr_info(functionId, &flinfo);
1759 return InputFunctionCall(&flinfo, str, typioparam, typmod);
1760}
Datum InputFunctionCall(FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod)
Definition: fmgr.c:1530

References fmgr_security_definer_cache::flinfo, fmgr_info(), InputFunctionCall(), and str.

Referenced by DefineAggregate(), exec_bind_message(), get_typdefault(), GetAggInitVal(), InsertOneValue(), parse_fcall_arguments(), slot_modify_data(), slot_store_data(), and stringTypeDatum().

◆ OidOutputFunctionCall()

◆ OidReceiveFunctionCall()

Datum OidReceiveFunctionCall ( Oid  functionId,
fmStringInfo  buf,
Oid  typioparam,
int32  typmod 
)

Definition at line 1772 of file fmgr.c.

1774{
1775 FmgrInfo flinfo;
1776
1777 fmgr_info(functionId, &flinfo);
1778 return ReceiveFunctionCall(&flinfo, buf, typioparam, typmod);
1779}
Datum ReceiveFunctionCall(FmgrInfo *flinfo, StringInfo buf, Oid typioparam, int32 typmod)
Definition: fmgr.c:1697
static char * buf
Definition: pg_test_fsync.c:72

References buf, fmgr_security_definer_cache::flinfo, fmgr_info(), and ReceiveFunctionCall().

Referenced by exec_bind_message(), parse_fcall_arguments(), slot_modify_data(), and slot_store_data().

◆ OidSendFunctionCall()

bytea * OidSendFunctionCall ( Oid  functionId,
Datum  val 
)

Definition at line 1782 of file fmgr.c.

1783{
1784 FmgrInfo flinfo;
1785
1786 fmgr_info(functionId, &flinfo);
1787 return SendFunctionCall(&flinfo, val);
1788}
bytea * SendFunctionCall(FmgrInfo *flinfo, Datum val)
Definition: fmgr.c:1744

References fmgr_security_definer_cache::flinfo, fmgr_info(), SendFunctionCall(), and val.

Referenced by logicalrep_write_tuple(), and SendFunctionResult().

◆ OutputFunctionCall()

◆ pg_detoast_datum()

struct varlena * pg_detoast_datum ( struct varlena datum)

Definition at line 1832 of file fmgr.c.

1833{
1834 if (VARATT_IS_EXTENDED(datum))
1835 return detoast_attr(datum);
1836 else
1837 return datum;
1838}
struct varlena * detoast_attr(struct varlena *attr)
Definition: detoast.c:116
#define VARATT_IS_EXTENDED(PTR)
Definition: varatt.h:303

References detoast_attr(), and VARATT_IS_EXTENDED.

◆ pg_detoast_datum_copy()

struct varlena * pg_detoast_datum_copy ( struct varlena datum)

Definition at line 1841 of file fmgr.c.

1842{
1843 if (VARATT_IS_EXTENDED(datum))
1844 return detoast_attr(datum);
1845 else
1846 {
1847 /* Make a modifiable copy of the varlena object */
1848 Size len = VARSIZE(datum);
1849 struct varlena *result = (struct varlena *) palloc(len);
1850
1851 memcpy(result, datum, len);
1852 return result;
1853 }
1854}
void * palloc(Size size)
Definition: mcxt.c:1317
const void size_t len
#define VARSIZE(PTR)
Definition: varatt.h:279

References detoast_attr(), len, palloc(), VARATT_IS_EXTENDED, and VARSIZE.

Referenced by tuple_data_split_internal().

◆ pg_detoast_datum_packed()

struct varlena * pg_detoast_datum_packed ( struct varlena datum)

Definition at line 1864 of file fmgr.c.

1865{
1866 if (VARATT_IS_COMPRESSED(datum) || VARATT_IS_EXTERNAL(datum))
1867 return detoast_attr(datum);
1868 else
1869 return datum;
1870}
#define VARATT_IS_COMPRESSED(PTR)
Definition: varatt.h:288
#define VARATT_IS_EXTERNAL(PTR)
Definition: varatt.h:289

References detoast_attr(), VARATT_IS_COMPRESSED, and VARATT_IS_EXTERNAL.

Referenced by escape_json_text(), makeJsonLexContext(), text_to_cstring(), text_to_cstring_buffer(), and transform_jsonb_string_values().

◆ pg_detoast_datum_slice()

struct varlena * pg_detoast_datum_slice ( struct varlena datum,
int32  first,
int32  count 
)

Definition at line 1857 of file fmgr.c.

1858{
1859 /* Only get the specified portion from the toast rel */
1860 return detoast_attr_slice(datum, first, count);
1861}
struct varlena * detoast_attr_slice(struct varlena *attr, int32 sliceoffset, int32 slicelength)
Definition: detoast.c:205

References detoast_attr_slice().

◆ ReceiveFunctionCall()

Datum ReceiveFunctionCall ( FmgrInfo flinfo,
fmStringInfo  buf,
Oid  typioparam,
int32  typmod 
)

Definition at line 1697 of file fmgr.c.

1699{
1700 LOCAL_FCINFO(fcinfo, 3);
1701 Datum result;
1702
1703 if (buf == NULL && flinfo->fn_strict)
1704 return (Datum) 0; /* just return null result */
1705
1706 InitFunctionCallInfoData(*fcinfo, flinfo, 3, InvalidOid, NULL, NULL);
1707
1708 fcinfo->args[0].value = PointerGetDatum(buf);
1709 fcinfo->args[0].isnull = false;
1710 fcinfo->args[1].value = ObjectIdGetDatum(typioparam);
1711 fcinfo->args[1].isnull = false;
1712 fcinfo->args[2].value = Int32GetDatum(typmod);
1713 fcinfo->args[2].isnull = false;
1714
1715 result = FunctionCallInvoke(fcinfo);
1716
1717 /* Should get null result if and only if buf is NULL */
1718 if (buf == NULL)
1719 {
1720 if (!fcinfo->isnull)
1721 elog(ERROR, "receive function %u returned non-NULL",
1722 flinfo->fn_oid);
1723 }
1724 else
1725 {
1726 if (fcinfo->isnull)
1727 elog(ERROR, "receive function %u returned NULL",
1728 flinfo->fn_oid);
1729 }
1730
1731 return result;
1732}
static Datum PointerGetDatum(const void *X)
Definition: postgres.h:327

References buf, elog, ERROR, fmgr_security_definer_cache::flinfo, FmgrInfo::fn_oid, FmgrInfo::fn_strict, FunctionCallInvoke, InitFunctionCallInfoData, Int32GetDatum(), InvalidOid, LOCAL_FCINFO, ObjectIdGetDatum(), and PointerGetDatum().

Referenced by array_agg_deserialize(), CopyReadBinaryAttribute(), domain_recv(), multirange_recv(), OidReceiveFunctionCall(), range_recv(), ReadArrayBinary(), and record_recv().

◆ RestoreLibraryState()

void RestoreLibraryState ( char *  start_address)

Definition at line 670 of file dfmgr.c.

671{
672 while (*start_address != '\0')
673 {
674 internal_load_library(start_address);
675 start_address += strlen(start_address) + 1;
676 }
677}

References internal_load_library().

Referenced by ParallelWorkerMain().

◆ SendFunctionCall()

◆ SerializeLibraryState()

void SerializeLibraryState ( Size  maxsize,
char *  start_address 
)

Definition at line 648 of file dfmgr.c.

649{
650 DynamicFileList *file_scanner;
651
652 for (file_scanner = file_list;
653 file_scanner != NULL;
654 file_scanner = file_scanner->next)
655 {
656 Size len;
657
658 len = strlcpy(start_address, file_scanner->filename, maxsize) + 1;
659 Assert(len < maxsize);
660 maxsize -= len;
661 start_address += len;
662 }
663 start_address[0] = '\0';
664}
#define Assert(condition)
Definition: c.h:815
size_t strlcpy(char *dst, const char *src, size_t siz)
Definition: strlcpy.c:45

References Assert, file_list, df_files::filename, len, df_files::next, and strlcpy().

Referenced by InitializeParallelDSM().

◆ set_fn_opclass_options()

void set_fn_opclass_options ( FmgrInfo flinfo,
bytea options 
)

Definition at line 2070 of file fmgr.c.

2071{
2072 flinfo->fn_expr = (Node *) makeConst(BYTEAOID, -1, InvalidOid, -1,
2074 options == NULL, false);
2075}
Const * makeConst(Oid consttype, int32 consttypmod, Oid constcollid, int constlen, Datum constvalue, bool constisnull, bool constbyval)
Definition: makefuncs.c:303

References FmgrInfo::fn_expr, InvalidOid, makeConst(), and PointerGetDatum().

Referenced by gincost_pattern(), and index_getprocinfo().

◆ StaticAssertDecl()

StaticAssertDecl ( sizeof(FMGR_ABI_EXTRA)<=sizeof(((Pg_magic_struct *) 0) ->abi_extra)  ,
"FMGR_ABI_EXTRA too long"   
)

Variable Documentation

◆ Dynamic_library_path

PGDLLIMPORT char* Dynamic_library_path
extern

Definition at line 67 of file dfmgr.c.

Referenced by find_in_dynamic_libpath().

◆ fmgr_hook

PGDLLIMPORT fmgr_hook_type fmgr_hook
extern

Definition at line 40 of file fmgr.c.

Referenced by fmgr_security_definer(), and sepgsql_init_client_label().

◆ needs_fmgr_hook

PGDLLIMPORT needs_fmgr_hook_type needs_fmgr_hook
extern

Definition at line 39 of file fmgr.c.

Referenced by sepgsql_init_client_label().