db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dag H. Wanvik (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DERBY-6008) Allow ORDER BY and FETCH/OFFSET in set operands
Date Mon, 10 Dec 2012 15:35:21 GMT

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

Dag H. Wanvik commented on DERBY-6008:
--------------------------------------

Adding a new patch, which handles the presence of two orderByLists for SelectNode and UnionNode
(qua VALUES top node) under an INTERSECT/EXCEPT: The user specifed one arising from this issue,
and the one used by the implementation of the set operations. Currently we make no attempt
to detect if the same sort is specified by the operand's ORDER BY as the sort of all columns
used by the intersect/except comparison operation.  The tree is stacked thus when we are ready
to generate code:

         OrderByNode (op intersect/except)
             |
         RowCountNode (offset/fetch first)
             |
         OrderBynode (of operand)

The optimizer is informed by the lower order by if present, if not, by the intersect/except
sort. Added new test cases.

Rerunning regressions.

                
> Allow ORDER BY and FETCH/OFFSET in set operands
> -----------------------------------------------
>
>                 Key: DERBY-6008
>                 URL: https://issues.apache.org/jira/browse/DERBY-6008
>             Project: Derby
>          Issue Type: Improvement
>          Components: SQL
>            Reporter: Dag H. Wanvik
>            Assignee: Dag H. Wanvik
>         Attachments: derby-6008-a.diff, derby-6008-a.stat, derby-6008-b.diff, derby-6008-b.stat,
derby-6008-c.diff, derby-6008-c.stat, derby-6008-d.diff, derby-6008-d.stat
>
>
> Currently, Derby doesn't allow ORDER BY nested in a set operand, e.g. in the following
construct:
> (select i from t1 order by j offset 1 row)    union 
> (select i from t2 order by j desc offset 2 rows)
> This is allowed by the standard, as far as I can understand, cf. this quote from section
7.12 in SQL 2011:
> <query expression body> ::=
>     <query term>
> |   <query expression body> UNION [ ALL | DISTINCT ]
>   [ <corresponding spec> ] <query term>
> |   <query expression body> EXCEPT [ ALL | DISTINCT ]
>   [ <corresponding spec> ] <query term>
> <query term> ::=
>    <query primary>
> |  <query term> INTERSECT [ ALL | DISTINCT ]
>    [ <corresponding spec> ] <query primary>
> <query primary> ::=
>    <simple table>
>   |  <left paren> <query expression body>
>      [ <order by clause> ] [ <result offset clause> ] [ <fetch first clause>
] <right paren>
> I.e. the left paren chooses the second alternative in the production for <query primary>.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message