91#define FIELDNO_FUNCTIONCALLINFODATA_ISNULL 4
94#define FIELDNO_FUNCTIONCALLINFODATA_ARGS 6
102#define SizeForFunctionCallInfo(nargs) \
103 (offsetof(FunctionCallInfoBaseData, args) + \
104 sizeof(NullableDatum) * (nargs))
110#define LOCAL_FCINFO(name, nargs) \
114 FunctionCallInfoBaseData fcinfo; \
116 char fcinfo_data[SizeForFunctionCallInfo(nargs)]; \
118 FunctionCallInfo name = &name##data.fcinfo
135#define fmgr_info_set_expr(expr, finfo) \
136 ((finfo)->fn_expr = (expr))
150#define InitFunctionCallInfoData(Fcinfo, Flinfo, Nargs, Collation, Context, Resultinfo) \
152 (Fcinfo).flinfo = (Flinfo); \
153 (Fcinfo).context = (Context); \
154 (Fcinfo).resultinfo = (Resultinfo); \
155 (Fcinfo).fncollation = (Collation); \
156 (Fcinfo).isnull = false; \
157 (Fcinfo).nargs = (Nargs); \
172#define FunctionCallInvoke(fcinfo) ((* (fcinfo)->flinfo->fn_addr) (fcinfo))
193#define PG_FUNCTION_ARGS FunctionCallInfo fcinfo
198#define PG_GET_COLLATION() (fcinfo->fncollation)
203#define PG_NARGS() (fcinfo->nargs)
209#define PG_ARGISNULL(n) (fcinfo->args[n].isnull)
240#define PG_DETOAST_DATUM(datum) \
241 pg_detoast_datum((struct varlena *) DatumGetPointer(datum))
242#define PG_DETOAST_DATUM_COPY(datum) \
243 pg_detoast_datum_copy((struct varlena *) DatumGetPointer(datum))
244#define PG_DETOAST_DATUM_SLICE(datum,f,c) \
245 pg_detoast_datum_slice((struct varlena *) DatumGetPointer(datum), \
246 (int32) (f), (int32) (c))
248#define PG_DETOAST_DATUM_PACKED(datum) \
249 pg_detoast_datum_packed((struct varlena *) DatumGetPointer(datum))
260#define PG_FREE_IF_COPY(ptr,n) \
262 if ((ptr) != PG_GETARG_POINTER(n)) \
268#define PG_GETARG_DATUM(n) (fcinfo->args[n].value)
269#define PG_GETARG_INT32(n) DatumGetInt32(PG_GETARG_DATUM(n))
270#define PG_GETARG_UINT32(n) DatumGetUInt32(PG_GETARG_DATUM(n))
271#define PG_GETARG_INT16(n) DatumGetInt16(PG_GETARG_DATUM(n))
272#define PG_GETARG_UINT16(n) DatumGetUInt16(PG_GETARG_DATUM(n))
273#define PG_GETARG_CHAR(n) DatumGetChar(PG_GETARG_DATUM(n))
274#define PG_GETARG_BOOL(n) DatumGetBool(PG_GETARG_DATUM(n))
275#define PG_GETARG_OID(n) DatumGetObjectId(PG_GETARG_DATUM(n))
276#define PG_GETARG_OID8(n) DatumGetObjectId8(PG_GETARG_DATUM(n))
277#define PG_GETARG_POINTER(n) DatumGetPointer(PG_GETARG_DATUM(n))
278#define PG_GETARG_CSTRING(n) DatumGetCString(PG_GETARG_DATUM(n))
279#define PG_GETARG_NAME(n) DatumGetName(PG_GETARG_DATUM(n))
280#define PG_GETARG_TRANSACTIONID(n) DatumGetTransactionId(PG_GETARG_DATUM(n))
282#define PG_GETARG_FLOAT4(n) DatumGetFloat4(PG_GETARG_DATUM(n))
283#define PG_GETARG_FLOAT8(n) DatumGetFloat8(PG_GETARG_DATUM(n))
284#define PG_GETARG_INT64(n) DatumGetInt64(PG_GETARG_DATUM(n))
286#define PG_GETARG_RAW_VARLENA_P(n) ((struct varlena *) PG_GETARG_POINTER(n))
288#define PG_GETARG_VARLENA_P(n) PG_DETOAST_DATUM(PG_GETARG_DATUM(n))
290#define PG_GETARG_VARLENA_PP(n) PG_DETOAST_DATUM_PACKED(PG_GETARG_DATUM(n))
292#define DatumGetByteaPP(X) ((bytea *) PG_DETOAST_DATUM_PACKED(X))
293#define DatumGetTextPP(X) ((text *) PG_DETOAST_DATUM_PACKED(X))
294#define DatumGetBpCharPP(X) ((BpChar *) PG_DETOAST_DATUM_PACKED(X))
295#define DatumGetVarCharPP(X) ((VarChar *) PG_DETOAST_DATUM_PACKED(X))
296#define DatumGetHeapTupleHeader(X) ((HeapTupleHeader) PG_DETOAST_DATUM(X))
298#define DatumGetByteaPCopy(X) ((bytea *) PG_DETOAST_DATUM_COPY(X))
299#define DatumGetTextPCopy(X) ((text *) PG_DETOAST_DATUM_COPY(X))
300#define DatumGetBpCharPCopy(X) ((BpChar *) PG_DETOAST_DATUM_COPY(X))
301#define DatumGetVarCharPCopy(X) ((VarChar *) PG_DETOAST_DATUM_COPY(X))
302#define DatumGetHeapTupleHeaderCopy(X) ((HeapTupleHeader) PG_DETOAST_DATUM_COPY(X))
304#define DatumGetByteaPSlice(X,m,n) ((bytea *) PG_DETOAST_DATUM_SLICE(X,m,n))
305#define DatumGetTextPSlice(X,m,n) ((text *) PG_DETOAST_DATUM_SLICE(X,m,n))
306#define DatumGetBpCharPSlice(X,m,n) ((BpChar *) PG_DETOAST_DATUM_SLICE(X,m,n))
307#define DatumGetVarCharPSlice(X,m,n) ((VarChar *) PG_DETOAST_DATUM_SLICE(X,m,n))
309#define PG_GETARG_BYTEA_PP(n) DatumGetByteaPP(PG_GETARG_DATUM(n))
310#define PG_GETARG_TEXT_PP(n) DatumGetTextPP(PG_GETARG_DATUM(n))
311#define PG_GETARG_BPCHAR_PP(n) DatumGetBpCharPP(PG_GETARG_DATUM(n))
312#define PG_GETARG_VARCHAR_PP(n) DatumGetVarCharPP(PG_GETARG_DATUM(n))
313#define PG_GETARG_HEAPTUPLEHEADER(n) DatumGetHeapTupleHeader(PG_GETARG_DATUM(n))
315#define PG_GETARG_BYTEA_P_COPY(n) DatumGetByteaPCopy(PG_GETARG_DATUM(n))
316#define PG_GETARG_TEXT_P_COPY(n) DatumGetTextPCopy(PG_GETARG_DATUM(n))
317#define PG_GETARG_BPCHAR_P_COPY(n) DatumGetBpCharPCopy(PG_GETARG_DATUM(n))
318#define PG_GETARG_VARCHAR_P_COPY(n) DatumGetVarCharPCopy(PG_GETARG_DATUM(n))
319#define PG_GETARG_HEAPTUPLEHEADER_COPY(n) DatumGetHeapTupleHeaderCopy(PG_GETARG_DATUM(n))
321#define PG_GETARG_BYTEA_P_SLICE(n,a,b) DatumGetByteaPSlice(PG_GETARG_DATUM(n),a,b)
322#define PG_GETARG_TEXT_P_SLICE(n,a,b) DatumGetTextPSlice(PG_GETARG_DATUM(n),a,b)
323#define PG_GETARG_BPCHAR_P_SLICE(n,a,b) DatumGetBpCharPSlice(PG_GETARG_DATUM(n),a,b)
324#define PG_GETARG_VARCHAR_P_SLICE(n,a,b) DatumGetVarCharPSlice(PG_GETARG_DATUM(n),a,b)
332#define DatumGetByteaP(X) ((bytea *) PG_DETOAST_DATUM(X))
333#define DatumGetTextP(X) ((text *) PG_DETOAST_DATUM(X))
334#define DatumGetBpCharP(X) ((BpChar *) PG_DETOAST_DATUM(X))
335#define DatumGetVarCharP(X) ((VarChar *) PG_DETOAST_DATUM(X))
336#define PG_GETARG_BYTEA_P(n) DatumGetByteaP(PG_GETARG_DATUM(n))
337#define PG_GETARG_TEXT_P(n) DatumGetTextP(PG_GETARG_DATUM(n))
338#define PG_GETARG_BPCHAR_P(n) DatumGetBpCharP(PG_GETARG_DATUM(n))
339#define PG_GETARG_VARCHAR_P(n) DatumGetVarCharP(PG_GETARG_DATUM(n))
342#define PG_HAS_OPCLASS_OPTIONS() has_fn_opclass_options(fcinfo->flinfo)
343#define PG_GET_OPCLASS_OPTIONS() get_fn_opclass_options(fcinfo->flinfo)
346#define PG_RETURN_NULL() \
347 do { fcinfo->isnull = true; return (Datum) 0; } while (0)
350#define PG_RETURN_VOID() return (Datum) 0
354#define PG_RETURN_DATUM(x) return (x)
355#define PG_RETURN_INT32(x) return Int32GetDatum(x)
356#define PG_RETURN_UINT32(x) return UInt32GetDatum(x)
357#define PG_RETURN_INT16(x) return Int16GetDatum(x)
358#define PG_RETURN_UINT16(x) return UInt16GetDatum(x)
359#define PG_RETURN_CHAR(x) return CharGetDatum(x)
360#define PG_RETURN_BOOL(x) return BoolGetDatum(x)
361#define PG_RETURN_OID(x) return ObjectIdGetDatum(x)
362#define PG_RETURN_OID8(x) return ObjectId8GetDatum(x)
363#define PG_RETURN_POINTER(x) return PointerGetDatum(x)
364#define PG_RETURN_CSTRING(x) return CStringGetDatum(x)
365#define PG_RETURN_NAME(x) return NameGetDatum(x)
366#define PG_RETURN_TRANSACTIONID(x) return TransactionIdGetDatum(x)
368#define PG_RETURN_FLOAT4(x) return Float4GetDatum(x)
369#define PG_RETURN_FLOAT8(x) return Float8GetDatum(x)
370#define PG_RETURN_INT64(x) return Int64GetDatum(x)
371#define PG_RETURN_UINT64(x) return UInt64GetDatum(x)
373#define PG_RETURN_BYTEA_P(x) PG_RETURN_POINTER(x)
374#define PG_RETURN_TEXT_P(x) PG_RETURN_POINTER(x)
375#define PG_RETURN_BPCHAR_P(x) PG_RETURN_POINTER(x)
376#define PG_RETURN_VARCHAR_P(x) PG_RETURN_POINTER(x)
377#define PG_RETURN_HEAPTUPLEHEADER(x) return HeapTupleHeaderGetDatum(x)
417#define PG_FUNCTION_INFO_V1(funcname) \
418extern PGDLLEXPORT Datum funcname(PG_FUNCTION_ARGS); \
419extern PGDLLEXPORT const Pg_finfo_record * CppConcat(pg_finfo_,funcname)(void); \
420const Pg_finfo_record * \
421CppConcat(pg_finfo_,funcname) (void) \
423 static const Pg_finfo_record my_finfo = { 1 }; \
426extern int no_such_variable
489#define PG_MODULE_ABI_DATA \
491 PG_VERSION_NUM / 100, \
503#define PG_MODULE_MAGIC_DATA(...) \
505 .len = sizeof(Pg_magic_struct), \
506 .abi_fields = PG_MODULE_ABI_DATA, \
511 "FMGR_ABI_EXTRA too long");
519#define PG_MAGIC_FUNCTION_NAME Pg_magic_func
520#define PG_MAGIC_FUNCTION_NAME_STRING "Pg_magic_func"
522#define PG_MODULE_MAGIC \
523extern PGDLLEXPORT const Pg_magic_struct *PG_MAGIC_FUNCTION_NAME(void); \
524const Pg_magic_struct * \
525PG_MAGIC_FUNCTION_NAME(void) \
527 static const Pg_magic_struct Pg_magic_data = PG_MODULE_MAGIC_DATA(.name = NULL); \
528 return &Pg_magic_data; \
530extern int no_such_variable
540#define PG_MODULE_MAGIC_EXT(...) \
541extern PGDLLEXPORT const Pg_magic_struct *PG_MAGIC_FUNCTION_NAME(void); \
542const Pg_magic_struct * \
543PG_MAGIC_FUNCTION_NAME(void) \
545 static const Pg_magic_struct Pg_magic_data = \
546 PG_MODULE_MAGIC_DATA(__VA_ARGS__); \
547 return &Pg_magic_data; \
549extern int no_such_variable
684#define DirectFunctionCall1(func, arg1) \
685 DirectFunctionCall1Coll(func, InvalidOid, arg1)
686#define DirectFunctionCall2(func, arg1, arg2) \
687 DirectFunctionCall2Coll(func, InvalidOid, arg1, arg2)
688#define DirectFunctionCall3(func, arg1, arg2, arg3) \
689 DirectFunctionCall3Coll(func, InvalidOid, arg1, arg2, arg3)
690#define DirectFunctionCall4(func, arg1, arg2, arg3, arg4) \
691 DirectFunctionCall4Coll(func, InvalidOid, arg1, arg2, arg3, arg4)
692#define DirectFunctionCall5(func, arg1, arg2, arg3, arg4, arg5) \
693 DirectFunctionCall5Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5)
694#define DirectFunctionCall6(func, arg1, arg2, arg3, arg4, arg5, arg6) \
695 DirectFunctionCall6Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)
696#define DirectFunctionCall7(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
697 DirectFunctionCall7Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
698#define DirectFunctionCall8(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
699 DirectFunctionCall8Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
700#define DirectFunctionCall9(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \
701 DirectFunctionCall9Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
702#define FunctionCall1(flinfo, arg1) \
703 FunctionCall1Coll(flinfo, InvalidOid, arg1)
704#define FunctionCall2(flinfo, arg1, arg2) \
705 FunctionCall2Coll(flinfo, InvalidOid, arg1, arg2)
706#define FunctionCall3(flinfo, arg1, arg2, arg3) \
707 FunctionCall3Coll(flinfo, InvalidOid, arg1, arg2, arg3)
708#define FunctionCall4(flinfo, arg1, arg2, arg3, arg4) \
709 FunctionCall4Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4)
710#define FunctionCall5(flinfo, arg1, arg2, arg3, arg4, arg5) \
711 FunctionCall5Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5)
712#define FunctionCall6(flinfo, arg1, arg2, arg3, arg4, arg5, arg6) \
713 FunctionCall6Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)
714#define FunctionCall7(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
715 FunctionCall7Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
716#define FunctionCall8(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
717 FunctionCall8Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
718#define FunctionCall9(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \
719 FunctionCall9Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
720#define OidFunctionCall0(functionId) \
721 OidFunctionCall0Coll(functionId, InvalidOid)
722#define OidFunctionCall1(functionId, arg1) \
723 OidFunctionCall1Coll(functionId, InvalidOid, arg1)
724#define OidFunctionCall2(functionId, arg1, arg2) \
725 OidFunctionCall2Coll(functionId, InvalidOid, arg1, arg2)
726#define OidFunctionCall3(functionId, arg1, arg2, arg3) \
727 OidFunctionCall3Coll(functionId, InvalidOid, arg1, arg2, arg3)
728#define OidFunctionCall4(functionId, arg1, arg2, arg3, arg4) \
729 OidFunctionCall4Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4)
730#define OidFunctionCall5(functionId, arg1, arg2, arg3, arg4, arg5) \
731 OidFunctionCall5Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5)
732#define OidFunctionCall6(functionId, arg1, arg2, arg3, arg4, arg5, arg6) \
733 OidFunctionCall6Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)
734#define OidFunctionCall7(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
735 OidFunctionCall7Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
736#define OidFunctionCall8(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
737 OidFunctionCall8Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
738#define OidFunctionCall9(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \
739 OidFunctionCall9Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
789extern char *
find_in_path(
const char *basename,
const char *path,
const char *path_param,
790 const char *macro,
const char *macro_val);
792 bool signalNotFound,
void **filehandle);
798 const char **library_path,
799 const char **module_name,
800 const char **module_version);
814#define AGG_CONTEXT_AGGREGATE 1
815#define AGG_CONTEXT_WINDOW 2
850#define FmgrHookIsNeeded(fn_oid) \
851 (!needs_fmgr_hook ? false : (*needs_fmgr_hook)(fn_oid))
#define FLEXIBLE_ARRAY_MEMBER
void(* ExprContextCallbackFunction)(Datum arg)
Datum FunctionCall4Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4)
Datum OidFunctionCall2Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2)
void set_fn_opclass_options(FmgrInfo *flinfo, bytea *options)
Oid fmgr_internal_function(const char *proname)
StaticAssertDecl(sizeof(FMGR_ABI_EXTRA)<=sizeof(((Pg_abi_values *) 0) ->abi_extra), "FMGR_ABI_EXTRA too long")
Datum OidFunctionCall9Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9)
bool get_fn_expr_arg_stable(FmgrInfo *flinfo, int argnum)
struct varlena * pg_detoast_datum_copy(struct varlena *datum)
struct varlena * pg_detoast_datum_slice(struct varlena *datum, int32 first, int32 count)
Datum OidFunctionCall6Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6)
Datum FunctionCall6Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6)
Datum OidFunctionCall5Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
Datum FunctionCall8Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8)
bool CheckFunctionValidatorAccess(Oid validatorOid, Oid functionOid)
void RestoreLibraryState(char *start_address)
Datum OidReceiveFunctionCall(Oid functionId, StringInfo buf, Oid typioparam, int32 typmod)
bool(* needs_fmgr_hook_type)(Oid fn_oid)
Datum InputFunctionCall(FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod)
void AggRegisterCallback(FunctionCallInfo fcinfo, ExprContextCallbackFunction func, Datum arg)
Datum FunctionCall2Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2)
void fmgr_info(Oid functionId, FmgrInfo *finfo)
Datum OidInputFunctionCall(Oid functionId, char *str, Oid typioparam, int32 typmod)
Aggref * AggGetAggref(FunctionCallInfo fcinfo)
PGDLLIMPORT needs_fmgr_hook_type needs_fmgr_hook
Datum DirectFunctionCall2Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2)
bool DirectInputFunctionCallSafe(PGFunction func, char *str, Oid typioparam, int32 typmod, Node *escontext, Datum *result)
char * find_in_path(const char *basename, const char *path, const char *path_param, const char *macro, const char *macro_val)
struct varlena * pg_detoast_datum_packed(struct varlena *datum)
char * OidOutputFunctionCall(Oid functionId, Datum val)
Datum FunctionCall5Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
const Pg_finfo_record * fetch_finfo_record(void *filehandle, const char *funcname)
struct varlena * pg_detoast_datum(struct varlena *datum)
Datum OidFunctionCall3Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3)
struct FunctionCallInfoBaseData * FunctionCallInfo
void fmgr_info_cxt(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt)
Datum OidFunctionCall8Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8)
bytea * SendFunctionCall(FmgrInfo *flinfo, Datum val)
Datum OidFunctionCall4Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4)
void SerializeLibraryState(Size maxsize, char *start_address)
DynamicFileList * get_next_loaded_module(DynamicFileList *dfptr)
Datum DirectFunctionCall4Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4)
void load_file(const char *filename, bool restricted)
Datum OidFunctionCall7Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7)
PGDLLIMPORT fmgr_hook_type fmgr_hook
void ** find_rendezvous_variable(const char *varName)
PGDLLEXPORT void _PG_init(void)
Size EstimateLibraryStateSpace(void)
bool has_fn_opclass_options(FmgrInfo *flinfo)
void * lookup_external_function(void *filehandle, const char *funcname)
int AggCheckCallContext(FunctionCallInfo fcinfo, MemoryContext *aggcontext)
bool InputFunctionCallSafe(FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod, Node *escontext, Datum *result)
Datum CallerFInfoFunctionCall2(PGFunction func, FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2)
Datum CallerFInfoFunctionCall1(PGFunction func, FmgrInfo *flinfo, Oid collation, Datum arg1)
Datum DirectFunctionCall6Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6)
struct StringInfoData * StringInfo
Datum DirectFunctionCall5Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
PGDLLIMPORT char * Dynamic_library_path
Datum OidFunctionCall1Coll(Oid functionId, Oid collation, Datum arg1)
char * OutputFunctionCall(FmgrInfo *flinfo, Datum val)
bool AggStateIsShared(FunctionCallInfo fcinfo)
bool get_fn_expr_variadic(FmgrInfo *flinfo)
Datum DirectFunctionCall1Coll(PGFunction func, Oid collation, Datum arg1)
DynamicFileList * get_first_loaded_module(void)
bytea * get_fn_opclass_options(FmgrInfo *flinfo)
Datum FunctionCall3Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3)
void(* fmgr_hook_type)(FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg)
Datum DirectFunctionCall3Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3)
Datum(* PGFunction)(FunctionCallInfo fcinfo)
Oid get_call_expr_argtype(Node *expr, int argnum)
Datum FunctionCall7Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7)
Oid get_fn_expr_argtype(FmgrInfo *flinfo, int argnum)
void * load_external_function(const char *filename, const char *funcname, bool signalNotFound, void **filehandle)
Datum OidFunctionCall0Coll(Oid functionId, Oid collation)
void fmgr_symbol(Oid functionId, char **mod, char **fn)
Datum DirectFunctionCall9Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9)
void get_loaded_module_details(DynamicFileList *dfptr, const char **library_path, const char **module_name, const char **module_version)
bytea * OidSendFunctionCall(Oid functionId, Datum val)
Datum FunctionCall1Coll(FmgrInfo *flinfo, Oid collation, Datum arg1)
Oid get_fn_expr_rettype(FmgrInfo *flinfo)
struct FunctionCallInfoBaseData FunctionCallInfoBaseData
void fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, MemoryContext destcxt)
Datum FunctionCall0Coll(FmgrInfo *flinfo, Oid collation)
Datum FunctionCall9Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9)
Datum DirectFunctionCall7Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7)
char * substitute_path_macro(const char *str, const char *macro, const char *value)
MemoryContext AggGetTempMemoryContext(FunctionCallInfo fcinfo)
bool get_call_expr_arg_stable(Node *expr, int argnum)
Datum ReceiveFunctionCall(FmgrInfo *flinfo, StringInfo buf, Oid typioparam, int32 typmod)
Datum DirectFunctionCall8Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8)
static char buf[DEFAULT_XLOG_SEG_SIZE]
NullableDatum args[FLEXIBLE_ARRAY_MEMBER]
static void * fn(void *arg)