Ralf Menzel created DERBY-6750:
----------------------------------

             Summary: 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)

Reply via email to