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

Commit21378e1

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 parenta0efda8 commit21378e1

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
@@ -1365,6 +1365,9 @@ SetDefaultACL(InternalDefaultACL *iacls)
13651365
ReleaseSysCache(tuple);
13661366

13671367
table_close(rel,RowExclusiveLock);
1368+
1369+
/* prevent error when processing duplicate objects */
1370+
CommandCounterIncrement();
13681371
}
13691372

13701373

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

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

1652-
ALTER DEFAULT PRIVILEGES IN SCHEMA testns GRANT SELECT ON TABLES TO public;
1652+
-- placeholder for test with duplicated schema and role names
1653+
ALTER DEFAULT PRIVILEGES IN SCHEMA testns,testns GRANT SELECT ON TABLES TO public,public;
16531654
SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'SELECT'); -- no
16541655
has_table_privilege
16551656
---------------------

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

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

988-
ALTER DEFAULT PRIVILEGESIN SCHEMA testnsGRANTSELECTON TABLES TO public;
988+
-- placeholder for test with duplicated schema and role names
989+
ALTER DEFAULT PRIVILEGESIN SCHEMA testns,testnsGRANTSELECTON TABLES TO public,public;
989990

990991
SELECT has_table_privilege('regress_priv_user1','testns.acltest1','SELECT');-- no
991992
SELECT has_table_privilege('regress_priv_user1','testns.acltest1','INSERT');-- no

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp