|
PostgreSQL Source Code git master
|
#include "postgres.h"#include <math.h>#include "access/genam.h"#include "access/gist_private.h"#include "access/tableam.h"#include "access/xloginsert.h"#include "miscadmin.h"#include "nodes/execnodes.h"#include "optimizer/optimizer.h"#include "storage/bufmgr.h"#include "storage/bulk_write.h"#include "utils/memutils.h"#include "utils/rel.h"#include "utils/tuplesort.h"
Go to the source code of this file.
Data Structures | |
| struct | GISTBuildState |
| struct | GistSortedBuildLevelState |
| struct | ParentMapEntry |
Macros | |
| #define | BUFFERING_MODE_SWITCH_CHECK_STEP 256 |
| #define | BUFFERING_MODE_TUPLE_SIZE_STATS_TARGET 4096 |
| #define | GIST_SORTED_BUILD_PAGE_NUM 4 |
Typedefs | |
| typedef struct GistSortedBuildLevelState | GistSortedBuildLevelState |
Enumerations | |
| enum | GistBuildMode { GIST_SORTED_BUILD , GIST_BUFFERING_DISABLED , GIST_BUFFERING_AUTO , GIST_BUFFERING_STATS , GIST_BUFFERING_ACTIVE } |
| #define BUFFERING_MODE_SWITCH_CHECK_STEP 256 |
Definition at line 52 of file gistbuild.c.
| #define BUFFERING_MODE_TUPLE_SIZE_STATS_TARGET 4096 |
Definition at line 60 of file gistbuild.c.
| #define GIST_SORTED_BUILD_PAGE_NUM 4 |
Definition at line 113 of file gistbuild.c.
| Enumerator | |
|---|---|
| GIST_SORTED_BUILD | |
| GIST_BUFFERING_DISABLED | |
| GIST_BUFFERING_AUTO | |
| GIST_BUFFERING_STATS | |
| GIST_BUFFERING_ACTIVE | |
Definition at line 67 of file gistbuild.c.
|
static |
Definition at line 789 of file gistbuild.c.
References fb(), and SizeOfPageHeaderData.
Referenced by gistBuildCallback(), and gistInitBuffering().
|
static |
Definition at line 400 of file gistbuild.c.
References F_LEAF, fb(), gist_indexsortbuild_levelstate_add(), gist_indexsortbuild_levelstate_flush(), GIST_ROOT_BLKNO, GIST_SORTED_BUILD_PAGE_NUM, GistBuildLSN, gistinitpage(), i, MAIN_FORKNUM, MemoryContextReset(), PageSetLSN(), palloc(), palloc0_object, GistSortedBuildLevelState::parent, pfree(), smgr_bulk_finish(), smgr_bulk_get_buf(), smgr_bulk_start_rel(), smgr_bulk_write(), and tuplesort_getindextuple().
Referenced by gistbuild().
|
static |
Definition at line 461 of file gistbuild.c.
References fb(), gist_indexsortbuild_levelstate_flush(), GIST_SORTED_BUILD_PAGE_NUM, gistfillbuffer(), gistinitpage(), GistPageGetOpaque, IndexTupleSize(), InvalidOffsetNumber, PageGetFreeSpace(), and palloc0().
Referenced by gist_indexsortbuild(), and gist_indexsortbuild_levelstate_flush().
|
static |
Definition at line 493 of file gistbuild.c.
References buf, CHECK_FOR_INTERRUPTS, data, elog, ERROR, F_LEAF, fb(), FirstOffsetNumber, gist_indexsortbuild_levelstate_add(), GistBuildLSN, gistextractpage(), gistfillitupvec(), gistinitpage(), gistjoinvector(), GistPageGetOpaque, GistPageIsLeaf, gistSplit(), gistunion(), i, IndexTupleSize(), InvalidOffsetNumber, ItemPointerSetBlockNumber(), MemoryContextSwitchTo(), PageAddItem, GistSortedBuildLevelState::pages, PageSetLSN(), palloc(), palloc0_object, GistSortedBuildLevelState::parent, pfree(), RelationGetRelationName, smgr_bulk_get_buf(), and smgr_bulk_write().
Referenced by gist_indexsortbuild(), and gist_indexsortbuild_levelstate_add().
|
static |
Definition at line 909 of file gistbuild.c.
References fb(), gistProcessEmptyingQueue(), and gistProcessItup().
Referenced by gistBuildCallback().
|
static |
Definition at line 1225 of file gistbuild.c.
References BufferGetPage(), elog, ERROR, fb(), FirstOffsetNumber, GIST_EXCLUSIVE, gistcheckpage(), gistGetParent(), InvalidBlockNumber, InvalidBuffer, InvalidOffsetNumber, ItemPointerGetBlockNumber(), LockBuffer(), OffsetNumberNext, PageGetItem(), PageGetItemId(), PageGetMaxOffsetNumber(), GistSortedBuildLevelState::parent, and ReadBuffer().
Referenced by gistbufferinginserttuples().
|
static |
Definition at line 1056 of file gistbuild.c.
References Assert, GISTPageSplitInfo::buf, BufferGetBlockNumber(), BufferGetPage(), DEBUG2, GISTPageSplitInfo::downlink, elog, fb(), FirstOffsetNumber, GIST_ROOT_BLKNO, GIST_SHARE, gistBufferingFindCorrectParent(), gistbufferinginserttuples(), gistMemorizeAllDownlinks(), gistMemorizeParent(), gistplacetopage(), gistRelocateBuildBuffersOnSplit(), i, InvalidBlockNumber, InvalidBuffer, InvalidOffsetNumber, ItemPointerGetBlockNumber(), lfirst, list_free_deep(), list_length(), LockBuffer(), PageGetItem(), PageGetItemId(), PageGetMaxOffsetNumber(), palloc_array, ReadBuffer(), GISTBuildBuffers::rootlevel, and UnlockReleaseBuffer().
Referenced by gistbufferinginserttuples(), and gistProcessItup().
| IndexBuildResult * gistbuild | ( | Relation | heap, |
| Relation | index, | ||
| IndexInfo * | indexInfo | ||
| ) |
Definition at line 179 of file gistbuild.c.
References Assert, BufferGetBlockNumber(), BufferGetPage(), createTempGistContext(), CurrentMemoryContext, DEBUG1, elog, END_CRIT_SECTION, ERROR, F_LEAF, fb(), fillfactor, freeGISTstate(), GIST_BUFFERING_ACTIVE, GIST_BUFFERING_AUTO, GIST_BUFFERING_DISABLED, GIST_BUFFERING_STATS, GIST_DEFAULT_FILLFACTOR, gist_indexsortbuild(), GIST_OPTION_BUFFERING_OFF, GIST_OPTION_BUFFERING_ON, GIST_ROOT_BLKNO, GIST_SORTED_BUILD, GIST_SORTSUPPORT_PROC, gistBuildCallback(), GistBuildLSN, gistEmptyAllBuffers(), gistFreeBuildBuffers(), GISTInitBuffer(), gistNewBuffer(), gistSortedBuildCallback(), IndexBuildResult::heap_tuples, i, index_getprocid(), INDEX_MAX_KEYS, IndexBuildResult::index_tuples, IndexRelationGetNumberOfKeyAttributes, initGISTstate(), log_newpage_range(), MAIN_FORKNUM, maintenance_work_mem, MarkBufferDirty(), MemoryContextDelete(), MemoryContextSwitchTo(), OidIsValid, PageSetLSN(), palloc_object, RelationGetNumberOfBlocks, RelationGetRelationName, RelationNeedsWAL, START_CRIT_SECTION, table_index_build_scan(), tuplesort_begin_index_gist(), tuplesort_end(), TUPLESORT_NONE, tuplesort_performsort(), and UnlockReleaseBuffer().
Referenced by gisthandler().
|
static |
Definition at line 822 of file gistbuild.c.
References BUFFERING_MODE_SWITCH_CHECK_STEP, BUFFERING_MODE_TUPLE_SIZE_STATS_TARGET, calculatePagesPerBuffer(), effective_cache_size, fb(), GIST_BUFFERING_ACTIVE, GIST_BUFFERING_AUTO, GIST_BUFFERING_STATS, gistBufferingBuildInsert(), gistdoinsert(), gistFormTuple(), gistInitBuffering(), IndexTupleSize(), MAIN_FORKNUM, MemoryContextReset(), MemoryContextSwitchTo(), RelationGetSmgr(), smgrnblocks(), IndexTupleData::t_tid, and values.
Referenced by gistbuild().
|
static |
Definition at line 1372 of file gistbuild.c.
References GISTNodeBuffer::blocksCount, GISTBuildBuffers::bufferEmptyingQueue, GISTBuildBuffers::buffersOnLevels, GISTBuildBuffers::buffersOnLevelsLen, GISTBuildBuffers::context, DEBUG2, elog, fb(), gistProcessEmptyingQueue(), i, lcons(), linitial, list_delete_first(), MemoryContextSwitchTo(), NIL, and GISTNodeBuffer::queuedForEmptying.
Referenced by gistbuild().
Definition at line 1427 of file gistbuild.c.
References BufferGetPage(), fb(), FirstOffsetNumber, GIST_ROOT_BLKNO, GIST_SHARE, GistPageIsLeaf, ItemPointerGetBlockNumber(), LockBuffer(), PageGetItem(), PageGetItemId(), ReadBuffer(), IndexTupleData::t_tid, and UnlockReleaseBuffer().
Referenced by gistInitBuffering().
|
static |
Definition at line 1567 of file gistbuild.c.
References elog, ERROR, fb(), HASH_FIND, hash_search(), and ParentMapEntry::parentblkno.
Referenced by gistBufferingFindCorrectParent().
|
static |
Definition at line 626 of file gistbuild.c.
References CompactAttribute::attlen, calculatePagesPerBuffer(), DEBUG1, effective_cache_size, elog, fb(), GIST_BUFFERING_ACTIVE, GIST_BUFFERING_DISABLED, gistGetMaxLevel(), gistInitBuildBuffers(), gistInitParentMap(), i, maintenance_work_mem, MAXALIGN, SizeOfPageHeaderData, TupleDescCompactAttr(), and VARHDRSZ.
Referenced by gistBuildCallback().
|
static |
Definition at line 1516 of file gistbuild.c.
References CurrentMemoryContext, fb(), HASH_BLOBS, HASH_CONTEXT, hash_create(), HASH_ELEM, and HASHCTL::keysize.
Referenced by gistInitBuffering().
|
static |
Definition at line 1546 of file gistbuild.c.
References Assert, BufferGetBlockNumber(), BufferGetPage(), fb(), FirstOffsetNumber, gistMemorizeParent(), GistPageIsLeaf, ItemPointerGetBlockNumber(), PageGetItem(), PageGetItemId(), and PageGetMaxOffsetNumber().
Referenced by gistbufferinginserttuples().
|
static |
Definition at line 1530 of file gistbuild.c.
References fb(), HASH_ENTER, hash_search(), GistSortedBuildLevelState::parent, and ParentMapEntry::parentblkno.
Referenced by gistbufferinginserttuples(), gistMemorizeAllDownlinks(), and gistProcessItup().
|
static |
Definition at line 1299 of file gistbuild.c.
References GISTBuildBuffers::bufferEmptyingQueue, fb(), gistPopItupFromNodeBuffer(), gistProcessItup(), gistUnloadNodeBuffers(), linitial, list_delete_first(), MemoryContextReset(), and NIL.
Referenced by gistBufferingBuildInsert(), and gistEmptyAllBuffers().
|
static |
Definition at line 925 of file gistbuild.c.
References Assert, BUFFER_OVERFLOWED, BufferGetPage(), CHECK_FOR_INTERRUPTS, fb(), GIST_EXCLUSIVE, gistbufferinginserttuples(), gistchoose(), gistgetadjusted(), gistGetNodeBuffer(), gistMemorizeParent(), gistPushItupToNodeBuffer(), InvalidBlockNumber, InvalidOffsetNumber, ItemPointerGetBlockNumber(), LEVEL_HAS_BUFFERS, LockBuffer(), PageGetItem(), PageGetItemId(), ReadBuffer(), and UnlockReleaseBuffer().
Referenced by gistBufferingBuildInsert(), and gistProcessEmptyingQueue().
|
static |
Definition at line 366 of file gistbuild.c.
References fb(), gistCompressValues(), INDEX_MAX_KEYS, MemoryContextReset(), MemoryContextSwitchTo(), tuplesort_putindextuplevalues(), and values.
Referenced by gistbuild().