Update of /cvsroot/monetdb/sql/src/test/Triggers
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv21172

Modified Files:
      Tag: SQL_2-18
        cascaded_triggers.sql recursive_triggers.sql 
        referencing_clause_new.sql referencing_clause_old.sql 
Log Message:
The new tests for UPDATE/DELETE CASCADE




Index: referencing_clause_new.sql
===================================================================
RCS file: /cvsroot/monetdb/sql/src/test/Triggers/referencing_clause_new.sql,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -u -d -r1.4 -r1.4.4.1
--- referencing_clause_new.sql  7 Dec 2006 15:26:06 -0000       1.4
+++ referencing_clause_new.sql  8 Jun 2007 12:47:50 -0000       1.4.4.1
@@ -1,101 +1,199 @@
+--this test only tests the sintax
 --the semantic should also be tested after the syntax test
 
 create table t1 (id int, name varchar(1024));
+create table t2 (id int, name varchar(1024));
 
---test when the trigger event is UPDATE
+--test when trigger event is UPDATE
 insert into t1 values(10, 'monetdb');
 insert into t1 values(20, 'monet');
 
 
 create trigger test1
        after update on t1 referencing new row as new_row
-       for each row insert into t1 values(0, 'update_new_row');
+       for each row insert into t2 values(0, 'update_new_row');
 
 create trigger test2
        after update on t1 referencing new row new_row
-       for each row insert into t1 values(1, 'update_new_row');
+       for each row insert into t2 values(1, 'update_new_row');
 
 create trigger test3
        after update on t1 referencing new as new_row
-       for each row insert into t1 values(2, 'update_new_row');
+       for each row insert into t2 values(2, 'update_new_row');
 
 create trigger test4
        after update on t1 referencing new new_row
-       for each row insert into t1 values(3, 'update_new_row');
+       for each row insert into t2 values(3, 'update_new_row');
 
 
 update t1 set name = 'mo' where id = 10;
 
 select * from t1;
+select * from t2;
+
+delete from t1 where id > -1;
+delete from t2 where id > -1;
+
+drop trigger test1;
+drop trigger test2;
+drop trigger test3;
+drop trigger test4;
+
+--test when trigger event is DELETE
+insert into t1 values(10, 'monetdb');
+insert into t1 values(20, 'monet');
+
+create trigger test1
+       after delete on t1 referencing new row as new_row
+       for each row insert into t2 values(0, 'delete_new_row');
+
+create trigger test2
+       after delete on t1 referencing new row new_row
+       for each row insert into t2 values(1, 'delete_new_row');
+
+create trigger test3
+       after delete on t1 referencing new as new_row
+       for each row insert into t2 values(2, 'delete_new_row');
+
+create trigger test4
+       after delete on t1 referencing new new_row
+       for each row insert into t2 values(3, 'delete_new_row');
+
 
 delete from t1 where id >-1;
 
+select * from t1;
+select * from t2;
+
 drop trigger test1;
 drop trigger test2;
 drop trigger test3;
 drop trigger test4;
 
---test when the trigger event is INSERT
+delete from t2 where id >-1;
+
+--test error messages
+--new row and new table are not allowed if the Trigger event is INSERT
+
 insert into t1 values(10, 'monetdb');
 
 create trigger test1
        after insert on t1 referencing new row as new_row
-       for each row insert into t1 values(0, 'insert_new_row');
+       for each row insert into t2 values(0, 'insert_new_row');
 
 create trigger test2
        after insert on t1 referencing new row new_row
-       for each row insert into t1 values(1, 'insert_new_row');
+       for each row insert into t2 values(1, 'insert_new_row');
 
 create trigger test3
        after insert on t1 referencing new as new_row
-       for each row insert into t1 values(2, 'insert_new_row');
+       for each row insert into t2 values(2, 'insert_new_row');
 
 create trigger test4
        after insert on t1 referencing new new_row
