PostgreSQL Source Code git master
|
Go to the source code of this file.
Data Structures | |
struct | TBMIterator |
struct | TBMIterateResult |
Macros | |
#define | TBM_MAX_TUPLES_PER_PAGE MaxHeapTuplesPerPage |
Typedefs | |
typedef struct TIDBitmap | TIDBitmap |
typedef struct TBMPrivateIterator | TBMPrivateIterator |
typedef struct TBMSharedIterator | TBMSharedIterator |
typedef struct TBMIterator | TBMIterator |
typedef struct TBMIterateResult | TBMIterateResult |
#define TBM_MAX_TUPLES_PER_PAGE MaxHeapTuplesPerPage |
Definition at line 35 of file tidbitmap.h.
typedef struct TBMIterateResult TBMIterateResult |
typedef struct TBMIterator TBMIterator |
typedef struct TBMPrivateIterator TBMPrivateIterator |
Definition at line 44 of file tidbitmap.h.
typedef struct TBMSharedIterator TBMSharedIterator |
Definition at line 45 of file tidbitmap.h.
Definition at line 41 of file tidbitmap.h.
void tbm_add_page | ( | TIDBitmap * | tbm, |
BlockNumber | pageno | ||
) |
Definition at line 432 of file tidbitmap.c.
References TIDBitmap::maxentries, TIDBitmap::nentries, tbm_lossify(), and tbm_mark_page_lossy().
Referenced by bringetbitmap(), and gingetbitmap().
void tbm_add_tuples | ( | TIDBitmap * | tbm, |
const ItemPointer | tids, | ||
int | ntids, | ||
bool | recheck | ||
) |
Definition at line 366 of file tidbitmap.c.
References Assert(), BITNUM, elog, ERROR, i, InvalidBlockNumber, PagetableEntry::ischunk, ItemPointerGetBlockNumber(), ItemPointerGetOffsetNumber(), TIDBitmap::iterating, TIDBitmap::maxentries, TIDBitmap::nentries, PagetableEntry::recheck, tbm_get_pageentry(), tbm_lossify(), TBM_MAX_TUPLES_PER_PAGE, TBM_NOT_ITERATING, tbm_page_is_lossy(), WORDNUM, and PagetableEntry::words.
Referenced by blgetbitmap(), btgetbitmap(), collectMatchBitmap(), GinDataLeafPageGetItemsToTbm(), gingetbitmap(), ginPostingListDecodeAllSegmentsToTbm(), gistScanPage(), hashgetbitmap(), scanPendingInsert(), and storeBitmap().
TBMSharedIterator * tbm_attach_shared_iterate | ( | dsa_area * | dsa, |
dsa_pointer | dp | ||
) |
Definition at line 1465 of file tidbitmap.c.
References dsa_get_address(), TBMSharedIteratorState::nchunks, TBMSharedIteratorState::npages, TBMSharedIteratorState::pagetable, palloc0(), TBMSharedIterator::ptbase, TBMSharedIterator::ptchunks, TBMSharedIterator::ptpages, TBMSharedIteratorState::schunks, TBMSharedIteratorState::spages, and TBMSharedIterator::state.
Referenced by tbm_begin_iterate().
TBMIterator tbm_begin_iterate | ( | TIDBitmap * | tbm, |
dsa_area * | dsa, | ||
dsa_pointer | dsp | ||
) |
Definition at line 1574 of file tidbitmap.c.
References DsaPointerIsValid, TBMIterator::i, TBMIterator::private_iterator, TBMIterator::shared, TBMIterator::shared_iterator, tbm_attach_shared_iterate(), and tbm_begin_private_iterate().
Referenced by BitmapTableScanSetup().
TBMPrivateIterator * tbm_begin_private_iterate | ( | TIDBitmap * | tbm | ) |
Definition at line 678 of file tidbitmap.c.
References Assert(), i, PagetableEntry::ischunk, TIDBitmap::iterating, TIDBitmap::mcxt, MemoryContextAlloc(), TIDBitmap::nchunks, TIDBitmap::npages, TIDBitmap::pagetable, palloc(), qsort, TBMPrivateIterator::schunkbit, TBMPrivateIterator::schunkptr, TIDBitmap::schunks, TBMPrivateIterator::spageptr, TIDBitmap::spages, TIDBitmap::status, TBMPrivateIterator::tbm, tbm_comparator(), TBM_HASH, TBM_ITERATING_PRIVATE, TBM_ITERATING_SHARED, and TBM_NOT_ITERATING.
Referenced by startScanEntry(), and tbm_begin_iterate().
int tbm_calculate_entries | ( | Size | maxbytes | ) |
Definition at line 1545 of file tidbitmap.c.
Referenced by compute_bitmap_pages(), and tbm_create().
Definition at line 255 of file tidbitmap.c.
References CurrentMemoryContext, TIDBitmap::dsa, TIDBitmap::dsapagetable, TIDBitmap::dsapagetableold, InvalidDsaPointer, TIDBitmap::lossify_start, makeNode, TIDBitmap::maxentries, TIDBitmap::mcxt, TIDBitmap::ptchunks, TIDBitmap::ptpages, TIDBitmap::status, tbm_calculate_entries(), and TBM_EMPTY.
Referenced by collectMatchBitmap(), MultiExecBitmapIndexScan(), and MultiExecBitmapOr().
void tbm_end_iterate | ( | TBMIterator * | iterator | ) |
Definition at line 1597 of file tidbitmap.c.
References Assert(), TBMIterator::i, TBMIterator::private_iterator, TBMIterator::shared, TBMIterator::shared_iterator, tbm_end_private_iterate(), tbm_end_shared_iterate(), and tbm_exhausted().
Referenced by ExecEndBitmapHeapScan(), and ExecReScanBitmapHeapScan().
void tbm_end_private_iterate | ( | TBMPrivateIterator * | iterator | ) |
Definition at line 1150 of file tidbitmap.c.
References pfree().
Referenced by entryGetItem(), ginFreeScanKeys(), startScanEntry(), and tbm_end_iterate().
void tbm_end_shared_iterate | ( | TBMSharedIterator * | iterator | ) |
|
inlinestatic |
Definition at line 119 of file tidbitmap.h.
References TBMIterator::i, and TBMIterator::private_iterator.
Referenced by ExecEndBitmapHeapScan(), ExecReScanBitmapHeapScan(), and tbm_end_iterate().
int tbm_extract_page_tuple | ( | TBMIterateResult * | iteritem, |
OffsetNumber * | offsets, | ||
uint32 | max_offsets | ||
) |
Definition at line 901 of file tidbitmap.c.
References BITS_PER_BITMAPWORD, TBMIterateResult::internal_page, PagetableEntry::words, and WORDS_PER_PAGE.
Referenced by BitmapHeapScanNextBlock(), and entryGetItem().
void tbm_free | ( | TIDBitmap * | tbm | ) |
Definition at line 311 of file tidbitmap.c.
References TIDBitmap::pagetable, pfree(), TIDBitmap::schunks, and TIDBitmap::spages.
Referenced by ExecEndBitmapHeapScan(), ExecReScanBitmapHeapScan(), ginFreeScanKeys(), MultiExecBitmapAnd(), MultiExecBitmapOr(), and startScanEntry().
void tbm_free_shared_area | ( | dsa_area * | dsa, |
dsa_pointer | dp | ||
) |
Definition at line 330 of file tidbitmap.c.
References dsa_free(), dsa_get_address(), DsaPointerIsValid, TBMSharedIteratorState::pagetable, pg_atomic_sub_fetch_u32(), PTEntryArray::refcount, PTIterationArray::refcount, TBMSharedIteratorState::schunks, and TBMSharedIteratorState::spages.
Referenced by ExecBitmapHeapReInitializeDSM().
Definition at line 529 of file tidbitmap.c.
References a, Assert(), b, PagetableEntry::blockno, elog, ERROR, i, PagetableEntry::ischunk, TBM_EMPTY, TBM_HASH, tbm_intersect_page(), and TBM_ONE_PAGE.
Referenced by MultiExecBitmapAnd().
bool tbm_is_empty | ( | const TIDBitmap * | tbm | ) |
Definition at line 659 of file tidbitmap.c.
References TIDBitmap::nentries.
Referenced by MultiExecBitmapAnd(), and startScanEntry().
bool tbm_iterate | ( | TBMIterator * | iterator, |
TBMIterateResult * | tbmres | ||
) |
Definition at line 1617 of file tidbitmap.c.
References Assert(), TBMIterator::i, TBMIterator::private_iterator, TBMIterator::shared, TBMIterator::shared_iterator, tbm_private_iterate(), and tbm_shared_iterate().
Referenced by bitmapheap_stream_read_next().
dsa_pointer tbm_prepare_shared_iterate | ( | TIDBitmap * | tbm | ) |
Definition at line 754 of file tidbitmap.c.
References Assert(), TIDBitmap::dsa, dsa_allocate, dsa_allocate0, dsa_get_address(), TIDBitmap::dsapagetable, TIDBitmap::entry1, i, idx(), PTIterationArray::index, PagetableEntry::ischunk, TIDBitmap::iterating, TBMSharedIteratorState::lock, LWLockInitialize(), LWTRANCHE_SHARED_TIDBITMAP, TIDBitmap::maxentries, TBMSharedIteratorState::maxentries, TIDBitmap::nchunks, TBMSharedIteratorState::nchunks, TIDBitmap::nentries, TBMSharedIteratorState::nentries, TIDBitmap::npages, TBMSharedIteratorState::npages, TIDBitmap::pagetable, TBMSharedIteratorState::pagetable, pg_atomic_add_fetch_u32(), pg_atomic_init_u32(), TIDBitmap::ptchunks, PTEntryArray::ptentry, TIDBitmap::ptpages, qsort_arg(), PTEntryArray::refcount, PTIterationArray::refcount, TBMSharedIteratorState::schunkbit, TBMSharedIteratorState::schunkptr, TBMSharedIteratorState::schunks, TBMSharedIteratorState::spageptr, TBMSharedIteratorState::spages, TIDBitmap::status, TBM_HASH, TBM_ITERATING_PRIVATE, TBM_ITERATING_SHARED, TBM_NOT_ITERATING, TBM_ONE_PAGE, and tbm_shared_comparator().
Referenced by BitmapTableScanSetup().
bool tbm_private_iterate | ( | TBMPrivateIterator * | iterator, |
TBMIterateResult * | tbmres | ||
) |
Definition at line 977 of file tidbitmap.c.
References Assert(), PagetableEntry::blockno, TBMIterateResult::blockno, TIDBitmap::entry1, TBMIterateResult::internal_page, InvalidBlockNumber, TIDBitmap::iterating, TBMIterateResult::lossy, TIDBitmap::nchunks, TIDBitmap::npages, PAGES_PER_CHUNK, PagetableEntry::recheck, TBMIterateResult::recheck, TBMPrivateIterator::schunkbit, TBMPrivateIterator::schunkptr, TIDBitmap::schunks, TBMPrivateIterator::spageptr, TIDBitmap::spages, TIDBitmap::status, TBMPrivateIterator::tbm, tbm_advance_schunkbit(), TBM_ITERATING_PRIVATE, and TBM_ONE_PAGE.
Referenced by entryGetItem(), and tbm_iterate().
bool tbm_shared_iterate | ( | TBMSharedIterator * | iterator, |
TBMIterateResult * | tbmres | ||
) |
Definition at line 1057 of file tidbitmap.c.
References PagetableEntry::blockno, TBMIterateResult::blockno, PTIterationArray::index, TBMIterateResult::internal_page, InvalidBlockNumber, TBMSharedIteratorState::lock, TBMIterateResult::lossy, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), TBMSharedIteratorState::nchunks, TBMSharedIteratorState::npages, PAGES_PER_CHUNK, TBMSharedIterator::ptbase, TBMSharedIterator::ptchunks, PTEntryArray::ptentry, TBMSharedIterator::ptpages, PagetableEntry::recheck, TBMIterateResult::recheck, TBMSharedIteratorState::schunkbit, TBMSharedIteratorState::schunkptr, TBMSharedIteratorState::spageptr, TBMSharedIterator::state, and tbm_advance_schunkbit().
Referenced by tbm_iterate().
Definition at line 447 of file tidbitmap.c.
References a, Assert(), b, i, TBM_HASH, TBM_ONE_PAGE, and tbm_union_page().
Referenced by MultiExecBitmapOr().