| -- |
| -- 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); |
| create table t2 (x int); |
| create table t3 (x int); |
| create table t4 (x int); |
| create table t5 (x int); |
| create table t6 (x int); |
| create table t7 (x int); |
| create table t8 (x int); |
| create table t9 (x int); |
| create table t10 (x int); |
| create table t11 (x int); |
| create table t12 (x int); |
| create table t13 (x int); |
| create table t14 (x int); |
| create table t15 (x int); |
| create table t16 (x int); |
| create table t17 (x int); |
| create trigger tr1 after insert on t1 for each row insert into t2 values 666; |
| create trigger tr2 after insert on t2 for each row insert into t3 values 666; |
| create trigger tr3 after insert on t3 for each row insert into t4 values 666; |
| create trigger tr4 after insert on t4 for each row insert into t5 values 666; |
| create trigger tr5 after insert on t5 for each row insert into t6 values 666; |
| create trigger tr6 after insert on t6 for each row insert into t7 values 666; |
| create trigger tr7 after insert on t7 for each row insert into t8 values 666; |
| create trigger tr8 after insert on t8 for each row insert into t9 values 666; |
| create trigger tr9 after insert on t9 for each row insert into t10 values 666; |
| create trigger tr10 after insert on t10 for each row insert into t11 values 666; |
| create trigger tr11 after insert on t11 for each row insert into t12 values 666; |
| create trigger tr12 after insert on t12 for each row insert into t13 values 666; |
| create trigger tr13 after insert on t13 for each row insert into t14 values 666; |
| create trigger tr14 after insert on t14 for each row insert into t15 values 666; |
| create trigger tr15 after insert on t15 for each row insert into t16 values 666; |
| create trigger tr16 after insert on t16 for each row insert into t17 values 666; |
| create trigger tr17 after insert on t17 for each row values 1; |
| |
| -- here we go |
| ; |
| insert into t1 values 1; |
| |
| -- prove it |
| select * from t1; |
| |
| -- 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; |
| |
| insert into t1 values 2; |
| |
| -- prove it |
| select * from t1; |
| |
| -- clean up |
| drop table t1; |
| drop table t2; |
| drop table t3; |
| drop table t4; |
| drop table t5; |
| drop table t6; |
| drop table t7; |
| drop table t8; |
| drop table t9; |
| drop table t10; |
| drop table t11; |
| drop table t12; |
| drop table t13; |
| drop table t14; |
| drop table t15; |
| drop table t16; |
| drop table t17; |
| |
| -- DERBY-2195 |
| -- Nested triggers not working properly after maximum trigger count exception is thrown |
| create table t1 (i int); |
| insert into t1 values 1,2,3; |
| create trigger tr1 after update on t1 for each row update t1 set i=i+1; |
| update t1 set i=i+1; |
| drop trigger tr1; |
| create trigger tr1 after update on t1 referencing old as oldt for each row update t1 set i=i+1 where oldt.i=2; |
| -- ok |
| update t1 set i=i+1; |
| select * from t1; |
| drop trigger tr1; |
| drop table t1; |
| |