diff options
Diffstat (limited to 'src/backend/executor/execMain.c')
-rw-r--r-- | src/backend/executor/execMain.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index c28eb2bca36..85ff46b8026 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -243,6 +243,11 @@ standard_ExecutorStart(QueryDesc *queryDesc, int eflags) if (!(eflags & (EXEC_FLAG_SKIP_TRIGGERS | EXEC_FLAG_EXPLAIN_ONLY))) AfterTriggerBeginQuery(); + /* Enter parallel mode, if required by the query. */ + if (queryDesc->plannedstmt->parallelModeNeeded && + !(eflags & EXEC_FLAG_EXPLAIN_ONLY)) + EnterParallelMode(); + MemoryContextSwitchTo(oldcontext); } @@ -474,6 +479,11 @@ standard_ExecutorEnd(QueryDesc *queryDesc) */ MemoryContextSwitchTo(oldcontext); + /* Exit parallel mode, if it was required by the query. */ + if (queryDesc->plannedstmt->parallelModeNeeded && + !(estate->es_top_eflags & EXEC_FLAG_EXPLAIN_ONLY)) + ExitParallelMode(); + /* * Release EState and per-query memory context. This should release * everything the executor has allocated. |