1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-27 12:41:57 +03:00

Fix parallel-safety code for parallel aggregation.

has_parallel_hazard() was ignoring the proparallel markings for
aggregates, which is no good.  Fix that.  There was no way to mark
an aggregate as actually being parallel-safe, either, so add a
PARALLEL option to CREATE AGGREGATE.

Patch by me, reviewed by David Rowley.
This commit is contained in:
Robert Haas
2016-04-05 16:06:15 -04:00
parent 09adc9a8c0
commit 41ea0c2376
8 changed files with 63 additions and 11 deletions

View File

@ -1419,6 +1419,13 @@ has_parallel_hazard_walker(Node *node, has_parallel_hazard_arg *context)
if (parallel_too_dangerous(func_parallel(expr->funcid), context))
return true;
}
else if (IsA(node, Aggref))
{
Aggref *aggref = (Aggref *) node;
if (parallel_too_dangerous(func_parallel(aggref->aggfnoid), context))
return true;
}
else if (IsA(node, OpExpr))
{
OpExpr *expr = (OpExpr *) node;