30 #define IS_HASH(r) ((r)->rd_rel->relam == HASH_AM_OID)
69 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
70 errmsg(
"input page is not a valid %s page",
"hash"),
71 errdetail(
"Expected special size %d, got %d.",
78 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
79 errmsg(
"input page is not a valid %s page",
"hash"),
91 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
92 errmsg(
"invalid hash page type %08x", pagetype)));
95 if (flags != 0 && (pagetype & flags) == 0)
101 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
102 errmsg(
"page is not a hash meta page")));
106 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
107 errmsg(
"page is not a hash bucket or overflow page")));
111 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
112 errmsg(
"page is not a hash overflow page")));
116 "hash page of type %08x not in mask %08x",
131 (
errcode(ERRCODE_INDEX_CORRUPTED),
132 errmsg(
"invalid magic number for metadata"),
133 errdetail(
"Expected 0x%08x, got 0x%08x.",
138 (
errcode(ERRCODE_INDEX_CORRUPTED),
139 errmsg(
"invalid version for metadata"),
160 stat->dead_items =
stat->live_items = 0;
200 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
201 errmsg(
"must be superuser to use raw page functions")));
248 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
249 errmsg(
"must be superuser to use raw page functions")));
255 stat.hasho_flag =
stat.hasho_page_id =
stat.free_size = 0;
261 elog(
ERROR,
"return type must be a row type");
313 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
314 errmsg(
"must be superuser to use raw page functions")));
336 elog(
ERROR,
"return type must be a row type");
413 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
414 errmsg(
"must be superuser to use raw page functions")));
420 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
421 errmsg(
"\"%s\" is not a %s index",
426 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
427 errmsg(
"cannot access temporary tables of other sessions")));
431 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
432 errmsg(
"invalid block number")));
436 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
437 errmsg(
"block number %lld is out of range for relation \"%s\"",
450 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
451 errmsg(
"invalid overflow block number %u",
456 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
457 errmsg(
"invalid overflow block number %u",
467 bitmapbit = ovflbitno &
BMPG_MASK(metap);
471 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
472 errmsg(
"invalid overflow block number %u",
491 elog(
ERROR,
"return type must be a row type");
523 bool nulls[16] = {0};
529 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
530 errmsg(
"must be superuser to use raw page functions")));
536 elog(
ERROR,
"return type must be a row type");
ArrayType * construct_array_builtin(Datum *elems, int nelems, Oid elmtype)
#define InvalidBlockNumber
static Datum values[MAXATTR]
#define RelationGetNumberOfBlocks(reln)
static Page BufferGetPage(Buffer buffer)
Size PageGetFreeSpace(Page page)
static Item PageGetItem(Page page, ItemId itemId)
static Size PageGetPageSize(Page page)
static ItemId PageGetItemId(Page page, OffsetNumber offsetNumber)
static bool PageIsNew(Page page)
static OffsetNumber PageGetMaxOffsetNumber(Page page)
static uint16 PageGetSpecialSize(Page page)
elog(ERROR, "%s: %s", p2, msg)
int errdetail(const char *fmt,...)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
TupleDesc BlessTupleDesc(TupleDesc tupdesc)
AttInMetadata * TupleDescGetAttInMetadata(TupleDesc tupdesc)
Datum Int64GetDatum(int64 X)
Datum Float8GetDatum(float8 X)
#define PG_GETARG_INT64(n)
#define PG_RETURN_TEXT_P(x)
#define PG_RETURN_DATUM(x)
#define PG_GETARG_BYTEA_P(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)
#define HashPageGetOpaque(page)
#define HASH_MAX_SPLITPOINTS
#define HashPageGetBitmap(page)
#define HashPageGetMeta(page)
#define BMPG_SHIFT(metap)
Datum hash_bitmap_info(PG_FUNCTION_ARGS)
Datum hash_page_stats(PG_FUNCTION_ARGS)
PG_FUNCTION_INFO_V1(hash_page_type)
Datum hash_page_type(PG_FUNCTION_ARGS)
Datum hash_metapage_info(PG_FUNCTION_ARGS)
struct HashPageStat HashPageStat
static Page verify_hash_page(bytea *raw_page, int flags)
static void GetHashPageStatistics(Page page, HashPageStat *stat)
Datum hash_page_items(PG_FUNCTION_ARGS)
uint32 _hash_ovflblkno_to_bitno(HashMetaPage metap, BlockNumber ovflblkno)
void _hash_relbuf(Relation rel, Buffer buf)
Buffer _hash_getbuf(Relation rel, BlockNumber blkno, int access, int flags)
uint32 _hash_get_indextuple_hashkey(IndexTuple itup)
HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull)
void index_close(Relation relation, LOCKMODE lockmode)
Relation index_open(Oid relationId, LOCKMODE lockmode)
#define ItemIdIsDead(itemId)
#define ItemIdIsValid(itemId)
IndexTupleData * IndexTuple
#define FirstOffsetNumber
Page get_page_from_raw(bytea *raw_page)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
static Datum PointerGetDatum(const void *X)
static Datum BoolGetDatum(bool X)
static Datum ObjectIdGetDatum(Oid X)
static Datum Int32GetDatum(int32 X)
#define RelationGetRelationName(relation)
#define RELATION_IS_OTHER_TEMP(relation)
AttInMetadata * attinmeta
MemoryContext multi_call_memory_ctx
BlockNumber hashm_mapp[HASH_MAX_BITMAPS]
RegProcedure hashm_procid
uint32 hashm_spares[HASH_MAX_SPLITPOINTS]
BlockNumber hasho_nextblkno
BlockNumber hasho_prevblkno
BlockNumber hasho_prevblkno
BlockNumber hasho_nextblkno
Datum bit(PG_FUNCTION_ARGS)
text * cstring_to_text(const char *s)