You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Yip Ng (JIRA)" <de...@db.apache.org> on 2006/08/07 02:56:14 UTC

[jira] Commented: (DERBY-1603) ERROR 54038: "Maximum depth of nested triggers was exceeded" occurs when trigger fires after upating 10.1.2.5 jars to 10.1.3.1

    [ http://issues.apache.org/jira/browse/DERBY-1603?page=comments#action_12426099 ] 
            
Yip Ng commented on DERBY-1603:
-------------------------------

The problem is not the upgrade right?  The update statement above throws SQLSTATE 54038 as it self triggers to the max depth and thus is reporting the error correctly.  The issue here is why self trigger works fine with the same version.  It should have thrown an error in this case.

> ERROR 54038: "Maximum depth of nested triggers was exceeded" occurs when trigger fires after upating 10.1.2.5 jars to 10.1.3.1
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-1603
>                 URL: http://issues.apache.org/jira/browse/DERBY-1603
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.1.3.1, 10.1.3.0, 10.1.2.1, 10.1.1.0, 10.0.2.1, 10.0.2.0
>            Reporter: Kathey Marsden
>            Priority: Critical
>             Fix For: 10.2.0.0
>
>         Attachments: derby.log
>
>
> trigger fails after upgrading Cloudscape version 10.1.3.1
> 10.1  repro with the embedded driver.  
> Execute the following in ij with version 10.1.2.5 - (409283)
> CREATE TABLE "TEST" (                                           
>      
> "TESTID" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START 
> WITH 1,
> INCREMENT BY 1),                                                
>      
> "INFO" INTEGER NOT NULL,                                        
>      
> "TIMESTAMP" TIMESTAMP NOT NULL DEFAULT 
> '1980-01-01-00.00.00.000000'  
> );                                                              
>      
> CREATE TRIGGER UPDATE_TEST                            
>  AFTER UPDATE ON TEST                                 
>  REFERENCING OLD AS OLD                               
>  FOR EACH ROW MODE DB2SQL                             
>  UPDATE TEST SET TIMESTAMP = CURRENT_TIMESTAMP WHERE  
>  TESTID = OLD.TESTID;                                 
> INSERT INTO TEST (INFO) VALUES  
> (1),                            
> (2),                            
> (3); 
> Exit ij
> Replace derby jars with version 10.1.3.2.424154 
> Execute the following in ij:
> UPDATE TEST SET INFO = 1 WHERE TESTID = 2; 
> ERROR 54038: Maximum depth of nested triggers was exceeded.
> Rajesh confirmed.
> I tried different combinations and found that the issue exists between versions and is present in older versions dating back to 10.0.
> 10.0.2.2 - (349072) database  -> booted in 10.1.1.0 - (208786) jars
> 10.1.1.0 - (208786) database  -> booted in 10.1.2.4 - (394241) jars
> 10.1.2.4 - (394241) database  -> booted in 10.1.2.5 - (413784) jars
> 10.1.2.5 - (413784) database  -> booted in  10.1.3.1 - (417277) jars (Attached is a derby.log that shows the stack trace using sane jars.)
> This (self) trigger works fine if it was created and used in the same version of jars.
> Below is the trace:
>         at 
> org.apache.derby.iapi.error.StandardException.newException(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.
> pushT
> riggerExecutionContext(Unknown Source)
>         at 
> org.apache.derby.impl.sql.execute.InternalTriggerExecutionContex
> t.<in
> it>(Unknown Source)
>         at 
> org.apache.derby.impl.sql.execute.GenericExecutionFactory.getTri
> ggerE
> xecutionContext(Unknown Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.<init
> >(Unknow
> n Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireBeforeTrig
> gers(
> Unknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.sql.execute.GenericTriggerExecutor.execute
> SPS(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger
> (Unkn
> own Source)
>         at 
> org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEv
> ent(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTrigg
> ers(U
> nknown Source)
>         at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source
> )
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unkno
> wn So
> urce)
>         at 
> org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown 
> Source)
>         at 
> org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown 
> Source)
>         at 
> org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown 
> Source)
>         at 
> org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown 
> Source)
>         at org.apache.derby.impl.tools.ij.utilMain.go(Unknown 
> Source)
>         at org.apache.derby.impl.tools.ij.Main.go(Unknown 
> Source)
>         at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown 
> Source)
>         at org.apache.derby.impl.tools.ij.Main14.main(Unknown 
> Source)
>         at org.apache.derby.tools.ij.main(Unknown Source)
> SYSINFO:
> ------------------ Java Information ------------------
> Java Version:    1.4.2
> Java Vendor:     IBM Corporation
> Java home:       C:\Cloudscape_10.1\ibm-jre-n142p\jre
> Java classpath:  
> C:\Cloudscape_10.1\lib\derby.jar;C:\Cloudscape_10.1\lib\derbytools.jar;C:\Cloudscape_10.1\lib\db2jcc_license_c.jar;
> OS name:         Windows 2000
> OS architecture: x86
> OS version:      5.0
> Java user home:  C:\Documents and Settings\Administrator
> Java user dir:   C:\Documents and Settings\Administrator
> java.specification.name: Java Platform API Specification
> java.specification.version: 1.4
> --------- Derby Information --------
> JRE - JDBC: J2SE 1.4.2 - JDBC 3.0
> [C:\Cloudscape_10.1\lib\derby.jar] 10.1.3.2 - (424154)
> [C:\Cloudscape_10.1\lib\derbytools.jar] 10.1.3.2 - (424154)
> ------------------------------------------------------
> ----------------- Locale Information -----------------
> ------------------------------------------------------

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira