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 2014/04/25 22:39:25 UTC

svn commit: r1590134 - in /pig/trunk: CHANGES.txt src/org/apache/pig/newplan/logical/expression/ProjectExpression.java test/org/apache/pig/test/TestEvalPipelineLocal.java

Author: daijy
Date: Fri Apr 25 20:39:25 2014
New Revision: 1590134

URL: http://svn.apache.org/r1590134
Log:
PIG-3909: Type Casting issue

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/newplan/logical/expression/ProjectExpression.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=1590134&r1=1590133&r2=1590134&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Fri Apr 25 20:39:25 2014
@@ -115,6 +115,8 @@ PIG-3882: Multiquery off mode execution 
  
 BUG FIXES
 
+PIG-3909: Type Casting issue (daijy)
+
 PIG-3905: 0.12.1 release can't be build for Hadoop2 (daijy)
 
 PIG-3894: Datetime function AddDuration, SubtractDuration and all Between functions don't check for null values in the input tuple (jennythompson via cheolsoo)

Modified: pig/trunk/src/org/apache/pig/newplan/logical/expression/ProjectExpression.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/expression/ProjectExpression.java?rev=1590134&r1=1590133&r2=1590134&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/expression/ProjectExpression.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/expression/ProjectExpression.java Fri Apr 25 20:39:25 2014
@@ -280,7 +280,10 @@ public class ProjectExpression extends C
             return fieldSchema;
         LogicalRelationalOperator referent = findReferent();
 
-        LogicalSchema schema = referent.getSchema();
+        LogicalSchema schema = null;
+        if (referent.getSchema()!=null) {
+            schema = referent.getSchema().deepCopy();
+        }
 
         if (attachedRelationalOp instanceof LOGenerate && plan.getSuccessors(this)==null) {
             if (!(findReferent() instanceof LOInnerLoad)||

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=1590134&r1=1590133&r2=1590134&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestEvalPipelineLocal.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestEvalPipelineLocal.java Fri Apr 25 20:39:25 2014
@@ -1216,4 +1216,19 @@ public class TestEvalPipelineLocal {
         Schema s = pigServer.dumpSchema("final");
         Assert.assertEquals(s.toString(), "{n1::x3: int}");
     }
+    
+    // see PIG-3909
+    @Test
+    public void testCastSchemaShare() throws Exception{
+        File f1 = createFile(new String[]{"{([fieldkey1#polisan,fieldkey2#lily])}"});
+        
+        pigServer.registerQuery("A = load '" + Util.encodeEscape(Util.generateURI(f1.toString(), pigServer.getPigContext()))
+                + "' as (bagofmap:{});");
+        pigServer.registerQuery("B = foreach A generate FLATTEN((IsEmpty(bagofmap) ? null : bagofmap)) AS bagofmap;");
+        pigServer.registerQuery("C = filter B by (chararray)bagofmap#'fieldkey1' matches 'po.*';");
+        pigServer.registerQuery("D = foreach C generate (chararray)bagofmap#'fieldkey2';");
+        
+        Iterator<Tuple> iter = pigServer.openIterator("D");
+        Assert.assertEquals(iter.next().toString(), "(lily)");
+    }
 }