[ http://issues.apache.org/jira/browse/DERBY-759?page=comments#action_12360507 ]
Daniel John Debrunner commented on DERBY-759: --------------------------------------------- I think this is a general issue, not specific to code generation. It's similar to DERBY-443, where an OutOfMemoryException would shut the system down. In this case I think the StackOverflowError is shutting Derby down, when we could keep running since the problem is specific to a single thread. > Query with thousands of logical operators and parameters causes > StackOverflowError and then ERROR 40XT0: An internal error was identified by > RawStore module on next statement > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: DERBY-759 > URL: http://issues.apache.org/jira/browse/DERBY-759 > Project: Derby > Type: Bug > Components: SQL > Versions: 10.2.0.0 > Reporter: Kathey Marsden > > An SQL Statement with thousands of logical operators and parameters causes a > StackOverflow Error and then the next statement throws a ERROR 40XT0: An > internal error was identified by RawStore module. > The statement is of the form SELECT * FROM T0 WHERE (si = ? AND si = ? ) OR > (si = ? AND si = ? ) ... > I came across this issue when looking at DERBY-739 and code generation issues > for large queries, thus the very silly looking query. > To reproduce, uncomment this line in the test lang/largeCodeGen.java > // testLogicalOperators(con, 10000); > FAILED QUERY: Logical operators with 10000 parameters. > java.lang.StackOverflowError > FAILED QUERY: IN clause with 3300 parameters. ERROR 40XT0: An internal error > was identified by RawStore module. > at > org.apache.derby.iapi.error.StandardException.newException(StandardException.java:301) > at > org.apache.derby.impl.store.raw.xact.Xact.setActiveState(Xact.java:1770) > at > org.apache.derby.impl.store.raw.xact.Xact.openContainer(Xact.java:1271) > at > org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.init(OpenConglomerate.java:865) > at org.apache.derby.impl.store.access.heap.Heap.open(Heap.java:614) > at > org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java:478) > at > org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java:1315) > at > org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndex(DataDictionaryImpl.java:7251) > at > org.apache.derby.impl.sql.catalog.DataDictionaryImpl.locateSchemaRow(DataDictionaryImpl.java:1470) > at > org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSchemaDescriptor(DataDictionaryImpl.java:1380) > at > org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(QueryTreeNode.java:1460) > at > org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(QueryTreeNode.java:1412) > at > org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(FromBaseTable.java:2370) > at > org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(FromBaseTable.java:2120) > at > org.apache.derby.impl.sql.compile.FromList.bindTables(FromList.java:307) > at > org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(SelectNode.java:434) > at > org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(DMLStatementNode.java:217) > at > org.apache.derby.impl.sql.compile.DMLStatementNode.bind(DMLStatementNode.java:158) > at > org.apache.derby.impl.sql.compile.ReadCursorNode.bind(ReadCursorNode.java:74) > at > org.apache.derby.impl.sql.compile.CursorNode.bind(CursorNode.java:250) > at > org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:336) > at org.apache.deERROR 40XT0: An internal error was identified by > RawStore module. > at > org.apache.derby.iapi.error.StandardException.newException(StandardException.java:301) > at > org.apache.derby.impl.store.raw.xact.Xact.setActiveState(Xact.java:1770) > at > org.apache.derby.impl.store.raw.xact.Xact.openContainer(Xact.java:1271) > at > org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.init(OpenConglomerate.java:865) > at org.apache.derby.impl.store.access.heap.Heap.open(Heap.java:614) > at > org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java:478) > at > org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java:1315) > at > org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndex(DataDictionaryImpl.java:7251) > at > org.apache.derby.impl.sql.catalog.DataDictionaryImpl.locateSchemaRow(DataDictionaryImpl.java:1470) > at > org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSchemaDescriptor(DataDictionaryImpl.java:1380) > at > org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(QueryTreeNode.java:1460) > at > org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(QueryTreeNode.java:1412) > at > org.apache.derby.impl.sql.compile.DDLStatementNode.getTableDescriptor(DDLStatementNode.java:263) > at > org.apache.derby.impl.sql.compile.DDLStatementNode.getTableDescriptor(DDLStatementNode.java:234) > at > org.apache.derby.impl.sql.compile.DropTableNode.bind(DropTableNode.java:114) > at > org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:336) > at > org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:110) > at > org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:704) > at > org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:533) > at > org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(EmbedStatement.java:158) > at > org.apache.derbyTesting.functionTests.tests.lang.largeCodeGen.createTestTable(Unknown > Source) > at > org.apache.derbyTesting.functionTests.tests.lang.largeCodeGen.testUnions(Unknown > Source) > at > org.apache.derbyTesting.functionTests.tests.lang.largeCodeGen.main(Unknown > Source) > rby.impl.sql.GenericStatement.prepare(GenericStatement.java:110) > at > org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:704) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:118) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(EmbedPreparedStatement20.java:82) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(EmbedPreparedStatement30.java:62) > at > org.apache.derby.jdbc.Driver30.newEmbedPreparedStatement(Driver30.java:92) > at > org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:678) > at > org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522) > at > org.apache.derbyTesting.functionTests.tests.lang.largeCodeGen.checkT0Query(Unknown > Source) > at > org.apache.derbyTesting.functionTests.tests.lang.largeCodeGen.testInClause(Unknown > Source) > at > org.apache.derbyTesting.functionTests.tests.lang.largeCodeGen.testInClause(Unknown > Source) > at > org.apache.derbyTesting.functionTests.tests.lang.largeCodeGen.main(Unknown > Source) > Exception in thread "main" > NOTE: > I was actually able to connect to the database after the query failed > despite the RawStore error so maybe the db is not corrupted but just the > transaction state out of whack for the connection. This needs more > investigation. I am putting this as SQL for now, even though we don't have a > stack trace for the StackOverflow. This is just a guess at component. -- 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
