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 2013/10/01 19:53:10 UTC
svn commit: r1528160 - in /pig/trunk: CHANGES.txt
src/org/apache/pig/newplan/logical/relational/LOCross.java
test/org/apache/pig/test/TestEvalPipelineLocal.java
Author: daijy
Date: Tue Oct 1 17:53:10 2013
New Revision: 1528160
URL: http://svn.apache.org/r1528160
Log:
PIG-3292: Logical plan invalid state: duplicate uid in schema during self-join to get cross product
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/newplan/logical/relational/LOCross.java
pig/trunk/test/org/apache/pig/test/TestEvalPipelineLocal.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1528160&r1=1528159&r2=1528160&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Tue Oct 1 17:53:10 2013
@@ -256,6 +256,8 @@ PIG-3013: BinInterSedes improve chararra
BUG FIXES
+PIG-3292: Logical plan invalid state: duplicate uid in schema during self-join to get cross product (cheolsoo via daijy)
+
PIG-3491: Fix e2e failure Jython_Diagnostics_4 (daijy)
PIG-3434: Null subexpression in bincond nullifies outer tuple (or bag) (mwagner via daijy)
Modified: pig/trunk/src/org/apache/pig/newplan/logical/relational/LOCross.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOCross.java?rev=1528160&r1=1528159&r2=1528160&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/relational/LOCross.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/relational/LOCross.java Tue Oct 1 17:53:10 2013
@@ -78,6 +78,10 @@ public class LOCross extends LogicalRela
}
}
+ if (nested) {
+ LogicalRelationalOperator.fixDuplicateUids(fss);
+ }
+
schema = new LogicalSchema();
for(LogicalSchema.LogicalFieldSchema fieldSchema: fss) {
schema.addField(fieldSchema);
Modified: pig/trunk/test/org/apache/pig/test/TestEvalPipelineLocal.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestEvalPipelineLocal.java?rev=1528160&r1=1528159&r2=1528160&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestEvalPipelineLocal.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestEvalPipelineLocal.java Tue Oct 1 17:53:10 2013
@@ -24,6 +24,7 @@ import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -1145,4 +1146,31 @@ public class TestEvalPipelineLocal {
Assert.assertTrue(iter.next().toString().equals("(NASDAQ)"));
Assert.assertFalse(iter.hasNext());
}
+
+ // Self cross, see PIG-3292
+ @Test
+ public void testSelfCross() throws Exception{
+ File f1 = createFile(new String[]{"1\t2", "1\t3"});
+
+ pigServer.registerQuery("a = load '" + Util.encodeEscape(Util.generateURI(f1.toString(), pigServer.getPigContext()))
+ + "' as (key, x);");
+ pigServer.registerQuery("a_group = group a by key;");
+ pigServer.registerQuery("b = foreach a_group {y = a.x;pair = cross a.x, y;"
+ + "generate flatten(pair);}");
+
+ Iterator<Tuple> iter = pigServer.openIterator("b");
+
+ Collection<String> results = new HashSet<String>();
+ results.add("(3,3)");
+ results.add("(2,2)");
+ results.add("(3,2)");
+ results.add("(2,3)");
+
+ Assert.assertTrue(results.contains(iter.next().toString()));
+ Assert.assertTrue(results.contains(iter.next().toString()));
+ Assert.assertTrue(results.contains(iter.next().toString()));
+ Assert.assertTrue(results.contains(iter.next().toString()));
+
+ Assert.assertFalse(iter.hasNext());
+ }
}