private Operator<FilterDesc> createFilter(Operator<?> target, Operator<?> parent, RowSchema parentRS, ExprNodeDesc filterExpr) { Operator<FilterDesc> filter = OperatorFactory.get(parent.getCompilationOpContext(), new FilterDesc(filterExpr, false), new RowSchema(parentRS.getSignature())); filter.getParentOperators().add(parent); filter.getChildOperators().add(target); parent.replaceChild(target, filter); target.replaceParent(parent, filter); return filter; }
private Operator<FilterDesc> createFilter(Operator<?> target, Operator<?> parent, RowSchema parentRS, ExprNodeDesc filterExpr) { Operator<FilterDesc> filter = OperatorFactory.get(parent.getCompilationOpContext(), new FilterDesc(filterExpr, false), new RowSchema(parentRS.getSignature())); filter.getParentOperators().add(parent); filter.getChildOperators().add(target); parent.replaceChild(target, filter); target.replaceParent(parent, filter); return filter; }
private static Operator<FilterDesc> createFilter(Operator<?> target, Operator<?> parent, RowSchema parentRS, ExprNodeDesc filterExpr) { FilterDesc filterDesc = new FilterDesc(filterExpr, false); filterDesc.setSyntheticJoinPredicate(true); Operator<FilterDesc> filter = OperatorFactory.get(parent.getCompilationOpContext(), filterDesc, new RowSchema(parentRS.getSignature())); filter.getParentOperators().add(parent); filter.getChildOperators().add(target); parent.replaceChild(target, filter); target.replaceParent(parent, filter); return filter; }
protected static void removeOperator(Operator<?> target, Operator<?> child, Operator<?> parent, ParseContext context) { for (Operator<?> aparent : target.getParentOperators()) { aparent.replaceChild(target, child); } for (Operator<?> achild : target.getChildOperators()) { achild.replaceParent(target, parent); } target.setChildOperators(null); target.setParentOperators(null); } }
protected static void removeOperator(Operator<?> target, Operator<?> child, Operator<?> parent, ParseContext context) { for (Operator<?> aparent : target.getParentOperators()) { aparent.replaceChild(target, child); } for (Operator<?> achild : target.getChildOperators()) { achild.replaceParent(target, parent); } target.setChildOperators(null); target.setParentOperators(null); } }
private static Operator<FilterDesc> createFilter(Operator<?> target, Operator<?> parent, RowSchema parentRS, ExprNodeDesc filterExpr) { FilterDesc filterDesc = new FilterDesc(filterExpr, false); filterDesc.setSyntheticJoinPredicate(true); Operator<FilterDesc> filter = OperatorFactory.get(parent.getCompilationOpContext(), filterDesc, new RowSchema(parentRS.getSignature())); filter.getParentOperators().add(parent); filter.getChildOperators().add(target); parent.replaceChild(target, filter); target.replaceParent(parent, filter); return filter; }
public boolean removeChildren(Operator<? extends OperatorDesc> currOp, int depth) { Operator<? extends OperatorDesc> inputOp = currOp; for (int i = 0; i < depth; i++) { // If there are more than 1 children at any level, don't do anything if ((currOp.getChildOperators() == null) || (currOp.getChildOperators().isEmpty()) || (currOp.getChildOperators().size() > 1)) { return false; } currOp = currOp.getChildOperators().get(0); } // add selectOp to match the schema // after that, inputOp is the parent of selOp. for (Operator<? extends OperatorDesc> op : inputOp.getChildOperators()) { op.getParentOperators().clear(); } inputOp.getChildOperators().clear(); Operator<? extends OperatorDesc> selOp = genOutputSelectForGroupBy(inputOp, currOp); // update the childOp of selectOp selOp.setChildOperators(currOp.getChildOperators()); // update the parentOp for (Operator<? extends OperatorDesc> op : currOp.getChildOperators()) { op.replaceParent(currOp, selOp); } return true; }
public boolean removeChildren(Operator<? extends OperatorDesc> currOp, int depth) { Operator<? extends OperatorDesc> inputOp = currOp; for (int i = 0; i < depth; i++) { // If there are more than 1 children at any level, don't do anything if ((currOp.getChildOperators() == null) || (currOp.getChildOperators().isEmpty()) || (currOp.getChildOperators().size() > 1)) { return false; } currOp = currOp.getChildOperators().get(0); } // add selectOp to match the schema // after that, inputOp is the parent of selOp. for (Operator<? extends OperatorDesc> op : inputOp.getChildOperators()) { op.getParentOperators().clear(); } inputOp.getChildOperators().clear(); Operator<? extends OperatorDesc> selOp = genOutputSelectForGroupBy(inputOp, currOp); // update the childOp of selectOp selOp.setChildOperators(currOp.getChildOperators()); // update the parentOp for (Operator<? extends OperatorDesc> op : currOp.getChildOperators()) { op.replaceParent(currOp, selOp); } return true; }
ch.replaceParent(input, sel);
ch.replaceParent(input, sel);
private void fixupParentChildOperators(Operator<? extends OperatorDesc> op, Operator<? extends OperatorDesc> vectorOp) { if (op.getParentOperators() != null) { vectorOp.setParentOperators(op.getParentOperators()); for (Operator<? extends OperatorDesc> p : op.getParentOperators()) { p.replaceChild(op, vectorOp); } } if (op.getChildOperators() != null) { vectorOp.setChildOperators(op.getChildOperators()); for (Operator<? extends OperatorDesc> c : op.getChildOperators()) { c.replaceParent(op, vectorOp); } } }
private void fixupParentChildOperators(Operator<? extends OperatorDesc> op, Operator<? extends OperatorDesc> vectorOp) { if (op.getParentOperators() != null) { vectorOp.setParentOperators(op.getParentOperators()); for (Operator<? extends OperatorDesc> p : op.getParentOperators()) { p.replaceChild(op, vectorOp); } } if (op.getChildOperators() != null) { vectorOp.setChildOperators(op.getChildOperators()); for (Operator<? extends OperatorDesc> c : op.getChildOperators()) { c.replaceParent(op, vectorOp); } } }
tsOp.replaceChild(op, newOp); newOp.getParentOperators().add(tsOp); op.replaceParent(tsOp, newOp); newOp.getChildOperators().add(op);
protected static SelectOperator replaceReduceSinkWithSelectOperator(ReduceSinkOperator childRS, ParseContext context, AbstractCorrelationProcCtx procCtx) throws SemanticException { RowSchema inputRS = childRS.getSchema(); SelectDesc select = new SelectDesc(childRS.getConf().getValueCols(), childRS.getConf().getOutputValueColumnNames()); Operator<?> parent = getSingleParent(childRS); parent.getChildOperators().clear(); SelectOperator sel = (SelectOperator) OperatorFactory.getAndMakeChild( select, new RowSchema(inputRS.getSignature()), parent); sel.setColumnExprMap(childRS.getColumnExprMap()); sel.setChildOperators(childRS.getChildOperators()); for (Operator<? extends Serializable> ch : childRS.getChildOperators()) { ch.replaceParent(childRS, sel); } childRS.setChildOperators(null); childRS.setParentOperators(null); procCtx.addRemovedOperator(childRS); return sel; }
childOp.replaceParent(smbJoinOp, mapJoinOp);
protected static SelectOperator replaceReduceSinkWithSelectOperator(ReduceSinkOperator childRS, ParseContext context, AbstractCorrelationProcCtx procCtx) throws SemanticException { RowSchema inputRS = childRS.getSchema(); SelectDesc select = new SelectDesc(childRS.getConf().getValueCols(), childRS.getConf().getOutputValueColumnNames()); Operator<?> parent = getSingleParent(childRS); parent.removeChild(childRS); SelectOperator sel = (SelectOperator) OperatorFactory.getAndMakeChild( select, new RowSchema(inputRS.getSignature()), parent); sel.setColumnExprMap(childRS.getColumnExprMap()); sel.setChildOperators(childRS.getChildOperators()); for (Operator<? extends Serializable> ch : childRS.getChildOperators()) { ch.replaceParent(childRS, sel); } childRS.setChildOperators(null); childRS.setParentOperators(null); procCtx.addRemovedOperator(childRS); return sel; }
public static MapJoinOperator convertJoinOpMapJoinOp(HiveConf hconf, JoinOperator op, boolean leftInputJoin, String[] baseSrc, List<String> mapAliases, int mapJoinPos, boolean noCheckOuterJoin, boolean adjustParentsChildren) throws SemanticException { MapJoinDesc mapJoinDescriptor = getMapJoinDesc(hconf, op, leftInputJoin, baseSrc, mapAliases, mapJoinPos, noCheckOuterJoin, adjustParentsChildren); if (mapJoinDescriptor == null) { return null; } // reduce sink row resolver used to generate map join op RowSchema outputRS = op.getSchema(); MapJoinOperator mapJoinOp = (MapJoinOperator) OperatorFactory.getAndMakeChild( op.getCompilationOpContext(), mapJoinDescriptor, new RowSchema(outputRS.getSignature()), op.getParentOperators()); mapJoinOp.getConf().setReversedExprs(op.getConf().getReversedExprs()); Map<String, ExprNodeDesc> colExprMap = op.getColumnExprMap(); mapJoinOp.setColumnExprMap(colExprMap); List<Operator<? extends OperatorDesc>> childOps = op.getChildOperators(); for (Operator<? extends OperatorDesc> childOp : childOps) { childOp.replaceParent(op, mapJoinOp); } mapJoinOp.setPosToAliasMap(op.getPosToAliasMap()); mapJoinOp.setChildOperators(childOps); op.setChildOperators(null); op.setParentOperators(null); return mapJoinOp; }
public static MapJoinOperator convertJoinOpMapJoinOp(HiveConf hconf, JoinOperator op, boolean leftInputJoin, String[] baseSrc, List<String> mapAliases, int mapJoinPos, boolean noCheckOuterJoin, boolean adjustParentsChildren) throws SemanticException { MapJoinDesc mapJoinDescriptor = getMapJoinDesc(hconf, op, leftInputJoin, baseSrc, mapAliases, mapJoinPos, noCheckOuterJoin, adjustParentsChildren); // reduce sink row resolver used to generate map join op RowSchema outputRS = op.getSchema(); MapJoinOperator mapJoinOp = (MapJoinOperator) OperatorFactory.getAndMakeChild( op.getCompilationOpContext(), mapJoinDescriptor, new RowSchema(outputRS.getSignature()), op.getParentOperators()); mapJoinOp.getConf().setReversedExprs(op.getConf().getReversedExprs()); Map<String, ExprNodeDesc> colExprMap = op.getColumnExprMap(); mapJoinOp.setColumnExprMap(colExprMap); List<Operator<? extends OperatorDesc>> childOps = op.getChildOperators(); for (Operator<? extends OperatorDesc> childOp : childOps) { childOp.replaceParent(op, mapJoinOp); } mapJoinOp.setPosToAliasMap(op.getPosToAliasMap()); mapJoinOp.setChildOperators(childOps); op.setChildOperators(null); op.setParentOperators(null); return mapJoinOp; }
child.replaceParent(parent, tableScanOp);
child.replaceParent(parent, tableScanOp);