]> granicus.if.org Git - postgresql/commitdiff
Regression tests for SCHEMA commands
authorSimon Riggs <simon@2ndQuadrant.com>
Wed, 11 Dec 2013 20:45:15 +0000 (20:45 +0000)
committerSimon Riggs <simon@2ndQuadrant.com>
Wed, 11 Dec 2013 20:45:15 +0000 (20:45 +0000)
Hari Babu Kommi reviewed by David Rowley

src/test/regress/expected/namespace.out
src/test/regress/expected/privileges.out
src/test/regress/sql/namespace.sql
src/test/regress/sql/privileges.sql

index 9187c8126a3ffa32e365400816b262daf3b6f2d5..b0cdd65af3dffa0c09d4159d12387b88b91a70ee 100644 (file)
@@ -36,12 +36,20 @@ SELECT * FROM test_schema_1.abc_view;
  4 |  
 (3 rows)
 
+ALTER SCHEMA test_schema_1 RENAME TO test_schema_renamed;
+SELECT COUNT(*) FROM pg_class WHERE relnamespace =
+    (SELECT oid FROM pg_namespace WHERE nspname = 'test_schema_1');
+ count 
+-------
+     0
+(1 row)
+
 -- test IF NOT EXISTS cases
-CREATE SCHEMA test_schema_1; -- fail, already exists
-ERROR:  schema "test_schema_1" already exists
-CREATE SCHEMA IF NOT EXISTS test_schema_1; -- ok with notice
-NOTICE:  schema "test_schema_1" already exists, skipping
-CREATE SCHEMA IF NOT EXISTS test_schema_1 -- fail, disallowed
+CREATE SCHEMA test_schema_renamed; -- fail, already exists
+ERROR:  schema "test_schema_renamed" already exists
+CREATE SCHEMA IF NOT EXISTS test_schema_renamed; -- ok with notice
+NOTICE:  schema "test_schema_renamed" already exists, skipping
+CREATE SCHEMA IF NOT EXISTS test_schema_renamed -- fail, disallowed
        CREATE TABLE abc (
               a serial,
               b int UNIQUE
@@ -49,13 +57,13 @@ CREATE SCHEMA IF NOT EXISTS test_schema_1 -- fail, disallowed
 ERROR:  CREATE SCHEMA IF NOT EXISTS cannot include schema elements
 LINE 2:        CREATE TABLE abc (
                ^
-DROP SCHEMA test_schema_1 CASCADE;
+DROP SCHEMA test_schema_renamed CASCADE;
 NOTICE:  drop cascades to 2 other objects
-DETAIL:  drop cascades to table test_schema_1.abc
-drop cascades to view test_schema_1.abc_view
+DETAIL:  drop cascades to table test_schema_renamed.abc
+drop cascades to view test_schema_renamed.abc_view
 -- verify that the objects were dropped
 SELECT COUNT(*) FROM pg_class WHERE relnamespace =
-    (SELECT oid FROM pg_namespace WHERE nspname = 'test_schema_1');
+    (SELECT oid FROM pg_namespace WHERE nspname = 'test_schema_renamed');
  count 
 -------
      0
index 3da03fc9ae26666895aece652276199bc92826f7..fa574d744eeca92728d72eb6eb89cd78b9424f6f 100644 (file)
@@ -1350,6 +1350,34 @@ SELECT has_function_privilege('regressuser1', 'testns.testfunc(int)', 'EXECUTE')
 SET client_min_messages TO 'warning';
 DROP SCHEMA testns CASCADE;
 RESET client_min_messages;
+-- Change owner of the schema & and rename of new schema owner
+\c -
+CREATE ROLE schemauser1 superuser login;
+CREATE ROLE schemauser2 superuser login;
+SET SESSION ROLE schemauser1;
+CREATE SCHEMA testns;
+SELECT nspname, rolname FROM pg_namespace, pg_roles WHERE pg_namespace.nspname = 'testns' AND pg_namespace.nspowner = pg_roles.oid;
+ nspname |   rolname   
+---------+-------------
+ testns  | schemauser1
+(1 row)
+
+ALTER SCHEMA testns OWNER TO schemauser2;
+ALTER ROLE schemauser2 RENAME TO schemauser_renamed;
+SELECT nspname, rolname FROM pg_namespace, pg_roles WHERE pg_namespace.nspname = 'testns' AND pg_namespace.nspowner = pg_roles.oid;
+ nspname |      rolname       
+---------+--------------------
+ testns  | schemauser_renamed
+(1 row)
+
+set session role schemauser_renamed;
+SET client_min_messages TO 'warning';
+DROP SCHEMA testns CASCADE;
+RESET client_min_messages;
+-- clean up
+\c -
+DROP ROLE schemauser1;
+DROP ROLE schemauser_renamed;
 -- test that dependent privileges are revoked (or not) properly
 \c -
 set session role regressuser1;
index 879b6c35b05cd2d101ca3b69431aa3ea8f7b17eb..51cb091cc52a517e5ed49d7e578ff4d9005e967e 100644 (file)
@@ -24,17 +24,21 @@ INSERT INTO test_schema_1.abc DEFAULT VALUES;
 SELECT * FROM test_schema_1.abc;
 SELECT * FROM test_schema_1.abc_view;
 
+ALTER SCHEMA test_schema_1 RENAME TO test_schema_renamed;
+SELECT COUNT(*) FROM pg_class WHERE relnamespace =
+    (SELECT oid FROM pg_namespace WHERE nspname = 'test_schema_1');
+
 -- test IF NOT EXISTS cases
-CREATE SCHEMA test_schema_1; -- fail, already exists
-CREATE SCHEMA IF NOT EXISTS test_schema_1; -- ok with notice
-CREATE SCHEMA IF NOT EXISTS test_schema_1 -- fail, disallowed
+CREATE SCHEMA test_schema_renamed; -- fail, already exists
+CREATE SCHEMA IF NOT EXISTS test_schema_renamed; -- ok with notice
+CREATE SCHEMA IF NOT EXISTS test_schema_renamed -- fail, disallowed
        CREATE TABLE abc (
               a serial,
               b int UNIQUE
        );
 
-DROP SCHEMA test_schema_1 CASCADE;
+DROP SCHEMA test_schema_renamed CASCADE;
 
 -- verify that the objects were dropped
 SELECT COUNT(*) FROM pg_class WHERE relnamespace =
-    (SELECT oid FROM pg_namespace WHERE nspname = 'test_schema_1');
+    (SELECT oid FROM pg_namespace WHERE nspname = 'test_schema_renamed');
index cb993ae2b0907475efa616eafa1292c74afa1e35..38f8695475c48bc7275e418d9b72a38449fdb1b9 100644 (file)
@@ -813,6 +813,33 @@ DROP SCHEMA testns CASCADE;
 RESET client_min_messages;
 
 
+-- Change owner of the schema & and rename of new schema owner
+\c -
+
+CREATE ROLE schemauser1 superuser login;
+CREATE ROLE schemauser2 superuser login;
+
+SET SESSION ROLE schemauser1;
+CREATE SCHEMA testns;
+
+SELECT nspname, rolname FROM pg_namespace, pg_roles WHERE pg_namespace.nspname = 'testns' AND pg_namespace.nspowner = pg_roles.oid;
+
+ALTER SCHEMA testns OWNER TO schemauser2;
+ALTER ROLE schemauser2 RENAME TO schemauser_renamed;
+SELECT nspname, rolname FROM pg_namespace, pg_roles WHERE pg_namespace.nspname = 'testns' AND pg_namespace.nspowner = pg_roles.oid;
+
+set session role schemauser_renamed;
+SET client_min_messages TO 'warning';
+DROP SCHEMA testns CASCADE;
+RESET client_min_messages;
+
+-- clean up
+\c -
+
+DROP ROLE schemauser1;
+DROP ROLE schemauser_renamed;
+
+
 -- test that dependent privileges are revoked (or not) properly
 \c -