/** * Returns an operator given the conf and a list of children operators. */ public static void makeChild( Operator<? extends OperatorDesc> ret, Operator<? extends OperatorDesc>... oplist) { if (oplist.length == 0) { return; } ArrayList<Operator<? extends OperatorDesc>> clist = new ArrayList<Operator<? extends OperatorDesc>>(); for (Operator<? extends OperatorDesc> op : oplist) { clist.add(op); } ret.setChildOperators(clist); // Add this parent to the children for (Operator<? extends OperatorDesc> op : oplist) { List<Operator<? extends OperatorDesc>> parents = op.getParentOperators(); parents.add(ret); op.setParentOperators(parents); } }
public void removeParent(Operator<? extends OperatorDesc> parent) { int parentIndex = parentOperators.indexOf(parent); assert parentIndex != -1; if (parentOperators.size() == 1) { setParentOperators(null); } else { parentOperators.remove(parentIndex); } int childIndex = parent.getChildOperators().indexOf(this); assert childIndex != -1; if (parent.getChildOperators().size() == 1) { parent.setChildOperators(null); } else { parent.getChildOperators().remove(childIndex); } }
public void removeChild(Operator<? extends OperatorDesc> child) { int childIndex = childOperators.indexOf(child); assert childIndex != -1; if (childOperators.size() == 1) { setChildOperators(null); } else { childOperators.remove(childIndex); } int parentIndex = child.getParentOperators().indexOf(this); assert parentIndex != -1; if (child.getParentOperators().size() == 1) { child.setParentOperators(null); } else { child.getParentOperators().remove(parentIndex); } }
public void removeParent(Operator<? extends OperatorDesc> parent) { int parentIndex = parentOperators.indexOf(parent); assert parentIndex != -1; if (parentOperators.size() == 1) { setParentOperators(null); } else { parentOperators.remove(parentIndex); } int childIndex = parent.getChildOperators().indexOf(this); assert childIndex != -1; if (parent.getChildOperators().size() == 1) { parent.setChildOperators(null); } else { parent.getChildOperators().remove(childIndex); } }
/** * Returns an operator given the conf and a list of parent operators. */ public static <T extends OperatorDesc> Operator<T> getAndMakeChild(CompilationOpContext cContext, T conf, List<Operator<? extends OperatorDesc>> oplist) { Operator<T> ret = get(cContext, (Class<T>) conf.getClass()); ret.setConf(conf); if (oplist.size() == 0) { return ret; } // Add the new operator as child of each of the passed in operators for (Operator op : oplist) { List<Operator> children = op.getChildOperators(); children.add(ret); } // add parents for the newly created operator List<Operator<? extends OperatorDesc>> parent = new ArrayList<Operator<? extends OperatorDesc>>(); for (Operator op : oplist) { parent.add(op); } ret.setParentOperators(parent); return ret; }
public void removeChild(Operator<? extends OperatorDesc> child) { int childIndex = childOperators.indexOf(child); assert childIndex != -1; if (childOperators.size() == 1) { setChildOperators(null); } else { childOperators.remove(childIndex); } int parentIndex = child.getParentOperators().indexOf(this); assert parentIndex != -1; if (child.getParentOperators().size() == 1) { child.setParentOperators(null); } else { child.getParentOperators().remove(parentIndex); } }
private void fixupNewVectorChild( Operator<? extends OperatorDesc> parent, Operator<? extends OperatorDesc> vectorParent, Operator<? extends OperatorDesc> child, Operator<? extends OperatorDesc> vectorChild) { // 1) Add new vector child to the vector parent's children list. vectorParent.getChildOperators().add(vectorChild); // 2) Copy and fixup the parent list of the original child instead of just assuming a 1:1 // relationship. List<Operator<? extends OperatorDesc>> childMultipleParents = newOperatorList(); childMultipleParents.addAll(child.getParentOperators()); final int childMultipleParentCount = childMultipleParents.size(); for (int i = 0; i < childMultipleParentCount; i++) { Operator<? extends OperatorDesc> childMultipleParent = childMultipleParents.get(i); if (childMultipleParent == parent) { childMultipleParents.set(i, vectorParent); } else { queueDelayedFixup(childMultipleParent, child, vectorChild); } } vectorChild.setParentOperators(childMultipleParents); }
public static ListSinkOperator replaceFSwithLS(Operator<?> fileSink, String nullFormat) { ListSinkDesc desc = new ListSinkDesc(nullFormat); ListSinkOperator sink = (ListSinkOperator) OperatorFactory.get( fileSink.getCompilationOpContext(), desc); sink.setParentOperators(new ArrayList<Operator<? extends OperatorDesc>>()); Operator<? extends OperatorDesc> parent = fileSink.getParentOperators().get(0); sink.getParentOperators().add(parent); parent.replaceChild(fileSink, sink); fileSink.setParentOperators(null); return sink; } }
/** * Returns an operator given the conf and a list of parent operators. */ public static <T extends OperatorDesc> Operator<T> getAndMakeChild( CompilationOpContext ctx, T conf, RowSchema rwsch, Operator[] oplist) { Operator<T> ret = get(ctx, (Class<T>) conf.getClass()); ret.setConf(conf); ret.setSchema(rwsch); if (oplist.length == 0) return ret; // Add the new operator as child of each of the passed in operators for (Operator op : oplist) { List<Operator> children = op.getChildOperators(); children.add(ret); op.setChildOperators(children); } // add parents for the newly created operator List<Operator<? extends OperatorDesc>> parent = new ArrayList<Operator<? extends OperatorDesc>>(); for (Operator op : oplist) { parent.add(op); } ret.setParentOperators(parent); return (ret); }
public static ListSinkOperator replaceFSwithLS(Operator<?> fileSink, String nullFormat) { ListSinkDesc desc = new ListSinkDesc(nullFormat); ListSinkOperator sink = (ListSinkOperator) OperatorFactory.get( fileSink.getCompilationOpContext(), desc); sink.setParentOperators(new ArrayList<Operator<? extends OperatorDesc>>()); Operator<? extends OperatorDesc> parent = fileSink.getParentOperators().get(0); sink.getParentOperators().add(parent); parent.replaceChild(fileSink, sink); fileSink.setParentOperators(null); return sink; } }
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); } }
public static void connectOperators( Operator<? extends OperatorDesc> operator, Operator<? extends OperatorDesc> childOperator) throws HiveException { List<Operator<? extends OperatorDesc>> newParentOperators = newOperatorList(); newParentOperators.addAll(childOperator.getParentOperators()); newParentOperators.add(operator); childOperator.setParentOperators(newParentOperators); List<Operator<? extends OperatorDesc>> newChildOperators = newOperatorList(); newChildOperators.addAll(operator.getChildOperators()); newChildOperators.add(childOperator); operator.setChildOperators(newChildOperators); }
public static FakeVectorDataSourceOperator addFakeVectorDataSourceParent( Iterable<VectorizedRowBatch> source, Operator<? extends OperatorDesc> op) { FakeVectorDataSourceOperator parent = new FakeVectorDataSourceOperator( new CompilationOpContext(), source); List<Operator<? extends OperatorDesc>> listParents = new ArrayList<Operator<? extends OperatorDesc>>(1); listParents.add(parent); op.setParentOperators(listParents); List<Operator<? extends OperatorDesc>> listChildren = new ArrayList<Operator<? extends OperatorDesc>>(1); listChildren.add(op); parent.setChildOperators(listChildren); return parent; }
/** * Inserts a filter below the table scan operator. Construct the filter * from the filter expression provided. * @param tableScanOp the table scan operators * @param filterExpr the filter expression */ private void insertFilterOnTop( TableScanOperator tableScanOp, ExprNodeDesc filterExpr) { // Get the top operator and it's child, all operators have a single parent Operator<? extends OperatorDesc> currChild = tableScanOp.getChildOperators().get(0); // Create the filter Operator and update the parents and children appropriately tableScanOp.setChildOperators(null); currChild.setParentOperators(null); Operator<FilterDesc> filter = OperatorFactory.getAndMakeChild( new FilterDesc(filterExpr, false), new RowSchema(tableScanOp.getSchema().getSignature()), tableScanOp); OperatorFactory.makeChild(filter, currChild); }
/** * Inserts a filter below the table scan operator. Construct the filter * from the filter expression provided. * @param tableScanOp the table scan operators * @param filterExpr the filter expression */ private void insertFilterOnTop( TableScanOperator tableScanOp, ExprNodeDesc filterExpr) { // Get the top operator and it's child, all operators have a single parent Operator<? extends OperatorDesc> currChild = tableScanOp.getChildOperators().get(0); // Create the filter Operator and update the parents and children appropriately tableScanOp.setChildOperators(null); currChild.setParentOperators(null); Operator<FilterDesc> filter = OperatorFactory.getAndMakeChild( new FilterDesc(filterExpr, false), new RowSchema(tableScanOp.getSchema().getSignature()), tableScanOp); OperatorFactory.makeChild(filter, currChild); }
private void initializeSourceForTag(ReduceWork redWork, int tag, ObjectInspector[] ois, ReduceRecordSource[] sources, TableDesc valueTableDesc, String inputName) throws Exception { reducer = redWork.getReducer(); reducer.getParentOperators().clear(); reducer.setParentOperators(null); // clear out any parents as reducer is the root TableDesc keyTableDesc = redWork.getKeyDesc(); Reader reader = inputs.get(inputName).getReader(); sources[tag] = new ReduceRecordSource(); // Only the big table input source should be vectorized (if applicable) // Note this behavior may have to change if we ever implement a vectorized merge join boolean vectorizedRecordSource = (tag == bigTablePosition) && redWork.getVectorMode(); sources[tag].init(jconf, redWork.getReducer(), vectorizedRecordSource, keyTableDesc, valueTableDesc, reader, tag == bigTablePosition, (byte) tag, redWork.getVectorizedRowBatchCtx(), redWork.getVectorizedVertexNum(), redWork.getVectorizedTestingReducerBatchSize()); ois[tag] = sources[tag].getObjectInspector(); }
private void initializeSourceForTag(ReduceWork redWork, int tag, ObjectInspector[] ois, ReduceRecordSource[] sources, TableDesc valueTableDesc, String inputName) throws Exception { reducer = redWork.getReducer(); reducer.getParentOperators().clear(); reducer.setParentOperators(null); // clear out any parents as reducer is the root TableDesc keyTableDesc = redWork.getKeyDesc(); Reader reader = inputs.get(inputName).getReader(); sources[tag] = new ReduceRecordSource(); // Only the big table input source should be vectorized (if applicable) // Note this behavior may have to change if we ever implement a vectorized merge join boolean vectorizedRecordSource = (tag == bigTablePosition) && redWork.getVectorMode(); sources[tag].init(jconf, redWork.getReducer(), vectorizedRecordSource, keyTableDesc, valueTableDesc, reader, tag == bigTablePosition, (byte) tag, redWork.getVectorizedRowBatchCtx(), redWork.getVectorizedVertexNum()); ois[tag] = sources[tag].getObjectInspector(); }
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); } } }