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 2012/02/06 21:13:55 UTC
svn commit: r1241147 - in /pig/branches/branch-0.9: CHANGES.txt
src/org/apache/pig/newplan/logical/visitor/LineageFindRelVisitor.java
test/org/apache/pig/test/TestUnion.java
Author: daijy
Date: Mon Feb 6 20:13:55 2012
New Revision: 1241147
URL: http://svn.apache.org/viewvc?rev=1241147&view=rev
Log:
PIG-2493: UNION causes casting issues
Modified:
pig/branches/branch-0.9/CHANGES.txt
pig/branches/branch-0.9/src/org/apache/pig/newplan/logical/visitor/LineageFindRelVisitor.java
pig/branches/branch-0.9/test/org/apache/pig/test/TestUnion.java
Modified: pig/branches/branch-0.9/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.9/CHANGES.txt?rev=1241147&r1=1241146&r2=1241147&view=diff
==============================================================================
--- pig/branches/branch-0.9/CHANGES.txt (original)
+++ pig/branches/branch-0.9/CHANGES.txt Mon Feb 6 20:13:55 2012
@@ -18,7 +18,13 @@
Pig Change Log
-Release 0.9.2 - Unreleased
+Release 0.9.3 - Unreleased
+
+BUG FIXES
+
+PIG-2493: UNION causes casting issues (vivekp via daijy)
+
+Release 0.9.2
IMPROVEMENTS
Modified: pig/branches/branch-0.9/src/org/apache/pig/newplan/logical/visitor/LineageFindRelVisitor.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.9/src/org/apache/pig/newplan/logical/visitor/LineageFindRelVisitor.java?rev=1241147&r1=1241146&r2=1241147&view=diff
==============================================================================
--- pig/branches/branch-0.9/src/org/apache/pig/newplan/logical/visitor/LineageFindRelVisitor.java (original)
+++ pig/branches/branch-0.9/src/org/apache/pig/newplan/logical/visitor/LineageFindRelVisitor.java Mon Feb 6 20:13:55 2012
@@ -405,6 +405,14 @@ public class LineageFindRelVisitor exten
@Override
public void visit(LOUnion relOp) throws FrontendException{
mapToPredLoadFunc(relOp);
+
+ // Since the uid changes for Union, add mappings for new uids to funcspec
+ LogicalSchema schema = relOp.getSchema();
+ if(schema != null){
+ for (LogicalFieldSchema logicalFieldSchema : schema.getFields()) {
+ addUidLoadFuncToMap(logicalFieldSchema.uid,rel2InputFuncMap.get(relOp));
+ }
+ }
}
@Override
Modified: pig/branches/branch-0.9/test/org/apache/pig/test/TestUnion.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.9/test/org/apache/pig/test/TestUnion.java?rev=1241147&r1=1241146&r2=1241147&view=diff
==============================================================================
--- pig/branches/branch-0.9/test/org/apache/pig/test/TestUnion.java (original)
+++ pig/branches/branch-0.9/test/org/apache/pig/test/TestUnion.java Mon Feb 6 20:13:55 2012
@@ -30,12 +30,14 @@ import org.apache.pig.backend.executione
import org.apache.pig.builtin.PigStorage;
import org.apache.pig.data.DataBag;
import org.apache.pig.data.DataByteArray;
+import org.apache.pig.data.DataType;
import org.apache.pig.data.DefaultBagFactory;
import org.apache.pig.data.DefaultTuple;
import org.apache.pig.data.Tuple;
import org.apache.pig.impl.PigContext;
import org.apache.pig.impl.io.FileSpec;
import org.apache.pig.impl.io.FileLocalizer;
+import org.apache.pig.impl.logicalLayer.schema.Schema;
import org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator;
import org.apache.pig.backend.hadoop.executionengine.physicalLayer.POStatus;
import org.apache.pig.backend.hadoop.executionengine.physicalLayer.Result;
@@ -263,4 +265,31 @@ public class TestUnion extends junit.fra
}
}
+ @Test
+ public void testCastingAfterUnion() throws Exception {
+
+ Util.createInputFile(cluster, "i1.txt", new String[] {"aaa\t111"});
+ Util.createInputFile(cluster, "i2.txt", new String[] {"bbb\t222"});
+
+
+ PigServer ps = new PigServer(ExecType.MAPREDUCE, cluster.getProperties());
+ ps.registerQuery("A = load 'i1.txt' as (a,b);");
+ ps.registerQuery("B = load 'i2.txt' as (a,b);");
+ ps.registerQuery("C = union A,B;");
+ ps.registerQuery("D = foreach C generate (chararray)a as a,(int)b as b;");
+
+ Schema dumpSchema = ps.dumpSchema("D");
+ Schema expected = new Schema ();
+ expected.add(new Schema.FieldSchema("a", DataType.CHARARRAY));
+ expected.add(new Schema.FieldSchema("b", DataType.INTEGER));
+ assertEquals(expected, dumpSchema);
+
+ Iterator<Tuple> itr = ps.openIterator("D");
+ int recordCount = 0;
+ while(itr.next() != null)
+ ++recordCount;
+ assertEquals(2, recordCount);
+
+ }
+
}