[
https://issues.apache.org/jira/browse/CALCITE-4017?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17113531#comment-17113531
]
Rui Wang edited comment on CALCITE-4017 at 5/21/20, 8:48 PM:
-------------------------------------------------------------
I am trying to hack this Jira base on changes from #1985 locally.
>From what I can tell, I am thinking current top-down opt cannot replace
>SortUnionTransposeRule completely. Push downing a Sort with limit and offset
>will also need to consider row count, and in some cases, not only the ordering
>requirement, but limit and offset can be push down. Top-down opt only
>consider ordering requirement.
But apparently, if there is no limit/offset, SortUnionTransposeRule will be
useless, for example, in this query:
{code:sql}
select a.name from dept a
union all
select b.name from dept b
order by name;
{code}
{code:java}
Both approach will be able to generate:
EnumerableUnion(all=[true])
EnumerableSort(sort0=[$0], dir0=[ASC])
EnumerableProject(NAME=[$1])
EnumerableTableScan(table=[[CATALOG, SALES, DEPT]])
EnumerableSort(sort0=[$0], dir0=[ASC])
EnumerableProject(NAME=[$1])
EnumerableTableScan(table=[[CATALOG, SALES, DEPT]])
{code}
was (Author: amaliujia):
I am trying to hack this Jira base on changes from #1985 locally.
>From what I can tell, I am thinking current top-down opt cannot replace
>SortUnionTransposeRule completely. Push downing a Sort with limit and offset
>will also need to consider row count, and in some cases, not only the ordering
>requirement, but limit and offset can be push down. Top-down opt only
>consider ordering requirement.
But apparently, if there is no limit/offset, SortUnionTransposeRule will be
useless, for example, in this query:
"select a.name from dept a "
+ "union all "
+ "select b.name from dept b"
+ "order by name";
Both approach will be able to generate:
EnumerableUnion(all=[true])
EnumerableSort(sort0=[$0], dir0=[ASC])
EnumerableProject(NAME=[$1])
EnumerableTableScan(table=[[CATALOG, SALES, DEPT]])
EnumerableSort(sort0=[$0], dir0=[ASC])
EnumerableProject(NAME=[$1])
EnumerableTableScan(table=[[CATALOG, SALES, DEPT]])
> Implement trait propagation for Enumerable Setop
> -------------------------------------------------
>
> Key: CALCITE-4017
> URL: https://issues.apache.org/jira/browse/CALCITE-4017
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: Haisheng Yuan
> Priority: Major
>
> Mainly for Union operator, not sure about Minus and Intersect. I haven't
> check how is Enumerable Minus, Intersect's executor implemented.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)