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");
264 MemSet(nulls, 0,
sizeof(nulls));
315 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
316 errmsg(
"must be superuser to use raw page functions")));
338 elog(
ERROR,
"return type must be a row type");
364 MemSet(nulls, 0,
sizeof(nulls));
417 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
418 errmsg(
"must be superuser to use raw page functions")));
424 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
425 errmsg(
"\"%s\" is not a %s index",
430 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
431 errmsg(
"cannot access temporary tables of other sessions")));
435 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
436 errmsg(
"invalid block number")));
440 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
441 errmsg(
"block number %lld is out of range for relation \"%s\"",
454 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
455 errmsg(
"invalid overflow block number %u",
460 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
461 errmsg(
"invalid overflow block number %u",
471 bitmapbit = ovflbitno &
BMPG_MASK(metap);
475 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
476 errmsg(
"invalid overflow block number %u",
495 elog(
ERROR,
"return type must be a row type");
498 MemSet(nulls, 0,
sizeof(nulls));
535 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
536 errmsg(
"must be superuser to use raw page functions")));
542 elog(
ERROR,
"return type must be a row type");
547 MemSet(nulls, 0,
sizeof(nulls));
ArrayType * construct_array(Datum *elems, int nelems, Oid elmtype, int elmlen, bool elmbyval, char elmalign)
#define InvalidBlockNumber
static Datum values[MAXATTR]
#define RelationGetNumberOfBlocks(reln)
#define BufferGetPage(buffer)
Size PageGetFreeSpace(Page page)
#define PageGetSpecialSize(page)
#define PageGetMaxOffsetNumber(page)
#define PageGetItemId(page, offsetNumber)
#define PageGetItem(page, itemId)
#define PageGetPageSize(page)
#define MemSet(start, val, len)
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 HeapTupleGetDatum(tuple)
#define SRF_RETURN_NEXT(_funcctx, _result)
#define SRF_FIRSTCALL_INIT()
#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, Datum *values, 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)
#define ObjectIdGetDatum(X)
#define PointerGetDatum(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)