Clean out column-level pg_init_privs entries when dropping tables.
authorTom Lane <[email protected]>
Fri, 14 Jun 2024 20:20:35 +0000 (16:20 -0400)
committerTom Lane <[email protected]>
Fri, 14 Jun 2024 20:20:35 +0000 (16:20 -0400)
commit0a39343ae7d7430f4a993c404d95162f60daf937
tree8bac237b2a7eec89fbdab56077f6f66f732b2e9b
parent5e63a6f434152b34795e02f534615af2174707f7
Clean out column-level pg_init_privs entries when dropping tables.

DeleteInitPrivs did not get the memo about how, when dropping a
whole object (with subid == 0), you should drop entries relating
to its sub-objects too.  This is visible in the test_pg_dump test
case if one drops the extension at the end: the entry for
GRANT SELECT(col1) ON regress_pg_dump_table TO public;
was still present in pg_init_privs afterwards, although it was
pointing to a dangling table OID.

Noted while fooling with a fix for REASSIGN OWNED for pg_init_privs
entries.  This bug is aboriginal in the pg_init_privs feature
though, and there seems no reason not to back-patch the fix.
src/backend/catalog/dependency.c
src/test/modules/test_pg_dump/expected/test_pg_dump.out
src/test/modules/test_pg_dump/sql/test_pg_dump.sql