pgsql: Fix omission of column-level privileges in selective pg_restore.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix omission of column-level privileges in selective pg_restore.
Дата
Msg-id E1qnMia-007AG5-Vq@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix omission of column-level privileges in selective pg_restore.

In a selective restore, ACLs for a table should be dumped if the
table is selected to be dumped.  However, if the table has both
table-level and column-level ACLs, only the table-level ACL was
restored.  This happened because _tocEntryRequired assumed that
an ACL could have only one dependency (the one on its table),
and punted if there was more than one.  But since commit ea9125304,
column-level ACLs also depend on the table-level ACL if any, to
ensure correct ordering in parallel restores.  To fix, adjust the
logic in _tocEntryRequired to ignore dependencies on ACLs.

I extended a test case in 002_pg_dump.pl so that it purports to
test for this; but in fact the test passes even without the fix.
That's because this bug only manifests during a selective restore,
while the scenarios 002_pg_dump.pl tests include only selective dumps.
Perhaps somebody would like to extend the script so that it can test
scenarios including selective restore, but I'm not touching that.

Euler Taveira and Tom Lane, per report from Kong Man.
Back-patch to all supported branches.

Discussion: https://postgr.es/m/DM4PR11MB73976902DBBA10B1D652F9498B06A@DM4PR11MB7397.namprd11.prod.outlook.com

Branch
------
REL_16_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/aaaf8fbb67f844cd0b20648697320d940b4b8eb9

Modified Files
--------------
src/bin/pg_dump/pg_backup_archiver.c | 24 +++++++++++++++++++++---
src/bin/pg_dump/t/002_pg_dump.pl     | 10 ++++++----
2 files changed, 27 insertions(+), 7 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: pgsql: Remove retry loop in heap_page_prune().
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix omission of column-level privileges in selective pg_restore.