summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas2015-10-22 14:49:20 +0000
committerRobert Haas2015-10-22 14:49:20 +0000
commitbde39eed0cafb82bc94c40e95d96b5cf47b6f719 (patch)
treef7953cad3331f41078886d4811b2efec02a4d0d8
parent1a219fa15bf802d69621e71c43d1a09515bcdc50 (diff)
Fix a couple of bugs in recent parallelism-related commits.
Commit 816e336f12ecabdc834d4cc31bcf966b2dd323dc added the wrong error check to async.c; sending restrictions is restricted to the leader, not altogether unsafe. Commit 3bd909b220930f21d6e15833a17947be749e7fde added ExecShutdownNode to traverse the planstate tree and call shutdown functions, but made a Gather node, the only node that actually has such a function, abort the tree traversal, which is wrong.
-rw-r--r--src/backend/commands/async.c5
-rw-r--r--src/backend/executor/execProcnode.c5
2 files changed, 4 insertions, 6 deletions
diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c
index 3657d693bf..5059e3de92 100644
--- a/src/backend/commands/async.c
+++ b/src/backend/commands/async.c
@@ -117,6 +117,7 @@
#include <unistd.h>
#include <signal.h>
+#include "access/parallel.h"
#include "access/slru.h"
#include "access/transam.h"
#include "access/xact.h"
@@ -544,8 +545,8 @@ Async_Notify(const char *channel, const char *payload)
Notification *n;
MemoryContext oldcontext;
- if (IsInParallelMode())
- elog(ERROR, "cannot send notifications during a parallel operation");
+ if (IsParallelWorker())
+ elog(ERROR, "cannot send notifications from a parallel worker");
if (Trace_notify)
elog(DEBUG1, "Async_Notify(%s)", channel);
diff --git a/src/backend/executor/execProcnode.c b/src/backend/executor/execProcnode.c
index 5bc1d48942..6f5c5545c9 100644
--- a/src/backend/executor/execProcnode.c
+++ b/src/backend/executor/execProcnode.c
@@ -804,10 +804,7 @@ ExecShutdownNode(PlanState *node)
switch (nodeTag(node))
{
case T_GatherState:
- {
- ExecShutdownGather((GatherState *) node);
- return true;
- }
+ ExecShutdownGather((GatherState *) node);
break;
default:
break;