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 InvalidBlockNumber
BlockNumber BufferGetBlockNumber(Buffer buffer)
XLogRecPtr BufferGetLSNAtomic(Buffer buffer)
void UnlockReleaseBuffer(Buffer buffer)
void LockBuffer(Buffer buffer, int mode)
void MarkBufferDirtyHint(Buffer buffer, bool buffer_std)
Buffer ReadBuffer(Relation reln, BlockNumber blockNum)
#define BufferIsValid(bufnum)
static void TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page)
#define BufferGetPage(buffer)
#define PageGetMaxOffsetNumber(page)
#define PageGetItemId(page, offsetNumber)
#define PageGetItem(page, itemId)
#define OidIsValid(objectId)
static void PGresult * res
elog(ERROR, "%s: %s", p2, msg)
static float8 get_float8_infinity(void)
Datum FunctionCall5Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5)
#define GIST_COMPRESS_PROC
#define GistPageIsLeaf(page)
#define GistFollowRight(page)
#define GistPageIsDeleted(page)
#define GistPageGetOpaque(page)
#define GistMarkPageHasGarbage(page)
#define GistPageGetNSN(page)
GISTScanOpaqueData * GISTScanOpaque
#define SizeOfGISTSearchItem(n_distances)
#define GistTupleIsInvalid(itup)
#define GISTSearchItemIsHeap(item)
static bool getNextNearest(IndexScanDesc scan)
static bool gistindex_keytest(IndexScanDesc scan, IndexTuple tuple, Page page, OffsetNumber offset, bool *recheck_p, bool *recheck_distances_p)
bool gistgettuple(IndexScanDesc scan, ScanDirection dir)
int64 gistgetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
static GISTSearchItem * getNextGISTSearchItem(GISTScanOpaque so)
bool gistcanreturn(Relation index, int attno)
static void gistScanPage(IndexScanDesc scan, GISTSearchItem *pageItem, IndexOrderByDistance *myDistances, TIDBitmap *tbm, int64 *ntids)
static void gistkillitems(IndexScanDesc scan)
HeapTuple gistFetchTuple(GISTSTATE *giststate, Relation r, IndexTuple tuple)
void gistdentryinit(GISTSTATE *giststate, int nkey, GISTENTRY *e, Datum k, Relation r, Page pg, OffsetNumber o, bool l, bool isNull)
void gistcheckpage(Relation rel, Buffer buf)
RegProcedure index_getprocid(Relation irel, AttrNumber attnum, uint16 procnum)
void index_store_float8_orderby_distances(IndexScanDesc scan, Oid *orderByTypes, IndexOrderByDistance *distances, bool recheckOrderBy)
if(TABLE==NULL||TABLE_index==NULL)
#define ItemIdMarkDead(itemId)
#define ItemIdIsDead(itemId)
#define ItemPointerGetBlockNumber(pointer)
#define index_getattr(tup, attnum, tupleDesc, isnull)
IndexTupleData * IndexTuple
#define MaxIndexTuplesPerPage
Assert(fmt[strlen(fmt) - 1] !='\n')
void MemoryContextReset(MemoryContext context)
void pfree(void *pointer)
#define CHECK_FOR_INTERRUPTS()
#define OffsetNumberNext(offsetNumber)
#define FirstOffsetNumber
void pairingheap_add(pairingheap *heap, pairingheap_node *node)
pairingheap_node * pairingheap_remove_first(pairingheap *heap)
#define pairingheap_is_empty(h)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
#define pgstat_count_index_scan(rel)
#define ObjectIdGetDatum(X)
#define DatumGetFloat8(X)
#define PointerGetDatum(X)
void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot)
#define IndexRelationGetNumberOfKeyAttributes(relation)
OffsetNumber * killedItems
GISTSearchHeapItem pageData[BLCKSZ/sizeof(IndexTupleData)]
IndexOrderByDistance * distances
MemoryContext pageDataCxt
union GISTSearchItem::@44 data
IndexOrderByDistance distances[FLEXIBLE_ARRAY_MEMBER]
struct ScanKeyData * keyData
struct ScanKeyData * orderByData
bool ignore_killed_tuples
ItemPointerData xs_heaptid
struct SnapshotData * xs_snapshot
void tbm_add_tuples(TIDBitmap *tbm, const ItemPointer tids, int ntids, bool recheck)
#define XLogRecPtrIsInvalid(r)