mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-23 01:50:42 +02:00
Make pg_dump acquire lock on partitioned tables that are to be dumped.
It was clearly the intent to do so all along, but the original coding fat-fingered this by checking the wrong array element. We fixed it in passing in403a3d91c
, but that later got reverted, and we forgot to keep this bug fix. Most of the time this'd be relatively harmless, since once we lock any of the partitioned table's leaf partitions, that would suffice to prevent major DDL on the partitioned table itself. However, a childless partitioned table would get dumped with no relevant lock whatsoever, possibly allowing dump failure or inconsistent output. Unlike403a3d91c
, there are no versioning concerns, since every server version that has partitioned tables will allow you to lock one. Back-patch to v10 where partitioned tables were introduced. Discussion: https://postgr.es/m/1018205.1634346327@sss.pgh.pa.us
This commit is contained in:
parent
3f5d481ef5
commit
ca7a4ce583
@ -6669,7 +6669,7 @@ getTables(Archive *fout, int *numTables)
|
||||
*/
|
||||
if (tblinfo[i].dobj.dump &&
|
||||
(tblinfo[i].relkind == RELKIND_RELATION ||
|
||||
tblinfo->relkind == RELKIND_PARTITIONED_TABLE) &&
|
||||
tblinfo[i].relkind == RELKIND_PARTITIONED_TABLE) &&
|
||||
(tblinfo[i].dobj.dump & DUMP_COMPONENTS_REQUIRING_LOCK))
|
||||
{
|
||||
resetPQExpBuffer(query);
|
||||
|
Loading…
Reference in New Issue
Block a user