-       for each row insert into t1 values(3, 'insert_new_row');
+       for each row insert into t2 values(3, 'insert_new_row');
+
 
 insert into t1 values(20, 'monet');
 
 select * from t1;
+select * from t2;
 
-delete from t1 where id > -1;
+delete from t1 where id >-1;
+delete from t2 where id >-1;
 
 drop trigger test1;
 drop trigger test2;
 drop trigger test3;
 drop trigger test4;
 
---test error messages
---new row and new table are not allowed if the Trigger event is DELETE
+--test with new row and new table and mixed 
 
 insert into t1 values(10, 'monetdb');
 insert into t1 values(20, 'monet');
 
 create trigger test1
-       after delete on t1 referencing new row as new_row
-       for each row insert into t1 values(0, 'delete_new_row');
+       after update on t1 referencing new row as new_row new table as new_table
+       for each row insert into t2 values(0, 'insert_new_row_table');
 
 create trigger test2
-       after delete on t1 referencing new row new_row
-       for each row insert into t1 values(1, 'delete_new_row');
+       after update on t1 referencing new row new_row new row as new_row
+       for each row insert into t2 values(1, 'insert_new_new_row');
 
 create trigger test3
-       after delete on t1 referencing new as new_row
-       for each row insert into t1 values(2, 'delete_new_row');
+       after update on t1 referencing new table as new_table new table as 
new_table
+       for each row insert into t2 values(2, 'insert_new__new_table');
 
 create trigger test4
-       after delete on t1 referencing new new_row
-       for each row insert into t1 values(3, 'delete_new_row');
+       after update on t1 referencing new row as new_row new table as new_table
+       for each row insert into t2 values(3, 'insert_new_row_new_table');
 
+create trigger test5
+       after update on t1 referencing new table as new_table new row as new_row
+       for each row insert into t2 values(4, 'insert_new_table_new_row');
 
-delete from t1 where id >1;
+
+update t1 set name = 'mo' where id = 10;
 
 select * from t1;
+select * from t2;
+
+delete from t1 where id >-1;
+delete from t2 where id >-1;
+
 
 drop trigger test1;
 drop trigger test2;
 drop trigger test3;
 drop trigger test4;
+drop trigger test5;
+
+--test stanger combinations
+
+insert into t1 values(10, 'monetdb');
+
+create trigger test1
+       after update on t1 referencing new row as new_row new table as new_table
+       for each row insert into t2 values(0, 'update_new_row_new_table');
+
+create trigger test2
+       after insert on t1 referencing new row new_row new row as new_row
+       for each row insert into t2 values(1, 'insert_new_new_row');
+
+create trigger test3
+       after delete on t1 referencing new row new_row new row as new_row
+       for each row insert into t2 values(2, 'delete_new_new_row');
+
+create trigger test4
+       after delete on t1 referencing new row as new_row new table as new_table
+       for each row insert into t2 values(3, 'delete_new_row_new_table');
+
+create trigger test5
+       after insert on t1 referencing new table as new_table new row as new_row
+       for each row insert into t2 values(4, 'insert_new_table_new_row');
+
+insert into t1 values(20, 'monet');
+select * from t1;
+select * from t2;
+
+update t1 set name = 'mo' where id = 10;
+select * from t1;
+select * from t2;
+
+delete from t1 where id >5;
+select * from t1;
+select * from t2;
+
+
+drop trigger test1;
+drop trigger test2;
+drop trigger test3;
+drop trigger test4;
+drop trigger test5;
+
+delete from t1 where id >-1;
+delete from t2 where id >-1;
 
 --Cleanup
 drop table t1;
+drop table t2;

Index: cascaded_triggers.sql
===================================================================
RCS file: /cvsroot/monetdb/sql/src/test/Triggers/cascaded_triggers.sql,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -u -d -r1.2 -r1.2.4.1
--- cascaded_triggers.sql       6 Dec 2006 10:27:38 -0000       1.2
+++ cascaded_triggers.sql       8 Jun 2007 12:47:49 -0000       1.2.4.1
@@ -1,53 +1,31 @@
---test the semantic of cascaded triggers
 create table t1(id int, name varchar(1024), age int);
