106 elog(
ERROR,
"unrecognized result from subplan");
131 elog(
ERROR,
"unrecognized result from subplan");
179 bool need_tuples =
false;
201 scan->
st.
bitmap.rs_iterator = tbmiterator;
202 scan->
st.
bitmap.rs_shared_iterator = shared_tbmiterator;
287 if (node->
pstate == NULL &&
291 "prefetch and main iterators are out of sync. pfblockno: %d. blockno: %d",
342 else if (prefetch_iterator)
383 if (prefetch_iterator)
451 if (prefetch_iterator)
492 if (prefetch_iterator)
497 bool do_prefetch =
false;
589 if (scan->
st.
bitmap.rs_shared_iterator)
592 scan->
st.
bitmap.rs_shared_iterator = NULL;
651 Assert(ParallelWorkerNumber <= node->sinstrument->num_workers);
680 if (scanDesc->
st.
bitmap.rs_shared_iterator)
683 scanDesc->
st.
bitmap.rs_shared_iterator = NULL;
686 if (scanDesc->
st.
bitmap.rs_iterator)
689 scanDesc->
st.
bitmap.rs_iterator = NULL;
740 scanstate->
tbm = NULL;
992 if (sinstrument == NULL)
#define InvalidBlockNumber
PrefetchBufferResult PrefetchBuffer(Relation reln, ForkNumber forkNum, BlockNumber blockNum)
void ReleaseBuffer(Buffer buffer)
#define Assert(condition)
bool ConditionVariableCancelSleep(void)
void ConditionVariableBroadcast(ConditionVariable *cv)
void ConditionVariableInit(ConditionVariable *cv)
void ConditionVariableSleep(ConditionVariable *cv, uint32 wait_event_info)
#define InvalidDsaPointer
#define DsaPointerIsValid(x)
void ExecReScan(PlanState *node)
ExprState * ExecInitQual(List *qual, PlanState *parent)
void ExecEndNode(PlanState *node)
Node * MultiExecProcNode(PlanState *node)
PlanState * ExecInitNode(Plan *node, EState *estate, int eflags)
TupleTableSlot * ExecScan(ScanState *node, ExecScanAccessMtd accessMtd, ExecScanRecheckMtd recheckMtd)
void ExecAssignScanProjectionInfo(ScanState *node)
void ExecScanReScan(ScanState *node)
void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate, TupleDesc tupledesc, const TupleTableSlotOps *tts_ops)
void ExecInitResultTypeTL(PlanState *planstate)
void ExecAssignExprContext(EState *estate, PlanState *planstate)
Relation ExecOpenScanRelation(EState *estate, Index scanrelid, int eflags)
#define outerPlanState(node)
#define InstrCountFiltered2(node, delta)
struct BitmapHeapScanInstrumentation BitmapHeapScanInstrumentation
#define EXEC_FLAG_BACKWARD
TupleTableSlot *(* ExecScanAccessMtd)(ScanState *node)
bool(* ExecScanRecheckMtd)(ScanState *node, TupleTableSlot *slot)
static bool ExecQualAndReset(ExprState *state, ExprContext *econtext)
#define IsParallelWorker()
#define CHECK_FOR_INTERRUPTS()
void ExecEndBitmapHeapScan(BitmapHeapScanState *node)
void ExecBitmapHeapInitializeWorker(BitmapHeapScanState *node, ParallelWorkerContext *pwcxt)
void ExecReScanBitmapHeapScan(BitmapHeapScanState *node)
void ExecBitmapHeapEstimate(BitmapHeapScanState *node, ParallelContext *pcxt)
void ExecBitmapHeapRetrieveInstrumentation(BitmapHeapScanState *node)
void ExecBitmapHeapInitializeDSM(BitmapHeapScanState *node, ParallelContext *pcxt)
static TupleTableSlot * ExecBitmapHeapScan(PlanState *pstate)
BitmapHeapScanState * ExecInitBitmapHeapScan(BitmapHeapScan *node, EState *estate, int eflags)
static bool BitmapShouldInitializeSharedState(ParallelBitmapHeapState *pstate)
static void BitmapPrefetch(BitmapHeapScanState *node, TableScanDesc scan)
void ExecBitmapHeapReInitializeDSM(BitmapHeapScanState *node, ParallelContext *pcxt)
static void BitmapAdjustPrefetchTarget(BitmapHeapScanState *node)
static TupleTableSlot * BitmapHeapNext(BitmapHeapScanState *node)
static void BitmapDoneInitializingSharedState(ParallelBitmapHeapState *pstate)
static void BitmapAdjustPrefetchIterator(BitmapHeapScanState *node)
static bool BitmapHeapRecheck(BitmapHeapScanState *node, TupleTableSlot *slot)
#define IsA(nodeptr, _type_)
#define castNode(_type_, nodeptr)
#define RelationGetDescr(relation)
void shm_toc_insert(shm_toc *toc, uint64 key, void *address)
void * shm_toc_allocate(shm_toc *toc, Size nbytes)
void * shm_toc_lookup(shm_toc *toc, uint64 key, bool noError)
#define shm_toc_estimate_chunk(e, sz)
#define shm_toc_estimate_keys(e, cnt)
Size add_size(Size s1, Size s2)
Size mul_size(Size s1, Size s2)
static pg_noinline void Size size
#define IsMVCCSnapshot(snapshot)
int get_tablespace_io_concurrency(Oid spcid)
#define SpinLockInit(lock)
#define SpinLockRelease(lock)
#define SpinLockAcquire(lock)
ParallelBitmapHeapState * pstate
ExprState * bitmapqualorig
BitmapHeapScanInstrumentation stats
BlockNumber prefetch_blockno
SharedBitmapHeapInstrumentation * sinstrument
TBMIterator * prefetch_iterator
TBMSharedIterator * shared_prefetch_iterator
struct dsa_area * es_query_dsa
TupleTableSlot * ecxt_scantuple
dsa_pointer prefetch_iterator
shm_toc_estimator estimator
Instrumentation * instrument
ExprContext * ps_ExprContext
ExecProcNodeMtd ExecProcNode
Relation ss_currentRelation
TupleTableSlot * ss_ScanTupleSlot
struct TableScanDescData * ss_currentScanDesc
BitmapHeapScanInstrumentation sinstrument[FLEXIBLE_ARRAY_MEMBER]
union TableScanDescData::@48 st
struct TableScanDescData::@48::@49 bitmap
const TupleTableSlotOps * table_slot_callbacks(Relation relation)
static void table_endscan(TableScanDesc scan)
static void table_rescan(TableScanDesc scan, struct ScanKeyData *key)
static bool table_scan_bitmap_next_tuple(TableScanDesc scan, TupleTableSlot *slot)
static bool table_scan_bitmap_next_block(TableScanDesc scan, BlockNumber *blockno, bool *recheck, uint64 *lossy_pages, uint64 *exact_pages)
static TableScanDesc table_beginscan_bm(Relation rel, Snapshot snapshot, int nkeys, struct ScanKeyData *key, bool need_tuple)
void tbm_free(TIDBitmap *tbm)
TBMIterator * tbm_begin_iterate(TIDBitmap *tbm)
void tbm_end_iterate(TBMIterator *iterator)
void tbm_end_shared_iterate(TBMSharedIterator *iterator)
TBMSharedIterator * tbm_attach_shared_iterate(dsa_area *dsa, dsa_pointer dp)
dsa_pointer tbm_prepare_shared_iterate(TIDBitmap *tbm)
void tbm_free_shared_area(dsa_area *dsa, dsa_pointer dp)
TBMIterateResult * tbm_shared_iterate(TBMSharedIterator *iterator)
TBMIterateResult * tbm_iterate(TBMIterator *iterator)
static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)
#define VM_ALL_VISIBLE(r, b, v)