private static ReplicateOperator createReplicateOperator(Mutable<ILogicalOperator> inputOperator, IOptimizationContext context, SourceLocation sourceLocation) throws AlgebricksException { ReplicateOperator replicateOperator = new ReplicateOperator(2); replicateOperator.setPhysicalOperator(new ReplicatePOperator()); replicateOperator.setSourceLocation(sourceLocation); replicateOperator.getInputs().add(inputOperator); OperatorManipulationUtil.setOperatorMode(replicateOperator); replicateOperator.recomputeSchema(); context.computeAndSetTypeEnvironmentForOperator(replicateOperator); return replicateOperator; }
@Override public ILogicalOperator visitReplicateOperator(ReplicateOperator op, ILogicalOperator arg) throws AlgebricksException { boolean[] outputMatFlags = op.getOutputMaterializationFlags(); boolean[] copiedOutputMatFlags = new boolean[outputMatFlags.length]; System.arraycopy(outputMatFlags, 0, copiedOutputMatFlags, 0, outputMatFlags.length); ReplicateOperator opCopy = new ReplicateOperator(op.getOutputArity(), copiedOutputMatFlags); deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy); return opCopy; }
@Override public ILogicalOperator visitReplicateOperator(ReplicateOperator op, Void arg) throws AlgebricksException { return new ReplicateOperator(op.getOutputArity()); }
replicateOp = new ReplicateOperator(secondaryIndexTotalCnt); replicateOp.setSourceLocation(sourceLoc); replicateOp.getInputs().add(new MutableObject<ILogicalOperator>(currentTop)); replicateOp.setExecutionMode(ExecutionMode.PARTITIONED); context.computeAndSetTypeEnvironmentForOperator(replicateOp); currentTop = replicateOp; currentTop = indexUpdate; } else { replicateOp.getOutputs().add(new MutableObject<>(replicateOutput)); int positionOfSecondaryPrimaryIndex = replicateOp.getOutputs().size() - 1; replicateOp.getOutputMaterializationFlags()[positionOfSecondaryPrimaryIndex] = true;
ReplicateOperator rop = new ReplicateOperator(group.size(), materializationFlags); rop.setSourceLocation(candidateSourceLoc); rop.setPhysicalOperator(new ReplicatePOperator()); Mutable<ILogicalOperator> ropRef = new MutableObject<ILogicalOperator>(rop); AbstractLogicalOperator aopCandidate = (AbstractLogicalOperator) candidate.getValue(); List<Mutable<ILogicalOperator>> originalCandidateParents = childrenToParents.get(candidate); rop.setExecutionMode(((AbstractLogicalOperator) candidate.getValue()).getExecutionMode()); if (aopCandidate.getOperatorTag() == LogicalOperatorTag.EXCHANGE) { rop.getInputs().add(candidate); } else { AbstractLogicalOperator beforeExchange = new ExchangeOperator(); beforeExchange.setPhysicalOperator(new OneToOneExchangePOperator()); beforeExchange.setExecutionMode(rop.getExecutionMode()); Mutable<ILogicalOperator> beforeExchangeRef = new MutableObject<ILogicalOperator>(beforeExchange); beforeExchange.getInputs().add(candidate); context.computeAndSetTypeEnvironmentForOperator(beforeExchange); rop.getInputs().add(beforeExchangeRef); if (parent.getOperatorTag() == LogicalOperatorTag.EXCHANGE) { parent.getInputs().set(index, ropRef); rop.getOutputs().add(parentRef); } else { AbstractLogicalOperator exchange = new ExchangeOperator(); exchange.setPhysicalOperator(new OneToOneExchangePOperator()); exchange.setExecutionMode(rop.getExecutionMode()); MutableObject<ILogicalOperator> exchangeRef = new MutableObject<ILogicalOperator>(exchange); exchange.getInputs().add(ropRef); rop.getOutputs().add(exchangeRef);
scanOperator.getInputs().add(new MutableObject<>(ets)); ReplicateOperator replicateOperator = new ReplicateOperator(2); replicateOperator.setExecutionMode(PARTITIONED); replicateOperator.getInputs().add(new MutableObject<>(scanOperator));
@Override public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema) throws AlgebricksException { IOperatorDescriptorRegistry spec = builder.getJobSpec(); RecordDescriptor recDescriptor = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), propagatedSchema, context); ReplicateOperator rop = (ReplicateOperator) op; int outputArity = rop.getOutputArity(); boolean[] outputMaterializationFlags = rop.getOutputMaterializationFlags(); ReplicateOperatorDescriptor ropDesc = new ReplicateOperatorDescriptor(spec, recDescriptor, outputArity, outputMaterializationFlags); ropDesc.setSourceLocation(rop.getSourceLocation()); contributeOpDesc(builder, rop, ropDesc); ILogicalOperator src = op.getInputs().get(0).getValue(); builder.contributeGraphEdge(src, 0, op, 0); }
replicateOp.getOutputs().add(exchToForwardRef); replicateOp.getOutputs().add(exchToLocalAggRef); replicateOp.getOutputMaterializationFlags()[0] = true;
@Override public Long visitReplicateOperator(ReplicateOperator op, Void arg) throws AlgebricksException { return op.getInputs().get(0).getValue().accept(this, arg); }
AbstractLogicalOperator replicateOp = new ReplicateOperator(2); replicateOp.setSourceLocation(sourceLoc); replicateOp.getInputs().add(new MutableObject<ILogicalOperator>(probeRootOp));