]> granicus.if.org Git - postgresql/commit
Mark more functions parallel-restricted or parallel-unsafe.
authorRobert Haas <rhaas@postgresql.org>
Fri, 16 Oct 2015 15:48:48 +0000 (11:48 -0400)
committerRobert Haas <rhaas@postgresql.org>
Fri, 16 Oct 2015 15:49:31 +0000 (11:49 -0400)
commit816e336f12ecabdc834d4cc31bcf966b2dd323dc
treec5610be399cc7f7f8c9ca12287fe6618b68f66e9
parent82b37765c76b8b2daf6cad3dfb5e5b4a2776d56f
Mark more functions parallel-restricted or parallel-unsafe.

Commit 7aea8e4f2daa4b39ca9d1309a0c4aadb0f7ed81b was overoptimistic
about the degree of safety associated with running various functions
in parallel mode.  Functions that take a table name or OID as an
argument are at least parallel-restricted, because the table might be
temporary, and we currently don't allow parallel workers to touch
temporary tables.  Functions that take a query as an argument are
outright unsafe, because the query could be anything, including a
parallel-unsafe query.

Also, the queue of pending notifications is backend-private, so adding
to it from a worker doesn't behave correctly.  We could fix this by
transferring the worker's queue of pending notifications to the master
during worker cleanup, but that seems like more trouble than it's
worth for now.  In addition to adjusting the pg_proc.h markings, also
add an explicit check for this in async.c.
src/backend/commands/async.c
src/include/catalog/catversion.h
src/include/catalog/pg_proc.h