Lukas Eder created DERBY-6984:
---------------------------------

             Summary: Cannot use UNION in correlated subquery or derived table 
when first UNION subquery is parenthesised
                 Key: DERBY-6984
                 URL: https://issues.apache.org/jira/browse/DERBY-6984
             Project: Derby
          Issue Type: Improvement
          Components: SQL
    Affects Versions: 10.14.1.0
            Reporter: Lukas Eder


This is a correct SQL query in Derby:

 
{code:java}
(
  SELECT tablename
  FROM sys.systables
  ORDER BY tablename
  FETCH FIRST ROW ONLY
)
UNION ALL
(
  SELECT tablename
  FROM sys.systables
  ORDER BY tablename DESC
  FETCH FIRST ROW ONLY
){code}
Now, if I want to put this query in a derived table or correlated subquery, it 
doesn't work. The expectedly correct syntax should be:

 

 
{code:java}
SELECT *
FROM (
  (
    SELECT tablename
    FROM sys.systables
    ORDER BY tablename
    FETCH FIRST ROW ONLY
  )
  UNION ALL
  (
    SELECT tablename
    FROM sys.systables
    ORDER BY tablename DESC
    FETCH FIRST ROW ONLY
  )
) t{code}
The error I'm getting is

 
{code:java}
Syntax error: Encountered "UNION" at line 10, column 3.{code}
 

 

In this case, I cannot remove the parentheses around the first union subquery 
because of the ORDER BY / FETCH clauses. These are workarounds:

*Wrapping the first subquery in a derived table:*
{code:java}
SELECT *
FROM (
  SELECT tablename
  FROM (
    SELECT tablename
    FROM sys.systables
    ORDER BY tablename
    FETCH FIRST ROW ONLY
  ) t
  UNION ALL
  (
    SELECT tablename
    FROM sys.systables
    ORDER BY tablename DESC
    FETCH FIRST ROW ONLY
  )
) t{code}
*Prepending a dummy union subquery:*
{code:java}
SELECT *
FROM (
  SELECT '' tablename
  FROM sysibm.sysdummy1
  WHERE 1 = 0
  UNION ALL
  (
    SELECT tablename
    FROM sys.systables
    ORDER BY tablename
    FETCH FIRST ROW ONLY
  )
  UNION ALL
  (
    SELECT tablename
    FROM sys.systables
    ORDER BY tablename DESC
    FETCH FIRST ROW ONLY
  )
) t{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to