[ 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)