|
PostgreSQL Source Code git master
|
#include "postgres.h"#include "access/genam.h"#include "access/relscan.h"#include "access/spgist_private.h"#include "executor/instrument_node.h"#include "miscadmin.h"#include "pgstat.h"#include "storage/bufmgr.h"#include "utils/datum.h"#include "utils/float.h"#include "utils/lsyscache.h"#include "utils/memutils.h"#include "utils/rel.h"
Go to the source code of this file.
Typedefs | |
| typedef void(* | storeRes_func) (SpGistScanOpaque so, ItemPointer heapPtr, Datum leafValue, bool isNull, SpGistLeafTuple leafTuple, bool recheck, bool recheckDistances, double *distances) |
Enumerations | |
| enum | SpGistSpecialOffsetNumbers { SpGistBreakOffsetNumber = InvalidOffsetNumber , SpGistRedirectOffsetNumber = MaxOffsetNumber + 1 , SpGistErrorOffsetNumber = MaxOffsetNumber + 2 } |
| typedef void(* storeRes_func) (SpGistScanOpaque so, ItemPointer heapPtr, Datum leafValue, bool isNull, SpGistLeafTuple leafTuple, bool recheck, bool recheckDistances, double *distances) |
|
static |
Definition at line 42 of file spgscan.c.
References a, arg, b, fb(), and i.
Referenced by resetSpGistScanOpaque().
|
static |
Definition at line 155 of file spgscan.c.
References fb(), i, MemoryContextReset(), MemoryContextSwitchTo(), pairingheap_allocate(), pairingheap_SpGistSearchItem_cmp(), pfree(), and spgAddStartItem().
Referenced by spgrescan().
|
static |
Definition at line 109 of file spgscan.c.
References fb(), pairingheap_add(), and SpGistSearchItem::phNode.
Referenced by spgAddStartItem(), spgInnerTest(), and spgLeafTest().
|
static |
Definition at line 131 of file spgscan.c.
References fb(), FirstOffsetNumber, ItemPointerSet(), spgAddSearchItemToQueue(), spgAllocSearchItem(), SPGIST_NULL_BLKNO, and SPGIST_ROOT_BLKNO.
Referenced by resetSpGistScanOpaque().
|
static |
Definition at line 115 of file spgscan.c.
References SpGistSearchItem::distances, fb(), SpGistSearchItem::isNull, palloc(), and SizeOfSpGistSearchItem.
Referenced by spgAddStartItem(), spgMakeInnerItem(), and spgNewHeapItem().
| IndexScanDesc spgbeginscan | ( | Relation | rel, |
| int | keysz, | ||
| int | orderbysz | ||
| ) |
Definition at line 305 of file spgscan.c.
References ALLOCSET_DEFAULT_SIZES, AllocSetContextCreate, CurrentMemoryContext, fb(), fmgr_info_copy(), get_float8_infinity(), getSpGistTupleDesc(), i, index_getprocinfo(), IndexScanDescData::indexRelation, initSpGistState(), IndexScanDescData::numberOfOrderBys, IndexScanDescData::opaque, palloc0_array, palloc0_object, palloc_array, RelationData::rd_indcollation, RelationGetIndexScan(), SPGIST_INNER_CONSISTENT_PROC, SPGIST_LEAF_CONSISTENT_PROC, IndexScanDescData::xs_hitupdesc, IndexScanDescData::xs_orderbynulls, and IndexScanDescData::xs_orderbyvals.
Referenced by spghandler().
Definition at line 1078 of file spgscan.c.
References spgConfigOut::canReturnData, SpGistCache::config, and spgGetCache().
Referenced by spghandler().
| void spgendscan | ( | IndexScanDesc | scan | ) |
Definition at line 424 of file spgscan.c.
References fb(), FreeTupleDesc(), MemoryContextDelete(), IndexScanDescData::numberOfOrderBys, IndexScanDescData::opaque, pfree(), RelationGetDescr, IndexScanDescData::xs_orderbynulls, and IndexScanDescData::xs_orderbyvals.
Referenced by spghandler().
|
static |
Definition at line 85 of file spgscan.c.
References DatumGetPointer(), fb(), SpGistSearchItem::isLeaf, SpGistSearchItem::leafTuple, pfree(), SpGistSearchItem::traversalValue, and SpGistSearchItem::value.
Referenced by spgWalk().
| int64 spggetbitmap | ( | IndexScanDesc | scan, |
| TIDBitmap * | tbm | ||
| ) |
Definition at line 937 of file spgscan.c.
References fb(), IndexScanDescData::indexRelation, IndexScanDescData::opaque, spgWalk(), and storeBitmap().
Referenced by spghandler().
|
static |
Definition at line 741 of file spgscan.c.
References fb(), pairingheap_is_empty, and pairingheap_remove_first().
Referenced by spgWalk().
| bool spggettuple | ( | IndexScanDesc | scan, |
| ScanDirection | dir | ||
| ) |
Definition at line 1021 of file spgscan.c.
References elog, ERROR, fb(), ForwardScanDirection, i, index_store_float8_orderby_distances(), IndexScanDescData::indexRelation, IndexScanDescData::opaque, pfree(), spgWalk(), storeGettuple(), IndexScanDescData::xs_heaptid, IndexScanDescData::xs_hitup, IndexScanDescData::xs_recheck, and IndexScanDescData::xs_want_itup.
Referenced by spghandler().
|
static |
Definition at line 601 of file spgscan.c.
References spgInnerConsistentIn::allTheSame, Assert, fb(), spgInnerConsistentIn::hasPrefix, SpGistSearchItem::isLeaf, spgInnerConsistentIn::level, SpGistSearchItem::level, spgInnerConsistentIn::nkeys, spgInnerConsistentIn::nNodes, spgInnerConsistentIn::nodeLabels, spgInnerConsistentIn::norderbys, spgInnerConsistentIn::orderbys, spgInnerConsistentIn::prefixDatum, spgInnerConsistentIn::reconstructedValue, spgInnerConsistentIn::returnData, spgInnerConsistentIn::scankeys, SGITDATUM, spgExtractNodeLabels(), spgInnerConsistentIn::traversalMemoryContext, spgInnerConsistentIn::traversalValue, SpGistSearchItem::traversalValue, and SpGistSearchItem::value.
Referenced by spgInnerTest().
|
static |
Definition at line 662 of file spgscan.c.
References Assert, spgInnerConsistentOut::distances, elog, ERROR, fb(), FunctionCall2Coll(), i, ItemPointerIsValid(), MemoryContextSwitchTo(), spgInnerConsistentOut::nNodes, spgInnerConsistentOut::nodeNumbers, palloc_array, PointerGetDatum(), SGITITERATE, spgAddSearchItemToQueue(), spgInitInnerConsistentIn(), spgMakeInnerItem(), and IndexTupleData::t_tid.
Referenced by spgWalk().
|
static |
Definition at line 511 of file spgscan.c.
References Assert, DatumGetBool(), spgLeafConsistentOut::distances, fb(), FunctionCall2Coll(), SpGistLeafTupleData::heapPtr, SpGistSearchItem::isLeaf, spgLeafConsistentIn::leafDatum, spgLeafConsistentOut::leafValue, spgLeafConsistentIn::level, SpGistSearchItem::level, MemoryContextSwitchTo(), spgLeafConsistentIn::nkeys, spgLeafConsistentIn::norderbys, spgLeafConsistentIn::orderbys, PointerGetDatum(), spgLeafConsistentOut::recheck, spgLeafConsistentOut::recheckDistances, spgLeafConsistentIn::reconstructedValue, spgLeafConsistentIn::returnData, spgLeafConsistentIn::scankeys, SGLTDATUM, spgAddSearchItemToQueue(), spgNewHeapItem(), spgLeafConsistentIn::traversalValue, SpGistSearchItem::traversalValue, and SpGistSearchItem::value.
Referenced by spgTestLeafTuple().
|
static |
Definition at line 624 of file spgscan.c.
References datumCopy(), fb(), SpGistSearchItem::heapPtr, i, SpGistSearchItem::isLeaf, SpGistSearchItem::leafTuple, SpGistSearchItem::level, spgInnerConsistentOut::levelAdds, SpGistSearchItem::recheck, SpGistSearchItem::recheckDistances, spgInnerConsistentOut::reconstructedValues, spgAllocSearchItem(), IndexTupleData::t_tid, SpGistSearchItem::traversalValue, spgInnerConsistentOut::traversalValues, and SpGistSearchItem::value.
Referenced by spgInnerTest().
|
static |
Definition at line 458 of file spgscan.c.
References datumCopy(), fb(), SpGistSearchItem::heapPtr, SpGistLeafTupleData::heapPtr, SpGistSearchItem::isLeaf, SpGistSearchItem::leafTuple, SpGistSearchItem::level, palloc(), SpGistSearchItem::recheck, SpGistSearchItem::recheckDistances, SpGistLeafTupleData::size, spgAllocSearchItem(), SpGistSearchItem::traversalValue, and SpGistSearchItem::value.
Referenced by spgLeafTest().
|
static |
Definition at line 209 of file spgscan.c.
References fb(), i, j, IndexScanDescData::keyData, IndexScanDescData::numberOfKeys, IndexScanDescData::numberOfOrderBys, IndexScanDescData::opaque, IndexScanDescData::orderByData, SK_ISNULL, SK_SEARCHNOTNULL, and SK_SEARCHNULL.
Referenced by spgrescan().
| void spgrescan | ( | IndexScanDesc | scan, |
| ScanKey | scankey, | ||
| int | nscankeys, | ||
| ScanKey | orderbys, | ||
| int | norderbys | ||
| ) |
Definition at line 375 of file spgscan.c.
References fb(), get_func_rettype(), i, IndexScanDescData::indexRelation, IndexScanDescData::instrument, IndexScanDescData::keyData, IndexScanInstrumentation::nsearches, IndexScanDescData::numberOfKeys, IndexScanDescData::numberOfOrderBys, IndexScanDescData::opaque, IndexScanDescData::orderByData, pgstat_count_index_scan, resetSpGistScanOpaque(), and spgPrepareScanKeys().
Referenced by spghandler().
|
static |
Definition at line 758 of file spgscan.c.
References Assert, elog, ERROR, fb(), SpGistSearchItem::heapPtr, SpGistLeafTupleData::heapPtr, InvalidOffsetNumber, ItemPointerGetBlockNumber(), ItemPointerGetOffsetNumber(), ItemPointerIsValid(), PageGetItem(), PageGetItemId(), SGLT_GET_NEXTOFFSET, SPGIST_DEAD, SPGIST_LIVE, SPGIST_METAPAGE_BLKNO, SPGIST_REDIRECT, SpGistBreakOffsetNumber, SpGistErrorOffsetNumber, SpGistRedirectOffsetNumber, spgLeafTest(), and SpGistLeafTupleData::tupstate.
Referenced by spgWalk().
|
static |
Definition at line 812 of file spgscan.c.
References Assert, BUFFER_LOCK_SHARE, BufferGetBlockNumber(), BufferGetPage(), CHECK_FOR_INTERRUPTS, SpGistSearchItem::distances, elog, ERROR, fb(), FirstOffsetNumber, SpGistSearchItem::heapPtr, InvalidBuffer, InvalidOffsetNumber, SpGistSearchItem::isLeaf, SpGistSearchItem::isNull, ItemPointerGetBlockNumber(), ItemPointerGetOffsetNumber(), SpGistSearchItem::leafTuple, LockBuffer(), MemoryContextReset(), PageGetItem(), PageGetItemId(), PageGetMaxOffsetNumber(), ReadBuffer(), SpGistSearchItem::recheck, SpGistSearchItem::recheckDistances, spgFreeSearchItem(), spgGetNextQueueItem(), spgInnerTest(), SPGIST_LIVE, SPGIST_METAPAGE_BLKNO, SPGIST_REDIRECT, SpGistBlockIsRoot, SpGistPageIsLeaf, SpGistPageStoresNulls, SpGistRedirectOffsetNumber, spgTestLeafTuple(), true, UnlockReleaseBuffer(), and SpGistSearchItem::value.
Referenced by spggetbitmap(), and spggettuple().
|
static |
Definition at line 926 of file spgscan.c.
References Assert, fb(), and tbm_add_tuples().
Referenced by spggetbitmap().
|
static |
Definition at line 954 of file spgscan.c.
References Assert, fb(), heap_form_tuple(), i, INDEX_MAX_KEYS, IndexOrderByDistance::isnull, MaxIndexTuplesPerPage, palloc_array, spgDeformLeafTuple(), spgKeyColumn, and IndexOrderByDistance::value.
Referenced by spggettuple().