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

ASF subversion and git services commented on DERBY-6726:
--------------------------------------------------------

Commit 1763034 from [~bryanpendleton] in branch 'code/branches/10.13'
[ https://svn.apache.org/r1763034 ]

DERBY-6726: NPE from trigger

Merged from main via svn merge of 1763024 from trunk (no conflicts)

When there are multiple triggers on the same table, it is crucial that the
TriggerDescriptor class always uses the getTableDescriptor() getter method
to access its 'td' member field, so that the field can be lazy-initialized
if it has not yet been set.

> 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
>            Assignee: Bryan Pendleton
>         Attachments: TriggerTest.diff, derbytrig.zip, fixesRepro.diff, 
> getTableDescriptor.diff
>
>
> 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/%3Cltq5hl$kps$1...@ger.gmane.org%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