On Wed, Aug 16, 2017 at 11:03 AM, Tom Lane <t...@sss.pgh.pa.us> wrote: > Robert Haas <robertmh...@gmail.com> writes: >> On Tue, Aug 15, 2017 at 6:40 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: >>> (In fact, a quick look shows a counterexample: if we pick a MinMaxAgg >>> path, that's parallel unsafe, but the original query might've been >>> completely safe.) > >> I'm quite confused here. What's parallel-unsafe about a MinMaxAgg? >> There might be some reason why it's parallel-restricted, but it >> shouldn't be parallel-unsafe. > > Well, it has subplans, so formally I think it's restricted not unsafe > --- but the parallel_safe marking on constructed paths/plans is only > safe/not-safe, not a three-way.
True, but when parallel_safe it not set, that means it's not parallel-safe, so either parallel-restricted or parallel-unsafe. But if parallelModeOK is true, then it had better be parallel-restricted, not parallel-unsafe. Which in turn means that it had better be perfectly safe to run the plan under EnterParallelMode()/ExitParallelMode(). If it's not, then <original query> UNION ALL <something that makes a Gather> would blow up. So I still don't see what's wrong here, other than that the comment is evidently not half clear enough. I don't think this is the first time we've been over all this. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers