[ 
http://issues.apache.org/jira/browse/DERBY-1435?page=comments#action_12417323 ] 

Deepa Remesh commented on DERBY-1435:
-------------------------------------

Thanks for looking into this Suresh. Now, I can see this from the traces too. 
We are re-using the prepared statement after table t1 is dropped. Here are the 
stack traces from ij for execution of a new statement (insert into t2 
values(2)) and a previously executed statement (insert into t2 values(1)) after 
table t1 is dropped:

ij> --- these inserts should not work, but the second insert gives XSAI2
insert into t2 values(2);
ERROR 42X05: Table/View 'T1' does not exist.
ERROR 42X05: Table/View 'T1' does not exist.
        at 
org.apache.derby.iapi.error.StandardException.newException(StandardException.java:304)
        at 
org.apache.derby.impl.sql.compile.DMLModStatementNode.verifyTargetTable(DMLModStatementNo
de.java:230)
        at 
org.apache.derby.impl.sql.compile.InsertNode.bind(InsertNode.java:248)
        at 
org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:344)
        at 
org.apache.derby.impl.sql.GenericStatement.prepareStorable(GenericStatement.java:591)
        at 
org.apache.derby.iapi.sql.dictionary.SPSDescriptor.compileStatement(SPSDescriptor.java:35
3)
        at 
org.apache.derby.iapi.sql.dictionary.SPSDescriptor.prepareAndRelease(SPSDescriptor.java:2
83)
        at 
org.apache.derby.iapi.sql.dictionary.SPSDescriptor.prepareAndRelease(SPSDescriptor.java:3
03)
        at 
org.apache.derby.iapi.sql.dictionary.SPSDescriptor.getPreparedStatement(SPSDescriptor.jav
a:690)
        at 
org.apache.derby.iapi.sql.dictionary.SPSDescriptor.getPreparedStatement(SPSDescriptor.jav
a:651)
        at 
org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecuto
r.java:138)
        at 
org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger(RowTriggerExecutor.java:
110)
        at 
org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator
.java:277)
        at 
org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1
134)
        at 
org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:522)
        at 
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:
361)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1181)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:584)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:516)
        at org.apache.derby.impl.tools.ij.ij.executeImmediate(ij.java:313)
        at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:433)
        at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:310)
        at org.apache.derby.impl.tools.ij.Main.go(Main.java:207)
        at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:173)
        at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:55)
        at org.apache.derby.tools.ij.main(ij.java:60)
ij> insert into t2 values(1);
ERROR XSAI2: The conglomerate (896) requested does not exist.
ERROR XSAI2: The conglomerate (896) requested does not exist.
        at 
org.apache.derby.iapi.error.StandardException.newException(StandardException.java:304)
        at 
org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.readConglomerate(HeapCong
lomerateFactory.java:224)
        at 
org.apache.derby.impl.store.access.RAMAccessManager.conglomCacheFind(RAMAccessManager.jav
a:484)
        at 
org.apache.derby.impl.store.access.RAMTransaction.findExistingConglomerate(RAMTransaction
.java:389)
        at 
org.apache.derby.impl.store.access.RAMTransaction.getDynamicCompiledConglomInfo(RAMTransa
ction.java:701)
        at 
org.apache.derby.impl.sql.execute.DMLWriteResultSet.<init>(DMLWriteResultSet.java:82)
        at 
org.apache.derby.impl.sql.execute.DMLWriteResultSet.<init>(DMLWriteResultSet.java:66)
        at 
org.apache.derby.impl.sql.execute.InsertResultSet.<init>(InsertResultSet.java:343)
        at 
org.apache.derby.impl.sql.execute.GenericResultSetFactory.getInsertResultSet(GenericResul
tSetFactory.java:95)
        at 
org.apache.derby.exe.ac46a08075x010bxfc52x1188x0000001171d80.fillResultSet(Unknown
 Source
)
        at 
org.apache.derby.exe.ac46a08075x010bxfc52x1188x0000001171d80.execute(Unknown 
Source)
        at 
org.apache.derby.impl.sql.GenericActivationHolder.execute(GenericActivationHolder.java:32
6)
        at 
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:
359)
        at 
org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecuto
r.java:169)
        at 
org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger(RowTriggerExecutor.java:
110)
        at 
org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator
.java:277)
        at 
org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1
134)
        at 
org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:522)
        at 
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:
361)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1181)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:584)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:516)
        at org.apache.derby.impl.tools.ij.ij.executeImmediate(ij.java:313)
        at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:433)
        at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:310)
        at org.apache.derby.impl.tools.ij.Main.go(Main.java:207)
        at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:173)
        at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:55)
        at org.apache.derby.tools.ij.main(ij.java:60)

> Conglomerate does not exist occurs in a specific case after dropping a table 
> referenced by a trigger
> ----------------------------------------------------------------------------------------------------
>
>          Key: DERBY-1435
>          URL: http://issues.apache.org/jira/browse/DERBY-1435
>      Project: Derby
>         Type: Bug

>   Components: SQL
>     Versions: 10.2.0.0
>     Reporter: Deepa Remesh
>  Attachments: repro1435.sql
>
> This exception occurs in the following case:
> 1. Create tables t1 and t2. Create a trigger on t2 whose triggering action is 
> to insert a row into t1
> 2. Insert a value v1 into t2. Verify the trigger was fired by looking at 
> contents of t1.
> 3. Drop table t1. 
> 4. Insert a value v2 into t2. This will give an exception to indicate that 
> table t1 does not exist.
> 5. Insert the same value v1 into t2. Instead of the exception in Step 4, this 
> gives "ERROR XSAI2: The conglomerate (896) requested does not exist."
> 6. Re-create table t1.
> 7. Insert  v2 into t2. This succeeds.
> 8. Try to insert the problem value v1 into t2. This still gives "ERROR XSAI2: 
> The conglomerate (896) requested does not exist."
> 9. Shutdown and reconnect to the database. Try to insert the problem value v1 
> into t2. Now this succeeds.
> So the exception occurs only in the specific case where we try to insert the 
> same value that we had inserted before dropping the table referenced by the 
> trigger. I'll attach a sql script to repro this.

-- 
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

Reply via email to