[
https://issues.apache.org/jira/browse/CALCITE-5035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17503417#comment-17503417
]
Alessandro Solimando edited comment on CALCITE-5035 at 3/9/22, 9:12 AM:
------------------------------------------------------------------------
I think that adding missing tests is valuable, but you should open a separate
ticket for that.
In addition, by looking at the rule _SortRemoveConstantKeysRule_, the idea of
Julian does not seem to be implemented (that is, remove columns from _SORT_
when they are known to have a single value), I think it's worth logging a
ticket for that too.
EDIT: I also suggest to close this ticket as duplicate of CALCITE-873 (which
originally implemented the aforementioned rule)
was (Author: asolimando):
I think that adding missing tests is valuable, but you should open a separate
ticket for that.
In addition, by looking at the rule _SortRemoveConstantKeysRule_, the idea of
Julian does not seem to be implemented (that is, remove columns from _SORT_
when they are known to have a single value), I think it's worth logging a
ticket for that too.
> Define a rule of SortProjectPullUpConstantsRule to pull up constant's project
> under Sort
> ----------------------------------------------------------------------------------------
>
> Key: CALCITE-5035
> URL: https://issues.apache.org/jira/browse/CALCITE-5035
> Project: Calcite
> Issue Type: Improvement
> Reporter: Xurenhe
> Assignee: Xurenhe
> Priority: Major
> Labels: pull-request-available
> Time Spent: 1.5h
> Remaining Estimate: 0h
>
> Define a rule to pull up constants project under Sort
> As we know, sorting by constant literal is meaningless.
> After the predicates' optimizing, the element of sort may be a constant
> literal, as below:
> {code:java}
> -- sql
> select pay_amount, pay_id, user_id
> from pay_tbl
> where pay_id = 1234
> group by pay_amount, pay_id, user_id
> order by pay_amount, pay_id, user_id
> -- rel tree
> -- after executing the rule of AggregateProjectPullUpConstantsRule
> LogicalSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[ASC], dir1=[ASC],
> dir2=[ASC])
> LogicalProject(pay_amount=[$0], pay_id=[1234], user_id=[$1])
> LogicalAggregate(group=[{0, 1}])
> LogicalProject(pay_amount=[$1], user_id=[$3])
> LogicalFilter(condition=[=($0, 1234)])
> LogicalTableScan(table=[[default, pay_tbl]]){code}
> The field of pay_id in sort is a constant literal, it's meaningless for
> sort's operator.
> So, we could optimize it as below:
> {code:java}
> -- optimized rel tree
> LogicalProject(pay_amount=[$0], pay_id=[1234], user_id=[$1])
> LogicalSort(sort0=[$0], sort2=[$1], dir0=[ASC], dir2=[ASC])
> LogicalProject(pay_amount=[$0], user_id=[$1])
> LogicalAggregate(group=[{0, 1}])
> LogicalProject(pay_amount=[$1], user_id=[$3])
> LogicalFilter(condition=[=($0, 1234)])
> LogicalTableScan(table=[[default, pay_tbl]]) {code}
>
> Related
> discussion:https://lists.apache.org/thread/bq1gn6o7279f6563njhd5ln2j5178nwm
>
>
>
--
This message was sent by Atlassian Jira
(v8.20.1#820001)