Benchao, Julian, thanks for your clarification. It makes sense to me. I also filed CALCITE-6070 to log it.
Best, ZheHu At 2023-10-24 08:12:30, "Julian Hyde" <jhyde.apa...@gmail.com> wrote: >Benchao is correct that we cannot guarantee column names. So, this is a >feature request rather than a bug. I still think you should log it. > >RelFieldTrimmer works top-down, deducing a bit-set of the columns that each >relational operator needs from its input(s). To solve this problem, it would >need to pass the desired names of those columns. That might make the trimmer a >little bit less efficient, and somewhat more complex. > >The trimmer ought to be allowed to ignore the recommended column names; I >don’t think we would want to introduce a Project for the sole purpose of >renaming columns. > >Julian > > > >> On Oct 23, 2023, at 4:31 AM, Benchao Li <libenc...@apache.org> wrote: >> >> AFAIK, usually we cannot guarantee the columns names in the >> optimization phase. However, I think we can still try our best to >> preserve it while not introducing too much complexity. >> >> For this case, I'd like to take it as an improvement we can do. >> >> Zhe Hu <iluff...@163.com> 于2023年10月23日周一 18:32写道: >>> >>> Hi, community. I encounter a problem when I try RelFieldTrimmer. >>> I run the following SQL in SqlToRelConverterTest: >>> select ename as did from emp where ename='a' limit 10 >>> >>> >>> I get planA without RelFieldTrimmer: >>> LogicalSort(fetch=[10]) >>> LogicalProject(DID=[$1]) >>> LogicalFilter(condition=[=($1, 'a')]) >>> LogicalTableScan(table=[[CATALOG, SALES, EMP]]) >>> >>> >>> I get planB with the RelFieldTrimmer: >>> LogicalSort(fetch=[10]) >>> LogicalFilter(condition=[=($0, 'a')]) >>> LogicalProject(ENAME=[$1]) >>> LogicalTableScan(table=[[CATALOG, SALES, EMP]]) >>> >>> >>> However, the column alia DID for ENAME is missing in planB. And I think the >>> project should be LogicalProject(DID=[$1]) in planB. >>> Do I miss some relevant rules in Calcite or is it a issue we need to fix? >>> >>> >>> Best, >>> ZheHu >> >> >> >> -- >> >> Best, >> Benchao Li