You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by th...@apache.org on 2011/05/16 17:58:26 UTC

svn commit: r1103776 - in /pig/trunk: CHANGES.txt src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java test/org/apache/pig/test/TestProjectStarRangeInUdf.java

Author: thejas
Date: Mon May 16 15:58:26 2011
New Revision: 1103776

URL: http://svn.apache.org/viewvc?rev=1103776&view=rev
Log:
PIG-2072: NPE when udf has project-star argument and input schema is null

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java
    pig/trunk/test/org/apache/pig/test/TestProjectStarRangeInUdf.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1103776&r1=1103775&r2=1103776&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Mon May 16 15:58:26 2011
@@ -44,8 +44,6 @@ BUG FIXES
 
 PIG-2044: Patten match bug in org.apache.pig.newplan.optimizer.Rule (knoguchi via daijy)
 
-PIG-1938: support project-range as udf argument (thejas)
-
 PIG-2048: Add zookeeper to pig jar (gbowyer via gates)
 
 PIG-2008: Cache outputFormat in HBaseStorage (thedatachef via gates)
@@ -72,6 +70,8 @@ PIG-1876: Typed map for Pig (daijy)
 
 IMPROVEMENTS
 
+PIG-1938: support project-range as udf argument (thejas)
+
 PIG-2059: PIG doesn't validate incomplete query in batch mode even if -c option is given (xuefu)
 
 PIG-2062: Script silently ended (xuefu)
@@ -224,6 +224,8 @@ PIG-1696: Performance: Use System.arrayc
 
 BUG FIXES
 
+PIG-2072: NPE when udf has project-star argument and input schema is null (thejas)
+
 PIG-2075: Bring back TestNewPlanPushUpFilter (daijy)
 
 PIG-1827: When passing a parameter to Pig, if the value contains $ it has to be escaped for no apparent reason (rding)

Modified: pig/trunk/src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java?rev=1103776&r1=1103775&r2=1103776&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java Mon May 16 15:58:26 2011
@@ -973,6 +973,8 @@ public class TypeCheckingExpVisitor exte
         for(int i=0;i<s.size();i++){
             try {
                 FieldSchema fs=s.getField(i);
+                if(fs == null)
+                    return false;
                 if(fs.type==DataType.BYTEARRAY){
                     return true;
                 }
@@ -1098,7 +1100,10 @@ public class TypeCheckingExpVisitor exte
 
             FieldSchema inputFieldSchema = i.next();
             FieldSchema udfFieldSchema = j.next();
-
+            if(inputFieldSchema == null)
+                return false;
+            
+            
             if(ignoreByteArrays && inputFieldSchema.type == DataType.BYTEARRAY) {
                 continue;
             }
@@ -1249,6 +1254,9 @@ public class TypeCheckingExpVisitor exte
         int castCnt=0;
         for(int i=0;i<sFields.size();i++){
             FieldSchema sFS = sFields.get(i);
+            if(sFS == null){
+                return INF;
+            }
 
             // if we have a byte array do not include it
             // in the computation of the score - bytearray

Modified: pig/trunk/test/org/apache/pig/test/TestProjectStarRangeInUdf.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestProjectStarRangeInUdf.java?rev=1103776&r1=1103775&r2=1103776&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestProjectStarRangeInUdf.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestProjectStarRangeInUdf.java Mon May 16 15:58:26 2011
@@ -100,6 +100,30 @@ public class TestProjectStarRangeInUdf  
     }
     
     @Test
+    public void testProjStarExpandInForeach1NegativeNoSchema() throws IOException{
+        
+        String query;
+
+        query =
+            "  l1 = load '" + INP_FILE_5FIELDS + "' ;"
+            + "f = foreach l1 generate CONCAT(*) as ct;"
+            ; 
+        Util.checkExceptionMessage(query, "f",
+                "Could not infer the matching function for " +
+                "org.apache.pig.builtin.CONCAT");
+
+
+        query =
+            "  l1 = load '" + INP_FILE_5FIELDS + "' ;"
+            + "f = foreach l1 generate SIZE(*) as ct;"
+            ; 
+        Util.checkExceptionMessage(query, "f",
+                "Could not infer the matching function for " +
+                "org.apache.pig.builtin.SIZE");
+        
+    }
+    
+    @Test
     public void testProjStarExpandInForeach2() throws IOException {
 
         String query;