[ 
https://issues.apache.org/jira/browse/CALCITE-7212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated CALCITE-7212:
------------------------------------
    Labels: pull-request-available  (was: )

> VariablesSet of Project is lost during RelStructuredTypeFlattener processing
> ----------------------------------------------------------------------------
>
>                 Key: CALCITE-7212
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7212
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Silun Dong
>            Priority: Minor
>              Labels: pull-request-available
>
> When RelStructuredTypeFlattener rewrites Project, it forgets the variablesSet 
> attribute. 
> {code:java}
> public void rewriteRel(LogicalProject rel) {
>   //......
>   final RelNode newRel = relBuilder.push(newInput)
>       .projectNamed(flattenedExpList.leftList(), flattenedExpList.rightList(),
>           true)                         // lost variablesSet
>       .hints(rel.getHints())
>       .build();
>   setNewForOldRel(rel, newRel);
> } {code}
> Many test classes will reach here when generating the initial plan (via the 
> convertSqlToRel2 call of SqlTest). For example, the testTwoLevelDecorrelate 
> in RelOptRulesTest:
> {code:java}
> SELECT d1.name, d1.deptno + (
> SELECT e1.empno
> FROM emp e1
> WHERE d1.deptno = e1.deptno and
>     e1.sal = (SELECT max(sal)
>               FROM emp e2
>               WHERE e1.sal = e2.sal and
>                   e1.deptno = e2.deptno and
>                   d1.deptno < e2.deptno))
> FROM dept d1 
> // initial plan
> LogicalProject(NAME=[$1], EXPR$1=[+($0, $SCALAR_QUERY({      // lost 
> variablesSet $cor0
> LogicalProject(EMPNO=[$0])
>   LogicalFilter(condition=[AND(=($cor0.DEPTNO, $7), =($5, $SCALAR_QUERY({
> LogicalAggregate(group=[{}], EXPR$0=[MAX($0)])
>   LogicalProject(SAL=[$5])
>     LogicalFilter(condition=[AND(=($cor1.SAL, $5), =($cor1.DEPTNO, $7), 
> <($cor0.DEPTNO, $7))])
>       LogicalTableScan(table=[[CATALOG, SALES, EMP]])
> })))], variablesSet=[[$cor1]])
>     LogicalTableScan(table=[[CATALOG, SALES, EMP]])
> }))])
>   LogicalTableScan(table=[[CATALOG, SALES, DEPT]]){code}
> Although it does not cause an error now, I think it is a minor bug that can 
> be fixed by adding the variablesSet parameter when rewriting in the 
> rewriteRel.



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

Reply via email to