You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2010/08/05 21:38:54 UTC
svn commit: r982747 [1/4] - in /hadoop/pig/trunk: src/org/apache/pig/
src/org/apache/pig/backend/hadoop/executionengine/
src/org/apache/pig/newplan/ src/org/apache/pig/newplan/logical/
src/org/apache/pig/newplan/logical/expression/ src/org/apache/pig/n...
Author: daijy
Date: Thu Aug 5 19:38:51 2010
New Revision: 982747
URL: http://svn.apache.org/viewvc?rev=982747&view=rev
Log:
PIG-1178: LogicalPlan and Optimizer are too complex and hard to work with (PIG-1178-6.patch)
Modified:
hadoop/pig/trunk/src/org/apache/pig/PigServer.java
hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/HExecutionEngine.java
hadoop/pig/trunk/src/org/apache/pig/newplan/BaseOperatorPlan.java
hadoop/pig/trunk/src/org/apache/pig/newplan/DependencyOrderWalker.java
hadoop/pig/trunk/src/org/apache/pig/newplan/DepthFirstMemoryWalker.java
hadoop/pig/trunk/src/org/apache/pig/newplan/DepthFirstWalker.java
hadoop/pig/trunk/src/org/apache/pig/newplan/Operator.java
hadoop/pig/trunk/src/org/apache/pig/newplan/OperatorPlan.java
hadoop/pig/trunk/src/org/apache/pig/newplan/OperatorSubPlan.java
hadoop/pig/trunk/src/org/apache/pig/newplan/PlanVisitor.java
hadoop/pig/trunk/src/org/apache/pig/newplan/PlanWalker.java
hadoop/pig/trunk/src/org/apache/pig/newplan/ReverseDependencyOrderWalker.java
hadoop/pig/trunk/src/org/apache/pig/newplan/SubtreeDependencyOrderWalker.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/ForeachInnerPlanVisitor.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/LogicalPlanMigrationVistor.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/Util.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AddExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AllSameExpressionVisitor.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AndExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinaryExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/CastExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ConstantExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DivideExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/EqualExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ExpToPhyTranslationVisitor.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanEqualExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/IsNullExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanEqualExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LogicalExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LogicalExpressionPlan.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LogicalExpressionVisitor.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MapLookupExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ModExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MultiplyExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NegativeExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotEqualExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/OrExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ProjectExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/RegexExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/SubtractExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UnaryExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/optimizer/AllExpressionVisitor.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/optimizer/AllSameRalationalNodesVisitor.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/optimizer/ExprPrinter.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/optimizer/LogicalPlanOptimizer.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/optimizer/LogicalPlanPrinter.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/optimizer/ProjectionPatcher.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/optimizer/SchemaPatcher.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/optimizer/SchemaResetter.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOCogroup.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOCross.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LODistinct.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOFilter.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOForEach.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOGenerate.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOInnerLoad.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOJoin.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOLimit.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOLoad.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOSort.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOSplit.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOSplitOutput.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOStore.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOStream.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOUnion.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LogToPhyTranslationVisitor.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LogicalPlan.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LogicalRelationalNodesVisitor.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LogicalRelationalOperator.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/relational/LogicalSchema.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/rules/AddForEach.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/rules/ColumnMapKeyPrune.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/rules/ColumnPruneHelper.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/rules/FilterAboveForeach.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/rules/MapKeysPruneHelper.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/rules/MergeFilter.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/rules/PushUpFilter.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/rules/SplitFilter.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/rules/TypeCastInserter.java
hadoop/pig/trunk/src/org/apache/pig/newplan/logical/rules/WholePlanRule.java
hadoop/pig/trunk/src/org/apache/pig/newplan/optimizer/PlanOptimizer.java
hadoop/pig/trunk/src/org/apache/pig/newplan/optimizer/PlanTransformListener.java
hadoop/pig/trunk/src/org/apache/pig/newplan/optimizer/Rule.java
hadoop/pig/trunk/src/org/apache/pig/newplan/optimizer/Transformer.java
hadoop/pig/trunk/src/org/apache/pig/tools/pigstats/JobStats.java
hadoop/pig/trunk/src/org/apache/pig/tools/pigstats/PigStats.java
hadoop/pig/trunk/src/org/apache/pig/tools/pigstats/ScriptState.java
hadoop/pig/trunk/test/org/apache/pig/test/TestNewPlanColumnPrune.java
hadoop/pig/trunk/test/org/apache/pig/test/TestNewPlanColumnPrune2.java
hadoop/pig/trunk/test/org/apache/pig/test/TestNewPlanFilterRule.java
hadoop/pig/trunk/test/org/apache/pig/test/TestNewPlanListener.java
hadoop/pig/trunk/test/org/apache/pig/test/TestNewPlanLogicalOptimizer.java
hadoop/pig/trunk/test/org/apache/pig/test/TestNewPlanOperatorPlan.java
hadoop/pig/trunk/test/org/apache/pig/test/TestNewPlanRule.java
Modified: hadoop/pig/trunk/src/org/apache/pig/PigServer.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/PigServer.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/PigServer.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/PigServer.java Thu Aug 5 19:38:51 2010
@@ -865,6 +865,7 @@ public class PigServer {
* @param eps Stream to print the execution tree
* @throws IOException if the requested alias cannot be found.
*/
+ @SuppressWarnings("unchecked")
public void explain(String alias,
String format,
boolean verbose,
@@ -888,7 +889,18 @@ public class PigServer {
migrator.visit();
org.apache.pig.newplan.logical.relational.LogicalPlan newPlan = migrator.getNewLogicalPlan();
- LogicalPlanOptimizer optimizer = new LogicalPlanOptimizer(newPlan, 3);
+ HashSet<String> optimizerRules = null;
+ try {
+ optimizerRules = (HashSet<String>) ObjectSerializer
+ .deserialize(pigContext.getProperties().getProperty(
+ "pig.optimizer.rules"));
+ } catch (IOException ioe) {
+ int errCode = 2110;
+ String msg = "Unable to deserialize optimizer rules.";
+ throw new FrontendException(msg, errCode, PigException.BUG, ioe);
+ }
+
+ LogicalPlanOptimizer optimizer = new LogicalPlanOptimizer(newPlan, 3, optimizerRules);
optimizer.optimize();
newPlan.explain(lps, format, verbose);
Modified: hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/HExecutionEngine.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/HExecutionEngine.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/HExecutionEngine.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/HExecutionEngine.java Thu Aug 5 19:38:51 2010
@@ -18,6 +18,7 @@
package org.apache.pig.backend.hadoop.executionengine;
+import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.SocketException;
@@ -26,6 +27,7 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -54,9 +56,11 @@ import org.apache.pig.impl.PigContext;
import org.apache.pig.impl.io.FileLocalizer;
import org.apache.pig.impl.io.FileSpec;
import org.apache.pig.impl.io.InterStorage;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.impl.logicalLayer.LogicalPlan;
import org.apache.pig.impl.plan.NodeIdGenerator;
import org.apache.pig.impl.plan.OperatorKey;
+import org.apache.pig.impl.util.ObjectSerializer;
import org.apache.pig.newplan.logical.LogicalPlanMigrationVistor;
import org.apache.pig.newplan.logical.optimizer.SchemaResetter;
import org.apache.pig.tools.pigstats.OutputStats;
@@ -220,6 +224,7 @@ public class HExecutionEngine {
throw new UnsupportedOperationException();
}
+ @SuppressWarnings("unchecked")
public PhysicalPlan compile(LogicalPlan plan,
Properties properties) throws ExecException {
if (plan == null) {
@@ -240,9 +245,20 @@ public class HExecutionEngine {
SchemaResetter schemaResetter = new SchemaResetter(newPlan);
schemaResetter.visit();
+ HashSet<String> optimizerRules = null;
+ try {
+ optimizerRules = (HashSet<String>) ObjectSerializer
+ .deserialize(pigContext.getProperties().getProperty(
+ "pig.optimizer.rules"));
+ } catch (IOException ioe) {
+ int errCode = 2110;
+ String msg = "Unable to deserialize optimizer rules.";
+ throw new FrontendException(msg, errCode, PigException.BUG, ioe);
+ }
+
// run optimizer
org.apache.pig.newplan.logical.optimizer.LogicalPlanOptimizer optimizer =
- new org.apache.pig.newplan.logical.optimizer.LogicalPlanOptimizer(newPlan, 100);
+ new org.apache.pig.newplan.logical.optimizer.LogicalPlanOptimizer(newPlan, 100, optimizerRules);
optimizer.optimize();
// translate new logical plan to physical plan
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/BaseOperatorPlan.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/BaseOperatorPlan.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/BaseOperatorPlan.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/BaseOperatorPlan.java Thu Aug 5 19:38:51 2010
@@ -19,7 +19,6 @@
package org.apache.pig.newplan;
import java.io.ByteArrayOutputStream;
-import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashSet;
@@ -29,6 +28,7 @@ import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.impl.util.Pair;
public abstract class BaseOperatorPlan implements OperatorPlan {
@@ -95,9 +95,8 @@ public abstract class BaseOperatorPlan i
* @param op operator to fetch predecessors of
* @return list of all operators imeediately before op, or an empty list
* if op is a root.
- * @throws IOException if op is not in the plan.
*/
- public List<Operator> getPredecessors(Operator op) throws IOException {
+ public List<Operator> getPredecessors(Operator op) {
return (List<Operator>)toEdges.get(op);
}
@@ -106,9 +105,8 @@ public abstract class BaseOperatorPlan i
* @param op operator to fetch successors of
* @return list of all operators imeediately after op, or an empty list
* if op is a leaf.
- * @throws IOException if op is not in the plan.
*/
- public List<Operator> getSuccessors(Operator op) throws IOException {
+ public List<Operator> getSuccessors(Operator op) {
return (List<Operator>)fromEdges.get(op);
}
@@ -125,14 +123,14 @@ public abstract class BaseOperatorPlan i
/**
* Remove an operator from the plan.
* @param op Operator to be removed
- * @throws IOException if the remove operation attempts to
+ * @throws FrontendException if the remove operation attempts to
* remove an operator that is still connected to other operators.
*/
- public void remove(Operator op) throws IOException {
+ public void remove(Operator op) throws FrontendException {
if (fromEdges.containsKey(op) || toEdges.containsKey(op)) {
- throw new IOException("Attempt to remove operator " + op.getName()
- + " that is still connected in the plan");
+ throw new FrontendException("Attempt to remove operator " + op.getName()
+ + " that is still connected in the plan", 2243);
}
markDirty();
ops.remove(op);
@@ -172,22 +170,22 @@ public abstract class BaseOperatorPlan i
* @param to Operator edge is going to
* @return pair of positions, indicating the position in the from and
* to arrays.
- * @throws IOException if the two operators aren't connected.
+ * @throws FrontendException if the two operators aren't connected.
*/
public Pair<Integer, Integer> disconnect(Operator from,
- Operator to) throws IOException {
+ Operator to) throws FrontendException {
Pair<Operator, Integer> f = fromEdges.removeWithPosition(from, to);
if (f == null) {
- throw new IOException("Attempt to disconnect operators " +
+ throw new FrontendException("Attempt to disconnect operators " +
from.getName() + " and " + to.getName() +
- " which are not connected.");
+ " which are not connected.", 2219);
}
Pair<Operator, Integer> t = toEdges.removeWithPosition(to, from);
if (t == null) {
- throw new IOException("Plan in inconssistent state " +
+ throw new FrontendException("Plan in inconssistent state " +
from.getName() + " and " + to.getName() +
- " connected in fromEdges but not toEdges.");
+ " connected in fromEdges but not toEdges.", 2220);
}
markDirty();
@@ -203,35 +201,31 @@ public abstract class BaseOperatorPlan i
return ops.iterator();
}
- public boolean isEqual(OperatorPlan other) {
+ public boolean isEqual(OperatorPlan other) throws FrontendException {
return isEqual(this, other);
}
private static boolean checkPredecessors(Operator op1,
- Operator op2) {
- try {
- List<Operator> preds = op1.getPlan().getPredecessors(op1);
- List<Operator> otherPreds = op2.getPlan().getPredecessors(op2);
- if (preds == null && otherPreds == null) {
- // intentionally blank
- } else if (preds == null || otherPreds == null) {
- return false;
- } else {
- if (preds.size() != otherPreds.size()) return false;
- for (int i = 0; i < preds.size(); i++) {
- Operator p1 = preds.get(i);
- Operator p2 = otherPreds.get(i);
- if (!p1.isEqual(p2)) return false;
- if (!checkPredecessors(p1, p2)) return false;
- }
+ Operator op2) throws FrontendException {
+ List<Operator> preds = op1.getPlan().getPredecessors(op1);
+ List<Operator> otherPreds = op2.getPlan().getPredecessors(op2);
+ if (preds == null && otherPreds == null) {
+ // intentionally blank
+ } else if (preds == null || otherPreds == null) {
+ return false;
+ } else {
+ if (preds.size() != otherPreds.size()) return false;
+ for (int i = 0; i < preds.size(); i++) {
+ Operator p1 = preds.get(i);
+ Operator p2 = otherPreds.get(i);
+ if (!p1.isEqual(p2)) return false;
+ if (!checkPredecessors(p1, p2)) return false;
}
- return true;
- } catch (IOException e) {
- throw new RuntimeException(e);
}
+ return true;
}
- protected static boolean isEqual(OperatorPlan p1, OperatorPlan p2) {
+ protected static boolean isEqual(OperatorPlan p1, OperatorPlan p2) throws FrontendException {
if (p1 == p2) {
return true;
}
@@ -260,7 +254,7 @@ public abstract class BaseOperatorPlan i
return false;
}
- public void explain(PrintStream ps, String format, boolean verbose) throws IOException {
+ public void explain(PrintStream ps, String format, boolean verbose) throws FrontendException {
}
@Override
@@ -269,7 +263,7 @@ public abstract class BaseOperatorPlan i
PrintStream ps = new PrintStream(os);
try {
explain(ps,"",false);
- } catch (IOException e) {
+ } catch (FrontendException e) {
return "";
}
return os.toString();
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/DependencyOrderWalker.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/DependencyOrderWalker.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/DependencyOrderWalker.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/DependencyOrderWalker.java Thu Aug 5 19:38:51 2010
@@ -18,13 +18,13 @@
package org.apache.pig.newplan;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.impl.plan.VisitorException;
/**
@@ -53,7 +53,7 @@ public class DependencyOrderWalker exten
* @throws VisitorException if an error is encountered while walking.
*/
@Override
- public void walk(PlanVisitor visitor) throws IOException {
+ public void walk(PlanVisitor visitor) throws FrontendException {
// This is highly inefficient, but our graphs are small so it should be okay.
// The algorithm works by starting at any node in the graph, finding it's
// predecessors and calling itself for each of those predecessors. When it
@@ -77,7 +77,7 @@ public class DependencyOrderWalker exten
protected void doAllPredecessors(Operator node,
Set<Operator> seen,
- Collection<Operator> fifo) throws IOException {
+ Collection<Operator> fifo) throws FrontendException {
if (!seen.contains(node)) {
// We haven't seen this one before.
Collection<Operator> preds = plan.getPredecessors(node);
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/DepthFirstMemoryWalker.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/DepthFirstMemoryWalker.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/DepthFirstMemoryWalker.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/DepthFirstMemoryWalker.java Thu Aug 5 19:38:51 2010
@@ -17,13 +17,14 @@
*/
package org.apache.pig.newplan;
-import java.io.IOException;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Stack;
+import org.apache.pig.impl.logicalLayer.FrontendException;
+
public class DepthFirstMemoryWalker extends DepthFirstWalker {
private int level = 0;
@@ -46,10 +47,10 @@ public class DepthFirstMemoryWalker exte
/**
* Begin traversing the graph.
* @param visitor Visitor this walker is being used by.
- * @throws IOException if an error is encountered while walking.
+ * @throws FrontendException if an error is encountered while walking.
*/
@Override
- public void walk(PlanVisitor visitor) throws IOException {
+ public void walk(PlanVisitor visitor) throws FrontendException {
List<Operator> roots = plan.getSources();
Set<Operator> seen = new HashSet<Operator>();
@@ -63,7 +64,7 @@ public class DepthFirstMemoryWalker exte
private void depthFirst(Operator node,
Collection<Operator> successors,
Set<Operator> seen,
- PlanVisitor visitor) throws IOException {
+ PlanVisitor visitor) throws FrontendException {
if (successors == null) return;
StringBuilder strb = new StringBuilder();
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/DepthFirstWalker.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/DepthFirstWalker.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/DepthFirstWalker.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/DepthFirstWalker.java Thu Aug 5 19:38:51 2010
@@ -18,12 +18,13 @@
package org.apache.pig.newplan;
-import java.io.IOException;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.apache.pig.impl.logicalLayer.FrontendException;
+
/**
* Do a depth first traversal of the graph.
*/
@@ -41,10 +42,10 @@ public class DepthFirstWalker extends Pl
/**
* Begin traversing the graph.
* @param visitor Visitor this walker is being used by.
- * @throws IOException if an error is encountered while walking.
+ * @throws FrontendException if an error is encountered while walking.
*/
@Override
- public void walk(PlanVisitor visitor) throws IOException {
+ public void walk(PlanVisitor visitor) throws FrontendException {
List<Operator> roots = plan.getSources();
Set<Operator> seen = new HashSet<Operator>();
@@ -54,7 +55,7 @@ public class DepthFirstWalker extends Pl
private void depthFirst(Operator node,
Collection<Operator> successors,
Set<Operator> seen,
- PlanVisitor visitor) throws IOException {
+ PlanVisitor visitor) throws FrontendException {
if (successors == null) return;
for (Operator suc : successors) {
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/Operator.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/Operator.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/Operator.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/Operator.java Thu Aug 5 19:38:51 2010
@@ -18,10 +18,11 @@
package org.apache.pig.newplan;
-import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import org.apache.pig.impl.logicalLayer.FrontendException;
+
public abstract class Operator {
protected String name;
@@ -38,9 +39,9 @@ public abstract class Operator {
/**
* Accept a visitor at this node in the graph.
* @param v Visitor to accept.
- * @throws IOException
+ * @throws FrontendException
*/
- public abstract void accept(PlanVisitor v) throws IOException;
+ public abstract void accept(PlanVisitor v) throws FrontendException;
public String getName() {
return name;
@@ -89,5 +90,5 @@ public abstract class Operator {
* @param operator
* @return true if two object have equivalent properties, else false
*/
- public abstract boolean isEqual(Operator operator);
+ public abstract boolean isEqual(Operator operator) throws FrontendException;
}
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/OperatorPlan.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/OperatorPlan.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/OperatorPlan.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/OperatorPlan.java Thu Aug 5 19:38:51 2010
@@ -18,10 +18,10 @@
package org.apache.pig.newplan;
-import java.io.IOException;
import java.util.Iterator;
import java.util.List;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.impl.util.Pair;
public interface OperatorPlan {
@@ -51,18 +51,16 @@ public interface OperatorPlan {
* @param op operator to fetch predecessors of
* @return list of all operators immediately before op, or an empty list
* if op is a root.
- * @throws IOException if op is not in the plan.
*/
- public List<Operator> getPredecessors(Operator op) throws IOException;
+ public List<Operator> getPredecessors(Operator op);
/**
* For a given operator, get all operators immediately after it.
* @param op operator to fetch successors of
* @return list of all operators immediately after op, or an empty list
* if op is a leaf.
- * @throws IOException if op is not in the plan.
*/
- public List<Operator> getSuccessors(Operator op) throws IOException;
+ public List<Operator> getSuccessors(Operator op);
/**
* Add a new operator to the plan. It will not be connected to any
@@ -74,10 +72,10 @@ public interface OperatorPlan {
/**
* Remove an operator from the plan.
* @param op Operator to be removed
- * @throws IOException if the remove operation attempts to
+ * @throws FrontendException if the remove operation attempts to
* remove an operator that is still connected to other operators.
*/
- public void remove(Operator op) throws IOException;
+ public void remove(Operator op) throws FrontendException;
/**
* Connect two operators in the plan, controlling which position in the
@@ -102,9 +100,9 @@ public interface OperatorPlan {
* @param to Operator edge is going to
* @return pair of positions, indicating the position in the from and
* to arrays.
- * @throws IOException if the two operators aren't connected.
+ * @throws FrontendException if the two operators aren't connected.
*/
- public Pair<Integer, Integer> disconnect(Operator from, Operator to) throws IOException;
+ public Pair<Integer, Integer> disconnect(Operator from, Operator to) throws FrontendException;
/**
@@ -119,6 +117,7 @@ public interface OperatorPlan {
* structure.
* @param other object to compare
* @return boolean if both the plans are equivalent
+ * @throws FrontendException
*/
- public boolean isEqual( OperatorPlan other );
+ public boolean isEqual( OperatorPlan other ) throws FrontendException;
}
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/OperatorSubPlan.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/OperatorSubPlan.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/OperatorSubPlan.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/OperatorSubPlan.java Thu Aug 5 19:38:51 2010
@@ -18,13 +18,13 @@
package org.apache.pig.newplan;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.impl.util.Pair;
/**
@@ -51,44 +51,47 @@ public class OperatorSubPlan implements
return basePlan;
}
+ @Override
public void add(Operator op) {
operators.add(op);
leaves.clear();
roots.clear();
}
+ @Override
public void connect(Operator from, int fromPos, Operator to, int toPos) {
throw new UnsupportedOperationException("connect() can not be called on OperatorSubPlan");
}
+ @Override
public void connect(Operator from, Operator to) {
throw new UnsupportedOperationException("connect() can not be called on OperatorSubPlan");
}
- public Pair<Integer, Integer> disconnect(Operator from, Operator to) throws IOException {
+ @Override
+ public Pair<Integer, Integer> disconnect(Operator from, Operator to) throws FrontendException {
throw new UnsupportedOperationException("disconnect() can not be called on OperatorSubPlan");
}
+ @Override
public List<Operator> getSinks() {
if (leaves.size() == 0 && operators.size() > 0) {
for (Operator op : operators) {
- try {
- if (getSuccessors(op) == null) {
- leaves.add(op);
- }
- }catch(Exception e) {
- throw new RuntimeException(e);
+ if (getSuccessors(op) == null) {
+ leaves.add(op);
}
}
}
return leaves;
}
+ @Override
public Iterator<Operator> getOperators() {
return operators.iterator();
}
- public List<Operator> getPredecessors(Operator op) throws IOException {
+ @Override
+ public List<Operator> getPredecessors(Operator op) {
List<Operator> l = basePlan.getPredecessors(op);
List<Operator> list = null;
if (l != null) {
@@ -105,22 +108,20 @@ public class OperatorSubPlan implements
return list;
}
+ @Override
public List<Operator> getSources() {
if (roots.size() == 0 && operators.size() > 0) {
for (Operator op : operators) {
- try {
- if (getPredecessors(op) == null) {
- roots.add(op);
- }
- }catch(Exception e) {
- throw new RuntimeException(e);
+ if (getPredecessors(op) == null) {
+ roots.add(op);
}
}
}
return roots;
}
- public List<Operator> getSuccessors(Operator op) throws IOException {
+ @Override
+ public List<Operator> getSuccessors(Operator op) {
List<Operator> l = basePlan.getSuccessors(op);
List<Operator> list = null;
if (l != null) {
@@ -137,18 +138,20 @@ public class OperatorSubPlan implements
return list;
}
- public void remove(Operator op) throws IOException {
+ @Override
+ public void remove(Operator op) throws FrontendException {
operators.remove(op);
leaves.clear();
roots.clear();
}
+ @Override
public int size() {
return operators.size();
}
@Override
- public boolean isEqual(OperatorPlan other) {
+ public boolean isEqual(OperatorPlan other) throws FrontendException {
return BaseOperatorPlan.isEqual(this, other);
}
}
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/PlanVisitor.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/PlanVisitor.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/PlanVisitor.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/PlanVisitor.java Thu Aug 5 19:38:51 2010
@@ -18,10 +18,9 @@
package org.apache.pig.newplan;
-import java.io.IOException;
import java.util.Stack;
-import org.apache.pig.impl.plan.VisitorException;
+import org.apache.pig.impl.logicalLayer.FrontendException;
/**
* A visitor mechanism for navigating and operating on a plan of
@@ -47,7 +46,7 @@ public abstract class PlanVisitor {
* Entry point for visiting the plan.
* @throws VisitorException if an error is encountered while visiting.
*/
- public void visit() throws IOException {
+ public void visit() throws FrontendException {
currentWalker.walk(this);
}
@@ -81,9 +80,9 @@ public abstract class PlanVisitor {
* @throws VisitorException if there are no more walkers on the stack. In
* this case the current walker is not reset.
*/
- protected void popWalker() throws VisitorException {
+ protected void popWalker() throws FrontendException {
if (walkers.empty()) {
- throw new VisitorException("No more walkers to pop.");
+ throw new FrontendException("No more walkers to pop.", 2221);
}
currentWalker = walkers.pop();
}
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/PlanWalker.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/PlanWalker.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/PlanWalker.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/PlanWalker.java Thu Aug 5 19:38:51 2010
@@ -18,7 +18,7 @@
package org.apache.pig.newplan;
-import java.io.IOException;
+import org.apache.pig.impl.logicalLayer.FrontendException;
public abstract class PlanWalker {
@@ -38,7 +38,7 @@ public abstract class PlanWalker {
* not yet have a 'this' pointer to send as an argument.
* @throws VisitorException if an error is encountered while walking.
*/
- public abstract void walk(PlanVisitor visitor) throws IOException;
+ public abstract void walk(PlanVisitor visitor) throws FrontendException;
/**
* Return a new instance of this same type of walker for a subplan.
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/ReverseDependencyOrderWalker.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/ReverseDependencyOrderWalker.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/ReverseDependencyOrderWalker.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/ReverseDependencyOrderWalker.java Thu Aug 5 19:38:51 2010
@@ -18,13 +18,14 @@
package org.apache.pig.newplan;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.apache.pig.impl.logicalLayer.FrontendException;
+
/**
* Visit a plan in the reverse of the dependency order. That is, every node
* after every node that depends on it is visited. Thus this is equivalent to
@@ -47,7 +48,7 @@ public class ReverseDependencyOrderWalke
* @throws VisitorException if an error is encountered while walking.
*/
@Override
- public void walk(PlanVisitor visitor) throws IOException {
+ public void walk(PlanVisitor visitor) throws FrontendException {
// This is highly inefficient, but our graphs are small so it should be okay.
// The algorithm works by starting at any node in the graph, finding it's
// successors and calling itself for each of those successors. When it
@@ -71,7 +72,7 @@ public class ReverseDependencyOrderWalke
protected void doAllSuccessors(Operator node,
Set<Operator> seen,
- Collection<Operator> fifo) throws IOException {
+ Collection<Operator> fifo) throws FrontendException {
if (!seen.contains(node)) {
// We haven't seen this one before.
Collection<Operator> succs = plan.getSuccessors(node);
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/SubtreeDependencyOrderWalker.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/SubtreeDependencyOrderWalker.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/SubtreeDependencyOrderWalker.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/SubtreeDependencyOrderWalker.java Thu Aug 5 19:38:51 2010
@@ -18,12 +18,13 @@
package org.apache.pig.newplan;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.apache.pig.impl.logicalLayer.FrontendException;
+
public class SubtreeDependencyOrderWalker extends DependencyOrderWalker {
private Operator startNode;
@@ -36,7 +37,7 @@ public class SubtreeDependencyOrderWalke
this.startNode = startNode;
}
- public void walk(PlanVisitor visitor) throws IOException {
+ public void walk(PlanVisitor visitor) throws FrontendException {
List<Operator> fifo = new ArrayList<Operator>();
Set<Operator> seen = new HashSet<Operator>();
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/ForeachInnerPlanVisitor.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/ForeachInnerPlanVisitor.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/ForeachInnerPlanVisitor.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/ForeachInnerPlanVisitor.java Thu Aug 5 19:38:51 2010
@@ -17,12 +17,12 @@
*/
package org.apache.pig.newplan.logical;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.pig.impl.logicalLayer.ExpressionOperator;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.impl.logicalLayer.LODistinct;
import org.apache.pig.impl.logicalLayer.LOFilter;
import org.apache.pig.impl.logicalLayer.RelationalOperator;
@@ -55,28 +55,25 @@ public class ForeachInnerPlanVisitor ext
private HashMap<LogicalOperator, LogicalRelationalOperator> innerOpsMap;
public ForeachInnerPlanVisitor(org.apache.pig.newplan.logical.relational.LOForEach foreach, LOForEach oldForeach, LogicalPlan innerPlan,
- LogicalPlan oldLogicalPlan) {
+ LogicalPlan oldLogicalPlan) throws FrontendException {
super(innerPlan, foreach, oldLogicalPlan);
newInnerPlan = foreach.getInnerPlan();
// get next inputNo
gen = (org.apache.pig.newplan.logical.relational.LogicalRelationalOperator)
newInnerPlan.getSinks().get(0);
- try {
- inputNo = 0;
- List<org.apache.pig.newplan.Operator> suc = newInnerPlan.getPredecessors(gen);
- if (suc != null) {
- inputNo = suc.size();
- }
- }catch(Exception e) {
- throw new RuntimeException(e);
+ inputNo = 0;
+ List<org.apache.pig.newplan.Operator> suc = newInnerPlan.getPredecessors(gen);
+ if (suc != null) {
+ inputNo = suc.size();
}
+
this.oldForeach = oldForeach;
innerOpsMap = new HashMap<LogicalOperator, LogicalRelationalOperator>();
}
- private void translateInnerPlanConnection(LogicalOperator oldOp, org.apache.pig.newplan.Operator newOp) throws IOException {
+ private void translateInnerPlanConnection(LogicalOperator oldOp, org.apache.pig.newplan.Operator newOp) throws FrontendException {
List<LogicalOperator> preds = mPlan.getPredecessors(oldOp);
if(preds != null) {
@@ -131,7 +128,7 @@ public class ForeachInnerPlanVisitor ext
exprOpsMap.put(project, pe);
try {
translateInnerPlanConnection(project, pe);
- } catch (IOException e) {
+ } catch (FrontendException e) {
throw new VisitorException(e);
}
}
@@ -184,7 +181,7 @@ public class ForeachInnerPlanVisitor ext
innerOpsMap.put(sort, newSort);
try {
translateInnerPlanConnection(sort, newSort);
- } catch (IOException e) {
+ } catch (FrontendException e) {
throw new VisitorException(e);
}
@@ -205,7 +202,7 @@ public class ForeachInnerPlanVisitor ext
innerOpsMap.put(limit, newLimit);
try {
translateInnerPlanConnection(limit, newLimit);
- } catch (IOException e) {
+ } catch (FrontendException e) {
throw new VisitorException(e);
}
}
@@ -220,7 +217,7 @@ public class ForeachInnerPlanVisitor ext
innerOpsMap.put(distinct, newDistinct);
try {
translateInnerPlanConnection(distinct, newDistinct);
- } catch (IOException e) {
+ } catch (FrontendException e) {
throw new VisitorException(e);
}
}
@@ -237,7 +234,7 @@ public class ForeachInnerPlanVisitor ext
innerOpsMap.put(filter, newFilter);
try {
translateInnerPlanConnection(filter, newFilter);
- } catch (IOException e) {
+ } catch (FrontendException e) {
throw new VisitorException(e);
}
}
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/LogicalPlanMigrationVistor.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/LogicalPlanMigrationVistor.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/LogicalPlanMigrationVistor.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/LogicalPlanMigrationVistor.java Thu Aug 5 19:38:51 2010
@@ -22,6 +22,7 @@ import java.util.HashMap;
import java.util.List;
import org.apache.pig.impl.io.FileSpec;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.impl.logicalLayer.LOCogroup;
import org.apache.pig.impl.logicalLayer.LOCross;
import org.apache.pig.impl.logicalLayer.LODistinct;
@@ -201,12 +202,16 @@ public class LogicalPlanMigrationVistor
innerPlan.add(gen);
List<LogicalPlan> ll = forEach.getForEachPlans();
- for(int i=0; i<ll.size(); i++) {
- LogicalPlan lp = ll.get(i);
- ForeachInnerPlanVisitor v = new ForeachInnerPlanVisitor(newForeach, forEach, lp, mPlan);
- v.visit();
-
- expPlans.add(v.exprPlan);
+ try {
+ for(int i=0; i<ll.size(); i++) {
+ LogicalPlan lp = ll.get(i);
+ ForeachInnerPlanVisitor v = new ForeachInnerPlanVisitor(newForeach, forEach, lp, mPlan);
+ v.visit();
+
+ expPlans.add(v.exprPlan);
+ }
+ } catch (FrontendException e) {
+ throw new VisitorException("Cannot create ForeachInnerPlanVisitor", e);
}
newForeach.setAlias(forEach.getAlias());
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/Util.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/Util.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/Util.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/Util.java Thu Aug 5 19:38:51 2010
@@ -17,7 +17,6 @@
*/
package org.apache.pig.newplan.logical;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -101,7 +100,7 @@ public class Util {
}
public static LOForEach addForEachAfter(LogicalPlan plan, LogicalRelationalOperator op,
- Set<Integer> columnsToDrop) throws IOException {
+ Set<Integer> columnsToDrop) throws FrontendException {
LOForEach foreach = new LOForEach(plan);
plan.add(foreach);
@@ -134,7 +133,7 @@ public class Util {
innerPlan.connect(innerLoad, gen);
LogicalExpressionPlan exp = new LogicalExpressionPlan();
- ProjectExpression prj = new ProjectExpression(exp, j++, 0, gen);
+ ProjectExpression prj = new ProjectExpression(exp, j++, -1, gen);
exp.add(prj);
exps.add(exp);
}
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AddExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AddExpression.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AddExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AddExpression.java Thu Aug 5 19:38:51 2010
@@ -18,8 +18,7 @@
package org.apache.pig.newplan.logical.expression;
-import java.io.IOException;
-
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.newplan.Operator;
import org.apache.pig.newplan.OperatorPlan;
import org.apache.pig.newplan.PlanVisitor;
@@ -47,29 +46,25 @@ public class AddExpression extends Binar
* @link org.apache.pig.experimental.plan.Operator#accept(org.apache.pig.experimental.plan.PlanVisitor)
*/
@Override
- public void accept(PlanVisitor v) throws IOException {
+ public void accept(PlanVisitor v) throws FrontendException {
if (!(v instanceof LogicalExpressionVisitor)) {
- throw new IOException("Expected LogicalExpressionVisitor");
+ throw new FrontendException("Expected LogicalExpressionVisitor", 2222);
}
((LogicalExpressionVisitor)v).visit(this);
}
@Override
- public boolean isEqual(Operator other) {
+ public boolean isEqual(Operator other) throws FrontendException {
if (other != null && other instanceof AddExpression) {
AddExpression ao = (AddExpression)other;
- try {
- return ao.getLhs().isEqual(getLhs()) && ao.getRhs().isEqual(getRhs());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ return ao.getLhs().isEqual(getLhs()) && ao.getRhs().isEqual(getRhs());
} else {
return false;
}
}
@Override
- public LogicalSchema.LogicalFieldSchema getFieldSchema() throws IOException {
+ public LogicalSchema.LogicalFieldSchema getFieldSchema() throws FrontendException {
if (fieldSchema!=null)
return fieldSchema;
fieldSchema = new LogicalSchema.LogicalFieldSchema(null, null, getLhs().getType());
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AllSameExpressionVisitor.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AllSameExpressionVisitor.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AllSameExpressionVisitor.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AllSameExpressionVisitor.java Thu Aug 5 19:38:51 2010
@@ -17,14 +17,13 @@
*/
package org.apache.pig.newplan.logical.expression;
-import java.io.IOException;
-
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.newplan.OperatorPlan;
import org.apache.pig.newplan.PlanWalker;
public abstract class AllSameExpressionVisitor extends LogicalExpressionVisitor {
- public AllSameExpressionVisitor(OperatorPlan plan, PlanWalker walker) {
+ public AllSameExpressionVisitor(OperatorPlan plan, PlanWalker walker) throws FrontendException {
super(plan, walker);
}
@@ -32,125 +31,125 @@ public abstract class AllSameExpressionV
* Method to call on every node in the logical expression plan.
* @param op Node that is currently being visited.
*/
- abstract protected void execute(LogicalExpression op) throws IOException;
+ abstract protected void execute(LogicalExpression op) throws FrontendException;
@Override
- public void visit(AndExpression andExpr) throws IOException {
+ public void visit(AndExpression andExpr) throws FrontendException {
execute(andExpr);
}
@Override
- public void visit(OrExpression exp) throws IOException {
+ public void visit(OrExpression exp) throws FrontendException {
execute(exp);
}
@Override
- public void visit(EqualExpression equal) throws IOException {
+ public void visit(EqualExpression equal) throws FrontendException {
execute(equal);
}
@Override
- public void visit(ProjectExpression project) throws IOException {
+ public void visit(ProjectExpression project) throws FrontendException {
execute(project);
}
@Override
- public void visit(ConstantExpression constant) throws IOException {
+ public void visit(ConstantExpression constant) throws FrontendException {
execute(constant);
}
@Override
- public void visit(CastExpression cast) throws IOException {
+ public void visit(CastExpression cast) throws FrontendException {
execute(cast);
}
@Override
- public void visit(GreaterThanExpression greaterThanExpression) throws IOException {
+ public void visit(GreaterThanExpression greaterThanExpression) throws FrontendException {
execute(greaterThanExpression);
}
@Override
- public void visit(GreaterThanEqualExpression op) throws IOException {
+ public void visit(GreaterThanEqualExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(LessThanExpression lessThanExpression) throws IOException {
+ public void visit(LessThanExpression lessThanExpression) throws FrontendException {
execute(lessThanExpression);
}
@Override
- public void visit(LessThanEqualExpression op) throws IOException {
+ public void visit(LessThanEqualExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(NotEqualExpression op) throws IOException {
+ public void visit(NotEqualExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(NotExpression op) throws IOException {
+ public void visit(NotExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(IsNullExpression op) throws IOException {
+ public void visit(IsNullExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(NegativeExpression op) throws IOException {
+ public void visit(NegativeExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(AddExpression op) throws IOException {
+ public void visit(AddExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(SubtractExpression op) throws IOException {
+ public void visit(SubtractExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(MultiplyExpression op) throws IOException {
+ public void visit(MultiplyExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(ModExpression op) throws IOException {
+ public void visit(ModExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(DivideExpression op) throws IOException {
+ public void visit(DivideExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(MapLookupExpression op) throws IOException {
+ public void visit(MapLookupExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(BinCondExpression op) throws IOException {
+ public void visit(BinCondExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(UserFuncExpression op) throws IOException {
+ public void visit(UserFuncExpression op) throws FrontendException {
execute(op);
}
@Override
- public void visit(DereferenceExpression derefenceExpression) throws IOException {
+ public void visit(DereferenceExpression derefenceExpression) throws FrontendException {
execute(derefenceExpression);
}
@Override
- public void visit(RegexExpression op) throws IOException {
+ public void visit(RegexExpression op) throws FrontendException {
execute(op);
}
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AndExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AndExpression.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AndExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AndExpression.java Thu Aug 5 19:38:51 2010
@@ -18,9 +18,8 @@
package org.apache.pig.newplan.logical.expression;
-import java.io.IOException;
-
import org.apache.pig.data.DataType;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.newplan.Operator;
import org.apache.pig.newplan.OperatorPlan;
import org.apache.pig.newplan.PlanVisitor;
@@ -48,29 +47,25 @@ public class AndExpression extends Binar
* @link org.apache.pig.experimental.plan.Operator#accept(org.apache.pig.experimental.plan.PlanVisitor)
*/
@Override
- public void accept(PlanVisitor v) throws IOException {
+ public void accept(PlanVisitor v) throws FrontendException {
if (!(v instanceof LogicalExpressionVisitor)) {
- throw new IOException("Expected LogicalExpressionVisitor");
+ throw new FrontendException("Expected LogicalExpressionVisitor", 2222);
}
((LogicalExpressionVisitor)v).visit(this);
}
@Override
- public boolean isEqual(Operator other) {
+ public boolean isEqual(Operator other) throws FrontendException {
if (other != null && other instanceof AndExpression) {
AndExpression ao = (AndExpression)other;
- try {
- return ao.getLhs().isEqual(getLhs()) && ao.getRhs().isEqual(getRhs());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ return ao.getLhs().isEqual(getLhs()) && ao.getRhs().isEqual(getRhs());
} else {
return false;
}
}
@Override
- public LogicalSchema.LogicalFieldSchema getFieldSchema() throws IOException {
+ public LogicalSchema.LogicalFieldSchema getFieldSchema() throws FrontendException {
if (fieldSchema!=null)
return fieldSchema;
fieldSchema = new LogicalSchema.LogicalFieldSchema(null, null, DataType.BOOLEAN);
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java Thu Aug 5 19:38:51 2010
@@ -18,8 +18,7 @@
package org.apache.pig.newplan.logical.expression;
-import java.io.IOException;
-
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.newplan.Operator;
import org.apache.pig.newplan.OperatorPlan;
import org.apache.pig.newplan.PlanVisitor;
@@ -48,27 +47,27 @@ public class BinCondExpression extends L
/**
* Returns the operator which handles this condition
* @return expression which handles the condition
- * @throws IOException
+ * @throws FrontendException
*/
- public LogicalExpression getCondition() throws IOException {
+ public LogicalExpression getCondition() throws FrontendException {
return (LogicalExpression)plan.getSuccessors(this).get(0);
}
/**
* Get the left hand side of this expression.
* @return expression on the left hand side
- * @throws IOException
+ * @throws FrontendException
*/
- public LogicalExpression getLhs() throws IOException {
+ public LogicalExpression getLhs() throws FrontendException {
return (LogicalExpression)plan.getSuccessors(this).get(1);
}
/**
* Get the right hand side of this expression.
* @return expression on the right hand side
- * @throws IOException
+ * @throws FrontendException
*/
- public LogicalExpression getRhs() throws IOException {
+ public LogicalExpression getRhs() throws FrontendException {
return (LogicalExpression)plan.getSuccessors(this).get(2);
}
@@ -76,30 +75,26 @@ public class BinCondExpression extends L
* @link org.apache.pig.experimental.plan.Operator#accept(org.apache.pig.experimental.plan.PlanVisitor)
*/
@Override
- public void accept(PlanVisitor v) throws IOException {
+ public void accept(PlanVisitor v) throws FrontendException {
if (!(v instanceof LogicalExpressionVisitor)) {
- throw new IOException("Expected LogicalExpressionVisitor");
+ throw new FrontendException("Expected LogicalExpressionVisitor", 2222);
}
((LogicalExpressionVisitor)v).visit(this);
}
@Override
- public boolean isEqual(Operator other) {
+ public boolean isEqual(Operator other) throws FrontendException {
if (other != null && other instanceof BinCondExpression) {
BinCondExpression ao = (BinCondExpression)other;
- try {
- return ao.getCondition().isEqual(getCondition()) &&
- ao.getLhs().isEqual(getLhs()) && ao.getRhs().isEqual(getRhs());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ return ao.getCondition().isEqual(getCondition()) &&
+ ao.getLhs().isEqual(getLhs()) && ao.getRhs().isEqual(getRhs());
} else {
return false;
}
}
@Override
- public LogicalSchema.LogicalFieldSchema getFieldSchema() throws IOException {
+ public LogicalSchema.LogicalFieldSchema getFieldSchema() throws FrontendException {
if (fieldSchema!=null)
return fieldSchema;
fieldSchema = new LogicalSchema.LogicalFieldSchema(null, null, getLhs().getType());
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinaryExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinaryExpression.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinaryExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinaryExpression.java Thu Aug 5 19:38:51 2010
@@ -18,8 +18,7 @@
package org.apache.pig.newplan.logical.expression;
-import java.io.IOException;
-
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.newplan.OperatorPlan;
/**
@@ -49,18 +48,18 @@ public abstract class BinaryExpression e
/**
* Get the left hand side of this binary expression.
* @return expression on the left hand side
- * @throws IOException
+ * @throws FrontendException
*/
- public LogicalExpression getLhs() throws IOException {
+ public LogicalExpression getLhs() throws FrontendException {
return (LogicalExpression)plan.getSuccessors(this).get(0);
}
/**
* Get the right hand side of this binary expression.
* @return expression on the right hand side
- * @throws IOException
+ * @throws FrontendException
*/
- public LogicalExpression getRhs() throws IOException {
+ public LogicalExpression getRhs() throws FrontendException {
return (LogicalExpression)plan.getSuccessors(this).get(1);
}
}
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/CastExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/CastExpression.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/CastExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/CastExpression.java Thu Aug 5 19:38:51 2010
@@ -18,9 +18,8 @@
package org.apache.pig.newplan.logical.expression;
-import java.io.IOException;
-
import org.apache.pig.FuncSpec;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.newplan.Operator;
import org.apache.pig.newplan.OperatorPlan;
import org.apache.pig.newplan.PlanVisitor;
@@ -36,9 +35,9 @@ public class CastExpression extends Unar
}
@Override
- public void accept(PlanVisitor v) throws IOException {
+ public void accept(PlanVisitor v) throws FrontendException {
if (!(v instanceof LogicalExpressionVisitor)) {
- throw new IOException("Expected LogicalExpressionVisitor");
+ throw new FrontendException("Expected LogicalExpressionVisitor", 2222);
}
((LogicalExpressionVisitor)v).visit(this);
}
@@ -60,21 +59,17 @@ public class CastExpression extends Unar
}
@Override
- public boolean isEqual(Operator other) {
+ public boolean isEqual(Operator other) throws FrontendException {
if (other != null && other instanceof CastExpression) {
CastExpression of = (CastExpression)other;
- try {
- return plan.isEqual(of.plan) && getExpression().isEqual( of.getExpression() );
- } catch (IOException e) {
- return false;
- }
+ return plan.isEqual(of.plan) && getExpression().isEqual( of.getExpression() );
} else {
return false;
}
}
@Override
- public LogicalSchema.LogicalFieldSchema getFieldSchema() throws IOException {
+ public LogicalSchema.LogicalFieldSchema getFieldSchema() throws FrontendException {
if (fieldSchema!=null)
return fieldSchema;
fieldSchema = new LogicalSchema.LogicalFieldSchema(null, castSchema.schema, castSchema.type);
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ConstantExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ConstantExpression.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ConstantExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ConstantExpression.java Thu Aug 5 19:38:51 2010
@@ -18,8 +18,7 @@
package org.apache.pig.newplan.logical.expression;
-import java.io.IOException;
-
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.newplan.Operator;
import org.apache.pig.newplan.OperatorPlan;
import org.apache.pig.newplan.PlanVisitor;
@@ -52,9 +51,9 @@ public class ConstantExpression extends
* @link org.apache.pig.experimental.plan.Operator#accept(org.apache.pig.experimental.plan.PlanVisitor)
*/
@Override
- public void accept(PlanVisitor v) throws IOException {
+ public void accept(PlanVisitor v) throws FrontendException {
if (!(v instanceof LogicalExpressionVisitor)) {
- throw new IOException("Expected LogicalExpressionVisitor");
+ throw new FrontendException("Expected LogicalExpressionVisitor", 2222);
}
((LogicalExpressionVisitor)v).visit(this);
@@ -74,7 +73,7 @@ public class ConstantExpression extends
@Override
- public boolean isEqual(Operator other) {
+ public boolean isEqual(Operator other) throws FrontendException {
if (other != null && other instanceof ConstantExpression) {
ConstantExpression co = (ConstantExpression)other;
return co.getValueSchema().isEqual(mValueSchema) && ( ( co.val == null && val == null )
@@ -85,7 +84,7 @@ public class ConstantExpression extends
}
@Override
- public LogicalFieldSchema getFieldSchema() throws IOException {
+ public LogicalFieldSchema getFieldSchema() throws FrontendException {
if (fieldSchema!=null)
return fieldSchema;
fieldSchema = mValueSchema;
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java Thu Aug 5 19:38:51 2010
@@ -18,11 +18,11 @@
package org.apache.pig.newplan.logical.expression;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.pig.data.DataType;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.newplan.Operator;
import org.apache.pig.newplan.OperatorPlan;
import org.apache.pig.newplan.PlanVisitor;
@@ -67,9 +67,9 @@ public class DereferenceExpression exten
* @link org.apache.pig.experimental.plan.Operator#accept(org.apache.pig.experimental.plan.PlanVisitor)
*/
@Override
- public void accept(PlanVisitor v) throws IOException {
+ public void accept(PlanVisitor v) throws FrontendException {
if (!(v instanceof LogicalExpressionVisitor)) {
- throw new IOException("Expected LogicalExpressionVisitor");
+ throw new FrontendException("Expected LogicalExpressionVisitor", 2222);
}
((LogicalExpressionVisitor)v).visit(this);
}
@@ -83,53 +83,45 @@ public class DereferenceExpression exten
}
@Override
- public boolean isEqual(Operator other) {
+ public boolean isEqual(Operator other) throws FrontendException {
if (other != null && other instanceof DereferenceExpression) {
DereferenceExpression po = (DereferenceExpression)other;
- try {
- if( po.columns.size() != columns.size() ) {
- return false;
- }
- return po.columns.containsAll(columns) && getReferredExpression().isEqual(po.getReferredExpression());
- } catch (IOException e) {
+ if( po.columns.size() != columns.size() ) {
return false;
}
+ return po.columns.containsAll(columns) && getReferredExpression().isEqual(po.getReferredExpression());
} else {
return false;
}
}
- public LogicalExpression getReferredExpression() throws IOException {
+ public LogicalExpression getReferredExpression() throws FrontendException {
if( plan.getSuccessors(this).size() < 1 ) {
- throw new IOException("Could not find a related project Expression for Dereference");
+ throw new FrontendException("Could not find a related project Expression for Dereference", 2228);
}
return (LogicalExpression) plan.getSuccessors(this).get(0);
}
public String toString() {
StringBuilder msg = new StringBuilder();
- try {
- msg.append("(Name: " + name + " Type: ");
- if (fieldSchema!=null)
- msg.append(DataType.findTypeName(getFieldSchema().type));
- else
- msg.append("null");
- msg.append(" Uid: ");
- if (fieldSchema!=null)
- msg.append(getFieldSchema().uid);
- else
- msg.append("null");
- msg.append(" Column:" + columns);
- msg.append(")");
- } catch (IOException e) {
- e.printStackTrace();
- }
+ msg.append("(Name: " + name + " Type: ");
+ if (fieldSchema!=null)
+ msg.append(DataType.findTypeName(fieldSchema.type));
+ else
+ msg.append("null");
+ msg.append(" Uid: ");
+ if (fieldSchema!=null)
+ msg.append(fieldSchema.uid);
+ else
+ msg.append("null");
+ msg.append(" Column:" + columns);
+ msg.append(")");
return msg.toString();
}
@Override
- public LogicalSchema.LogicalFieldSchema getFieldSchema() throws IOException {
+ public LogicalSchema.LogicalFieldSchema getFieldSchema() throws FrontendException {
if (fieldSchema!=null)
return fieldSchema;
LogicalExpression successor = (LogicalExpression)plan.getSuccessors(this).get(0);
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DivideExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DivideExpression.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DivideExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DivideExpression.java Thu Aug 5 19:38:51 2010
@@ -18,8 +18,7 @@
package org.apache.pig.newplan.logical.expression;
-import java.io.IOException;
-
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.newplan.Operator;
import org.apache.pig.newplan.OperatorPlan;
import org.apache.pig.newplan.PlanVisitor;
@@ -47,29 +46,25 @@ public class DivideExpression extends Bi
* @link org.apache.pig.experimental.plan.Operator#accept(org.apache.pig.experimental.plan.PlanVisitor)
*/
@Override
- public void accept(PlanVisitor v) throws IOException {
+ public void accept(PlanVisitor v) throws FrontendException {
if (!(v instanceof LogicalExpressionVisitor)) {
- throw new IOException("Expected LogicalExpressionVisitor");
+ throw new FrontendException("Expected LogicalExpressionVisitor", 2222);
}
((LogicalExpressionVisitor)v).visit(this);
}
@Override
- public boolean isEqual(Operator other) {
+ public boolean isEqual(Operator other) throws FrontendException {
if (other != null && other instanceof DivideExpression) {
DivideExpression ao = (DivideExpression)other;
- try {
- return ao.getLhs().isEqual(getLhs()) && ao.getRhs().isEqual(getRhs());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ return ao.getLhs().isEqual(getLhs()) && ao.getRhs().isEqual(getRhs());
} else {
return false;
}
}
@Override
- public LogicalSchema.LogicalFieldSchema getFieldSchema() throws IOException {
+ public LogicalSchema.LogicalFieldSchema getFieldSchema() throws FrontendException {
if (fieldSchema!=null)
return fieldSchema;
fieldSchema = new LogicalSchema.LogicalFieldSchema(null, null, getLhs().getType());
Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/EqualExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/EqualExpression.java?rev=982747&r1=982746&r2=982747&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/EqualExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/EqualExpression.java Thu Aug 5 19:38:51 2010
@@ -18,9 +18,8 @@
package org.apache.pig.newplan.logical.expression;
-import java.io.IOException;
-
import org.apache.pig.data.DataType;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.newplan.Operator;
import org.apache.pig.newplan.OperatorPlan;
import org.apache.pig.newplan.PlanVisitor;
@@ -48,31 +47,27 @@ public class EqualExpression extends Bin
* @link org.apache.pig.experimental.plan.Operator#accept(org.apache.pig.experimental.plan.PlanVisitor)
*/
@Override
- public void accept(PlanVisitor v) throws IOException {
+ public void accept(PlanVisitor v) throws FrontendException {
if (!(v instanceof LogicalExpressionVisitor)) {
- throw new IOException("Expected LogicalExpressionVisitor");
+ throw new FrontendException("Expected LogicalExpressionVisitor", 2222);
}
((LogicalExpressionVisitor)v).visit(this);
}
@Override
- public boolean isEqual(Operator other) {
+ public boolean isEqual(Operator other) throws FrontendException {
if (other != null && other instanceof EqualExpression) {
EqualExpression eo = (EqualExpression)other;
- try {
- return eo.getLhs().isEqual(
- getLhs()) &&
- eo.getRhs().isEqual(getRhs());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ return eo.getLhs().isEqual(
+ getLhs()) &&
+ eo.getRhs().isEqual(getRhs());
} else {
return false;
}
}
@Override
- public LogicalSchema.LogicalFieldSchema getFieldSchema() throws IOException {
+ public LogicalSchema.LogicalFieldSchema getFieldSchema() throws FrontendException {
if (fieldSchema!=null)
return fieldSchema;
fieldSchema = new LogicalSchema.LogicalFieldSchema(null, null, DataType.BOOLEAN);