The following bug has been logged on the website:
Bug reference: 14473
Logged by: Steven Winfield
Email address: steven.winfield@cantabcapital.com
PostgreSQL version: 9.6.1
Operating system: RHEL 7.3
Description:
Let's say a user is using all but two or three of their allowed connections
(set with ALTER USER name CONNECTION LIMIT n).
Now if they attempt to execute a query that would be executed in parallel by
many (say 8) workers, such as a count(*) of a large table, then the users
connection limit can be reached and the query is aborted:
mydatabase=> select count(*) from large_table;
ERROR: too many connections for role "myname"
CONTEXT: parallel worker
...even though the query could have been successfully executed with fewer
workers (as I checked by locally setting max_parallel_workers_per_gather to
0).
This is surprising, because in other circumstances the query _can_ proceed
with fewer workers than planned - e.g. when the max_worker_processes limit
has been hit.
From the docs:
(https://www.postgresql.org/docs/9.6/static/how-parallel-query-works.html)
"Every background worker process which is successfully started for a given
parallel query will execute the portion of the plan which is a descendent of
the Gather node"
...implying (at least to me) that workers may not start successfully, but
this is handled gracefully.
I couldn't find anything in the docs about the relationship between
max_parallel_workers_per_gather and a user's connection limit, nor that the
connection could be blown and that queries could be aborted.
Thanks,
Steve.
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs