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

Haisheng Yuan edited comment on CALCITE-4018 at 5/21/20, 11:05 PM:
-------------------------------------------------------------------

Thanks, I have updated. Even though Values may not be worth optimizing in 
practice, it will be a good example to demonstrate how useful it is to do trait 
propagation on leaf nodes. The problem in CALCITE-2624 and CALCITE-3854 can be 
easily solved by overriding EnumerableTableScan.passThrough(), return an 
ElasticScan or IndexScan if there is an index that can satisfy the required 
collation.


was (Author: hyuan):
Thanks, I have updated. Even though Values may not be worth optimizing in 
practice, it will be a good example to demonstrate how useful it is to do trait 
propagation on leaf nodes. The problem in CALCITE-2624 can be easily solved by 
overriding EnumerableTableScan.passThrough(), return an ElasticScan or 
IndexScan if there is an index that can satisfy the required collation.

> EnumerableValues should provide requested traits
> ------------------------------------------------
>
>                 Key: CALCITE-4018
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4018
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>            Reporter: Haisheng Yuan
>            Priority: Major
>
> Only passThrough is needed.
> Currently, when Values is created, it will enumerate all the possible 
> collations no matter parent operator requires it or not, it will be a 
> disaster if the Values has thousands of columns, and the parent operator may 
> be just a hash aggregate or hashjoin, which doesn't care about its collation.
> The collation should be created on demand by calling passThrough.
> e.g.
> {code:java}
> SELECT * from (values
> (1, 1),
> (2, 1),
> (1, 2),
> (2, 2)
> ) as t(a, b)
> order by b, a
> {code}
> Currently Calcite will generate plan:
> {code:java}
> EnumerableSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC])
>   EnumerableValues(tuples=[[{ 1, 1 }, { 2, 1 }, { 1, 2 }, { 2, 2 }]])
> {code}
> But after this JIRA, I am expecting a plan without Sort.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to