lincoln lee created CALCITE-7369:
------------------------------------

             Summary: ProjectToWindowRule loses column alias when optimizing 
nested OVER window queries
                 Key: CALCITE-7369
                 URL: https://issues.apache.org/jira/browse/CALCITE-7369
             Project: Calcite
          Issue Type: Improvement
          Components: core
    Affects Versions: 1.41.0
            Reporter: lincoln lee
            Assignee: lincoln lee


When compile a nested over window query, the optimized result lost some column 
alias

Take the following case as an example:
{code}
  @Test void testProjectToWindowRuleForNestedOver() {
    HepProgramBuilder builder = new HepProgramBuilder();
    builder.addRuleClass(ProjectToWindowRule.class);
    HepPlanner hepPlanner = new HepPlanner(builder.build());
    hepPlanner.addRule(CoreRules.PROJECT_TO_LOGICAL_PROJECT_AND_WINDOW);

    final String sql = "select deptno, f1, f2 from (select *, 
last_value(deptno) over (order by empno) f2\n"
            + "from (select *, first_value(deptno) over (order by empno) f1 
from emp))\n";
    sql(sql).withPlanner(hepPlanner)
            .check();
  }
{code}

the final output column alias 'F2' lost(became '$2'):
{code}
LogicalProject(DEPTNO=[$7], F1=[$9], $2=[$10])
  LogicalWindow(window#0=[window(order by [0] aggs [LAST_VALUE($7)])])
    LogicalWindow(window#0=[window(order by [0] aggs [FIRST_VALUE($7)])])
      LogicalTableScan(table=[[CATALOG, SALES, EMP]])
{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to