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,...)