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)