mirror of https://github.com/postgres/postgres
Renaming a role can affect the meaning of the special string $user, so must cause search_path to be recalculated. Discussion: https://postgr.es/m/186761d32c0255debbdf50b6310b581b9c973e6c.camel@j-davis.com Reviewed-by: Nathan Bossart, Michael Paquier Backpatch-through: 11pull/140/head
parent
c27f8621ee
commit
fa2e874946
@ -0,0 +1,97 @@ |
|||||||
|
Parsed test spec with 3 sessions |
||||||
|
|
||||||
|
starting permutation: s1a s2a s1a s2b |
||||||
|
step s1a: |
||||||
|
SELECT CURRENT_USER; |
||||||
|
SHOW search_path; |
||||||
|
SELECT t FROM x; |
||||||
|
|
||||||
|
current_user |
||||||
|
---------------- |
||||||
|
regress_sp_user1 |
||||||
|
(1 row) |
||||||
|
|
||||||
|
search_path |
||||||
|
-------------------------- |
||||||
|
"$user", regress_sp_public |
||||||
|
(1 row) |
||||||
|
|
||||||
|
t |
||||||
|
-------------------------- |
||||||
|
data in regress_sp_user1.x |
||||||
|
(1 row) |
||||||
|
|
||||||
|
step s2a: |
||||||
|
ALTER ROLE regress_sp_user1 RENAME TO regress_sp_user2; |
||||||
|
|
||||||
|
step s1a: |
||||||
|
SELECT CURRENT_USER; |
||||||
|
SHOW search_path; |
||||||
|
SELECT t FROM x; |
||||||
|
|
||||||
|
current_user |
||||||
|
---------------- |
||||||
|
regress_sp_user2 |
||||||
|
(1 row) |
||||||
|
|
||||||
|
search_path |
||||||
|
-------------------------- |
||||||
|
"$user", regress_sp_public |
||||||
|
(1 row) |
||||||
|
|
||||||
|
t |
||||||
|
--------------------------- |
||||||
|
data in regress_sp_public.x |
||||||
|
(1 row) |
||||||
|
|
||||||
|
step s2b: |
||||||
|
ALTER ROLE regress_sp_user2 RENAME TO regress_sp_user1; |
||||||
|
|
||||||
|
|
||||||
|
starting permutation: s1a s3a s1a s3b |
||||||
|
step s1a: |
||||||
|
SELECT CURRENT_USER; |
||||||
|
SHOW search_path; |
||||||
|
SELECT t FROM x; |
||||||
|
|
||||||
|
current_user |
||||||
|
---------------- |
||||||
|
regress_sp_user1 |
||||||
|
(1 row) |
||||||
|
|
||||||
|
search_path |
||||||
|
-------------------------- |
||||||
|
"$user", regress_sp_public |
||||||
|
(1 row) |
||||||
|
|
||||||
|
t |
||||||
|
-------------------------- |
||||||
|
data in regress_sp_user1.x |
||||||
|
(1 row) |
||||||
|
|
||||||
|
step s3a: |
||||||
|
ALTER SCHEMA regress_sp_user1 RENAME TO regress_sp_user2; |
||||||
|
|
||||||
|
step s1a: |
||||||
|
SELECT CURRENT_USER; |
||||||
|
SHOW search_path; |
||||||
|
SELECT t FROM x; |
||||||
|
|
||||||
|
current_user |
||||||
|
---------------- |
||||||
|
regress_sp_user1 |
||||||
|
(1 row) |
||||||
|
|
||||||
|
search_path |
||||||
|
-------------------------- |
||||||
|
"$user", regress_sp_public |
||||||
|
(1 row) |
||||||
|
|
||||||
|
t |
||||||
|
--------------------------- |
||||||
|
data in regress_sp_public.x |
||||||
|
(1 row) |
||||||
|
|
||||||
|
step s3b: |
||||||
|
ALTER SCHEMA regress_sp_user2 RENAME TO regress_sp_user1; |
||||||
|
|
@ -0,0 +1,59 @@ |
|||||||
|
# Test search_path invalidation. |
||||||
|
|
||||||
|
setup |
||||||
|
{ |
||||||
|
CREATE USER regress_sp_user1; |
||||||
|
CREATE SCHEMA regress_sp_user1 AUTHORIZATION regress_sp_user1; |
||||||
|
CREATE SCHEMA regress_sp_public; |
||||||
|
GRANT ALL PRIVILEGES ON SCHEMA regress_sp_public TO regress_sp_user1; |
||||||
|
} |
||||||
|
|
||||||
|
teardown |
||||||
|
{ |
||||||
|
DROP SCHEMA regress_sp_public CASCADE; |
||||||
|
DROP SCHEMA regress_sp_user1 CASCADE; |
||||||
|
DROP USER regress_sp_user1; |
||||||
|
} |
||||||
|
|
||||||
|
session s1 |
||||||
|
setup |
||||||
|
{ |
||||||
|
SET search_path = "$user", regress_sp_public; |
||||||
|
SET SESSION AUTHORIZATION regress_sp_user1; |
||||||
|
CREATE TABLE regress_sp_user1.x(t) AS SELECT 'data in regress_sp_user1.x'; |
||||||
|
CREATE TABLE regress_sp_public.x(t) AS SELECT 'data in regress_sp_public.x'; |
||||||
|
} |
||||||
|
step s1a |
||||||
|
{ |
||||||
|
SELECT CURRENT_USER; |
||||||
|
SHOW search_path; |
||||||
|
SELECT t FROM x; |
||||||
|
} |
||||||
|
|
||||||
|
session s2 |
||||||
|
step s2a |
||||||
|
{ |
||||||
|
ALTER ROLE regress_sp_user1 RENAME TO regress_sp_user2; |
||||||
|
} |
||||||
|
step s2b |
||||||
|
{ |
||||||
|
ALTER ROLE regress_sp_user2 RENAME TO regress_sp_user1; |
||||||
|
} |
||||||
|
|
||||||
|
session s3 |
||||||
|
step s3a |
||||||
|
{ |
||||||
|
ALTER SCHEMA regress_sp_user1 RENAME TO regress_sp_user2; |
||||||
|
} |
||||||
|
step s3b |
||||||
|
{ |
||||||
|
ALTER SCHEMA regress_sp_user2 RENAME TO regress_sp_user1; |
||||||
|
} |
||||||
|
|
||||||
|
# s1's search_path is invalidated by role name change in s2a, and |
||||||
|
# falls back to regress_sp_public.x |
||||||
|
permutation s1a s2a s1a s2b |
||||||
|
|
||||||
|
# s1's search_path is invalidated by schema name change in s2b, and |
||||||
|
# falls back to regress_sp_public.x |
||||||
|
permutation s1a s3a s1a s3b |
Loading…
Reference in new issue