47 bool killedsomething =
false;
84 killedsomething =
true;
131 bool *recheck_distances_p)
141 *recheck_distances_p =
false;
153 elog(
ERROR,
"invalid GiST tuple found on leaf page");
170 giststate->leafTupdesc,
204 datum, r, page, offset,
232 *recheck_p |= recheck;
250 giststate->leafTupdesc,
256 distance_p->value = 0.0;
257 distance_p->isnull =
true;
266 datum, r, page, offset,
293 *recheck_distances_p |= recheck;
295 distance_p->isnull =
false;
367 Assert(myDistances != NULL);
373 item->
blkno = opaque->rightlink;
421 bool recheck_distances;
439 &recheck, &recheck_distances);
619 elog(
ERROR,
"GiST only supports forward scan direction");
763 memset(&fakeItem.data.parentlsn, 0,
sizeof(
GistNSN));
#define GistMarkPageHasGarbage(page)
#define GistFollowRight(page)
#define GistPageGetNSN(page)
void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot)
IndexOrderByDistance * distances
static void TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page)
#define GistPageIsDeleted(page)
static bool gistindex_keytest(IndexScanDesc scan, IndexTuple tuple, Page page, OffsetNumber offset, bool *recheck_p, bool *recheck_distances_p)
IndexOrderByDistance distances[FLEXIBLE_ARRAY_MEMBER]
static float8 get_float8_infinity(void)
OffsetNumber * killedItems
struct ScanKeyData * orderByData
void MarkBufferDirtyHint(Buffer buffer, bool buffer_std)
#define ItemIdMarkDead(itemId)
union GISTSearchItem::@41 data
#define PointerGetDatum(X)
Datum FunctionCall5Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
void tbm_add_tuples(TIDBitmap *tbm, const ItemPointer tids, int ntids, bool recheck)
bool gistgettuple(IndexScanDesc scan, ScanDirection dir)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
#define pairingheap_is_empty(h)
#define GistTupleIsInvalid(itup)
struct SnapshotData * xs_snapshot
void MemoryContextReset(MemoryContext context)
MemoryContext pageDataCxt
#define ItemIdIsDead(itemId)
#define OidIsValid(objectId)
#define PageGetMaxOffsetNumber(page)
bool ignore_killed_tuples
void pfree(void *pointer)
void gistdentryinit(GISTSTATE *giststate, int nkey, GISTENTRY *e, Datum k, Relation r, Page pg, OffsetNumber o, bool l, bool isNull)
void UnlockReleaseBuffer(Buffer buffer)
#define ObjectIdGetDatum(X)
#define GIST_COMPRESS_PROC
GISTScanOpaqueData * GISTScanOpaque
ItemPointerData xs_heaptid
XLogRecPtr BufferGetLSNAtomic(Buffer buffer)
#define FirstOffsetNumber
IndexTupleData * IndexTuple
#define pgstat_count_index_scan(rel)
static void gistScanPage(IndexScanDesc scan, GISTSearchItem *pageItem, IndexOrderByDistance *myDistances, TIDBitmap *tbm, int64 *ntids)
#define GISTSearchItemIsHeap(item)
#define IndexRelationGetNumberOfKeyAttributes(relation)
HeapTuple gistFetchTuple(GISTSTATE *giststate, Relation r, IndexTuple tuple)
#define BufferGetPage(buffer)
static GISTSearchItem * getNextGISTSearchItem(GISTScanOpaque so)
int64 gistgetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
#define GistPageIsLeaf(page)
#define XLogRecPtrIsInvalid(r)
#define PageGetItemId(page, offsetNumber)
void index_store_float8_orderby_distances(IndexScanDesc scan, Oid *orderByTypes, IndexOrderByDistance *distances, bool recheckOrderBy)
#define DatumGetFloat8(X)
void LockBuffer(Buffer buffer, int mode)
bool gistcanreturn(Relation index, int attno)
#define GistPageGetOpaque(page)
#define Assert(condition)
static bool getNextNearest(IndexScanDesc scan)
GISTSearchHeapItem pageData[BLCKSZ/sizeof(IndexTupleData)]
void gistcheckpage(Relation rel, Buffer buf)
Buffer ReadBuffer(Relation reln, BlockNumber blockNum)
#define OffsetNumberNext(offsetNumber)
#define InvalidBlockNumber
#define BufferIsValid(bufnum)
#define index_getattr(tup, attnum, tupleDesc, isnull)
struct ScanKeyData * keyData
BlockNumber BufferGetBlockNumber(Buffer buffer)
static void gistkillitems(IndexScanDesc scan)
#define MaxIndexTuplesPerPage
#define SizeOfGISTSearchItem(n_distances)
pairingheap_node * pairingheap_remove_first(pairingheap *heap)
#define CHECK_FOR_INTERRUPTS()
void pairingheap_add(pairingheap *heap, pairingheap_node *node)
#define ItemPointerGetBlockNumber(pointer)
#define PageGetItem(page, itemId)
RegProcedure index_getprocid(Relation irel, AttrNumber attnum, uint16 procnum)