You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by xu...@apache.org on 2011/05/10 22:21:30 UTC

svn commit: r1101632 - in /pig/branches/branch-0.9: CHANGES.txt src/org/apache/pig/newplan/logical/relational/LOForEach.java test/org/apache/pig/test/TestLogicalPlanBuilder.java

Author: xuefu
Date: Tue May 10 20:21:30 2011
New Revision: 1101632

URL: http://svn.apache.org/viewvc?rev=1101632&view=rev
Log:
PIG-2039: IndexOutOfBounException for a case

Modified:
    pig/branches/branch-0.9/CHANGES.txt
    pig/branches/branch-0.9/src/org/apache/pig/newplan/logical/relational/LOForEach.java
    pig/branches/branch-0.9/test/org/apache/pig/test/TestLogicalPlanBuilder.java

Modified: pig/branches/branch-0.9/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.9/CHANGES.txt?rev=1101632&r1=1101631&r2=1101632&view=diff
==============================================================================
--- pig/branches/branch-0.9/CHANGES.txt (original)
+++ pig/branches/branch-0.9/CHANGES.txt Tue May 10 20:21:30 2011
@@ -34,6 +34,8 @@ PIG-1876: Typed map for Pig (daijy)
 
 IMPROVEMENTS
 
+PIG-2039: IndexOutOfBounException for a case (xuefu)
+
 PIG-2038: Pig fails to parse empty tuple/map/bag constant (xuefu)
 
 PIG-2003: Using keyward as alias doesn't either emit an error or produce a logical plan (xuefu)

Modified: pig/branches/branch-0.9/src/org/apache/pig/newplan/logical/relational/LOForEach.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.9/src/org/apache/pig/newplan/logical/relational/LOForEach.java?rev=1101632&r1=1101631&r2=1101632&view=diff
==============================================================================
--- pig/branches/branch-0.9/src/org/apache/pig/newplan/logical/relational/LOForEach.java (original)
+++ pig/branches/branch-0.9/src/org/apache/pig/newplan/logical/relational/LOForEach.java Tue May 10 20:21:30 2011
@@ -19,6 +19,7 @@ package org.apache.pig.newplan.logical.r
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Stack;
 
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -79,13 +80,33 @@ public class LOForEach extends LogicalRe
         List<LOInnerLoad> innerLoads = new ArrayList<LOInnerLoad>();
         for (Operator src:srcs) {
             if (src instanceof LOInnerLoad) {
-                Operator succ = src;
-                while (succ!=null) {
-                    if (succ==referred)
+            	if( src == referred ) {
+            		innerLoads.add( (LOInnerLoad)src );
+            		continue;
+            	}
+            	
+                Stack<Operator> stack = new Stack<Operator>();
+                List<Operator> succs = referred.getPlan().getSuccessors( src );
+                if( succs != null ) {
+                	for( Operator succ : succs ) {
+                		stack.push( succ );
+                	}
+                }
+                
+                while( !stack.isEmpty() ) {
+                	Operator op = stack.pop();
+                    if( op == referred ) {
                         innerLoads.add((LOInnerLoad)src);
-                    if (referred.getPlan().getSuccessors(succ)==null)
                         break;
-                    succ = referred.getPlan().getSuccessors(succ).get(0);
+                    }
+                    else {
+                    	List<Operator> ops = referred.getPlan().getSuccessors( op );
+                    	if( ops != null ) {
+                        	for( Operator o : ops ) {
+                        		stack.push( o );
+                        	}
+                    	}
+                    }
                 }
             }
         }

Modified: pig/branches/branch-0.9/test/org/apache/pig/test/TestLogicalPlanBuilder.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.9/test/org/apache/pig/test/TestLogicalPlanBuilder.java?rev=1101632&r1=1101631&r2=1101632&view=diff
==============================================================================
--- pig/branches/branch-0.9/test/org/apache/pig/test/TestLogicalPlanBuilder.java (original)
+++ pig/branches/branch-0.9/test/org/apache/pig/test/TestLogicalPlanBuilder.java Tue May 10 20:21:30 2011
@@ -1984,7 +1984,6 @@ public class TestLogicalPlanBuilder {
         buildPlan("a = foreach (load 'b') generate (([],[])); store a into 'output';");
     }
     
-/** The following test is disabled due to PIG-2039
     @Test
     // See PIG-1024, shall not throw exception
     public void testLimitMultipleOutput() throws Exception {
@@ -1994,7 +1993,6 @@ public class TestLogicalPlanBuilder {
                        " store c into 'output';";
         buildPlan( query );
     }
-*/
 
     @Test
     public void testCogroupByStarFailure1() throws Exception {