PostgreSQL Source Code: src/backend/utils/adt/multixactfuncs.c Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
16
20#include "catalog/pg_authid_d.h"
25
26
27
28
29
30
31
34{
35 typedef struct
36 {
38 int nmembers;
39 int iter;
44
48 errmsg("invalid MultiXactId: %u", mxid)));
49
51 {
54
57
59
61 false);
62 multi->iter = 0;
63
65 elog(ERROR, "return type must be a row type");
66 funccxt->tuple_desc = tupdesc;
68 funccxt->user_fctx = multi;
69
71 }
72
75
76 while (multi->iter < multi->nmembers)
77 {
80
81 values[0] = psprintf("%u", multi->members[multi->iter].xid);
83
85
86 multi->iter++;
89 }
90
92}
93
94
95
96
97
98
101{
104 bool nulls[4];
111
115 errmsg("return type must be a row type")));
116
118 members = nextOffset - oldestOffset;
119
121
123 {
124
125
126
127
128 memset(nulls, true, sizeof(bool) * tupdesc->natts);
129 }
130 else
131 {
136 memset(nulls, false, sizeof(nulls));
137 }
138
140}
bool has_privs_of_role(Oid member, Oid role)
static Datum values[MAXATTR]
TransactionId MultiXactId
int errcode(int sqlerrcode)
#define ereport(elevel,...)
HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values)
AttInMetadata * TupleDescGetAttInMetadata(TupleDesc tupdesc)
#define palloc_object(type)
#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)
HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull)
void pfree(void *pointer)
char * mxstatus_to_string(MultiXactStatus status)
void GetMultiXactInfo(uint32 *multixacts, MultiXactOffset *nextOffset, MultiXactId *oldestMultiXactId, MultiXactOffset *oldestOffset)
int GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members, bool from_pgupgrade, bool isLockOnly)
static uint64 MultiXactOffsetStorageSize(MultiXactOffset new_offset, MultiXactOffset old_offset)
Datum pg_get_multixact_stats(PG_FUNCTION_ARGS)
Datum pg_get_multixact_members(PG_FUNCTION_ARGS)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
static Datum Int64GetDatum(int64 X)
static Datum UInt32GetDatum(uint32 X)
char * psprintf(const char *fmt,...)