2012-10-19 36 views
2

場景SET SESSION AUTHORIZATION和<code>testrole</code>搜索路徑

CREATE SCHEMA testschema; 
CREATE ROLE testrole LOGIN; 
GRANT ALL ON SCHEMA testschema TO testrole; 
ALTER ROLE testrole SET search_path = testschema; 

現在,如果我發起連接(登錄),則:

SHOW search_path; 

得到期望的結果:

search_path 
------------- 
testschema 
(1 row) 

但是,如果我作爲超級用戶發起連接(登錄)用戶做:

SET SESSION AUTHORIZATION testrole; 
SHOW search_path; 

結果:

search_path 
---------------- 
"$user",public 
(1 row) 

(或任何超級用戶的搜索路徑)


我的問題是,爲什麼SET SESSION AUTHORIZATION不影響當前search_path
這是一個錯誤,由設計或我只是doinitwrong?

從我發現的小問題來看,在SET SESSION...之後SET SEARCH path = schemaname的解決方法似乎是唯一的解決方案,但這種方式卻失去了將持久搜索路徑分配給角色的目的。

回答

2

這是設計。我引用ALTER ROLE

這隻發生在登錄時;執行SET ROLE或SET SESSION授權不會導致設置新的配置值。