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 2011/02/18 02:42:04 UTC

svn commit: r1071855 - in /pig/branches/branch-0.8: CHANGES.txt src/org/apache/pig/EvalFunc.java test/org/apache/pig/test/TestEvalPipeline2.java

Author: daijy
Date: Fri Feb 18 01:42:04 2011
New Revision: 1071855

URL: http://svn.apache.org/viewvc?rev=1071855&view=rev
Log:
PIG-1843: NPE in schema generation

Modified:
    pig/branches/branch-0.8/CHANGES.txt
    pig/branches/branch-0.8/src/org/apache/pig/EvalFunc.java
    pig/branches/branch-0.8/test/org/apache/pig/test/TestEvalPipeline2.java

Modified: pig/branches/branch-0.8/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/CHANGES.txt?rev=1071855&r1=1071854&r2=1071855&view=diff
==============================================================================
--- pig/branches/branch-0.8/CHANGES.txt (original)
+++ pig/branches/branch-0.8/CHANGES.txt Fri Feb 18 01:42:04 2011
@@ -213,6 +213,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
 
 BUG FIXES
 
+PIG-1843: NPE in schema generation (daijy)
+
 PIG-1820: New logical plan: FilterLogicExpressionSimplifier fail to deal with UDF (daijy)
 
 PIG-1854: Pig returns exit code 0 for the failed Pig script (rding)

Modified: pig/branches/branch-0.8/src/org/apache/pig/EvalFunc.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/src/org/apache/pig/EvalFunc.java?rev=1071855&r1=1071854&r2=1071855&view=diff
==============================================================================
--- pig/branches/branch-0.8/src/org/apache/pig/EvalFunc.java (original)
+++ pig/branches/branch-0.8/src/org/apache/pig/EvalFunc.java Fri Feb 18 01:42:04 2011
@@ -73,7 +73,7 @@ public abstract class EvalFunc<T>  {
     private static int nextSchemaId; // for assigning unique ids to UDF columns
     protected String getSchemaName(String name, Schema input) {
         String alias = name + "_";
-        if (input.getAliases().size() > 0){
+        if (input!=null && input.getAliases().size() > 0){
             alias += input.getAliases().iterator().next() + "_";
         }
 

Modified: pig/branches/branch-0.8/test/org/apache/pig/test/TestEvalPipeline2.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/test/org/apache/pig/test/TestEvalPipeline2.java?rev=1071855&r1=1071854&r2=1071855&view=diff
==============================================================================
--- pig/branches/branch-0.8/test/org/apache/pig/test/TestEvalPipeline2.java (original)
+++ pig/branches/branch-0.8/test/org/apache/pig/test/TestEvalPipeline2.java Fri Feb 18 01:42:04 2011
@@ -953,13 +953,13 @@ public class TestEvalPipeline2 extends T
     
     // See PIG-1761
     @Test
-    public void testBagDereferenceInMiddle() throws Exception{
+    public void testBagDereferenceInMiddle1() throws Exception{
         String[] input1 = {
                 "foo@apache#44",
         };
         
-        Util.createInputFile(cluster, "table_testBagDereferenceInMiddle", input1);
-        pigServer.registerQuery("a = load 'table_testBagDereferenceInMiddle' as (a0:chararray);");
+        Util.createInputFile(cluster, "table_testBagDereferenceInMiddle1", input1);
+        pigServer.registerQuery("a = load 'table_testBagDereferenceInMiddle1' as (a0:chararray);");
         pigServer.registerQuery("b = foreach a generate UPPER(REGEX_EXTRACT_ALL(a0, '.*@(.*)#.*').$0);");
         
         Iterator<Tuple> iter = pigServer.openIterator("b");
@@ -968,6 +968,37 @@ public class TestEvalPipeline2 extends T
         assertTrue(t.get(0).equals("APACHE"));
     }
     
+    static public class MapGenerate extends EvalFunc<Map> {
+        @Override
+        public Map exec(Tuple input) throws IOException {
+            Map m = new HashMap();
+            m.put("key", new Integer(input.size()));
+            return m;
+        }
+
+        @Override
+        public Schema outputSchema(Schema input) {
+            return new Schema(new Schema.FieldSchema(getSchemaName("parselong", input), DataType.MAP));
+        }
+    }
+
+    // See PIG-1843
+    @Test
+    public void testBagDereferenceInMiddle2() throws Exception{
+        String[] input1 = {
+                "foo apache",
+        };
+        
+        Util.createInputFile(cluster, "table_testBagDereferenceInMiddle2", input1);
+        pigServer.registerQuery("a = load 'table_testBagDereferenceInMiddle2' as (a0:chararray);");
+        pigServer.registerQuery("b = foreach a generate " + MapGenerate.class.getName() + " (STRSPLIT(a0).$0);");
+        
+        Iterator<Tuple> iter = pigServer.openIterator("b");
+        Tuple t = iter.next();
+        assertTrue(t.size()==1);
+        assertTrue(t.toString().equals("([key#1])"));
+    }
+    
     // See PIG-1766
     @Test
     public void testForEachSameOriginColumn1() throws Exception{