@Override public ASTNode preAnalyze(HiveSemanticAnalyzerHookContext context, ASTNode ast) throws SemanticException { if (ast.getType() == HiveParser.TOK_EXPLAIN) { int childCount = ast.getChildCount(); for (int i = 1; i < childCount; i++) { if (ast.getChild(i).getType() == HiveParser.KW_REOPTIMIZATION) { explainReOptimization = true; ast.deleteChild(i); break; } } if (explainReOptimization && firstExecution()) { Tree execTree = ast.getChild(0); execTree.setParent(ast.getParent()); ast.getParent().setChild(0, execTree); return (ASTNode) execTree; } } return ast; }
HiveParser.TOK_SUBQUERY_OP_NOTIN, "TOK_SUBQUERY_OP_NOTIN")); subQuery.getChild(0).setChild(0, newSqOpType); ASTNode parent = getParentInWhereClause(node); if (parent == null) {
@Override public void setChild(Object t, int i, Object child) { ((Tree)t).setChild(i, (Tree)child); }
@Override public void setChild(Object t, int i, Object child) { ((Tree)t).setChild(i, (Tree)child); }
@Override public void setChild(Object t, int i, Object child) { ((Tree)t).setChild(i, (Tree)child); }
@Override public void setChild(Object t, int i, Object child) { ((Tree)t).setChild(i, (Tree)child); }
@Override public void setChild(Object t, int i, Object child) { ((Tree)t).setChild(i, (Tree)child); }
public void setChild(Object t, int i, Object child) { ((Tree)t).setChild(i, (Tree)child); }
private void removeAggreagateFromDefaultColumns(ASTNode node) throws LensException { for (int i = 0; i < node.getChildCount(); i++) { ASTNode selectExpr = (ASTNode) node.getChild(i); if (selectExpr.getChildCount() == 2) { ASTNode column = (ASTNode) selectExpr.getChild(0); if (HQLParser.isAggregateAST(column) && column.getChildCount() == 2) { if (HQLParser.getString((ASTNode) column.getChild(1)).equals(DEFAULT_MEASURE)) { selectExpr.getParent().setChild(i, getSelectExpr(null, (ASTNode) selectExpr.getChild(1), true)); } } } } } }
private void removeAggreagateFromDefaultColumns(ASTNode node) throws LensException { for (int i = 0; i < node.getChildCount(); i++) { ASTNode selectExpr = (ASTNode) node.getChild(i); if (selectExpr.getChildCount() == 2) { ASTNode column = (ASTNode) selectExpr.getChild(0); if (HQLParser.isAggregateAST(column) && column.getChildCount() == 2) { if (HQLParser.getString((ASTNode) column.getChild(1)).equals(DEFAULT_MEASURE)) { selectExpr.getParent().setChild(i, getSelectExpr(null, (ASTNode) selectExpr.getChild(1), true)); } } } } } }
private void trimHavingAndOrderby(ASTNode ast, Cube innerCube) { ASTNode havingAst = HQLParser.findNodeByPath(ast, TOK_INSERT, TOK_HAVING); if (havingAst != null) { ASTNode newHavingAst = HQLParser.trimHavingAst(havingAst, innerCube.getAllFieldNames()); if (newHavingAst != null) { havingAst.getParent().setChild(havingAst.getChildIndex(), newHavingAst); } else { havingAst.getParent().deleteChild(havingAst.getChildIndex()); } } ASTNode orderByAst = HQLParser.findNodeByPath(ast, TOK_INSERT, TOK_ORDERBY); if (orderByAst != null) { ASTNode newOrderByAst = HQLParser.trimOrderByAst(orderByAst, innerCube.getAllFieldNames()); if (newOrderByAst != null) { orderByAst.getParent().setChild(orderByAst.getChildIndex(), newOrderByAst); } else { orderByAst.getParent().deleteChild(orderByAst.getChildIndex()); } } }
private void trimHavingAndOrderby(ASTNode ast, Cube innerCube) { ASTNode havingAst = HQLParser.findNodeByPath(ast, TOK_INSERT, TOK_HAVING); if (havingAst != null) { ASTNode newHavingAst = HQLParser.trimHavingAst(havingAst, innerCube.getAllFieldNames()); if (newHavingAst != null) { havingAst.getParent().setChild(havingAst.getChildIndex(), newHavingAst); } else { havingAst.getParent().deleteChild(havingAst.getChildIndex()); } } ASTNode orderByAst = HQLParser.findNodeByPath(ast, TOK_INSERT, TOK_ORDERBY); if (orderByAst != null) { ASTNode newOrderByAst = HQLParser.trimOrderByAst(orderByAst, innerCube.getAllFieldNames()); if (newOrderByAst != null) { orderByAst.getParent().setChild(orderByAst.getChildIndex(), newOrderByAst); } else { orderByAst.getParent().deleteChild(orderByAst.getChildIndex()); } } }
treeNode.setChild(childIndex, resultNode);
childNode.getParent().setChild(childNode.getChildIndex(), updatedTimeRange); return;
childNode.getParent().setChild(childNode.getChildIndex(), updatedTimeRange); return;