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

Knut Anders Hatlen commented on DERBY-4610:
-------------------------------------------

Hi Bryan,

Here's the stack trace for the call to getResultDescription() from 
EmbedResultSet:

java.lang.Exception: Stack trace
        at java.lang.Thread.dumpStack(Thread.java:1206)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet.<init>(EmbedResultSet.java:259)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet20.<init>(EmbedResultSet20.java:71)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet40.<init>(EmbedResultSet40.java:53)
        at org.apache.derby.jdbc.Driver40.newEmbedResultSet(Driver40.java:136)
        at 
org.apache.derby.impl.jdbc.EmbedConnectionContext.getResultSet(EmbedConnectionContext.java:132)
        at 
org.apache.derby.impl.sql.execute.InternalTriggerExecutionContext.getOldRowSet(InternalTriggerExecutionContext.java:496)
        at 
org.apache.derby.impl.sql.execute.InternalTriggerExecutionContext.getOldRow(InternalTriggerExecutionContext.java:561)
        at 
org.apache.derby.exe.ac0b5b0099x0128x435ex16eex0000003b00901.g0(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.apache.derby.impl.services.reflect.ReflectMethod.invoke(ReflectMethod.java:46)
        at 
org.apache.derby.impl.sql.execute.CallStatementResultSet.open(CallStatementResultSet.java:75)
        at 
org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:436)
        at 
org.apache.derby.impl.sql.GenericPreparedStatement.executeSubStatement(GenericPreparedStatement.java:306)
        at 
org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:159)
        at 
org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger(RowTriggerExecutor.java:111)
        at 
org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator.java:269)
        at 
org.apache.derby.impl.sql.execute.DeleteResultSet.fireAfterTriggers(DeleteResultSet.java:459)
        at 
org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.fireAfterTriggers(DeleteCascadeResultSet.java:263)
        at 
org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.fireAfterTriggers(DeleteCascadeResultSet.java:256)
        at 
org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.open(DeleteCascadeResultSet.java:136)
        at 
org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:436)
        at 
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:317)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1232)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:625)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:555)
        at org.apache.derby.impl.tools.ij.ij.executeImmediate(ij.java:367)

> 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.4.1.3, 10.4.2.0, 10.5.3.0, 10.6.1.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.

Reply via email to