Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5ad672f

Browse files
committed
Fix ALTER DEFAULT PRIVILEGES with duplicated objects
Specifying duplicated objects in this command would lead to uniqueconstraint violations in pg_default_acl or "tuple already updated byself" errors. Similarly to GRANT/REVOKE, increment the command ID aftereach subcommand processing to allow this case to work transparently.A regression test is added by tweaking one of the existing queries ofprivileges.sql to stress this case.Reported-by: AndrusAuthor: Michael PaquierReviewed-by: Álvaro HerreraDiscussion:https://postgr.es/m/ae2a7dc1-9d71-8cba-3bb9-e4cb7eb1f44e@hot.eeBackpatch-through: 9.5
1 parent6253159 commit5ad672f

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

‎src/backend/catalog/aclchk.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,6 +1391,9 @@ SetDefaultACL(InternalDefaultACL *iacls)
13911391
ReleaseSysCache(tuple);
13921392

13931393
table_close(rel,RowExclusiveLock);
1394+
1395+
/* prevent error when processing duplicate objects */
1396+
CommandCounterIncrement();
13941397
}
13951398

13961399

‎src/test/regress/expected/privileges.out

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1617,7 +1617,8 @@ SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'INSERT'); -
16171617
f
16181618
(1 row)
16191619

1620-
ALTER DEFAULT PRIVILEGES IN SCHEMA testns GRANT SELECT ON TABLES TO public;
1620+
-- placeholder for test with duplicated schema and role names
1621+
ALTER DEFAULT PRIVILEGES IN SCHEMA testns,testns GRANT SELECT ON TABLES TO public,public;
16211622
SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'SELECT'); -- no
16221623
has_table_privilege
16231624
---------------------

‎src/test/regress/sql/privileges.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,8 @@ CREATE TABLE testns.acltest1 (x int);
961961
SELECT has_table_privilege('regress_priv_user1','testns.acltest1','SELECT');-- no
962962
SELECT has_table_privilege('regress_priv_user1','testns.acltest1','INSERT');-- no
963963

964-
ALTER DEFAULT PRIVILEGESIN SCHEMA testnsGRANTSELECTON TABLES TO public;
964+
-- placeholder for test with duplicated schema and role names
965+
ALTER DEFAULT PRIVILEGESIN SCHEMA testns,testnsGRANTSELECTON TABLES TO public,public;
965966

966967
SELECT has_table_privilege('regress_priv_user1','testns.acltest1','SELECT');-- no
967968
SELECT has_table_privilege('regress_priv_user1','testns.acltest1','INSERT');-- no

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp