[ 
https://issues.apache.org/jira/browse/DERBY-5866?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13764842#comment-13764842
 ] 

Mamta A. Satoor commented on DERBY-5866:
----------------------------------------

I looked at the test failure 
http://people.apache.org/~myrnavl/derby_test_results/v10_10/windows/testlog/ibm17/1520721-suites.All_diff.txt
 
In this instance, the test is failing because trigger number 11 got fired 
before trigger number 10. 

The test creates various types of triggers(insert/update/delete+row/statement). 
They get created sequentially from trigger 0, trigger 1, trigger 2 and so on 
through some random value generated in the test. Next the test runs DML 
statements which will cause some of these triggers to fire. The relevant 
triggers for the DML statement are supposed to fire in the order they were 
created. But the intermittent failure times, the triggers are not getting fired 
in the order of creation. In this specific case, Trigger 11 fired before 
Trigger 10. The DML statement was INSERT. Following is part of the triggers 
that got fired

 2,NO CASCADE BEFORE,INSERT,ROW, 
11,NO CASCADE BEFORE,INSERT,STATEMENT, 
10,NO CASCADE BEFORE,INSERT,STATEMENT, 
18,NO CASCADE BEFORE,INSERT,ROW, 
20,NO CASCADE BEFORE,INSERT,ROW, 
25,NO CASCADE BEFORE,INSERT,STATEMENT, 
28,NO CASCADE BEFORE,INSERT,ROW, 
29,NO CASCADE BEFORE,INSERT,STATEMENT, 
40,NO CASCADE BEFORE,INSERT,STATEMENT, 
42,NO CASCADE BEFORE,INSERT,ROW, 
49,NO CASCADE BEFORE,INSERT,ROW, 
56,NO CASCADE BEFORE,INSERT,STATEMENT, 
57,NO CASCADE BEFORE,INSERT,STATEMENT
so on and so forth

Tiggers got created in this order:
CREATE TRIGGER TR0 AFTER UPDATE ON T FOR EACH ROW CALL 
TRIGGER_LOG_INFO('0,AFTER,UPDATE,ROW')
CREATE TRIGGER TR1 AFTER UPDATE ON T FOR EACH ROW CALL 
TRIGGER_LOG_INFO('1,AFTER,UPDATE,ROW')
CREATE TRIGGER TR2 NO CASCADE BEFORE INSERT ON T FOR EACH ROW CALL 
TRIGGER_LOG_INFO('2,NO CASCADE BEFORE,INSERT,ROW')
CREATE TRIGGER TR3 AFTER DELETE ON T FOR EACH STATEMENT CALL 
TRIGGER_LOG_INFO('3,AFTER,DELETE,STATEMENT')
CREATE TRIGGER TR4 NO CASCADE BEFORE UPDATE ON T FOR EACH STATEMENT CALL 
TRIGGER_LOG_INFO('4,NO CASCADE BEFORE,UPDATE,STATEMENT')
CREATE TRIGGER TR5 AFTER DELETE ON T FOR EACH STATEMENT CALL 
TRIGGER_LOG_INFO('5,AFTER,DELETE,STATEMENT')
CREATE TRIGGER TR6 AFTER INSERT ON T FOR EACH STATEMENT CALL 
TRIGGER_LOG_INFO('6,AFTER,INSERT,STATEMENT')
CREATE TRIGGER TR7 AFTER DELETE ON T FOR EACH ROW CALL 
TRIGGER_LOG_INFO('7,AFTER,DELETE,ROW')
CREATE TRIGGER TR8 NO CASCADE BEFORE UPDATE ON T FOR EACH ROW CALL 
TRIGGER_LOG_INFO('8,NO CASCADE BEFORE,UPDATE,ROW')
CREATE TRIGGER TR9 AFTER INSERT ON T FOR EACH ROW CALL 
TRIGGER_LOG_INFO('9,AFTER,INSERT,ROW')
CREATE TRIGGER TR10 NO CASCADE BEFORE INSERT ON T FOR EACH STATEMENT CALL 
TRIGGER_LOG_INFO('10,NO CASCADE BEFORE,INSERT,STATEMENT')
CREATE TRIGGER TR11 NO CASCADE BEFORE INSERT ON T FOR EACH STATEMENT CALL 
TRIGGER_LOG_INFO('11,NO CASCADE BEFORE,INSERT,STATEMENT')
CREATE TRIGGER TR12 NO CASCADE BEFORE UPDATE ON T FOR EACH STATEMENT CALL 
TRIGGER_LOG_INFO('12,NO CASCADE BEFORE,UPDATE,STATEMENT')
CREATE TRIGGER TR13 NO CASCADE BEFORE DELETE ON T FOR EACH STATEMENT CALL 
TRIGGER_LOG_INFO('13,NO CASCADE BEFORE,DELETE,STATEMENT')
CREATE TRIGGER TR14 AFTER UPDATE ON T FOR EACH STATEMENT CALL 
TRIGGER_LOG_INFO('14,AFTER,UPDATE,STATEMENT')
so on and so forth

As we can see above, Trigger 10 was created before Trigger 10 but during DML 
execution, Trigger 11 fired before Trigger 10.

I have the database for the test failure but unfortunately the db is all empty 
because it got cleaned up by the tearDown() method. I will make changes to the 
test such that we do not get rid of schema and hence we will have an 
opportunity to debug the order of firing.
                
>  
> testFiringConstraintOrder(org.apache.derbyTesting.functionTests.tests.lang.TriggerTest)junit.framework.AssertionFailedError:
>  matching triggers need to be fired in order creation:1,NO CASCADE 
> BEFORE,DELETE,ROW
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5866
>                 URL: https://issues.apache.org/jira/browse/DERBY-5866
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.10.1.1, 10.10.1.3
>         Environment: Windows IBM 1.6 10.10.0.0 alpha - (1361856)
>            Reporter: Kathey Marsden
>            Assignee: Mamta A. Satoor
>              Labels: derby_triage10_11
>             Fix For: 10.8.3.1, 10.9.2.2, 10.10.1.3, 10.11.0.0
>
>         Attachments: error-stacktrace.out
>
>
> I saw this failure in the IBM nightlies on 7/15. The subsequent night did not 
> fail, so appears intermittent
> http://cloudsoft.usca.ibm.com/intranet/nightlies/derbywinvm/JarResults.2012-07-15/ibm16_suites.All/suites.All.out
> 1) 
> testFiringConstraintOrder(org.apache.derbyTesting.functionTests.tests.lang.TriggerTest)junit.framework.AssertionFailedError:
>  matching triggers need to be fired in order creation:1,NO CASCADE 
> BEFORE,DELETE,ROW
>       at 
> org.apache.derbyTesting.functionTests.tests.lang.TriggerTest.assertFiringOrder(TriggerTest.java:560)
>       at 
> org.apache.derbyTesting.functionTests.tests.lang.TriggerTest.testFiringConstraintOrder(TriggerTest.java:500)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
>       at 
> org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:117)
>       at 
> org.apache.derbyTesting.junit.BaseJDBCTestCase.runBareOverridable(BaseJDBCTestCase.java:424)
>       at 
> org.apache.derbyTesting.junit.BaseJDBCTestCase.runBare(BaseJDBCTestCase.java:441)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
>       at junit.extensions.TestSetup.run(TestSetup.java:25)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to