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/11/02 08:32:47 UTC

svn commit: r1196483 - in /pig/trunk: ./ src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/ src/org/apache/pig/pen/ test/org/apache/pig/test/

Author: daijy
Date: Wed Nov  2 07:32:46 2011
New Revision: 1196483

URL: http://svn.apache.org/viewvc?rev=1196483&view=rev
Log:
PIG-2275: NullPointerException from ILLUSTRATE

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/UnaryComparisonOperator.java
    pig/trunk/src/org/apache/pig/pen/AugmentBaseDataVisitor.java
    pig/trunk/test/org/apache/pig/test/TestExampleGenerator.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1196483&r1=1196482&r2=1196483&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Wed Nov  2 07:32:46 2011
@@ -156,6 +156,8 @@ PIG-2228: support partial aggregation in
 
 BUG FIXES
 
+PIG-2275: NullPointerException from ILLUSTRATE (daijy)
+
 PIG-2119: DuplicateForEachColumnRewrite makes assumptions about the position of LOGGenerate in the plan (daijy)
 
 PIG-2290: TOBAG wraps tuple parameters in another tuple (ryan.hoegg via thejas)

Modified: pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/UnaryComparisonOperator.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/UnaryComparisonOperator.java?rev=1196483&r1=1196482&r2=1196483&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/UnaryComparisonOperator.java (original)
+++ pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/UnaryComparisonOperator.java Wed Nov  2 07:32:46 2011
@@ -55,7 +55,7 @@ public abstract class UnaryComparisonOpe
     @Override
     public Tuple illustratorMarkup(Object in, Object out, int eqClassIndex) {
         if(illustrator != null) {
-
+            illustrator.setSubExpResult(eqClassIndex == 0);
         }
         return null;
     }

Modified: pig/trunk/src/org/apache/pig/pen/AugmentBaseDataVisitor.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/pen/AugmentBaseDataVisitor.java?rev=1196483&r1=1196482&r2=1196483&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/pen/AugmentBaseDataVisitor.java (original)
+++ pig/trunk/src/org/apache/pig/pen/AugmentBaseDataVisitor.java Wed Nov  2 07:32:46 2011
@@ -61,6 +61,7 @@ import org.apache.pig.newplan.logical.ex
 import org.apache.pig.newplan.logical.expression.LessThanEqualExpression;
 import org.apache.pig.newplan.logical.relational.LOLoad;
 import org.apache.pig.newplan.logical.relational.LogicalPlan;
+import org.apache.pig.newplan.logical.expression.IsNullExpression;
 import org.apache.pig.newplan.logical.expression.ModExpression;
 import org.apache.pig.newplan.logical.expression.LogicalExpression;
 import org.apache.pig.newplan.logical.expression.MultiplyExpression;
@@ -69,6 +70,7 @@ import org.apache.pig.newplan.logical.ex
 import org.apache.pig.newplan.logical.expression.OrExpression;
 import org.apache.pig.newplan.logical.expression.ProjectExpression;
 import org.apache.pig.newplan.logical.expression.RegexExpression;
+import org.apache.pig.newplan.logical.expression.UserFuncExpression;
 import org.apache.pig.newplan.logical.relational.LOSort;
 import org.apache.pig.newplan.logical.relational.LOSplit;
 import org.apache.pig.newplan.logical.relational.LOStore;
@@ -510,10 +512,10 @@ public class AugmentBaseDataVisitor exte
         } catch (Exception e) {
             log
                     .error("Error visiting Load during Augmentation phase of Example Generator! "
-                            + e.getMessage());
+                            + e.getMessage(), e);
             throw new FrontendException(
                     "Error visiting Load during Augmentation phase of Example Generator! "
-                            + e.getMessage());
+                            + e.getMessage(), e);
         }
     }
 
@@ -946,6 +948,12 @@ public class AugmentBaseDataVisitor exte
                     invert);
         else if (pred instanceof NotExpression)
             GenerateMatchingTupleHelper(t, (NotExpression) pred, invert);
+        else if (pred instanceof IsNullExpression)
+            GenerateMatchingTupleHelper(t, (IsNullExpression) pred, invert);
+        else if (pred instanceof UserFuncExpression)
+            // Don't know how to generate input tuple for UDF, return null
+            // to suppress the generation 
+            t = null;
         else
             throw new FrontendException("Unknown operator in filter predicate");
     }
@@ -1151,6 +1159,15 @@ public class AugmentBaseDataVisitor exte
         GenerateMatchingTupleHelper(t, input, !invert);
 
     }
+    
+    void GenerateMatchingTupleHelper(Tuple t, IsNullExpression op, boolean invert)
+            throws FrontendException, ExecException {
+        byte type = op.getExpression().getType();
+        if (!invert)
+            t.set(0, null);
+        else
+            t.set(0, generateData(type, "0"));
+    }
 
     Object GetUnequalValue(Object v) {
         byte type = DataType.findType(v);

Modified: pig/trunk/test/org/apache/pig/test/TestExampleGenerator.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestExampleGenerator.java?rev=1196483&r1=1196482&r2=1196483&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestExampleGenerator.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestExampleGenerator.java Wed Nov  2 07:32:46 2011
@@ -361,4 +361,33 @@ public class TestExampleGenerator {
 
         assertTrue(derivedData != null);
     }
+    
+    //see PIG-2275
+    @Test
+    public void testFilterWithIsNull() throws ExecException, IOException {
+        PigServer pigServer = new PigServer(pigContext);
+
+        pigServer.registerQuery("A = load " + A
+                + " using PigStorage() as (x : int, y : int);");
+        pigServer.registerQuery("B = filter A by x is not null;");
+
+        Map<Operator, DataBag> derivedData = pigServer.getExamples("B");
+
+        assertTrue(derivedData != null);
+    }
+    
+    @Test
+    public void testFilterWithUDF() throws ExecException, IOException {
+        PigServer pigServer = new PigServer(pigContext);
+
+        pigServer.registerQuery("A = load " + A
+                + " using PigStorage() as (x : int, y : int);");
+        pigServer.registerQuery("B = group A by x;");
+        pigServer.registerQuery("C = filter B by NOT IsEmpty(A.y);");
+
+        Map<Operator, DataBag> derivedData = pigServer.getExamples("C");
+
+        assertTrue(derivedData != null);
+    }
+
 }