[
https://issues.apache.org/jira/browse/DERBY-4610?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rick Hillegas updated DERBY-4610:
---------------------------------
Affects Version/s: 10.6.0.0
Fix Version/s: (was: 10.5.3.1)
Bug behavior facts: (was: [Wrong query result])
Thanks for finding this bug, Eric. I have verified this failure on the trunk. I
unchecked the "Wrong query result" box. To the derby developers, that box
indicates that a query succeeds but silently does the wrong thing. In this case
the query complains as it outright fails. I also set Fix Versions to "Unknown"
since we don't know yet what release will fix this defect. Thanks.
> Error attempting delete with cascade and triggers
> -------------------------------------------------
>
> Key: DERBY-4610
> URL: https://issues.apache.org/jira/browse/DERBY-4610
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.5.3.0, 10.6.0.0
> Environment: Apache Derby 10.5.3.0 and Sun JDK 1.6.0_07
> Reporter: Eric Long
>
> The scenario is a parent and child table with a cascade delete and triggers
> on both tables. Here are the steps to reproduce.
> First, compile TestFunctions.java and put it on the classpath:
> public class TestFunctions
> {
> public static void test(String str)
> {
> }
> }
> Next, enter commands into interactive SQL:
> create table testtable (id integer, name varchar(20), primary key(id));
> create table testchild (
> id integer
> constraint fk_id references testtable on delete cascade,
> ordernum int,
> primary key(id));
> create procedure testproc (str varchar(20))
> PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'TestFunctions.test';
> create trigger testtabletrigger after delete on testtable referencing old as
> old
> for each row mode db2sql call testproc(char(old.id));
> create trigger testchildtrigger after delete on testchild referencing old as
> old
> for each row mode db2sql call testproc(char(old.ordernum));
> insert into testtable values (1, 'test1');
> insert into testchild values (1, 10);
> delete from testtable where id = 1;
> The expected result is that deleting a row from "testtable" will cascade the
> delete to "testchild", and the triggers will be called for each delete. The
> actual result is that the delete is rolled back with the following error:
> Error: An attempt was made to put a data value of type 'java.lang.String'
> into a data value of
> type 'INTEGER'.
> SQLState: XCL12
> ErrorCode: 30000
> There are no additional entries in the derby.log after the error. If only
> one trigger is used, or if the cascade is removed, then the delete will
> succeed.
> This issue was found while using SymmetricDS, which uses triggers to
> replicate tables between Derby databases.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.