42 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
43 errmsg(
"invalid MultiXactId: %u", mxid)));
53 multi =
palloc(
sizeof(mxact));
60 elog(
ERROR,
"return type must be a row type");
71 while (multi->iter < multi->nmembers)
static Datum values[MAXATTR]
TransactionId MultiXactId
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values)
AttInMetadata * TupleDescGetAttInMetadata(TupleDesc tupdesc)
#define PG_GETARG_TRANSACTIONID(n)
TypeFuncClass get_call_result_type(FunctionCallInfo fcinfo, Oid *resultTypeId, TupleDesc *resultTupleDesc)
#define SRF_IS_FIRSTCALL()
#define SRF_PERCALL_SETUP()
#define SRF_RETURN_NEXT(_funcctx, _result)
#define SRF_FIRSTCALL_INIT()
static Datum HeapTupleGetDatum(const HeapTupleData *tuple)
#define SRF_RETURN_DONE(_funcctx)
void pfree(void *pointer)
char * mxstatus_to_string(MultiXactStatus status)
int GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members, bool from_pgupgrade, bool isLockOnly)
Datum pg_get_multixact_members(PG_FUNCTION_ARGS)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
char * psprintf(const char *fmt,...)
AttInMetadata * attinmeta
MemoryContext multi_call_memory_ctx