-
 create table t2(id int, age int);
 
 create trigger test_0 after insert on t1
-       update t1 set id = 1, name = 'monetdb', age = 24 where id =1;
-
-insert into t1 values(1, 'mo', 25);
-
-select * from t1;
-
-select * from t2;
-
-create trigger test_1 after insert on t1
        insert into t2 select id,age from t1;
 
-insert into t1 values(2, 'mo', 26);
-
-select * from t1;
-
-select * from t2;
-
-create trigger test_2 after insert on t1
-       insert into t2 values(1,23);
-
-insert into t1 values(3, 'mo', 27);
+insert into t1 values(1, 'mo', 25);
 
 select * from t1;
-
 select * from t2;
 
-create trigger test_3 after delete on t1
-       delete from t1 where id =3;
+create trigger test_1 after delete on t1
+       insert into t1 values(3, 'mo', 27);
 
 delete from t1 where id = 1;
 
 select * from t1;
-
 select * from t2;
 
-create trigger test_4 after update on t1
-       update t1
-       set age = 27
-       where id = 2;
+create trigger test_2 after update on t1
+       delete from t2;
+
+create trigger test_3 after delete on t2
+       insert into t1 values(1, 'mo', 25);
 
 update t1 set name = 'monet' where id = 2;
 
 select * from t1;
-
 select * from t2;
 
 drop trigger test_0;
@@ -58,8 +36,6 @@
 
 drop trigger test_3;
 
-drop trigger test_4;
-
 drop table t1;
 
 drop table t2;

Index: referencing_clause_old.sql
===================================================================
RCS file: /cvsroot/monetdb/sql/src/test/Triggers/referencing_clause_old.sql,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -u -d -r1.4 -r1.4.4.1
--- referencing_clause_old.sql  8 Dec 2006 12:17:42 -0000       1.4
+++ referencing_clause_old.sql  8 Jun 2007 12:47:50 -0000       1.4.4.1
@@ -2,6 +2,7 @@
 --the semantic should also be tested after the syntax test
 
 create table t1 (id int, name varchar(1024));
+create table t2 (id int, name varchar(1024));
 
 --test when trigger event is UPDATE
 insert into t1 values(10, 'monetdb');
@@ -10,26 +11,28 @@
 
 create trigger test1
        after update on t1 referencing old row as old_row
-       for each row insert into t1 values(0, 'update_old_row');
+       for each row insert into t2 values(0, 'update_old_row');
 
 create trigger test2
        after update on t1 referencing old row old_row
-       for each row insert into t1 values(1, 'update_old_row');
+       for each row insert into t2 values(1, 'update_old_row');
 
 create trigger test3
        after update on t1 referencing old as old_row
-       for each row insert into t1 values(2, 'update_old_row');
+       for each row insert into t2 values(2, 'update_old_row');
 
 create trigger test4
        after update on t1 referencing old old_row
-       for each row insert into t1 values(3, 'update_old_row');
+       for each row insert into t2 values(3, 'update_old_row');
 
 
 update t1 set name = 'mo' where id = 10;
 
 select * from t1;
+select * from t2;
 
 delete from t1 where id > -1;
+delete from t2 where id > -1;
 
 drop trigger test1;
 drop trigger test2;
@@ -42,31 +45,32 @@
 
 create trigger test1
        after delete on t1 referencing old row as old_row
-       for each row insert into t1 values(0, 'delete_old_row');
+       for each row insert into t2 values(0, 'delete_old_row');
 
 create trigger test2
        after delete on t1 referencing old row old_row
