15670430创建于 2020年12月28日历史提交
CREATE ROLE dfm PASSWORD 'Gauss@123';
SELECT a.rolname, n.nspname FROM pg_authid a JOIN pg_namespace n ON (a.oid = n.nspowner AND a.rolname='dfm');
 rolname | nspname 
---------+---------
(0 rows)

DROP ROLE dfm;
CREATE USER dfm PASSWORD 'Gauss@123';
SELECT a.rolname, n.nspname FROM pg_authid a JOIN pg_namespace n ON (a.oid = n.nspowner AND a.rolname='dfm');
 rolname | nspname 
---------+---------
 dfm     | dfm
(1 row)

CREATE TABLESPACE dfm LOCATION '@testtablespace@';
SHOW search_path;
  search_path   
----------------
 "$user",public
(1 row)

SHOW default_tablespace;
 default_tablespace 
--------------------
 
(1 row)

SET behavior_compat_options = 'bind_schema_tablespace';
SHOW default_tablespace;
 default_tablespace 
--------------------
 
(1 row)

SET search_path='dfm';
SHOW search_path;
 search_path 
-------------
 dfm
(1 row)

SHOW default_tablespace;
 default_tablespace 
--------------------
 dfm
(1 row)

RESET behavior_compat_options;
RESET search_path;
RESET default_tablespace;
SHOW search_path;
  search_path   
----------------
 "$user",public
(1 row)

SHOW default_tablespace;
 default_tablespace 
--------------------
 
(1 row)

SET search_path='dfm';
SHOW search_path;
 search_path 
-------------
 dfm
(1 row)

SHOW default_tablespace;
 default_tablespace 
--------------------
 
(1 row)

DROP USER dfm;
SHOW search_path;
 search_path 
-------------
 dfm
(1 row)

SHOW default_tablespace;
 default_tablespace 
--------------------
 
(1 row)

SELECT nspname from pg_namespace where nspname='dfm';
 nspname 
---------
(0 rows)

RESET search_path;
RESET default_tablespace;
CREATE USER dfm PASSWORD 'Gauss@123';
SET SESSION AUTHORIZATION dfm PASSWORD 'Gauss@123';
SHOW search_path;
  search_path   
----------------
 "$user",public
(1 row)

SHOW default_tablespace;
 default_tablespace 
--------------------
 
(1 row)

DROP USER dfm;
ERROR:  Permission denied to drop role.
RESET SESSION AUTHORIZATION;
SET search_path='dfm';
--can not drop current schema
DROP USER dfm CASCADE;
ERROR:  fail to drop the current schema
SELECT nspname from pg_namespace where nspname='dfm';
 nspname 
---------
 dfm
(1 row)

DROP TABLESPACE dfm;