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 t17; 0 rows inserted/updated/deleted ij> drop table t16; 0 rows inserted/updated/deleted ij> drop table t15; 0 rows inserted/updated/deleted ij> drop table t14; 0 rows inserted/updated/deleted ij> drop table t13; 0 rows inserted/updated/deleted ij> drop table t12; 0 rows inserted/updated/deleted ij> drop table t11; 0 rows inserted/updated/deleted ij> drop table t10; 0 rows inserted/updated/deleted ij> drop table t9; 0 rows inserted/updated/deleted ij> drop table t8; 0 rows inserted/updated/deleted ij> drop table t7; 0 rows inserted/updated/deleted ij> drop table t6; 0 rows inserted/updated/deleted ij> drop table t5; 0 rows inserted/updated/deleted ij> drop table t4; 0 rows inserted/updated/deleted ij> drop table t3; 0 rows inserted/updated/deleted ij> drop table t2; 0 rows inserted/updated/deleted ij> drop table t1; 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>