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

Bernd Ruehlicke edited comment on DERBY-6726 at 9/29/16 8:40 PM:
-----------------------------------------------------------------

Trying to understand more on this and going through the Derby code, it looks to 
me that the initial guess of "it could be that its caused by another AFTER 
UPDATE trigger that's on the table."  could be a guess in the right direction. 
In the test I provided there are 2 AFTER UPDATE triggers - both on the same 
table. Disabling any of them makes the code work - but having both make the 
code fail.




was (Author: bruehlicke):
Trying to understand more on this and going through the Derby code, it looks to 
met the initial guess of "it could be that its caused by another AFTER UPDATE 
trigger that's on the table."  could be correct. In the test I provided there 
are 2 AFTER UPDATE triggers - both on the same table. Disabling any of them 
makes the code work - but having both make the code fail.



> NPE from trigger
> ----------------
>
>                 Key: DERBY-6726
>                 URL: https://issues.apache.org/jira/browse/DERBY-6726
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.10.1.1
>            Reporter: Tim Dudgeon
>         Attachments: TriggerTest.diff, derbytrig.zip
>
>
> Saw this strange exception when doing an insert to a table with a trigger
> {code}
> Tue Sep 02 13:39:09 BST 2014 Thread[SQLExecution,1,system] (XID = 62693), 
> (SESSIONID = 1), (DATABASE = 
> C:/Users/timbo/Documents/IJCProjects/mini-regs/Vanilla 
> Oracle/.config/derby-minireg-01-sep/db), (DRDAID = null), Failed Statement 
> is: UPDATE samples SET sample_code = 'S123456' WHERE sample_id = CAST 
> (org.apache.derby.iapi.db.Factory::getTriggerExecutionContext().getNewRow().getObject(1)
>  AS INTEGER)
> java.lang.NullPointerException
>     at 
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getTriggerActionString(Unknown
>  Source)
>     at 
> org.apache.derby.iapi.sql.dictionary.TriggerDescriptor.getActionSPS(Unknown 
> Source)
>     at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.getAction(Unknown 
> Source)
>     at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger(Unknown 
> Source)
>     at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(Unknown 
> Source)
>     at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTriggers(Unknown 
> Source)
>     at org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown Source)
>     at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown 
> Source)
>     at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeSubStatement(Unknown
>  Source)
>     at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(Unknown 
> Source)
>     at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger(Unknown 
> Source)
>     at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(Unknown 
> Source)
>     at 
> org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown 
> Source)
>     at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source)
>     at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown 
> Source)
>     at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown 
> Source)
>     at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
> Source)
>     at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
>     at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> {code}
> The trigger definition is this:
> {code}
> CREATE TRIGGER samples_code_trg
> AFTER INSERT ON samples
> REFERENCING NEW AS newrow FOR EACH ROW MODE DB2SQL
> UPDATE samples SET sample_code = 'S123456'
> WHERE samples.sample_id = newrow.sample_id;
> {code}
> As mentioned here: 
> http://mail-archives.apache.org/mod_mbox/db-derby-user/201408.mbox/%[email protected]%3E
> it could be that its caused by another AFTER UPDATE trigger that's on the 
> table.
> Unfortunately I rebuilt all the tables and triggers and not the problem 
> doesn't happen, so I can't provide a test case.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to