@Override public ILogicalOperator visitDistributeResultOperator(DistributeResultOperator op, Void arg) throws AlgebricksException { ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<>(); deepCopyExpressionRefs(newExpressions, op.getExpressions()); return new DistributeResultOperator(newExpressions, op.getDataSink()); }
private ILogicalPlan translateMainModule(MainModuleNode moduleNode) throws SystemException { QueryBodyNode qbn = moduleNode.getQueryBody(); ASTNode queryBody = qbn.getExpression(); TranslationContext tCtx = new TranslationContext(null, new EmptyTupleSourceOperator()); LogicalVariable lVar = translateExpression(queryBody, tCtx); LogicalVariable iLVar = newLogicalVariable(); UnnestOperator unnest = new UnnestOperator(iLVar, mutable(ufce(BuiltinOperators.ITERATE, vre(lVar)))); unnest.getInputs().add(mutable(tCtx.op)); List<Mutable<ILogicalExpression>> exprs = new ArrayList<Mutable<ILogicalExpression>>(); exprs.add(mutable(vre(iLVar))); QueryResultSetDataSink sink = new QueryResultSetDataSink(ccb.getResultSetId(), null); DistributeResultOperator op = new DistributeResultOperator(exprs, sink); op.getInputs().add(mutable(unnest)); ALogicalPlanImpl lp = new ALogicalPlanImpl(mutable(op)); return lp; }
ResultSetSinkId rssId = new ResultSetSinkId(metadataProvider.getResultSetId()); ResultSetDataSink sink = new ResultSetDataSink(rssId, null); DistributeResultOperator distResultOperator = new DistributeResultOperator(expressions, sink); distResultOperator.getInputs().add(new MutableObject<>(createResultAssignOperator));
ResultSetSinkId rssId = new ResultSetSinkId(metadataProvider.getResultSetId()); ResultSetDataSink sink = new ResultSetDataSink(rssId, null); DistributeResultOperator newTop = new DistributeResultOperator(writeExprList, sink); newTop.setSourceLocation(sourceLoc); newTop.getInputs().add(new MutableObject<>(topOp));
@Test public void noBlockingPlan() throws AlgebricksException { EmptyTupleSourceOperator ets = new EmptyTupleSourceOperator(); ets.setExecutionMode(UNPARTITIONED); AssignOperator assignOperator = new AssignOperator(Collections.emptyList(), null); assignOperator.setExecutionMode(UNPARTITIONED); assignOperator.getInputs().add(new MutableObject<>(ets)); ExchangeOperator exchange = new ExchangeOperator(); exchange.setExecutionMode(UNPARTITIONED); exchange.setPhysicalOperator(new OneToOneExchangePOperator()); exchange.getInputs().add(new MutableObject<>(assignOperator)); DistributeResultOperator resultOperator = new DistributeResultOperator(null, null); resultOperator.setExecutionMode(UNPARTITIONED); resultOperator.getInputs().add(new MutableObject<>(exchange)); ALogicalPlanImpl plan = new ALogicalPlanImpl(Collections.singletonList(new MutableObject(resultOperator))); List<PlanStage> stages = ResourceUtils.getStages(plan); // ensure a single stage plan final int expectedStages = 1; Assert.assertEquals(expectedStages, stages.size()); validateStages(stages, resultOperator, exchange, ets, assignOperator); // frame size for every operator final long expectedMemory = stages.get(0).getOperators().size() * FRAME_SIZE; assertRequiredMemory(stages, expectedMemory); }
orderOperator.getInputs().add(new MutableObject<>(groupByOperator)); DistributeResultOperator resultOperator = new DistributeResultOperator(null, null); resultOperator.setExecutionMode(PARTITIONED); resultOperator.getInputs().add(new MutableObject<>(orderOperator));
secondJoin.getInputs().add(new MutableObject<>(order2)); DistributeResultOperator resultOperator = new DistributeResultOperator(null, null); resultOperator.setExecutionMode(PARTITIONED); resultOperator.getInputs().add(new MutableObject<>(secondJoin));
secondJoin.getInputs().add(new MutableObject<>(exchangeOperator2)); DistributeResultOperator resultOperator = new DistributeResultOperator(null, null); resultOperator.setExecutionMode(PARTITIONED); resultOperator.getInputs().add(new MutableObject<>(secondJoin));