54 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
55 errmsg(
"invalid block number")));
81 (
errmsg(
"wrong number of arguments to get_raw_page()"),
82 errhint(
"Run the updated pageinspect.sql script.")));
109 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
110 errmsg(
"invalid block number")));
152 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
153 errmsg(
"must be superuser to use raw page functions")));
159 if (rel->
rd_rel->relkind == RELKIND_VIEW)
161 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
162 errmsg(
"cannot get raw page from view \"%s\"",
164 if (rel->
rd_rel->relkind == RELKIND_COMPOSITE_TYPE)
166 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
167 errmsg(
"cannot get raw page from composite type \"%s\"",
169 if (rel->
rd_rel->relkind == RELKIND_FOREIGN_TABLE)
171 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
172 errmsg(
"cannot get raw page from foreign table \"%s\"",
174 if (rel->
rd_rel->relkind == RELKIND_PARTITIONED_TABLE)
176 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
177 errmsg(
"cannot get raw page from partitioned table \"%s\"",
179 if (rel->
rd_rel->relkind == RELKIND_PARTITIONED_INDEX)
181 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
182 errmsg(
"cannot get raw page from partitioned index \"%s\"",
192 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
193 errmsg(
"cannot access temporary tables of other sessions")));
197 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
198 errmsg(
"block number %u is out of range for relation \"%s\"",
204 raw_page_data =
VARDATA(raw_page);
242 if (raw_page_size != BLCKSZ)
244 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
245 errmsg(
"invalid page size"),
247 BLCKSZ, raw_page_size)));
249 page =
palloc(raw_page_size);
251 memcpy(page,
VARDATA_ANY(raw_page), raw_page_size);
283 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
284 errmsg(
"must be superuser to use raw page functions")));
294 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
295 errmsg(
"input page too small (%d bytes)", raw_page_size)));
301 elog(
ERROR,
"return type must be a row type");
328 memset(nulls, 0,
sizeof(nulls));
355 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
356 errmsg(
"must be superuser to use raw page functions")));
360 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
361 errmsg(
"invalid block number")));
368 if (raw_page_size != BLCKSZ)
370 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
371 errmsg(
"incorrect size of input page (%d bytes)", raw_page_size)));
#define PG_GETARG_UINT32(n)
Page get_page_from_raw(bytea *raw_page)
#define BUFFER_LOCK_UNLOCK
TypeFuncClass get_call_result_type(FunctionCallInfo fcinfo, Oid *resultTypeId, TupleDesc *resultTupleDesc)
int errhint(const char *fmt,...)
#define TupleDescAttr(tupdesc, i)
Buffer ReadBufferExtended(Relation reln, ForkNumber forkNum, BlockNumber blockNum, ReadBufferMode mode, BufferAccessStrategy strategy)
#define PG_RETURN_INT16(x)
int errcode(int sqlerrcode)
void ReleaseBuffer(Buffer buffer)
static bytea * get_raw_page_internal(text *relname, ForkNumber forknum, BlockNumber blkno)
RangeVar * makeRangeVarFromNameList(List *names)
HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, Datum *values, bool *isnull)
#define PG_RETURN_BYTEA_P(x)
#define SizeOfPageHeaderData
static Datum page_checksum_internal(PG_FUNCTION_ARGS, enum pageinspect_version ext_version)
ForkNumber forkname_to_number(const char *forkName)
#define PG_GETARG_TEXT_PP(n)
#define PG_GETARG_BYTEA_P(n)
#define LSN_FORMAT_ARGS(lsn)
Datum page_header(PG_FUNCTION_ARGS)
#define PageGetPageLayoutVersion(page)
int errdetail(const char *fmt,...)
#define PageGetPageSize(page)
#define RelationGetRelationName(relation)
#define BufferGetPage(buffer)
List * textToQualifiedNameList(text *textval)
#define TransactionIdGetDatum(X)
Datum get_raw_page_fork(PG_FUNCTION_ARGS)
#define PG_RETURN_DATUM(x)
void LockBuffer(Buffer buffer, int mode)
Relation relation_openrv(const RangeVar *relation, LOCKMODE lockmode)
#define ereport(elevel,...)
Datum get_raw_page(PG_FUNCTION_ARGS)
BlockNumber RelationGetNumberOfBlocksInFork(Relation relation, ForkNumber forkNum)
Datum get_raw_page_1_9(PG_FUNCTION_ARGS)
PageHeaderData * PageHeader
Datum page_checksum_1_9(PG_FUNCTION_ARGS)
void relation_close(Relation relation, LOCKMODE lockmode)
#define RELATION_IS_OTHER_TEMP(relation)
#define HeapTupleGetDatum(tuple)
PG_FUNCTION_INFO_V1(get_raw_page_1_9)
Datum get_raw_page_fork_1_9(PG_FUNCTION_ARGS)
static Datum values[MAXATTR]
char * text_to_cstring(const text *t)
#define VARSIZE_ANY_EXHDR(PTR)
int errmsg(const char *fmt,...)
#define BUFFER_LOCK_SHARE
#define CStringGetTextDatum(s)
#define SET_VARSIZE(PTR, len)
#define PG_GETARG_INT64(n)
#define UInt16GetDatum(X)
uint16 pg_checksum_page(char *page, BlockNumber blkno)
Datum page_checksum(PG_FUNCTION_ARGS)