]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix pg_dump ACL minimization for PROPERTY GRAPH.
authorNoah Misch <noah@leadboat.com>
Tue, 7 Jul 2026 16:51:04 +0000 (09:51 -0700)
committerNoah Misch <noah@leadboat.com>
Tue, 7 Jul 2026 16:51:38 +0000 (09:51 -0700)
commitccca2cd81b2dab2be7d9d451a84d971a8489ca70
tree9fc8e2ed2e9b1780969ad930c85487ed14cf900a
parent7f8745543e79ae48cb8d80e97c17105d76511fd9
Fix pg_dump ACL minimization for PROPERTY GRAPH.

Adding a GRANT caused pg_dump to emit a useless REVOKE + GRANT of owner
privileges, as seen in a dump of the regression database:

  REVOKE ALL ON PROPERTY GRAPH graph_rls_schema.cabinet FROM nm;
  GRANT ALL ON PROPERTY GRAPH graph_rls_schema.cabinet TO nm;
  GRANT ALL ON PROPERTY GRAPH graph_rls_schema.cabinet TO PUBLIC;

For normal dumps, this has no functional consequences.  For --no-owner
restores, the extra statements may fail or locate unrelated users of the
destination cluster.

The problem was pg_dump assuming NULL relacl implies acldefault('r'),
the default for TABLE.  Fix by teaching acldefault() to retrieve the
PROPERTY GRAPH default ACL.  So pg_dump can still dump from 19beta1, use
acldefault('g') for v20+ only.  For v19, use a hard-coded snapshot of
the v19 default.

information_schema.pg_property_graph_privileges also misused
acldefault('r'), but its "c.prtype IN ('SELECT')" predicate compensated
for it.  Switch to the new acldefault('g') for clarity.  Bump catversion
since a new view won't work with old binaries.  Back-patch to v19, which
introduced PROPERTY GRAPH.

Reviewed-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Reviewed-by: Robert Haas <robertmhaas@gmail.com>
Discussion: https://postgr.es/m/20260630023308.c7.noahmisch@microsoft.com
Backpatch-through: 19
src/backend/catalog/information_schema.sql
src/backend/utils/adt/acl.c
src/bin/pg_dump/pg_dump.c
src/include/catalog/catversion.h