[ https://issues.apache.org/jira/browse/DERBY-6750?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14152341#comment-14152341 ]
Knut Anders Hatlen commented on DERBY-6750: ------------------------------------------- The bug goes even further back, if you use an INNER JOIN instead of a NATURAL JOIN: {code:sql} SELECT * FROM ( SELECT 1 AS X FROM SYSIBM.SYSDUMMY1 ) Q1 INNER JOIN ( SELECT X FROM ( SELECT 1 AS X FROM SYSIBM.SYSDUMMY1 ) Q2 UNION SELECT X FROM ( SELECT 2 AS X FROM SYSIBM.SYSDUMMY1 ) Q3 ) Q4 on Q1.X = Q4.X {code} The above query hangs all the way back to 10.2.1.6. It returns a result on 10.1.3.1. On 10.1.2.1 and earlier, it fails with a NullPointerException. > Query parsing seems to hang forever in ColumnReference.getSourceResultSet > ------------------------------------------------------------------------- > > Key: DERBY-6750 > URL: https://issues.apache.org/jira/browse/DERBY-6750 > Project: Derby > Issue Type: Bug > Components: SQL > Affects Versions: 10.11.1.1 > Reporter: Ralf Menzel > > We have an application that programmatically generates queries. For some > queries the call of Connection.prepareStatement never returns. I took one of > these queries and simplified until I got the following query: > SELECT * FROM ( > SELECT 1 AS X FROM SYSIBM.SYSDUMMY1 > ) Q1 NATURAL JOIN ( > SELECT X FROM ( > SELECT 1 AS X FROM SYSIBM.SYSDUMMY1 > ) Q2 UNION SELECT X FROM ( > SELECT 2 AS X FROM SYSIBM.SYSDUMMY1 > ) Q3 > ) Q4; > When I execute this query with ij it never produces a result. > A typical stack trace of our application when it hangs starts like this: > java.lang.Exception: test timed out after 250 milliseconds > at > org.apache.derby.impl.sql.compile.ColumnReference.getSourceResultSet(Unknown > Source) > at > org.apache.derby.impl.sql.compile.BinaryRelationalOperatorNode.getScopedOperand(Unknown > Source) > at > org.apache.derby.impl.sql.compile.Predicate.getPredScopedForResultSet(Unknown > Source) > at > org.apache.derby.impl.sql.compile.SetOperatorNode.pushOptPredicate(Unknown > Source) > at org.apache.derby.impl.sql.compile.UnionNode.optimizeIt(Unknown > Source) > at > org.apache.derby.impl.sql.compile.ProjectRestrictNode.optimizeIt(Unknown > Source) > at > org.apache.derby.impl.sql.compile.OptimizerImpl.costPermutation(Unknown > Source) > at org.apache.derby.impl.sql.compile.SelectNode.optimize(Unknown Source) > at > org.apache.derby.impl.sql.compile.ProjectRestrictNode.optimizeIt(Unknown > Source) > at > org.apache.derby.impl.sql.compile.OptimizerImpl.costPermutation(Unknown > Source) > at org.apache.derby.impl.sql.compile.SelectNode.optimize(Unknown Source) > at > org.apache.derby.impl.sql.compile.DMLStatementNode.optimizeStatement(Unknown > Source) > at > org.apache.derby.impl.sql.compile.CursorNode.optimizeStatement(Unknown Source) > at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source) > at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source) > at > org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(Unknown > Source) > at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown > Source) > ... -- This message was sent by Atlassian JIRA (v6.3.4#6332)