zabetak commented on code in PR #5249: URL: https://github.com/apache/hive/pull/5249#discussion_r1670515250
########## ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTConverter.java: ########## @@ -114,25 +115,31 @@ public class ASTConverter { private Filter having; private RelNode select; private RelNode orderLimit; + private List<ASTNode> ctes; private Schema schema; private long derivedTableCount; private PlanMapper planMapper; - ASTConverter(RelNode root, long dtCounterInitVal, PlanMapper planMapper) { + ASTConverter(RelNode root, long dtCounterInitVal, PlanMapper planMapper, List<ASTNode> ctes) { this.root = root; hiveAST = new HiveAST(); this.derivedTableCount = dtCounterInitVal; this.planMapper = planMapper; + this.ctes = ctes; } public static ASTNode convert(final RelNode relNode, List<FieldSchema> resultSchema, boolean alignColumns, PlanMapper planMapper) throws CalciteSemanticException { RelNode root = PlanModifierForASTConv.convertOpTree(relNode, resultSchema, alignColumns); - ASTConverter c = new ASTConverter(root, 0, planMapper); - return c.convert(); + ASTConverter c = new ASTConverter(root, 0, planMapper, new ArrayList<>()); + ASTNode r = c.convert(); + for (ASTNode cte : c.ctes) { Review Comment: The CTE declaration/query is not yet part of the ASTNode. The `ctes` list is populated when visiting the plan (`c.convert()`) but it is not connected with tree. At this point, we are prepending all `WITH` clauses to the main query. The reason we do this now and not during the traversal is because we want all `WITH` clauses to appear at the beginning (top-level) of the query and be visible at all (potentially nested) sub-queries . -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For additional commands, e-mail: gitbox-h...@hive.apache.org