| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.pig.backend.hadoop.executionengine.physicalLayer.plans; |
| |
| import java.util.List; |
| |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.Add; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.ConstantExpression; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.Divide; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.EqualToExpr; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.GTOrEqualToExpr; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.GreaterThanExpr; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.LTOrEqualToExpr; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.LessThanExpr; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.Mod; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.Multiply; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.NotEqualToExpr; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POAnd; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POBinCond; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POCast; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POIsNull; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POMapLookUp; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.PONegative; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.PONot; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POOr; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.PORegexp; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POUserComparisonFunc; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POUserFunc; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.Subtract; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POCollectedGroup; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POCounter; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POCross; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.PODemux; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.PODistinct; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POFRJoin; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POFilter; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POForEach; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POGlobalRearrange; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLimit; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLoad; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLocalRearrange; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POMergeCogroup; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POMergeJoin; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.PONative; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POOptimizedForEach; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POPackage; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POPartialAgg; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POPartitionRearrange; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POPoissonSample; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POPreCombinerLocalRearrange; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.PORank; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POReservoirSample; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POSkewedJoin; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POSort; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POSplit; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POStore; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POStream; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POUnion; |
| import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POBroadcastSpark; |
| import org.apache.pig.impl.plan.PlanVisitor; |
| import org.apache.pig.impl.plan.PlanWalker; |
| import org.apache.pig.impl.plan.VisitorException; |
| |
| /** |
| * The visitor class for the Physical Plan. To use this, |
| * create the visitor with the plan to be visited. Call |
| * the visit() method to traverse the plan in a depth first |
| * fashion. |
| * |
| * This class also visits the nested plans inside the operators. |
| * One has to extend this class to modify the nature of each visit |
| * and to maintain any relevant state information between the visits |
| * to two different operators. |
| * |
| */ |
| public class PhyPlanVisitor extends PlanVisitor<PhysicalOperator,PhysicalPlan> { |
| |
| public PhyPlanVisitor(PhysicalPlan plan, PlanWalker<PhysicalOperator, PhysicalPlan> walker) { |
| super(plan, walker); |
| } |
| |
| public void visit(PhysicalOperator op) { |
| // do nothing |
| } |
| |
| public void visitLoad(POLoad ld) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitStore(POStore st) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitNative(PONative nat) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitFilter(POFilter fl) throws VisitorException{ |
| pushWalker(mCurrentWalker.spawnChildWalker(fl.getPlan())); |
| visit(); |
| popWalker(); |
| } |
| |
| public void visitCollectedGroup(POCollectedGroup mg) throws VisitorException{ |
| List<PhysicalPlan> inpPlans = mg.getPlans(); |
| for (PhysicalPlan plan : inpPlans) { |
| pushWalker(mCurrentWalker.spawnChildWalker(plan)); |
| visit(); |
| popWalker(); |
| } |
| } |
| |
| public void visitLocalRearrange(POLocalRearrange lr) throws VisitorException{ |
| List<PhysicalPlan> inpPlans = lr.getPlans(); |
| for (PhysicalPlan plan : inpPlans) { |
| pushWalker(mCurrentWalker.spawnChildWalker(plan)); |
| visit(); |
| popWalker(); |
| } |
| } |
| |
| public void visitGlobalRearrange(POGlobalRearrange gr) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitPackage(POPackage pkg) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitPOForEach(POForEach nfe) throws VisitorException { |
| List<PhysicalPlan> inpPlans = nfe.getInputPlans(); |
| for (PhysicalPlan plan : inpPlans) { |
| pushWalker(mCurrentWalker.spawnChildWalker(plan)); |
| visit(); |
| popWalker(); |
| } |
| } |
| |
| public void visitUnion(POUnion un) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitSplit(POSplit spl) throws VisitorException{ |
| List<PhysicalPlan> plans = spl.getPlans(); |
| for (PhysicalPlan plan : plans) { |
| pushWalker(mCurrentWalker.spawnChildWalker(plan)); |
| visit(); |
| popWalker(); |
| } |
| } |
| |
| public void visitDemux(PODemux demux) throws VisitorException{ |
| List<PhysicalPlan> plans = demux.getPlans(); |
| for (PhysicalPlan plan : plans) { |
| pushWalker(mCurrentWalker.spawnChildWalker(plan)); |
| visit(); |
| popWalker(); |
| } |
| } |
| |
| public void visitCounter(POCounter poCounter) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitRank(PORank rank) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitDistinct(PODistinct distinct) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitSort(POSort sort) throws VisitorException { |
| List<PhysicalPlan> inpPlans = sort.getSortPlans(); |
| for (PhysicalPlan plan : inpPlans) { |
| pushWalker(mCurrentWalker.spawnChildWalker(plan)); |
| visit(); |
| popWalker(); |
| } |
| } |
| |
| public void visitConstant(ConstantExpression cnst) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitProject(POProject proj) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitGreaterThan(GreaterThanExpr grt) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitLessThan(LessThanExpr lt) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitGTOrEqual(GTOrEqualToExpr gte) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitLTOrEqual(LTOrEqualToExpr lte) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitEqualTo(EqualToExpr eq) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitNotEqualTo(NotEqualToExpr eq) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitRegexp(PORegexp re) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitIsNull(POIsNull isNull) throws VisitorException { |
| } |
| |
| public void visitAdd(Add add) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitSubtract(Subtract sub) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitMultiply(Multiply mul) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitDivide(Divide dv) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitMod(Mod mod) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitAnd(POAnd and) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitOr(POOr or) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitNot(PONot not) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitBinCond(POBinCond binCond) { |
| // do nothing |
| } |
| |
| public void visitNegative(PONegative negative) { |
| //do nothing |
| } |
| |
| public void visitUserFunc(POUserFunc userFunc) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitComparisonFunc(POUserComparisonFunc compFunc) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitMapLookUp(POMapLookUp mapLookUp) { |
| // TODO Auto-generated method stub |
| } |
| |
| public void visitCast(POCast cast) { |
| // TODO Auto-generated method stub |
| } |
| |
| public void visitLimit(POLimit lim) throws VisitorException{ |
| PhysicalPlan inpPlan = lim.getLimitPlan(); |
| if (inpPlan!=null) { |
| pushWalker(mCurrentWalker.spawnChildWalker(inpPlan)); |
| visit(); |
| popWalker(); |
| } |
| } |
| |
| public void visitCross(POCross cross) throws VisitorException{ |
| //do nothing |
| } |
| |
| public void visitFRJoin(POFRJoin join) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitMergeJoin(POMergeJoin join) throws VisitorException { |
| //do nothing |
| } |
| |
| public void visitMergeCoGroup(POMergeCogroup mergeCoGrp) throws VisitorException{ |
| |
| } |
| /** |
| * @param stream |
| * @throws VisitorException |
| */ |
| public void visitStream(POStream stream) throws VisitorException { |
| // TODO Auto-generated method stub |
| } |
| |
| public void visitSkewedJoin(POSkewedJoin sk) throws VisitorException { |
| |
| } |
| |
| public void visitPartitionRearrange(POPartitionRearrange pr) throws VisitorException { |
| List<PhysicalPlan> inpPlans = pr.getPlans(); |
| for (PhysicalPlan plan : inpPlans) { |
| pushWalker(mCurrentWalker.spawnChildWalker(plan)); |
| visit(); |
| popWalker(); |
| } |
| } |
| |
| /** |
| * @param optimizedForEach |
| */ |
| public void visitPOOptimizedForEach(POOptimizedForEach optimizedForEach) throws VisitorException { |
| // TODO Auto-generated method stub |
| } |
| |
| /** |
| * @param preCombinerLocalRearrange |
| */ |
| public void visitPreCombinerLocalRearrange( |
| POPreCombinerLocalRearrange preCombinerLocalRearrange) throws VisitorException { |
| List<PhysicalPlan> inpPlans = preCombinerLocalRearrange.getPlans(); |
| for (PhysicalPlan plan : inpPlans) { |
| pushWalker(mCurrentWalker.spawnChildWalker(plan)); |
| visit(); |
| popWalker(); |
| } |
| } |
| |
| public void visitPartialAgg(POPartialAgg poPartialAgg) throws VisitorException { |
| } |
| |
| public void visitReservoirSample(POReservoirSample reservoirSample) throws VisitorException { |
| } |
| |
| public void visitPoissonSample(POPoissonSample poissonSample) throws VisitorException { |
| } |
| |
| public void visitBroadcastSpark(POBroadcastSpark poBroadcastSpark) { |
| } |
| |
| } |