[
https://issues.apache.org/jira/browse/CALCITE-2798?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16757761#comment-16757761
]
Haisheng Yuan commented on CALCITE-2798:
----------------------------------------
Agree with [~julianhyde]. This is exactly how
[Orca|https://github.com/greenplum-db/gporca/] query optimizer does. In Orca,
all the logical operators don't have any physical properties, e.g. order,
distribution, only physical operators have. Orca doesn't even have LogicalSort
operator, only PhysicalSort operator. The collation is only enforced on relnode
tree during property enforcement stage.
> Optimizer should remove ORDER BY in sub-query, provided it has no LIMIT or
> OFFSET
> ---------------------------------------------------------------------------------
>
> Key: CALCITE-2798
> URL: https://issues.apache.org/jira/browse/CALCITE-2798
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Affects Versions: 1.18.0
> Reporter: Vladimir Sitnikov
> Assignee: Julian Hyde
> Priority: Major
> Fix For: 1.19.0
>
>
> The following SQL performs sort twice, however inner sort can be eliminated
> {code}select * from (
> select * from "emps"
> order by "emps"."deptno"
> ) order by 1 desc{code}
> The same goes for (window calculation will sort on its own)
> {code}select row_number() over (order by "emps"."deptno") from (
> select * from "emps"
> order by "emps"."deptno" desc
> ){code}
> The same goes for SetOp (union, minus):
> {code}select * from (
> select * from "emps"
> order by "emps"."deptno"
> ) union select * from (
> select * from "emps"
> order by "emps"."deptno" desc
> ){code}
> There might be other cases like that (e.g. Aggregate, Join, Exchange,
> SortExchange)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)