private void deepCopyInputs(ILogicalOperator src, ILogicalOperator dest, ILogicalOperator arg) throws AlgebricksException { List<Mutable<ILogicalOperator>> inputs = src.getInputs(); List<Mutable<ILogicalOperator>> inputsCopy = dest.getInputs(); for (Mutable<ILogicalOperator> input : inputs) { inputsCopy.add(deepCopyOperatorReference(input, arg)); } }
/** * Find the reference of a nested tuple source operator in the query pipeline rooted at <code>currentOpRef</code> * * @param currentOpRef * @return the reference of a nested tuple source operator */ private Mutable<ILogicalOperator> findNtsRef(Mutable<ILogicalOperator> currentOpRef) { while (currentOpRef.getValue().getInputs().size() > 0) { currentOpRef = currentOpRef.getValue().getInputs().get(0); } return currentOpRef; }
/** * @param context * the optimization context * @param subplanOperator * the subplan operator this visitor deals with. * @throws AlgebricksException */ public ReplaceNtsWithSubplanInputOperatorVisitor(IOptimizationContext context, ILogicalOperator subplanOperator) throws AlgebricksException { this.ctx = context; this.subplanInputOperator = subplanOperator.getInputs().get(0).getValue(); }
private Mutable<ILogicalOperator> getNestedTupleSourceReference(Mutable<ILogicalOperator> nestedTopOperatorRef) { Mutable<ILogicalOperator> currentOpRef = nestedTopOperatorRef; while (currentOpRef.getValue().getInputs() != null && !currentOpRef.getValue().getInputs().isEmpty()) { currentOpRef = currentOpRef.getValue().getInputs().get(0); } return currentOpRef; }
@Override public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema) throws AlgebricksException { IOperatorDescriptorRegistry spec = builder.getJobSpec(); SinkOperatorDescriptor opDesc = new SinkOperatorDescriptor(spec, op.getInputs().size()); opDesc.setSourceLocation(op.getSourceLocation()); contributeOpDesc(builder, (AbstractLogicalOperator) op, opDesc); for (int i = 0; i < op.getInputs().size(); i++) { builder.contributeGraphEdge(op.getInputs().get(i).getValue(), 0, op, i); } }
@Override public void recomputeSchema() { schema = new ArrayList<LogicalVariable>(); ILogicalOperator topOp = dataSourceReference.getValue(); for (Mutable<ILogicalOperator> i : topOp.getInputs()) { List<LogicalVariable> inputSchema = i.getValue().getSchema(); if (inputSchema != null) { schema.addAll(inputSchema); } } }
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) { AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); IPartitioningProperty pp = op2.getDeliveredPhysicalProperties().getPartitioningProperty(); this.deliveredProperties = new StructuralPropertiesVector(pp, new ArrayList<>(0)); }
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) throws AlgebricksException { AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); deliveredProperties = op2.getDeliveredPhysicalProperties().clone(); }
@Override public IVariableTypeEnvironment getTypeEnv() { ILogicalOperator op = dataSourceReference.getValue().getInputs().get(0).getValue(); return ctx.getOutputTypeEnvironment(op); } };
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) throws AlgebricksException { AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); deliveredProperties = (StructuralPropertiesVector) op2.getDeliveredPhysicalProperties().clone(); }
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) { AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); deliveredProperties = op2.getDeliveredPhysicalProperties().clone(); }
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) { AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); deliveredProperties = op2.getDeliveredPhysicalProperties().clone(); }
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) throws AlgebricksException { AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); deliveredProperties = op2.getDeliveredPhysicalProperties().clone(); }
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) { AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); deliveredProperties = (StructuralPropertiesVector) op2.getDeliveredPhysicalProperties().clone(); }
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) { AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); deliveredProperties = (StructuralPropertiesVector) op2.getDeliveredPhysicalProperties().clone(); }
public static void substituteVariablesInDescendantsAndSelf(ILogicalOperator op, LogicalVariable v1, LogicalVariable v2, ITypingContext ctx) throws AlgebricksException { for (Mutable<ILogicalOperator> childOp : op.getInputs()) { substituteVariablesInDescendantsAndSelf(childOp.getValue(), v1, v2, ctx); } substituteVariables(op, v1, v2, true, ctx); }
public static void getProducedVariablesInDescendantsAndSelf(ILogicalOperator op, Collection<LogicalVariable> vars) throws AlgebricksException { // DFS traversal VariableUtilities.getProducedVariables(op, vars); for (Mutable<ILogicalOperator> c : op.getInputs()) { getProducedVariablesInDescendantsAndSelf(c.getValue(), vars); } }
private static void computeLogicalPropertiesRec(ILogicalOperator op, LogicalPropertiesVisitor visitor, IOptimizationContext context) throws AlgebricksException { for (Mutable<ILogicalOperator> ref : op.getInputs()) { computeLogicalPropertiesRec(ref.getValue(), visitor, context); } op.accept(visitor, context); if (AlgebricksConfig.ALGEBRICKS_LOGGER.isTraceEnabled()) { AlgebricksConfig.ALGEBRICKS_LOGGER.trace( "Logical properties visitor for " + op + ": " + context.getLogicalPropertiesVector(op) + "\n"); } }
private LogicalPropertiesVectorImpl propagateCardinality(ILogicalOperator op, IOptimizationContext context) { ILogicalOperator op0 = op.getInputs().get(0).getValue(); ILogicalPropertiesVector v0 = context.getLogicalPropertiesVector(op0); if (v0 == null) { return null; } LogicalPropertiesVectorImpl v = new LogicalPropertiesVectorImpl(); v.setNumberOfTuples(v0.getNumberOfTuples()); context.putLogicalPropertiesVector(op, v); return v; }
private static void setDataSource(Mutable<ILogicalOperator> opRef, ILogicalOperator dataSource) { ILogicalOperator op = opRef.getValue(); if (op.getOperatorTag() == LogicalOperatorTag.NESTEDTUPLESOURCE) { NestedTupleSourceOperator nts = (NestedTupleSourceOperator) op; nts.setDataSourceReference(new MutableObject<ILogicalOperator>(dataSource)); } for (Mutable<ILogicalOperator> childRef : op.getInputs()) { setDataSource(childRef, dataSource); } }