Hi,
to demonstrate the problem, i've written some code which approximates the code i'm using. (attached)
I'm running Java 1.4.2 with the JVM parameter -Xmx64m.
If you run the test() method, the memory used by the JVM rises to above 150mb until the following exception happens:
java.lang.OutOfMemoryError
ERROR 40XT0: An internal error was identified by RawStore module.
at org.apache.derby.iapi.error.StandardException.newException(StandardException.java)
at org.apache.derby.impl.store.raw.xact.Xact.setActiveState(Xact.java)
at org.apache.derby.impl.store.raw.xact.Xact.openContainer(Xact.java)
at org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.init(OpenConglomerate.java)
at org.apache.derby.impl.store.access.heap.Heap.open(Heap.java)
at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java)
at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndex(DataDictionaryImpl.java)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.locateSchemaRow(DataDictionaryImpl.java)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSchemaDescriptor(DataDictionaryImpl.java)
at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(QueryTreeNode.java)
at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(QueryTreeNode.java)
at org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(FromBaseTable.java)
at org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(FromBaseTable.java)
at org.apache.derby.impl.sql.compile.FromList.bindTables(FromList.java)
at org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(SelectNode.java)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(DMLStatementNode.java)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(DMLStatementNode.java)
at org.apache.derby.impl.sql.compile.ReadCursorNode.bind(ReadCursorNode.java)
at org.apache.derby.impl.sql.compile.CursorNode.bind(CursorNode.java)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java)
at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java)
at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(EmbedStatement.java)
at AutoCommitTest.query(AutoCommitTest.java:223)
at AutoCommitTest.test(AutoCommitTest.java:72)
at AutoCommitTest.<init>(AutoCommitTest.java:40)
at AutoCommitTest.main(AutoCommitTest.java:235)
java.lang.NullPointerException
at AutoCommitTest.test(AutoCommitTest.java:75)
at AutoCommitTest.<init>(AutoCommitTest.java:40)
at AutoCommitTest.main(AutoCommitTest.java:235)
The derby.log file looked like this:
2005-05-13 10:21:36.593 GMT:
Booting Derby version IBM Corp. - Apache Derby - 10.0.2.0 - (46005): instance c013800d-0103-d592-c983-000000197520
on database directory D:\eclipse\workspace\DerbyAutoCommitTest\testdb
Database Class Loader started - derby.database.classpath=''
2005-05-13 10:36:18.890 GMT Thread[main,5,main] (XID = 101522), (SESSIONID = 0), (DATABASE = testdb), (DRDAID = null), Cleanup action starting
2005-05-13 10:36:18.890 GMT Thread[main,5,main] (XID = 101522), (SESSIONID = 0), (DATABASE = testdb), (DRDAID = null), Failed Statement is: INSERT INTO test(id, s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,i1,i2,i3,i4,i5,i6) VALUES(13465,'JYC&''>2_vE\wW9yBhpN=R<8$<3;e\xz.X9&-ozwCW&=kF"8dfn','Id7j}\Mu''Ho8W)q<SE7vNMgGU|S{^-/[EMAIL PROTECTED];k8kZ~+cdOK;^zu','CyrL${s+}w(dyfw&#<q9>ts\vU|z2u B7oB[wx[U6k%O*dq51H','5[%x.fzodgnx!|i|X7kHFP3#9,[EMAIL PROTECTED])ZwuFyC^rZe}8ZH','tz6Vj%2\opWt_Bwt6gyR#~.U*0FYQ70erT?yM.~W3?Ce;-jds<','D"lP(,oZK$Y"E[OKY"8=,1%br."pwon\6]=e0h.{DL[m`yrE]U','uWewV{=YzH;YC[0&Ie;fJ<L)`d_pl2t>NPO"gb[M)ID-pDiaFP','[EMAIL PROTECTED] Hh%*Y{5k|n==m_P*KRD3~^%C1;9II','8~XK''kZZyJ<[EMAIL PROTECTED]@9VVF`t}z<<zLeEg','OP$xd(*S06mH\F_f|&#v{_5e%8=HJhJ`ee"df*V=^a~j&$?;ZY','J|jW9h^;QuWU$Zg05G@:X]\]"wnG:m(s|%<''lAEW#?XbA^,7oV','fl)P#I_%G/;NceIv]AeWY %B$?5XFijw),[EMAIL PROTECTED]','$(xHn"^LA-D\2^pN7}+coue8ySFlHnF7T;<!oxS;3{C,(M--iJ','O#dZ,=_s5uY6jMo\N''z]D-&1w!dkrok!exZ5Oe]^-xXdTbLBsv','[EMAIL PROTECTED]/=RUQF]#cpU}Qo Ou]gM)Ir:(tx[`.?b<vY_/ct9F+',1492672792,-43909196,808521047,235300249,-1291212720,-867862481)
java.lang.OutOfMemoryError
Cleanup action completed
------------------------------------------------------
If this is run without the autocommit being turned off, there is no problem.
Interestingly, test2() which has the id query removed, causes no problem.
Cheers,
Chris
It looks like a bug, but a reproducible case would be needed to start trying to fix it. Is there a chance you could post code that shows this behaviour?
There may also be an earlier error the is the real problem, try checking in your derby.log file.
Thanks, Dan.
AutoCommitTest.java
Description: java/