|
PostgreSQL Source Code git master
|
#include "access/itup.h"#include "access/spgist.h"#include "catalog/pg_am_d.h"#include "nodes/tidbitmap.h"#include "storage/buf.h"#include "utils/geo_decls.h"#include "utils/relcache.h"

Go to the source code of this file.
Data Structures | |
| struct | SpGistOptions |
| struct | SpGistPageOpaqueData |
| struct | SpGistLastUsedPage |
| struct | SpGistLUPCache |
| struct | SpGistMetaPageData |
| struct | SpGistTypeDesc |
| struct | SpGistState |
| struct | SpGistSearchItem |
| struct | SpGistScanOpaqueData |
| struct | SpGistCache |
| struct | SpGistInnerTupleData |
| struct | SpGistLeafTupleData |
| struct | SpGistDeadTupleData |
Definition at line 313 of file spgist_private.h.
Definition at line 485 of file spgist_private.h.
| #define GBUF_LEAF 0x03 |
Definition at line 484 of file spgist_private.h.
| #define GBUF_NULLS 0x04 |
Definition at line 486 of file spgist_private.h.
| #define GBUF_PARITY_MASK 0x03 |
Definition at line 488 of file spgist_private.h.
| #define GBUF_REQ_LEAF | ( | flags | ) | (((flags) & GBUF_PARITY_MASK) == GBUF_LEAF) |
Definition at line 489 of file spgist_private.h.
| #define GBUF_REQ_NULLS | ( | flags | ) | ((flags) & GBUF_NULLS) |
Definition at line 490 of file spgist_private.h.
| #define SGDTSIZE MAXALIGN(sizeof(SpGistDeadTupleData)) |
Definition at line 439 of file spgist_private.h.
Definition at line 314 of file spgist_private.h.
Definition at line 315 of file spgist_private.h.
| #define SGITHDRSZ MAXALIGN(sizeof(SpGistInnerTupleData)) |
Definition at line 312 of file spgist_private.h.
Definition at line 323 of file spgist_private.h.
| #define SGITMAXNNODES 0x1FFF |
Definition at line 308 of file spgist_private.h.
| #define SGITMAXPREFIXSIZE 0xFFFF |
Definition at line 309 of file spgist_private.h.
| #define SGITMAXSIZE 0xFFFF |
Definition at line 310 of file spgist_private.h.
Definition at line 320 of file spgist_private.h.
| #define SGLT_GET_HASNULLMASK | ( | spgLeafTuple | ) | (((spgLeafTuple)->t_info & 0x8000) ? true : false) |
Definition at line 398 of file spgist_private.h.
| #define SGLT_GET_NEXTOFFSET | ( | spgLeafTuple | ) | ((spgLeafTuple)->t_info & 0x3FFF) |
Definition at line 396 of file spgist_private.h.
| #define SGLT_SET_HASNULLMASK | ( | spgLeafTuple, | |
| hasnulls | |||
| ) |
Definition at line 403 of file spgist_private.h.
| #define SGLT_SET_NEXTOFFSET | ( | spgLeafTuple, | |
| offsetNumber | |||
| ) |
Definition at line 400 of file spgist_private.h.
Definition at line 411 of file spgist_private.h.
Definition at line 412 of file spgist_private.h.
Definition at line 407 of file spgist_private.h.
Definition at line 342 of file spgist_private.h.
| #define SGNTHDRSZ MAXALIGN(sizeof(SpGistNodeTupleData)) |
Definition at line 341 of file spgist_private.h.
| #define SizeOfSpGistSearchItem | ( | n_distances | ) | (offsetof(SpGistSearchItem, distances) + sizeof(double) * (n_distances)) |
Definition at line 182 of file spgist_private.h.
| #define spgFirstIncludeColumn 1 |
Definition at line 44 of file spgist_private.h.
| #define SPGIST_CACHED_PAGES 8 |
Definition at line 105 of file spgist_private.h.
Definition at line 273 of file spgist_private.h.
| #define SPGIST_DEFAULT_FILLFACTOR 80 |
Definition at line 496 of file spgist_private.h.
| #define SPGIST_DELETED |
Definition at line 73 of file spgist_private.h.
| #define SPGIST_LAST_FIXED_BLKNO SPGIST_NULL_BLKNO |
Definition at line 50 of file spgist_private.h.
| #define SPGIST_LEAF (1<<2) |
Definition at line 74 of file spgist_private.h.
Definition at line 271 of file spgist_private.h.
| #define SPGIST_MAGIC_NUMBER (0xBA0BABEE) |
Definition at line 121 of file spgist_private.h.
| #define SPGIST_META (1<<0) |
Definition at line 72 of file spgist_private.h.
Definition at line 47 of file spgist_private.h.
| #define SPGIST_MIN_FILLFACTOR 10 |
Definition at line 495 of file spgist_private.h.
Definition at line 49 of file spgist_private.h.
| #define SPGIST_NULLS (1<<3) |
Definition at line 75 of file spgist_private.h.
| #define SPGIST_PAGE_CAPACITY |
Definition at line 449 of file spgist_private.h.
| #define SPGIST_PAGE_ID 0xFF82 |
Definition at line 91 of file spgist_private.h.
| #define SPGIST_PLACEHOLDER 3 /* placeholder, used to preserve offsets */ |
Definition at line 274 of file spgist_private.h.
| #define SPGIST_REDIRECT 1 /* temporary redirection placeholder */ |
Definition at line 272 of file spgist_private.h.
Definition at line 48 of file spgist_private.h.
| #define SpGistBlockIsFixed | ( | blkno | ) | ((BlockNumber) (blkno) <= (BlockNumber) SPGIST_LAST_FIXED_BLKNO) |
Definition at line 54 of file spgist_private.h.
| #define SpGistBlockIsRoot | ( | blkno | ) | ((blkno) == SPGIST_ROOT_BLKNO || (blkno) == SPGIST_NULL_BLKNO) |
Definition at line 52 of file spgist_private.h.
| #define SpGistGetFillFactor | ( | relation | ) |
Definition at line 32 of file spgist_private.h.
| #define SpGistGetTargetPageFreeSpace | ( | relation | ) | (BLCKSZ * (100 - SpGistGetFillFactor(relation)) / 100) |
Definition at line 38 of file spgist_private.h.
| #define SpGistPageGetFreeSpace | ( | p, | |
| n | |||
| ) |
Definition at line 458 of file spgist_private.h.
| #define SpGistPageGetMeta | ( | p | ) | ((SpGistMetaPageData *) PageGetContents(p)) |
Definition at line 123 of file spgist_private.h.
| #define SpGistPageGetOpaque | ( | page | ) | ((SpGistPageOpaque) PageGetSpecialPointer(page)) |
Definition at line 77 of file spgist_private.h.
| #define SpGistPageIsDeleted | ( | page | ) | (SpGistPageGetOpaque(page)->flags & SPGIST_DELETED) |
Definition at line 79 of file spgist_private.h.
| #define SpGistPageIsLeaf | ( | page | ) | (SpGistPageGetOpaque(page)->flags & SPGIST_LEAF) |
Definition at line 80 of file spgist_private.h.
| #define SpGistPageIsMeta | ( | page | ) | (SpGistPageGetOpaque(page)->flags & SPGIST_META) |
Definition at line 78 of file spgist_private.h.
| #define SpGistPageStoresNulls | ( | page | ) | (SpGistPageGetOpaque(page)->flags & SPGIST_NULLS) |
Definition at line 81 of file spgist_private.h.
| #define spgKeyColumn 0 |
Definition at line 43 of file spgist_private.h.
| #define STORE_STATE | ( | s, | |
| d | |||
| ) |
Definition at line 467 of file spgist_private.h.
Definition at line 437 of file spgist_private.h.
Definition at line 305 of file spgist_private.h.
Definition at line 131 of file spgist_private.h.
Definition at line 339 of file spgist_private.h.
Definition at line 337 of file spgist_private.h.
Definition at line 69 of file spgist_private.h.
Definition at line 244 of file spgist_private.h.
Definition at line 82 of file spgproc.c.
References fb(), and palloc_object.
Referenced by spg_kd_inner_consistent(), and spg_quad_inner_consistent().
|
extern |
Definition at line 316 of file spgutils.c.
References CompactAttribute::attcacheoff, CreateTupleDescCopy(), fb(), i, InvalidCompressionMethod, InvalidOid, populate_compact_attribute(), RelationGetDescr, spgFirstIncludeColumn, spgKeyColumn, TupleDescAttr(), and TupleDescCompactAttr().
Referenced by initSpGistState(), and spgbeginscan().
|
extern |
Definition at line 349 of file spgutils.c.
References SpGistCache::attLabelType, SpGistCache::attLeafType, SpGistCache::attPrefixType, SpGistCache::attType, SpGistCache::config, getSpGistTupleDesc(), GetTopTransactionIdIfAny(), palloc0(), SGDTSIZE, and spgGetCache().
Referenced by spgbeginscan(), spgbuild(), spginsert(), and spgvacuumscan().
|
extern |
Definition at line 63 of file spgproc.c.
References DatumGetBoxP(), DatumGetPointP(), fb(), palloc_array, point_box_distance(), point_point_distance, and ScanKeyData::sk_argument.
Referenced by spg_box_quad_leaf_consistent(), spg_kd_inner_consistent(), spg_quad_inner_consistent(), and spg_quad_leaf_consistent().
|
extern |
Definition at line 1116 of file spgutils.c.
References Assert, fb(), index_deform_tuple_internal(), SGLT_GET_HASNULLMASK, SGLTHDRSZ, and spgKeyColumn.
Referenced by doPickSplit(), and storeGettuple().
|
extern |
Definition at line 1909 of file spgdoinsert.c.
References addLeafTuple(), spgChooseOut::addNode, spgChooseIn::allTheSame, Assert, CompactAttribute::attlen, SPPageDesc::blkno, SPPageDesc::buffer, BUFFER_LOCK_EXCLUSIVE, BufferGetBlockNumber(), BufferGetPage(), CHECK_FOR_INTERRUPTS, checkSplitConditions(), ConditionalLockBuffer(), spgChooseIn::datum, doPickSplit(), elog, ereport, errcode(), errhint(), errmsg(), ERROR, fb(), FirstOffsetNumber, FunctionCall1Coll(), FunctionCall2Coll(), GBUF_LEAF, GBUF_NULLS, spgChooseIn::hasPrefix, i, index_getprocid(), index_getprocinfo(), INDEX_MAX_KEYS, INTERRUPTS_CAN_BE_PROCESSED, INTERRUPTS_PENDING_CONDITION, InvalidBlockNumber, InvalidBuffer, InvalidOffsetNumber, spgChooseIn::leafDatum, spgChooseIn::level, spgChooseOut::levelAdd, LockBuffer(), spgChooseOut::matchNode, Min, moveLeafs(), spgChooseIn::nNodes, SPPageDesc::node, spgChooseOut::nodeLabel, spgChooseIn::nodeLabels, spgChooseOut::nodeN, SPPageDesc::offnum, OidIsValid, SPPageDesc::page, PageGetItem(), PageGetItemId(), pfree(), PG_DETOAST_DATUM, pg_global_prng_state, pg_prng_uint64_range(), PointerGetDatum(), spgChooseIn::prefixDatum, ReadBuffer(), RelationGetRelationName, ReleaseBuffer(), spgChooseOut::restDatum, spgChooseOut::result, spgChooseOut::resultType, SGITDATUM, SpGistLeafTupleData::size, spgAddNode, spgAddNodeAction(), spgExtractNodeLabels(), spgFirstIncludeColumn, spgFormLeafTuple(), SPGIST_CHOOSE_PROC, SPGIST_COMPRESS_PROC, SPGIST_NULL_BLKNO, SPGIST_PAGE_CAPACITY, SPGIST_ROOT_BLKNO, SpGistGetBuffer(), SpGistGetLeafTupleSize(), SpGistPageGetFreeSpace, SpGistPageIsLeaf, SpGistPageStoresNulls, SpGistSetLastUsedPage(), spgKeyColumn, spgMatchNode, spgMatchNodeAction(), spgSplitNodeAction(), spgSplitTuple, TupleDescCompactAttr(), and UnlockReleaseBuffer().
Referenced by spginsert(), and spgistBuildCallback().
|
extern |
Definition at line 1161 of file spgutils.c.
References elog, ERROR, fb(), i, IndexTupleHasNulls(), palloc_array, SGITITERATE, SGITNODEPTR, and SGNTDATUM.
Referenced by spgdoinsert(), and spgInitInnerConsistentIn().
|
extern |
Definition at line 1086 of file spgutils.c.
References InvalidOffsetNumber, InvalidTransactionId, ItemPointerSet(), ItemPointerSetInvalid(), SpGistDeadTupleData::pointer, SGDTSIZE, SGLT_SET_NEXTOFFSET, SpGistDeadTupleData::size, SPGIST_REDIRECT, SpGistDeadTupleData::tupstate, and SpGistDeadTupleData::xid.
Referenced by spgAddNodeAction(), spgPageIndexMultiDelete(), and spgRedoAddNode().
|
extern |
Definition at line 1003 of file spgutils.c.
References elog, ereport, errcode(), errhint(), errmsg(), ERROR, fb(), i, IndexTupleSize(), memcpyInnerDatum(), palloc0(), SGDTSIZE, SGITDATAPTR, SGITHDRSZ, SGITMAXNNODES, SGITMAXPREFIXSIZE, SGITMAXSIZE, SGITNODEPTR, SPGIST_PAGE_CAPACITY, and SpGistGetInnerTypeSize().
Referenced by addNode(), doPickSplit(), and spgSplitNodeAction().
|
extern |
Definition at line 872 of file spgutils.c.
References fb(), heap_compute_data_size(), heap_fill_tuple(), i, InvalidOffsetNumber, MAXALIGN, palloc0(), SGDTSIZE, SGLT_SET_HASNULLMASK, SGLT_SET_NEXTOFFSET, SGLTHDRSZ, and spgKeyColumn.
Referenced by doPickSplit(), and spgdoinsert().
|
extern |
Definition at line 961 of file spgutils.c.
References ereport, errcode(), errmsg(), ERROR, fb(), INDEX_NULL_MASK, INDEX_SIZE_MASK, ItemPointerSetInvalid(), label, memcpyInnerDatum(), palloc0(), SGNTDATAPTR, SGNTHDRSZ, and SpGistGetInnerTypeSize().
Referenced by addNode(), doPickSplit(), and spgSplitNodeAction().
|
extern |
Definition at line 189 of file spgutils.c.
References Assert, SpGistCache::attLabelType, SpGistCache::attLeafType, SpGistCache::attPrefixType, spgConfigIn::attType, SpGistCache::attType, BUFFER_LOCK_SHARE, BufferGetPage(), SpGistCache::config, elog, ereport, errcode(), errmsg(), ERROR, fb(), fillTypeDesc(), FunctionCall2Coll(), GetIndexInputType(), index_getprocid(), index_getprocinfo(), INDEX_MAX_KEYS, IndexRelationGetNumberOfAttributes, IndexRelationGetNumberOfKeyAttributes, IsBinaryCoercible(), spgConfigOut::labelType, SpGistMetaPageData::lastUsedPages, SpGistCache::lastUsedPages, spgConfigOut::leafType, LockBuffer(), SpGistMetaPageData::magicNumber, MemoryContextAllocZero(), OidIsValid, PointerGetDatum(), spgConfigOut::prefixType, ReadBuffer(), RelationGetDescr, RelationGetRelationName, SPGIST_COMPRESS_PROC, SPGIST_CONFIG_PROC, SPGIST_MAGIC_NUMBER, SPGIST_METAPAGE_BLKNO, SpGistPageGetMeta, spgKeyColumn, TupleDescAttr(), and UnlockReleaseBuffer().
Referenced by allocNewBuffer(), initSpGistState(), spgcanreturn(), SpGistGetBuffer(), and SpGistSetLastUsedPage().
Definition at line 570 of file spgutils.c.
References allocNewBuffer(), Assert, BufferGetPage(), ConditionalLockBuffer(), elog, ERROR, fb(), GBUF_REQ_LEAF, GBUF_REQ_NULLS, GET_LUP, InvalidBlockNumber, Min, PageGetExactFreeSpace(), PageIsEmpty(), PageIsNew(), ReadBuffer(), ReleaseBuffer(), spgGetCache(), SPGIST_LEAF, SPGIST_NULLS, SPGIST_PAGE_CAPACITY, SpGistBlockIsFixed, SpGistGetTargetPageFreeSpace, SpGistInitBuffer(), SpGistPageIsDeleted, SpGistPageIsLeaf, SpGistPageStoresNulls, and UnlockReleaseBuffer().
Referenced by doPickSplit(), moveLeafs(), spgAddNodeAction(), spgdoinsert(), and spgSplitNodeAction().
|
extern |
Definition at line 780 of file spgutils.c.
References DatumGetPointer(), fb(), MAXALIGN, and VARSIZE_ANY().
Referenced by spgFormInnerTuple(), and spgFormNodeTuple().
|
extern |
Definition at line 819 of file spgutils.c.
References fb(), heap_compute_data_size(), i, MAXALIGN, SGDTSIZE, and SGLTHDRSZ.
Referenced by spgdoinsert().
Definition at line 723 of file spgutils.c.
References Assert, b, BufferGetPage(), BufferGetPageSize(), fb(), and SpGistInitPage().
Referenced by allocNewBuffer(), doPickSplit(), spgbuild(), SpGistGetBuffer(), spgRedoAddLeaf(), spgRedoAddNode(), spgRedoMoveLeafs(), spgRedoPickSplit(), and spgRedoSplitTuple().
Definition at line 733 of file spgutils.c.
References SpGistLastUsedPage::blkno, SpGistLUPCache::cachedPage, fb(), i, InvalidBlockNumber, SpGistMetaPageData::lastUsedPages, SpGistMetaPageData::magicNumber, SPGIST_CACHED_PAGES, SPGIST_MAGIC_NUMBER, SPGIST_META, SpGistInitPage(), and SpGistPageGetMeta.
Referenced by spgbuild(), and spgbuildempty().
Definition at line 709 of file spgutils.c.
References fb(), SpGistPageOpaqueData::flags, PageInit(), SpGistPageOpaqueData::spgist_page_id, SPGIST_PAGE_ID, and SpGistPageGetOpaque.
Referenced by spgbuildempty(), SpGistInitBuffer(), and SpGistInitMetapage().
Definition at line 395 of file spgutils.c.
References BMR_REL, BUFFER_LOCK_UNLOCK, BufferGetPage(), ConditionalLockBuffer(), EB_LOCK_FIRST, ExtendBufferedRel(), fb(), GetFreeIndexPage(), InvalidBlockNumber, LockBuffer(), MAIN_FORKNUM, PageIsEmpty(), PageIsNew(), ReadBuffer(), ReleaseBuffer(), SpGistBlockIsFixed, and SpGistPageIsDeleted.
Referenced by allocNewBuffer(), and spgbuild().
|
extern |
Definition at line 1204 of file spgutils.c.
References Assert, elog, ERROR, fb(), FirstOffsetNumber, i, InvalidOffsetNumber, MAXALIGN, SpGistPageOpaqueData::nPlaceholder, PageAddItem, PageGetExactFreeSpace(), PageGetItem(), PageGetItemId(), PageGetMaxOffsetNumber(), PageIndexTupleDelete(), PANIC, SGDTSIZE, SPGIST_PLACEHOLDER, and SpGistPageGetOpaque.
Referenced by addLeafTuple(), doPickSplit(), moveLeafs(), spgAddNodeAction(), and spgSplitNodeAction().
Definition at line 674 of file spgutils.c.
References BufferGetBlockNumber(), BufferGetPage(), fb(), GBUF_INNER_PARITY, GBUF_LEAF, GBUF_NULLS, GET_LUP, InvalidBlockNumber, PageGetExactFreeSpace(), spgGetCache(), SpGistBlockIsFixed, SpGistPageIsLeaf, and SpGistPageStoresNulls.
Referenced by doPickSplit(), moveLeafs(), spgAddNodeAction(), spgdoinsert(), spgMatchNodeAction(), spgprocesspending(), spgSplitNodeAction(), and spgvacuumpage().
Definition at line 451 of file spgutils.c.
References BufferGetPage(), ConditionalLockBuffer(), fb(), SpGistMetaPageData::lastUsedPages, SpGistCache::lastUsedPages, MarkBufferDirty(), ReadBuffer(), ReleaseBuffer(), SPGIST_METAPAGE_BLKNO, SpGistPageGetMeta, and UnlockReleaseBuffer().
Referenced by spgbuild(), spginsert(), and spgvacuumscan().
|
extern |
Definition at line 131 of file spgdoinsert.c.
References cmpOffsetNumbers(), elog, ERROR, fb(), i, MaxIndexTuplesPerPage, nitems, PageAddItem, PageIndexMultiDelete(), qsort, SpGistDeadTupleData::size, spgFormDeadTuple(), SPGIST_PLACEHOLDER, SPGIST_REDIRECT, SpGistPageGetOpaque, and SpGistDeadTupleData::tupstate.
Referenced by doPickSplit(), moveLeafs(), spgRedoMoveLeafs(), spgRedoPickSplit(), spgRedoVacuumLeaf(), and vacuumLeafPage().
|
extern |
Definition at line 1299 of file spgutils.c.
References AMPROP_DISTANCE_ORDERABLE, fb(), get_index_column_opclass(), get_op_rettype(), get_opclass_opfamily_and_input_type(), GETSTRUCT(), i, ObjectIdGetDatum(), OidIsValid, opfamily_can_sort_type(), ReleaseSysCacheList, and SearchSysCacheList1.
Referenced by spghandler().
|
extern |
Definition at line 52 of file spgdoinsert.c.
References elog, ERROR, fb(), i, ItemPointerSet(), SGITITERATE, and IndexTupleData::t_tid.
Referenced by saveNodeLink(), spgRedoAddLeaf(), spgRedoAddNode(), spgRedoMoveLeafs(), spgRedoPickSplit(), and spgSplitNodeAction().