33 .
name =
"pageinspect",
58 errmsg(
"invalid block number")));
84 (
errmsg(
"wrong number of arguments to get_raw_page()"),
85 errhint(
"Run the updated pageinspect.sql script.")));
113 errmsg(
"invalid block number")));
156 errmsg(
"must be superuser to use raw page functions")));
164 errmsg(
"cannot get raw page from relation \"%s\"",
176 errmsg(
"cannot access temporary tables of other sessions")));
181 errmsg(
"block number %u is out of range for relation \"%s\"",
228 errmsg(
"invalid page size"),
267 errmsg(
"must be superuser to use raw page functions")));
274 elog(
ERROR,
"return type must be a row type");
324 memset(nulls, 0,
sizeof(nulls));
351 errmsg(
"must be superuser to use raw page functions")));
356 errmsg(
"invalid block number")));
static Datum values[MAXATTR]
BlockNumber RelationGetNumberOfBlocksInFork(Relation relation, ForkNumber forkNum)
void ReleaseBuffer(Buffer buffer)
Buffer ReadBufferExtended(Relation reln, ForkNumber forkNum, BlockNumber blockNum, ReadBufferMode mode, BufferAccessStrategy strategy)
static Page BufferGetPage(Buffer buffer)
static void LockBuffer(Buffer buffer, BufferLockMode mode)
PageHeaderData * PageHeader
static Size PageGetPageSize(const PageData *page)
static bool PageIsNew(const PageData *page)
static uint8 PageGetPageLayoutVersion(const PageData *page)
static XLogRecPtr PageGetLSN(const PageData *page)
#define CStringGetTextDatum(s)
#define Assert(condition)
uint16 pg_checksum_page(char *page, BlockNumber blkno)
int errdetail(const char *fmt,...)
int errhint(const char *fmt,...)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define PG_GETARG_TEXT_PP(n)
#define PG_RETURN_BYTEA_P(x)
#define PG_GETARG_UINT32(n)
#define PG_MODULE_MAGIC_EXT(...)
#define PG_GETARG_INT64(n)
#define PG_FUNCTION_INFO_V1(funcname)
#define PG_RETURN_INT16(x)
#define PG_RETURN_DATUM(x)
#define PG_GETARG_BYTEA_P(n)
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)
RangeVar * makeRangeVarFromNameList(const List *names)
int errdetail_relkind_not_supported(char relkind)
static Datum LSNGetDatum(XLogRecPtr X)
static char buf[DEFAULT_XLOG_SEG_SIZE]
static Datum TransactionIdGetDatum(TransactionId X)
static Datum UInt16GetDatum(uint16 X)
static Datum Int32GetDatum(int32 X)
Datum get_raw_page(PG_FUNCTION_ARGS)
Datum page_checksum(PG_FUNCTION_ARGS)
Datum page_checksum_1_9(PG_FUNCTION_ARGS)
Datum get_raw_page_fork_1_9(PG_FUNCTION_ARGS)
static Datum page_checksum_internal(PG_FUNCTION_ARGS, enum pageinspect_version ext_version)
static bytea * get_raw_page_internal(text *relname, ForkNumber forknum, BlockNumber blkno)
Datum page_header(PG_FUNCTION_ARGS)
Datum get_raw_page_1_9(PG_FUNCTION_ARGS)
Page get_page_from_raw(bytea *raw_page)
Datum get_raw_page_fork(PG_FUNCTION_ARGS)
#define RelationGetRelationName(relation)
#define RELATION_IS_OTHER_TEMP(relation)
ForkNumber forkname_to_number(const char *forkName)
void relation_close(Relation relation, LOCKMODE lockmode)
Relation relation_openrv(const RangeVar *relation, LOCKMODE lockmode)
static FormData_pg_attribute * TupleDescAttr(TupleDesc tupdesc, int i)
static Size VARSIZE_ANY_EXHDR(const void *PTR)
static char * VARDATA(const void *PTR)
static char * VARDATA_ANY(const void *PTR)
static void SET_VARSIZE(void *PTR, Size len)
char * text_to_cstring(const text *t)
List * textToQualifiedNameList(text *textval)
#define LSN_FORMAT_ARGS(lsn)