solve conficts
This commit is contained in:
parent
61414ba87d
commit
439aca70f4
|
@ -478,6 +478,11 @@ static bool ExecParallelReInitializeDSM(PlanState* planstate, ParallelContext* p
|
|||
ExecIndexScanReInitializeDSM((IndexScanState*)planstate, pcxt);
|
||||
}
|
||||
break;
|
||||
case T_IndexOnlyScanState:
|
||||
if (planstate->plan->parallel_aware) {
|
||||
ExecIndexOnlyScanReInitializeDSM((IndexOnlyScanState*)planstate, pcxt);
|
||||
}
|
||||
break;
|
||||
case T_AppendState:
|
||||
if (planstate->plan->parallel_aware) {
|
||||
ExecAppendReInitializeDSM((AppendState*)planstate, pcxt);
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
* parallel index-only scan
|
||||
* ExecIndexOnlyScanInitializeDSM initialize DSM for parallel
|
||||
* index-only scan
|
||||
* ExecIndexOnlyScanReInitializeDSM reinitialize DSM for fresh scan
|
||||
* ExecIndexOnlyScanInitializeWorker attach to DSM info in parallel worker
|
||||
*/
|
||||
#include "postgres.h"
|
||||
|
@ -260,17 +261,6 @@ TupleTableSlot* ExecIndexOnlyScan(IndexOnlyScanState* node)
|
|||
*/
|
||||
void ExecReScanIndexOnlyScan(IndexOnlyScanState* node)
|
||||
{
|
||||
bool reset_parallel_scan = true;
|
||||
|
||||
/*
|
||||
* If we are here to just update the scan keys, then don't reset parallel
|
||||
* scan. For detailed reason behind this look in the comments for
|
||||
* ExecReScanIndexScan.
|
||||
*/
|
||||
if (node->ioss_NumRuntimeKeys != 0 && !node->ioss_RuntimeKeysReady) {
|
||||
reset_parallel_scan = false;
|
||||
}
|
||||
|
||||
/*
|
||||
* For recursive-stream rescan, if number of RuntimeKeys not euqal zero,
|
||||
* just return without rescan.
|
||||
|
@ -331,10 +321,6 @@ void ExecReScanIndexOnlyScan(IndexOnlyScanState* node)
|
|||
node->ioss_NumScanKeys,
|
||||
node->ioss_OrderByKeys,
|
||||
node->ioss_NumOrderByKeys);
|
||||
|
||||
if (reset_parallel_scan && GetIndexScanDesc(node->ioss_ScanDesc)->parallel_scan) {
|
||||
index_parallelrescan(GetIndexScanDesc(node->ioss_ScanDesc));
|
||||
}
|
||||
}
|
||||
|
||||
ExecScanReScan(&node->ss);
|
||||
|
@ -898,6 +884,17 @@ void ExecIndexOnlyScanInitializeDSM(IndexOnlyScanState *node, ParallelContext *p
|
|||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
* ExecIndexOnlyScanReInitializeDSM
|
||||
*
|
||||
* Reset shared state before beginning a fresh scan.
|
||||
* ----------------------------------------------------------------
|
||||
*/
|
||||
void ExecIndexOnlyScanReInitializeDSM(IndexOnlyScanState *node, ParallelContext *pcxt)
|
||||
{
|
||||
index_parallelrescan(GetIndexScanDesc(node->ioss_ScanDesc));
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
* ExecIndexOnlyScanInitializeWorker
|
||||
*
|
||||
|
|
|
@ -28,5 +28,6 @@ extern void StoreIndexTuple(TupleTableSlot* slot, IndexTuple itup, TupleDesc itu
|
|||
/* Support functions for parallel index-only scans */
|
||||
extern void ExecIndexOnlyScanEstimate(IndexOnlyScanState *node, ParallelContext *pcxt);
|
||||
extern void ExecIndexOnlyScanInitializeDSM(IndexOnlyScanState *node, ParallelContext *pcxt, int nodeid);
|
||||
extern void ExecIndexOnlyScanReInitializeDSM(IndexOnlyScanState *node, ParallelContext *pcxt);
|
||||
extern void ExecIndexOnlyScanInitializeWorker(IndexOnlyScanState *node, void *context);
|
||||
#endif /* NODEINDEXONLYSCAN_H */
|
||||
|
|
Loading…
Reference in New Issue