mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Revert the commits related to allowing page lock to conflict among parallel group members.
This commit reverts the work done by commits3ba59ccc89
and72e78d831a
. Those commits were incorrect in asserting that we never acquire any other heavy-weight lock after acquring page lock other than relation extension lock. We can acquire a lock on catalogs while doing catalog look up after acquring page lock. This won't impact any existing feature but we need to think some other way to achieve this before parallelizing other write operations or even improving the parallelism in vacuum (like allowing multiple workers for an index). Reported-by: Jaime Casanova Author: Amit Kapila Backpatch-through: 13 Discussion: https://postgr.es/m/CAJKUy5jffnRKNvRHKQ0LynRb0RJC-o4P8Ku3x9vGAVLwDBWumQ@mail.gmail.com
This commit is contained in:
@ -319,11 +319,13 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,
|
||||
* functions are present in the query tree.
|
||||
*
|
||||
* (Note that we do allow CREATE TABLE AS, SELECT INTO, and CREATE
|
||||
* MATERIALIZED VIEW to use parallel plans, but as of now, only the leader
|
||||
* backend writes into a completely new table. In the future, we can
|
||||
* extend it to allow workers to write into the table. However, to allow
|
||||
* parallel updates and deletes, we have to solve other problems,
|
||||
* especially around combo CIDs.)
|
||||
* MATERIALIZED VIEW to use parallel plans, but this is safe only because
|
||||
* the command is writing into a completely new table which workers won't
|
||||
* be able to see. If the workers could see the table, the fact that
|
||||
* group locking would cause them to ignore the leader's heavyweight
|
||||
* GIN page locks would make this unsafe. We'll have to fix that somehow
|
||||
* if we want to allow parallel inserts in general; updates and deletes
|
||||
* have additional problems especially around combo CIDs.)
|
||||
*
|
||||
* For now, we don't try to use parallel mode if we're running inside a
|
||||
* parallel worker. We might eventually be able to relax this
|
||||
|
Reference in New Issue
Block a user