You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by pi...@apache.org on 2008/07/08 13:56:48 UTC
svn commit: r674780 - in
/incubator/pig/branches/types/src/org/apache/pig/impl:
logicalLayer/LOCogroup.java logicalLayer/optimizer/LogicalTransformer.java
logicalLayer/optimizer/SchemaCalculator.java plan/MultiMap.java
Author: pisong
Date: Tue Jul 8 04:56:47 2008
New Revision: 674780
URL: http://svn.apache.org/viewvc?rev=674780&view=rev
Log:
PIG-288: NPE in Optimizer
Modified:
incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOCogroup.java
incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/LogicalTransformer.java
incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaCalculator.java
incubator/pig/branches/types/src/org/apache/pig/impl/plan/MultiMap.java
Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOCogroup.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOCogroup.java?rev=674780&r1=674779&r2=674780&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOCogroup.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOCogroup.java Tue Jul 8 04:56:47 2008
@@ -273,4 +273,23 @@
v.visit(this);
}
+ /***
+ *
+ * This does switch the mapping
+ *
+ * oldOp -> List of inner plans
+ * to
+ * newOp -> List of inner plans
+ *
+ * which is useful when there is a structural change in LogicalPlan
+ *
+ * @param oldOp the old operator
+ * @param newOp the new operator
+ */
+ public void switchGroupByPlanOp(LogicalOperator oldOp,
+ LogicalOperator newOp) {
+ Collection<LogicalPlan> innerPlans = mGroupByPlans.removeKey(oldOp) ;
+ mGroupByPlans.put(newOp, innerPlans);
+ }
+
}
Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/LogicalTransformer.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/LogicalTransformer.java?rev=674780&r1=674779&r2=674780&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/LogicalTransformer.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/LogicalTransformer.java Tue Jul 8 04:56:47 2008
@@ -130,7 +130,7 @@
* successors and reconnecting them to the new node as well as rebuilding
* all of the schemas.
* @param after Node to insert the new node after
- * @param newnode New node to insert
+ * @param newNode New node to insert
* @param before Node to insert this node before
* @param projectionMapping A map that defines how projections in after
* relate to projections in newnode. Keys are the projection offsets in
@@ -148,6 +148,12 @@
mPlan.add(newNode);
mPlan.insertBetween(after, newNode, before);
+ // Fix up COGroup internal wiring
+ if (before instanceof LOCogroup) {
+ LOCogroup cg = (LOCogroup) before ;
+ cg.switchGroupByPlanOp(after, newNode);
+ }
+
// Visit all the inner plans of before and change their projects to
// connect to newNode instead of after.
// Find right inner plan(s) to visit
@@ -181,7 +187,7 @@
* all of the schemas. This function
* assumes that the node has only one predecessor.
* @param after Node to insert the new node after
- * @param newnode New node to insert
+ * @param newNode New node to insert
* @param projectionMapping A map that defines how projections in after
* relate to projections in newnode. Keys are the projection offsets in
* after, values are the new offsets in newnode. If this field is null,
Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaCalculator.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaCalculator.java?rev=674780&r1=674779&r2=674780&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaCalculator.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaCalculator.java Tue Jul 8 04:56:47 2008
@@ -186,7 +186,7 @@
*
* @param regexp
* the logical regexp operator that has to be visited
- * @throws ParseException
+ * @throws VisitorException
*/
protected void visit(LORegexp regexp) throws VisitorException {
try {
@@ -207,12 +207,7 @@
}
protected void visit(LOStore store) throws VisitorException{
- try {
- store.getSchema();
- super.visit(store);
- } catch (FrontendException fe) {
- throw new VisitorException(fe);
- }
+ // We don't calculate schema of LOStore
}
protected void visit(LOConst c) throws VisitorException{
Modified: incubator/pig/branches/types/src/org/apache/pig/impl/plan/MultiMap.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/plan/MultiMap.java?rev=674780&r1=674779&r2=674780&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/impl/plan/MultiMap.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/impl/plan/MultiMap.java Tue Jul 8 04:56:47 2008
@@ -114,6 +114,15 @@
}
/**
+ * Remove all the values associated with the given key
+ * @param key the key to be removed
+ * @return list of all value being removed
+ */
+ public Collection<V> removeKey(K key) {
+ return mMap.remove(key) ;
+ }
+
+ /**
* Get a set of all the keys in this map.
* @return Set of keys.
*/