aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/execMain.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/execMain.c')
-rw-r--r--src/backend/executor/execMain.c10
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.