Hello everyone,

     When we run the following test case:
                SQL:
WITH T_CTE (i1_cte, i2_cte) AS (
   SELECT
       i1,
       d3
   FROM
       t1
)
SELECT
   *
FROM
   t2
   JOIN T_CTE ON (t2.i1 = T_CTE.i1_cte)


                Logical Plan(After ProjectRemoveRule):
LogicalJoin(condition=[=($0, $14)], joinType=[inner])
:- LogicalTableScan(table=[[default, db1, t2]])
       +- LogicalCalc(expr#0..13=[{inputs}], i1=[$t0], d3=[$t2])
       +- LogicalTableScan(table=[[default, db1, t1]])


We wish the output column name contain i1_cte, i2_cte, but calcite just drop it.
After analysisinp the calcite code, we found the rule named ProjectRemoveRule, 
it will remove the project if project and its input has same size and type, but 
it confused me, why this rule dose not consider the field name when remove 
project?

Best Regards
Axis

Reply via email to