public void print(String msg) { LOG.info(msg + "alias=" + qbp.getAlias()); for (String alias : getSubqAliases()) { QBExpr qbexpr = getSubqForAlias(alias); LOG.info(msg + "start subquery " + alias); qbexpr.print(msg + " "); LOG.info(msg + "end subquery " + alias); } }
public void print(String msg) { LOG.info(msg + "alias=" + qbp.getAlias()); for (String alias : getSubqAliases()) { QBExpr qbexpr = getSubqForAlias(alias); LOG.info(msg + "start subquery " + alias); qbexpr.print(msg + " "); LOG.info(msg + "end subquery " + alias); } }
private void gatherCTEReferences(QB qb, CTEClause current) throws HiveException { for (String alias : qb.getTabAliases()) { String tabName = qb.getTabNameForAlias(alias); String cteName = tabName.toLowerCase(); CTEClause cte = findCTEFromName(qb, cteName); if (cte != null) { if (ctesExpanded.contains(cteName)) { throw new SemanticException("Recursive cte " + cteName + " detected (cycle: " + StringUtils.join(ctesExpanded, " -> ") + " -> " + cteName + ")."); } cte.reference++; current.parents.add(cte); if (cte.qbExpr != null) { continue; } cte.qbExpr = new QBExpr(cteName); doPhase1QBExpr(cte.cteNode, cte.qbExpr, qb.getId(), cteName); ctesExpanded.add(cteName); gatherCTEReferences(cte.qbExpr, cte); ctesExpanded.remove(ctesExpanded.size() - 1); } } for (String alias : qb.getSubqAliases()) { gatherCTEReferences(qb.getSubqForAlias(alias), current); } }
public void getHintsFromQB(QB qb, List<ASTNode> hints) { if (qb.getParseInfo().getHints() != null) { hints.add(qb.getParseInfo().getHints()); } Set<String> aliases = qb.getSubqAliases(); for (String alias : aliases) { getHintsFromQB(qb.getSubqForAlias(alias), hints); } }
private void gatherCTEReferences(QB qb, CTEClause current) throws HiveException { for (String alias : qb.getTabAliases()) { String tabName = qb.getTabNameForAlias(alias); String cteName = tabName.toLowerCase(); CTEClause cte = findCTEFromName(qb, cteName); if (cte != null) { if (ctesExpanded.contains(cteName)) { throw new SemanticException("Recursive cte " + cteName + " detected (cycle: " + StringUtils.join(ctesExpanded, " -> ") + " -> " + cteName + ")."); } cte.reference++; current.parents.add(cte); if (cte.qbExpr != null) { continue; } cte.qbExpr = new QBExpr(cteName); doPhase1QBExpr(cte.cteNode, cte.qbExpr, qb.getId(), cteName); ctesExpanded.add(cteName); gatherCTEReferences(cte.qbExpr, cte); ctesExpanded.remove(ctesExpanded.size() - 1); } } for (String alias : qb.getSubqAliases()) { gatherCTEReferences(qb.getSubqForAlias(alias), current); } }
QBExpr qbexpr = qb.getSubqForAlias(subqAlias); RelNode relNode = genLogicalPlan(qbexpr); aliasToRel.put(subqAlias, relNode);
QBExpr qbexpr = qb.getSubqForAlias(subqAlias); RelNode relNode = genLogicalPlan(qbexpr); aliasToRel.put(subqAlias, relNode);
QBExpr qbexpr = qb.getSubqForAlias(alias); Operator<?> operator = genPlan(qb, qbexpr); aliasToOpInfo.put(alias, operator);
void addRewrites(TokenRewriteStream stream, QB qb, String program, PrintStream out) { QBSubQuery sqW = qb.getWhereClauseSubQueryPredicate(); QBSubQuery sqH = qb.getHavingClauseSubQueryPredicate(); if (sqW != null || sqH != null) { ASTNode sqNode = sqW != null ? sqW.getOriginalSubQueryASTForRewrite() : sqH.getOriginalSubQueryASTForRewrite(); ASTNode tokQry = getQueryASTNode(sqNode); ASTNode tokFrom = (ASTNode) tokQry.getChild(0); StringBuilder addedJoins = new StringBuilder(); if (sqW != null) { addRewrites(stream, sqW, program, out, qb.getId(), true, addedJoins); } if (sqH != null) { addRewrites(stream, sqH, program, out, qb.getId(), false, addedJoins); } stream.insertAfter(program, tokFrom.getTokenStopIndex(), addedJoins); } Set<String> sqAliases = qb.getSubqAliases(); for(String sqAlias : sqAliases) { addRewrites(stream, qb.getSubqForAlias(sqAlias).getQB(), program, out); } }
QBExpr qbexpr = qb.getSubqForAlias(alias); Operator operator = genPlan(qb, qbexpr); aliasToOpInfo.put(alias, operator);
void addRewrites(TokenRewriteStream stream, QB qb, String program, PrintStream out) { QBSubQuery sqW = qb.getWhereClauseSubQueryPredicate(); QBSubQuery sqH = qb.getHavingClauseSubQueryPredicate(); if (sqW != null || sqH != null) { ASTNode sqNode = sqW != null ? sqW.getOriginalSubQueryASTForRewrite() : sqH.getOriginalSubQueryASTForRewrite(); ASTNode tokQry = getQueryASTNode(sqNode); ASTNode tokFrom = (ASTNode) tokQry.getChild(0); StringBuilder addedJoins = new StringBuilder(); if (sqW != null) { addRewrites(stream, sqW, program, out, qb.getId(), true, addedJoins); } if (sqH != null) { addRewrites(stream, sqH, program, out, qb.getId(), false, addedJoins); } stream.insertAfter(program, tokFrom.getTokenStopIndex(), addedJoins); } Set<String> sqAliases = qb.getSubqAliases(); for(String sqAlias : sqAliases) { addRewrites(stream, qb.getSubqForAlias(sqAlias).getQB(), program, out); } }
removeOBInSubQuery(qb.getSubqForAlias(alias));
ctesExpanded.add(sqAliasToCTEName.get(alias)); QBExpr qbexpr = qb.getSubqForAlias(alias); getMetaData(qbexpr, newParentInput); if (wasView) {
ctesExpanded.add(sqAliasToCTEName.get(alias)); QBExpr qbexpr = qb.getSubqForAlias(alias); getMetaData(qbexpr, newParentInput); if (wasView) {
final QB newQB = getQB().getSubqForAlias(subQAlias).getQB(); newQB.getParseInfo().setAlias(""); newQB.getParseInfo().setIsSubQ(false);
final QB newQB = getQB().getSubqForAlias(subQAlias).getQB(); newQB.getParseInfo().setAlias(""); newQB.getParseInfo().setIsSubQ(false);
public void print(String msg) { LOG.info(msg + "alias=" + qbp.getAlias()); for (String alias : getSubqAliases()) { QBExpr qbexpr = getSubqForAlias(alias); LOG.info(msg + "start subquery " + alias); qbexpr.print(msg + " "); LOG.info(msg + "end subquery " + alias); } }
public void print(String msg) { LOG.info(msg + "alias=" + qbp.getAlias()); for (String alias : getSubqAliases()) { QBExpr qbexpr = getSubqForAlias(alias); LOG.info(msg + "start subquery " + alias); qbexpr.print(msg + " "); LOG.info(msg + "end subquery " + alias); } }
QBExpr qbexpr = qb.getSubqForAlias(alias); aliasToOpInfo.put(alias, genPlan(qbexpr)); qbexpr.setAlias(alias);
void addRewrites(TokenRewriteStream stream, QB qb, String program, PrintStream out) { QBSubQuery sqW = qb.getWhereClauseSubQueryPredicate(); QBSubQuery sqH = qb.getHavingClauseSubQueryPredicate(); if (sqW != null || sqH != null) { ASTNode sqNode = sqW != null ? sqW.getOriginalSubQueryASTForRewrite() : sqH.getOriginalSubQueryASTForRewrite(); ASTNode tokQry = getQueryASTNode(sqNode); ASTNode tokFrom = (ASTNode) tokQry.getChild(0); StringBuilder addedJoins = new StringBuilder(); if (sqW != null) { addRewrites(stream, sqW, program, out, qb.getId(), true, addedJoins); } if (sqH != null) { addRewrites(stream, sqH, program, out, qb.getId(), false, addedJoins); } stream.insertAfter(program, tokFrom.getTokenStopIndex(), addedJoins); } Set<String> sqAliases = qb.getSubqAliases(); for(String sqAlias : sqAliases) { addRewrites(stream, qb.getSubqForAlias(sqAlias).getQB(), program, out); } }