PostgreSQL Source Code git master
|
Go to the source code of this file.
Data Structures | |
struct | TBMIterator |
struct | TBMIterateResult |
Typedefs | |
typedef struct TIDBitmap | TIDBitmap |
typedef struct TBMPrivateIterator | TBMPrivateIterator |
typedef struct TBMSharedIterator | TBMSharedIterator |
typedef struct TBMIterator | TBMIterator |
typedef struct TBMIterateResult | TBMIterateResult |
typedef struct TBMIterateResult TBMIterateResult |
typedef struct TBMIterator TBMIterator |
typedef struct TBMPrivateIterator TBMPrivateIterator |
Definition at line 36 of file tidbitmap.h.
typedef struct TBMSharedIterator TBMSharedIterator |
Definition at line 37 of file tidbitmap.h.
Definition at line 33 of file tidbitmap.h.
void tbm_add_page | ( | TIDBitmap * | tbm, |
BlockNumber | pageno | ||
) |
Definition at line 443 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 377 of file tidbitmap.c.
References Assert, BITNUM, elog, ERROR, i, InvalidBlockNumber, PagetableEntry::ischunk, ItemPointerGetBlockNumber(), ItemPointerGetOffsetNumber(), TIDBitmap::iterating, MAX_TUPLES_PER_PAGE, TIDBitmap::maxentries, TIDBitmap::nentries, PagetableEntry::recheck, tbm_get_pageentry(), tbm_lossify(), 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 1462 of file tidbitmap.c.
References dsa_get_address(), MAX_TUPLES_PER_PAGE, 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 1572 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 689 of file tidbitmap.c.
References Assert, i, PagetableEntry::ischunk, TIDBitmap::iterating, MAX_TUPLES_PER_PAGE, 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 1543 of file tidbitmap.c.
Referenced by compute_bitmap_pages(), and tbm_create().
Definition at line 266 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 1595 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 BitmapPrefetch(), ExecEndBitmapHeapScan(), and ExecReScanBitmapHeapScan().
void tbm_end_private_iterate | ( | TBMPrivateIterator * | iterator | ) |
Definition at line 1147 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 96 of file tidbitmap.h.
References TBMIterator::i, and TBMIterator::private_iterator.
Referenced by BitmapAdjustPrefetchIterator(), BitmapHeapNext(), BitmapPrefetch(), ExecEndBitmapHeapScan(), ExecReScanBitmapHeapScan(), and tbm_end_iterate().
void tbm_free | ( | TIDBitmap * | tbm | ) |
Definition at line 322 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 341 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 540 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 670 of file tidbitmap.c.
References TIDBitmap::nentries.
Referenced by MultiExecBitmapAnd(), and startScanEntry().
TBMIterateResult * tbm_iterate | ( | TBMIterator * | iterator | ) |
Definition at line 1614 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 BitmapAdjustPrefetchIterator(), BitmapPrefetch(), and heapam_scan_bitmap_next_block().
dsa_pointer tbm_prepare_shared_iterate | ( | TIDBitmap * | tbm | ) |
Definition at line 767 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().
TBMIterateResult * tbm_private_iterate | ( | TBMPrivateIterator * | iterator | ) |
Definition at line 972 of file tidbitmap.c.
References Assert, PagetableEntry::blockno, TIDBitmap::entry1, TIDBitmap::iterating, TIDBitmap::nchunks, TIDBitmap::npages, TBMPrivateIterator::output, output, PAGES_PER_CHUNK, PagetableEntry::recheck, TBMPrivateIterator::schunkbit, TBMPrivateIterator::schunkptr, TIDBitmap::schunks, TBMPrivateIterator::spageptr, TIDBitmap::spages, TIDBitmap::status, TBMPrivateIterator::tbm, tbm_advance_schunkbit(), tbm_extract_page_tuple(), TBM_ITERATING_PRIVATE, and TBM_ONE_PAGE.
Referenced by entryGetItem(), and tbm_iterate().
TBMIterateResult * tbm_shared_iterate | ( | TBMSharedIterator * | iterator | ) |
Definition at line 1053 of file tidbitmap.c.
References PagetableEntry::blockno, PTIterationArray::index, TBMSharedIteratorState::lock, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), TBMSharedIteratorState::nchunks, TBMSharedIteratorState::npages, TBMSharedIterator::output, output, PAGES_PER_CHUNK, TBMSharedIterator::ptbase, TBMSharedIterator::ptchunks, PTEntryArray::ptentry, TBMSharedIterator::ptpages, PagetableEntry::recheck, TBMSharedIteratorState::schunkbit, TBMSharedIteratorState::schunkptr, TBMSharedIteratorState::spageptr, TBMSharedIterator::state, tbm_advance_schunkbit(), and tbm_extract_page_tuple().
Referenced by tbm_iterate().
Definition at line 458 of file tidbitmap.c.
References a, Assert, b, i, TBM_HASH, TBM_ONE_PAGE, and tbm_union_page().
Referenced by MultiExecBitmapOr().