OSDN Git Service

Add regression test inspired by Sebastian Böck.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 3 Oct 2004 00:13:29 +0000 (00:13 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 3 Oct 2004 00:13:29 +0000 (00:13 +0000)
src/test/regress/expected/rules.out
src/test/regress/sql/rules.sql

index 4b4a4d0..fbe3669 100644 (file)
@@ -1428,3 +1428,55 @@ DETAIL:  Key (id3a,id3c)=(1,13) is not present in table "rule_and_refint_t2".
 insert into rule_and_refint_t3 values (1, 13, 11, 'row8');
 ERROR:  insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey"
 DETAIL:  Key (id3a,id3b)=(1,13) is not present in table "rule_and_refint_t1".
+--
+-- check for planner problems with complex inherited UPDATES
+--
+create table id (id serial primary key, name text);
+NOTICE:  CREATE TABLE will create implicit sequence "id_id_seq" for serial column "id.id"
+NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "id_pkey" for table "id"
+-- currently, must respecify PKEY for each inherited subtable
+create table test_1 (id integer primary key) inherits (id);
+NOTICE:  merging column "id" with inherited definition
+NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "test_1_pkey" for table "test_1"
+create table test_2 (id integer primary key) inherits (id);
+NOTICE:  merging column "id" with inherited definition
+NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "test_2_pkey" for table "test_2"
+create table test_3 (id integer primary key) inherits (id);
+NOTICE:  merging column "id" with inherited definition
+NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "test_3_pkey" for table "test_3"
+insert into test_1 (name) values ('Test 1');
+insert into test_1 (name) values ('Test 2');
+insert into test_2 (name) values ('Test 3');
+insert into test_2 (name) values ('Test 4');
+insert into test_3 (name) values ('Test 5');
+insert into test_3 (name) values ('Test 6');
+create view id_ordered as select * from id order by id;
+create rule update_id_ordered as on update to id_ordered
+       do instead update id set name = new.name where id = old.id;
+select * from id_ordered;
+ id |  name  
+----+--------
+  1 | Test 1
+  2 | Test 2
+  3 | Test 3
+  4 | Test 4
+  5 | Test 5
+  6 | Test 6
+(6 rows)
+
+update id_ordered set name = 'update 2' where id = 2;
+update id_ordered set name = 'update 4' where id = 4;
+update id_ordered set name = 'update 5' where id = 5;
+select * from id_ordered;
+ id |   name   
+----+----------
+  1 | Test 1
+  2 | update 2
+  3 | Test 3
+  4 | update 4
+  5 | update 5
+  6 | Test 6
+(6 rows)
+
+set client_min_messages to warning; -- suppress cascade notices
+drop table id cascade;
index 908c980..4651090 100644 (file)
@@ -848,3 +848,34 @@ create rule rule_and_refint_t3_ins as on insert to rule_and_refint_t3
 
 insert into rule_and_refint_t3 values (1, 11, 13, 'row7');
 insert into rule_and_refint_t3 values (1, 13, 11, 'row8');
+
+--
+-- check for planner problems with complex inherited UPDATES
+--
+
+create table id (id serial primary key, name text);
+-- currently, must respecify PKEY for each inherited subtable
+create table test_1 (id integer primary key) inherits (id);
+create table test_2 (id integer primary key) inherits (id);
+create table test_3 (id integer primary key) inherits (id);
+
+insert into test_1 (name) values ('Test 1');
+insert into test_1 (name) values ('Test 2');
+insert into test_2 (name) values ('Test 3');
+insert into test_2 (name) values ('Test 4');
+insert into test_3 (name) values ('Test 5');
+insert into test_3 (name) values ('Test 6');
+
+create view id_ordered as select * from id order by id;
+
+create rule update_id_ordered as on update to id_ordered
+       do instead update id set name = new.name where id = old.id;
+
+select * from id_ordered;
+update id_ordered set name = 'update 2' where id = 2;
+update id_ordered set name = 'update 4' where id = 4;
+update id_ordered set name = 'update 5' where id = 5;
+select * from id_ordered;
+
+set client_min_messages to warning; -- suppress cascade notices
+drop table id cascade;