PostgreSQL Source Code: src/backend/backup/walsummaryfuncs.c Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
14
20#include "utils/fmgrprotos.h"
22
23#define NUM_WS_ATTS 3
24#define NUM_SUMMARY_ATTS 6
25#define NUM_STATE_ATTS 4
26#define MAX_BLOCKS_PER_CALL 256
27
28
29
30
33{
39
42
43 memset(nulls, 0, sizeof(nulls));
44
46 foreach(lc, wslist)
47 {
50
52
56
59 }
60
62}
63
64
65
66
67
70{
81
84 memset(nulls, 0, sizeof(nulls));
85
86
87
88
89
90
94 errcode(ERRCODE_INVALID_PARAMETER_VALUE),
95 errmsg("invalid timeline %" PRId64, raw_tli));
96
97
106
107
109 &limit_block))
110 {
113
115
120
121
122
123
124
125
126
127
128
130 {
133
136 }
137
138
139 while (1)
140 {
141 unsigned nblocks;
142 unsigned i;
143
145
148 if (nblocks == 0)
149 break;
150
151
152
153
154
156 for (i = 0; i < nblocks; ++i)
157 {
159
162 }
163 }
164 }
165
166
169
170 return (Datum) 0;
171}
172
173
174
175
178{
184 int summarizer_pid;
187
189 &summarizer_pid);
190
192 elog(ERROR, "return type must be a row type");
193
194 memset(nulls, 0, sizeof(nulls));
195
199
200 if (summarizer_pid < 0)
201 nulls[3] = true;
202 else
204
206
208}
bool BlockRefTableReaderNextRelation(BlockRefTableReader *reader, RelFileLocator *rlocator, ForkNumber *forknum, BlockNumber *limit_block)
BlockRefTableReader * CreateBlockRefTableReader(io_callback_fn read_callback, void *read_callback_arg, char *error_filename, report_error_fn error_callback, void *error_callback_arg)
unsigned BlockRefTableReaderGetBlocks(BlockRefTableReader *reader, BlockNumber *blocks, int nblocks)
void DestroyBlockRefTableReader(BlockRefTableReader *reader)
static bool BlockNumberIsValid(BlockNumber blockNumber)
static Datum values[MAXATTR]
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
char * FilePathName(File file)
void FileClose(File file)
Datum Int64GetDatum(int64 X)
#define PG_GETARG_INT64(n)
#define PG_RETURN_DATUM(x)
void InitMaterializedSRF(FunctionCallInfo fcinfo, bits32 flags)
TypeFuncClass get_call_result_type(FunctionCallInfo fcinfo, Oid *resultTypeId, TupleDesc *resultTupleDesc)
static Datum HeapTupleGetDatum(const HeapTupleData *tuple)
HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull)
#define CHECK_FOR_INTERRUPTS()
static Datum LSNGetDatum(XLogRecPtr X)
static Datum Int16GetDatum(int16 X)
static Datum BoolGetDatum(bool X)
static Datum ObjectIdGetDatum(Oid X)
static Datum Int32GetDatum(int32 X)
Tuplestorestate * setResult
void tuplestore_puttuple(Tuplestorestate *state, HeapTuple tuple)
void GetWalSummarizerState(TimeLineID *summarized_tli, XLogRecPtr *summarized_lsn, XLogRecPtr *pending_lsn, int *summarizer_pid)
File OpenWalSummaryFile(WalSummaryFile *ws, bool missing_ok)
int ReadWalSummary(void *wal_summary_io, void *data, int length)
List * GetWalSummaries(TimeLineID tli, XLogRecPtr start_lsn, XLogRecPtr end_lsn)
void ReportWalSummaryError(void *callback_arg, char *fmt,...)
Datum pg_get_wal_summarizer_state(PG_FUNCTION_ARGS)
Datum pg_available_wal_summaries(PG_FUNCTION_ARGS)
#define MAX_BLOCKS_PER_CALL
Datum pg_wal_summary_contents(PG_FUNCTION_ARGS)
#define InvalidXLogRecPtr