summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorTom Lane2013-02-09 04:58:40 +0000
committerTom Lane2013-02-09 04:58:40 +0000
commitc61e26ee3e447c0277c6c4e5a8a452dbefdc502d (patch)
tree156aaa9c81e67649fab714f63257d88ba6424322 /src/test
parentf806c191a3d5faa1af1e5032d394fc6c5f93df86 (diff)
Add support for ALTER RULE ... RENAME TO.
Ali Dar, reviewed by Dean Rasheed.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/regress/expected/rules.out41
-rw-r--r--src/test/regress/sql/rules.sql28
2 files changed, 69 insertions, 0 deletions
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index 711ae53a617..869ca8c9a9a 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -2559,3 +2559,44 @@ Rules:
ON UPDATE TO rules_src DO VALUES (old.f1,old.f2,'old'::text), (new.f1,new.f2,'new'::text)
Has OIDs: no
+--
+-- check alter rename rule
+--
+CREATE TABLE rule_t1 (a INT);
+CREATE VIEW rule_v1 AS SELECT * FROM rule_t1;
+CREATE RULE InsertRule AS
+ ON INSERT TO rule_v1
+ DO INSTEAD
+ INSERT INTO rule_t1 VALUES(new.a);
+ALTER RULE InsertRule ON rule_v1 RENAME to NewInsertRule;
+INSERT INTO rule_v1 VALUES(1);
+SELECT * FROM rule_v1;
+ a
+---
+ 1
+(1 row)
+
+\d+ rule_v1
+ View "public.rule_v1"
+ Column | Type | Modifiers | Storage | Description
+--------+---------+-----------+---------+-------------
+ a | integer | | plain |
+View definition:
+ SELECT rule_t1.a
+ FROM rule_t1;
+Rules:
+ newinsertrule AS
+ ON INSERT TO rule_v1 DO INSTEAD INSERT INTO rule_t1 (a)
+ VALUES (new.a)
+
+--
+-- error conditions for alter rename rule
+--
+ALTER RULE InsertRule ON rule_v1 RENAME TO NewInsertRule; -- doesn't exist
+ERROR: rule "insertrule" for relation "rule_v1" does not exist
+ALTER RULE NewInsertRule ON rule_v1 RENAME TO "_RETURN"; -- already exists
+ERROR: rule "_RETURN" for relation "rule_v1" already exists
+ALTER RULE "_RETURN" ON rule_v1 RENAME TO abc; -- ON SELECT rule cannot be renamed
+ERROR: renaming an ON SELECT rule is not allowed
+DROP VIEW rule_v1;
+DROP TABLE rule_t1;
diff --git a/src/test/regress/sql/rules.sql b/src/test/regress/sql/rules.sql
index 458c2f026c0..b8d67ae9f3d 100644
--- a/src/test/regress/sql/rules.sql
+++ b/src/test/regress/sql/rules.sql
@@ -968,3 +968,31 @@ update rules_src set f2 = f2 / 10;
select * from rules_src;
select * from rules_log;
\d+ rules_src
+
+--
+-- check alter rename rule
+--
+CREATE TABLE rule_t1 (a INT);
+CREATE VIEW rule_v1 AS SELECT * FROM rule_t1;
+
+CREATE RULE InsertRule AS
+ ON INSERT TO rule_v1
+ DO INSTEAD
+ INSERT INTO rule_t1 VALUES(new.a);
+
+ALTER RULE InsertRule ON rule_v1 RENAME to NewInsertRule;
+
+INSERT INTO rule_v1 VALUES(1);
+SELECT * FROM rule_v1;
+
+\d+ rule_v1
+
+--
+-- error conditions for alter rename rule
+--
+ALTER RULE InsertRule ON rule_v1 RENAME TO NewInsertRule; -- doesn't exist
+ALTER RULE NewInsertRule ON rule_v1 RENAME TO "_RETURN"; -- already exists
+ALTER RULE "_RETURN" ON rule_v1 RENAME TO abc; -- ON SELECT rule cannot be renamed
+
+DROP VIEW rule_v1;
+DROP TABLE rule_t1;