fix leading with cte and same subqueryalias name Example: with tbl1 as select t1.c1 from t1 select tbl2.c2 from (select / * + leading(t2 tbl1) * / tbl1.c1, t2.c2 from tbl1 join t2) as tbl2 join t3; Reason: in this case, before getting analyzed preprocess would change subquery tbl2 to cte plan, and this cte plan should be in upper level cte plan, but not in logical result sink plan
This commit is contained in:
@ -79,6 +79,15 @@ public class PullUpSubqueryAliasToCTE extends PlanPreprocessor {
|
||||
subQueryAlias = new LogicalSubQueryAlias<>(subQueryAlias.getAlias(), newSubQueryAlias);
|
||||
}
|
||||
}
|
||||
return visitChildren(this, logicalCTE, context);
|
||||
Plan cte = visitChildren(this, logicalCTE, context);
|
||||
if (!aliasQueries.isEmpty()) {
|
||||
LogicalCTE newLogicalCTE = (LogicalCTE) cte;
|
||||
List<LogicalSubQueryAlias<Plan>> subQueryAliasesOfCte = new ArrayList<>();
|
||||
subQueryAliasesOfCte.addAll(logicalCTE.getAliasQueries());
|
||||
subQueryAliasesOfCte.addAll(aliasQueries);
|
||||
aliasQueries = new ArrayList<>();
|
||||
return new LogicalCTE<>(subQueryAliasesOfCte, (LogicalPlan) newLogicalCTE.child());
|
||||
}
|
||||
return cte;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user