/** * @param rearrange * @return */ private static POPreCombinerLocalRearrange getPreCombinerLR(POLocalRearrange rearrange) { String scope = rearrange.getOperatorKey().scope; POPreCombinerLocalRearrange pclr = new POPreCombinerLocalRearrange( createOperatorKey(scope), rearrange.getRequestedParallelism(), rearrange.getInputs()); pclr.setPlans(rearrange.getPlans()); return pclr; }
/** * create new Local rearrange by cloning existing rearrange and add plan for projecting the key * * @param rearrange * @return * @throws PlanException * @throws CloneNotSupportedException */ private static POLocalRearrange getNewRearrange(POLocalRearrange rearrange) throws PlanException, CloneNotSupportedException { POLocalRearrange newRearrange = rearrange.clone(); // Set the projection to be the key PhysicalPlan newPlan = new PhysicalPlan(); String scope = newRearrange.getOperatorKey().scope; POProject proj = new POProject( new OperatorKey(scope, NodeIdGenerator.getGenerator().getNextNodeId(scope)), -1, 0); proj.setResultType(newRearrange.getKeyType()); newPlan.add(proj); List<PhysicalPlan> plans = new ArrayList<PhysicalPlan>(1); plans.add(newPlan); newRearrange.setPlansFromCombiner(plans); return newRearrange; }