-       for each row insert into t1 values(1, 'delete_old_row');
+       for each row insert into t2 values(1, 'delete_old_row');
 
 create trigger test3
        after delete on t1 referencing old as old_row
-       for each row insert into t1 values(2, 'delete_old_row');
+       for each row insert into t2 values(2, 'delete_old_row');
 
 create trigger test4
        after delete on t1 referencing old old_row
-       for each row insert into t1 values(3, 'delete_old_row');
+       for each row insert into t2 values(3, 'delete_old_row');
 
 
 delete from t1 where id >-1;
 
 select * from t1;
+select * from t2;
 
 drop trigger test1;
 drop trigger test2;
 drop trigger test3;
 drop trigger test4;
 
-delete from t1 where id >-1;
+delete from t2 where id >-1;
 
 --test error messages
 --old row and old table are not allowed if the Trigger event is INSERT
@@ -75,26 +79,28 @@
 
 create trigger test1
        after insert on t1 referencing old row as old_row
-       for each row insert into t1 values(0, 'insert_old_row');
+       for each row insert into t2 values(0, 'insert_old_row');
 
 create trigger test2
        after insert on t1 referencing old row old_row
-       for each row insert into t1 values(1, 'insert_old_row');
+       for each row insert into t2 values(1, 'insert_old_row');
 
 create trigger test3
        after insert on t1 referencing old as old_row
-       for each row insert into t1 values(2, 'insert_old_row');
+       for each row insert into t2 values(2, 'insert_old_row');
 
 create trigger test4
        after insert on t1 referencing old old_row
-       for each row insert into t1 values(3, 'insert_old_row');
+       for each row insert into t2 values(3, 'insert_old_row');
 
 
 insert into t1 values(20, 'monet');
 
 select * from t1;
+select * from t2;
 
 delete from t1 where id >-1;
+delete from t2 where id >-1;
 
 drop trigger test1;
 drop trigger test2;
@@ -108,30 +114,33 @@
 
 create trigger test1
        after update on t1 referencing old row as old_row old table as old_table
-       for each row insert into t1 values(0, 'insert_old_row_table');
+       for each row insert into t2 values(0, 'insert_old_row_table');
 
 create trigger test2
        after update on t1 referencing old row old_row new row as new_row
-       for each row insert into t1 values(1, 'insert_old_new_row');
+       for each row insert into t2 values(1, 'insert_old_new_row');
 
 create trigger test3
        after update on t1 referencing old table as old_table new table as 
new_table
-       for each row insert into t1 values(2, 'insert_old__new_table');
+       for each row insert into t2 values(2, 'insert_old__new_table');
 
 create trigger test4
        after update on t1 referencing old row as old_row new table as new_table
-       for each row insert into t1 values(3, 'insert_old_row_new_table');
+       for each row insert into t2 values(3, 'insert_old_row_new_table');
 
 create trigger test5
        after update on t1 referencing old table as old_table new row as new_row
-       for each row insert into t1 values(3, 'insert_old_table_new_row');
+       for each row insert into t2 values(4, 'insert_old_table_new_row');
 
 
 update t1 set name = 'mo' where id = 10;
 
 select * from t1;
+select * from t2;
 
 delete from t1 where id >-1;
+delete from t2 where id >-1;
+
 
 drop trigger test1;
 drop trigger test2;
@@ -145,32 +154,35 @@
 
 create trigger test1
        after update on t1 referencing old row as old_row new table as new_table
-       for each row insert into t1 values(0, 'update_old_row__new_table');
+       for each row insert into t2 values(0, 'update_old_row_new_table');
 
 create trigger test2
        after insert on t1 referencing old row old_row new row as new_row
-       for each row insert into t1 values(1, 'insert_old_new_row');
+       for each row insert into t2 values(1, 'insert_old_new_row');
 
 create trigger test3
        after delete on t1 referencing old row old_row new row as new_row
-       for each row insert into t1 values(1, 'delete_old_new_row');
+       for each row insert into t2 values(2, 'delete_old_new_row');
 
 create trigger test4
        after delete on t1 referencing old row as old_row new table as new_table
-       for each row insert into t1 values(3, 'delete_old_row_new_table');
+       for each row insert into t2 values(3, 'delete_old_row_new_table');
 
 create trigger test5
        after insert on t1 referencing old table as old_table new row as new_row
-       for each row insert into t1 values(3, 'insert_old_table_new_row');
+       for each row insert into t2 values(4, 'insert_old_table_new_row');
 
 insert into t1 values(20, 'monet');
 select * from t1;
+select * from t2;
 
 update t1 set name = 'mo' where id = 10;
 select * from t1;
+select * from t2;
 
 delete from t1 where id >5;
 select * from t1;
+select * from t2;
 
 
 drop trigger test1;
@@ -180,6 +192,8 @@
 drop trigger test5;
 
 delete from t1 where id >-1;
+delete from t2 where id >-1;
 
 --Cleanup
 drop table t1;
+drop table t2;

Index: recursive_triggers.sql
===================================================================
RCS file: /cvsroot/monetdb/sql/src/test/Triggers/recursive_triggers.sql,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -u -d -r1.2 -r1.2.4.1
--- recursive_triggers.sql      6 Dec 2006 10:27:38 -0000       1.2
+++ recursive_triggers.sql      8 Jun 2007 12:47:49 -0000       1.2.4.1
@@ -1,57 +1,62 @@
 create table t1(id int, name varchar(1024), age int);
 create table t2(id int, age int);
 
+--the trigger calls itself
 create trigger test_0 after insert on t1
-       insert into t1 values(1, 'monetdb', 24);
-
-insert into t1 values(1, 'mo', 25);
+       insert into t1 values(3, 'mo', 27);
 
-select * from t1;
-select * from t2;
+drop trigger test_0;
 
-create trigger test_1 after insert on t1
+--recursivity of 2 levels
+create trigger test_0 after insert on t1
        insert into t2 select id,age from t1;
+create trigger test_1 after insert on t2
+       insert into t1 values(3, 'mo', 27);
 
-insert into t1 values(2, 'mo', 26);
 
-select * from t1;
-select * from t2;
+drop trigger test_0;
+drop trigger test_1;
 
-create trigger test_2 before insert on t1
-       insert into t2 values(1,23);
+--recursivity of n levels
+create trigger test_0 after insert on t1
+       insert into t2 select id,age from t1;
 
-insert into t1 values(3, 'mo', 27);
+create trigger test_1 after insert on t2
+       delete from t2;
 
-select * from t1;
-select * from t2;
+create trigger test_2 after delete on t2
+       insert into t1 values(3, 'mo', 27);
 
-create trigger test_3 after delete on t1
-       delete from t1 where id =3;
 
-delete from t1 where id = 1;
+drop trigger test_0;
+drop trigger test_1;
+drop trigger test_2;
 
-select * from t1;
-select * from t2;
+--recursivity with procedure calls
+create PROCEDURE p1(id int, age int)
+BEGIN
+       insert into t2 values(id, age);
+END;
 
-create trigger test_4 after update on t1
-       update t1
-       set age = 27
-       where id = 2;
+create PROCEDURE p1()
+BEGIN
+       declare id int, age int;
+       set id = 1;
+       set age = 23;
+       call p1(id, age);
+END;
 
-update t1 set name = 'monet' where id = 2;
+create trigger test_0 after insert on t2
+BEGIN ATOMIC
+       insert into t1 values(1, 'monetdb', 24);
+       call p1();
+END;
 
-select * from t1;
-select * from t2;
+--insert into t2 values(0, 24);
 
 drop trigger test_0;
 
-drop trigger test_1;
-
-drop trigger test_2;
-
-drop trigger test_3;
-
-drop trigger test_4;
+drop ALL procedure p1;
 
 drop table t1;
 


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to