mirror of
https://github.com/postgres/postgres.git
synced 2025-09-05 02:22:28 +03:00
Restore sane locking behavior during parallel query.
Commit 9a3cebeaa
changed things so that parallel workers didn't obtain
any lock of their own on tables they access. That was clearly a bad
idea, but I'd mistakenly supposed that it was the intended end result
of the series of patches for simplifying the executor's lock management.
Undo that change in relation_open(), and adjust ExecOpenScanRelation()
so that it gets the correct lock if inside a parallel worker.
In passing, clean up some more obsolete comments about when locks
are acquired.
Discussion: https://postgr.es/m/468c85d9-540e-66a2-1dde-fec2b741e688@lab.ntt.co.jp
This commit is contained in:
@@ -163,10 +163,7 @@ ExecInitSeqScan(SeqScan *node, EState *estate, int eflags)
|
||||
ExecAssignExprContext(estate, &scanstate->ss.ps);
|
||||
|
||||
/*
|
||||
* Initialize scan relation.
|
||||
*
|
||||
* Get the relation object id from the relid'th entry in the range table,
|
||||
* open that relation and acquire appropriate lock on it.
|
||||
* open the scan relation
|
||||
*/
|
||||
scanstate->ss.ss_currentRelation =
|
||||
ExecOpenScanRelation(estate,
|
||||
|
Reference in New Issue
Block a user