[
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