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

Commit0ddb529

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 parent0ab177b commit0ddb529

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
@@ -1293,6 +1293,9 @@ SetDefaultACL(InternalDefaultACL *iacls)
12931293
ReleaseSysCache(tuple);
12941294

12951295
heap_close(rel,RowExclusiveLock);
1296+
1297+
/* prevent error when processing duplicate objects */
1298+
CommandCounterIncrement();
12961299
}
12971300

12981301

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1563,7 +1563,8 @@ SELECT has_table_privilege('regressuser1', 'testns.acltest1', 'INSERT'); -- no
15631563
f
15641564
(1 row)
15651565

1566-
ALTER DEFAULT PRIVILEGES IN SCHEMA testns GRANT SELECT ON TABLES TO public;
1566+
-- placeholder for test with duplicated schema and role names
1567+
ALTER DEFAULT PRIVILEGES IN SCHEMA testns,testns GRANT SELECT ON TABLES TO public,public;
15671568
SELECT has_table_privilege('regressuser1', 'testns.acltest1', 'SELECT'); -- no
15681569
has_table_privilege
15691570
---------------------

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -933,7 +933,8 @@ CREATE TABLE testns.acltest1 (x int);
933933
SELECT has_table_privilege('regressuser1','testns.acltest1','SELECT');-- no
934934
SELECT has_table_privilege('regressuser1','testns.acltest1','INSERT');-- no
935935

936-
ALTER DEFAULT PRIVILEGESIN SCHEMA testnsGRANTSELECTON TABLES TO public;
936+
-- placeholder for test with duplicated schema and role names
937+
ALTER DEFAULT PRIVILEGESIN SCHEMA testns,testnsGRANTSELECTON TABLES TO public,public;
937938

938939
SELECT has_table_privilege('regressuser1','testns.acltest1','SELECT');-- no
939940
SELECT has_table_privilege('regressuser1','testns.acltest1','INSERT');-- no

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp