blob: 565deb429afcb67fbbb963f73cf3fa3af039c855 [file] [log] [blame]
ij> --
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements. See the NOTICE file distributed with
-- this work for additional information regarding copyright ownership.
-- The ASF licenses this file to You under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with
-- the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
--
-- Trigger recursion test
--
-- test the maximum recursion level to be less than 16
create table t1 (x int);
0 rows inserted/updated/deleted
ij> create table t2 (x int);
0 rows inserted/updated/deleted
ij> create table t3 (x int);
0 rows inserted/updated/deleted
ij> create table t4 (x int);
0 rows inserted/updated/deleted
ij> create table t5 (x int);
0 rows inserted/updated/deleted
ij> create table t6 (x int);
0 rows inserted/updated/deleted
ij> create table t7 (x int);
0 rows inserted/updated/deleted
ij> create table t8 (x int);
0 rows inserted/updated/deleted
ij> create table t9 (x int);
0 rows inserted/updated/deleted
ij> create table t10 (x int);
0 rows inserted/updated/deleted
ij> create table t11 (x int);
0 rows inserted/updated/deleted
ij> create table t12 (x int);
0 rows inserted/updated/deleted
ij> create table t13 (x int);
0 rows inserted/updated/deleted
ij> create table t14 (x int);
0 rows inserted/updated/deleted
ij> create table t15 (x int);
0 rows inserted/updated/deleted
ij> create table t16 (x int);
0 rows inserted/updated/deleted
ij> create table t17 (x int);
0 rows inserted/updated/deleted
ij> create trigger tr1 after insert on t1 for each row insert into t2 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr2 after insert on t2 for each row insert into t3 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr3 after insert on t3 for each row insert into t4 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr4 after insert on t4 for each row insert into t5 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr5 after insert on t5 for each row insert into t6 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr6 after insert on t6 for each row insert into t7 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr7 after insert on t7 for each row insert into t8 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr8 after insert on t8 for each row insert into t9 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr9 after insert on t9 for each row insert into t10 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr10 after insert on t10 for each row insert into t11 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr11 after insert on t11 for each row insert into t12 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr12 after insert on t12 for each row insert into t13 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr13 after insert on t13 for each row insert into t14 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr14 after insert on t14 for each row insert into t15 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr15 after insert on t15 for each row insert into t16 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr16 after insert on t16 for each row insert into t17 values 666;
0 rows inserted/updated/deleted
ij> create trigger tr17 after insert on t17 for each row values 1;
0 rows inserted/updated/deleted
ij> -- here we go
;
ij> insert into t1 values 1;
ERROR 54038: Maximum depth of nested triggers was exceeded.
ij> -- prove it
select * from t1;
X
-----------
ij> -- The following should work, but because of defect 5602, it raises NullPointerException.
-- After the fix for 5602, we could enable the following part of the test.
-- Reduce the recursion level to 16. It should pass now.
drop trigger tr17;
0 rows inserted/updated/deleted
ij> insert into t1 values 2;
1 row inserted/updated/deleted
ij> -- prove it
select * from t1;
X
-----------
2
ij> -- clean up
drop table t1;
0 rows inserted/updated/deleted
ij> drop table t2;
0 rows inserted/updated/deleted
ij> drop table t3;
0 rows inserted/updated/deleted
ij> drop table t4;
0 rows inserted/updated/deleted
ij> drop table t5;
0 rows inserted/updated/deleted
ij> drop table t6;
0 rows inserted/updated/deleted
ij> drop table t7;
0 rows inserted/updated/deleted
ij> drop table t8;
0 rows inserted/updated/deleted
ij> drop table t9;
0 rows inserted/updated/deleted
ij> drop table t10;
0 rows inserted/updated/deleted
ij> drop table t11;
0 rows inserted/updated/deleted
ij> drop table t12;
0 rows inserted/updated/deleted
ij> drop table t13;
0 rows inserted/updated/deleted
ij> drop table t14;
0 rows inserted/updated/deleted
ij> drop table t15;
0 rows inserted/updated/deleted
ij> drop table t16;
0 rows inserted/updated/deleted
ij> drop table t17;
0 rows inserted/updated/deleted
ij> -- DERBY-2195
-- Nested triggers not working properly after maximum trigger count exception is thrown
create table t1 (i int);
0 rows inserted/updated/deleted
ij> insert into t1 values 1,2,3;
3 rows inserted/updated/deleted
ij> create trigger tr1 after update on t1 for each row update t1 set i=i+1;
0 rows inserted/updated/deleted
ij> update t1 set i=i+1;
ERROR 54038: Maximum depth of nested triggers was exceeded.
ij> drop trigger tr1;
0 rows inserted/updated/deleted
ij> create trigger tr1 after update on t1 referencing old as oldt for each row update t1 set i=i+1 where oldt.i=2;
0 rows inserted/updated/deleted
ij> -- ok
update t1 set i=i+1;
3 rows inserted/updated/deleted
ij> select * from t1;
I
-----------
4
5
6
ij> drop trigger tr1;
0 rows inserted/updated/deleted
ij> drop table t1;
0 rows inserted/updated/deleted
ij>