db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ralf Menzel (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DERBY-6750) Query parsing seems to hang forever in ColumnReference.getSourceResultSet
Date Tue, 30 Sep 2014 09:00:46 GMT

    [ https://issues.apache.org/jira/browse/DERBY-6750?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14152983#comment-14152983
] 

Ralf Menzel commented on DERBY-6750:
------------------------------------

It also seems to hang with the traditional join syntax if the first table is a proper table:
With the following table:
{code:sql}
CREATE TABLE T1 (
  X INT
);
{code}
and the query:
{code:sql}
SELECT Q1.X FROM (
  SELECT X FROM T1
) Q1, (
  SELECT X FROM (
    SELECT 1 AS X FROM SYSIBM.SYSDUMMY1
  ) Q2 UNION SELECT X FROM (
    SELECT 2 AS X FROM SYSIBM.SYSDUMMY1
  ) Q3
) Q4
WHERE Q1.X=Q4.X;
{code}


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

Mime
View raw message