Hi community:

Could calcite support the rule to pull up constant project from sort, just
like `AggregateProjectPullUpConstantsRule`?

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

-- origin rel tree
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]])

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

Reply via email to