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 {