From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Avoid trying to restore table ACLs and per-column ACLs in parall |
Date: | 2020-07-11 17:37:21 |
Message-ID: | E1juJRB-0007Po-Of@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Avoid trying to restore table ACLs and per-column ACLs in parallel.
Parallel pg_restore has always supposed that ACL items for different
objects are independent and can be restored in parallel without
conflicts. However, there is one case where this fails: because
REVOKE on a table is defined to also revoke the privilege(s) at
column level, we can't restore per-column ACLs till after we restore
any table-level privileges on their table. Failure to honor this
restriction can lead to "tuple concurrently updated" errors during
parallel restore, or even to the per-column ACLs silently disappearing
because the table-level REVOKE is executed afterwards.
To fix, add a dependency from each column-level ACL item to its table's
ACL item, if there is one. Note that this doesn't fix the hazard
for pre-existing archive files, only for ones made with a corrected
pg_dump. Given that the bug's been there quite awhile without
field reports, I think this is acceptable.
This requires changing the API of pg_dump's dumpACL() function.
To keep its argument list from getting even longer, I removed the
"CatalogId objCatId" argument, which has been unused for ages.
Per report from Justin Pryzby. Back-patch to all supported branches.
Discussion: https://postgr.es/m/20200706050129.GW4107@telsasoft.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/ea9125304dc6e90eabad165bd120eb1e667525d4
Modified Files
--------------
src/bin/pg_dump/common.c | 2 +-
src/bin/pg_dump/pg_backup.h | 6 +++
src/bin/pg_dump/pg_dump.c | 91 ++++++++++++++++++++++++++++-----------------
3 files changed, 64 insertions(+), 35 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2020-07-11 18:21:36 | pgsql: Avoid useless buffer allocations during binary COPY FROM. |
Previous Message | Peter Eisentraut | 2020-07-11 11:51:47 | pgsql: doc: Add link from pg_dump --encoding to supported encodings |