Author: daijy
Date: Tue Mar  1 22:48:04 2016
New Revision: 1733180

URL: http://svn.apache.org/viewvc?rev=1733180&view=rev
Log:
PIG-4816: Read a null scalar causing a Tez failure

Modified:
    pig/trunk/CHANGES.txt
    
pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/tez/plan/udf/ReadScalarsTez.java
    pig/trunk/test/org/apache/pig/test/TestScalarAliasesLocal.java

Modified: pig/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1733180&r1=1733179&r2=1733180&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Tue Mar  1 22:48:04 2016
@@ -97,6 +97,8 @@ PIG-4639: Add better parser for Apache H
 
 BUG FIXES
 
+PIG-4816: Read a null scalar causing a Tez failure (daijy)
+
 PIG-4818: Single quote inside comment in GENERATE is not being ignored 
(knoguchi)
 
 PIG-4814: AvroStorage does not take namenode HA as part of schema file url 
(daijy)

Modified: 
pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/tez/plan/udf/ReadScalarsTez.java
URL: 
http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/tez/plan/udf/ReadScalarsTez.java?rev=1733180&r1=1733179&r2=1733180&view=diff
==============================================================================
--- 
pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/tez/plan/udf/ReadScalarsTez.java
 (original)
+++ 
pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/tez/plan/udf/ReadScalarsTez.java
 Tue Mar  1 22:48:04 2016
@@ -67,9 +67,10 @@ public class ReadScalarsTez extends Eval
     public void attachInputs(Map<String, LogicalInput> inputs,
             Configuration conf) throws ExecException {
         String cacheKey = "scalar-" + inputKey;
-        Object cacheValue = ObjectCache.getInstance().retrieve(cacheKey);
-        if (cacheValue != null) {
-            t = (Tuple) cacheValue;
+        String cacheKeyPresent = "scalar-present" + inputKey;
+        
+        if (ObjectCache.getInstance().retrieve(cacheKeyPresent) != null) {
+            t = (Tuple)ObjectCache.getInstance().retrieve(cacheKey);
             return;
         }
         input = inputs.get(inputKey);
@@ -95,6 +96,7 @@ public class ReadScalarsTez extends Eval
         } catch (Exception e) {
             throw new ExecException(e);
         }
+        ObjectCache.getInstance().cache(cacheKeyPresent, Boolean.TRUE);
         ObjectCache.getInstance().cache(cacheKey, t);
         log.info("Cached scalar in Tez ObjectRegistry with vertex scope. 
cachekey=" + cacheKey);
     }

Modified: pig/trunk/test/org/apache/pig/test/TestScalarAliasesLocal.java
URL: 
http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestScalarAliasesLocal.java?rev=1733180&r1=1733179&r2=1733180&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestScalarAliasesLocal.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestScalarAliasesLocal.java Tue Mar  1 
22:48:04 2016
@@ -578,4 +578,19 @@ public class TestScalarAliasesLocal {
 
     }
 
+    @Test
+    public void testScalarNullValue2() throws Exception{
+        Storage.Data data = Storage.resetData(pigServer);
+        data.set("input", Storage.tuple("a", 1), Storage.tuple("b", 2));
+
+        pigServer.registerQuery("A = load 'input' using mock.Storage() as 
(a:chararray, b:int);");
+        pigServer.registerQuery("B = FILTER A by a == 'c';");
+        pigServer.registerQuery("C = GROUP B ALL;");
+        pigServer.registerQuery("D = FOREACH C GENERATE COUNT(B.b) as count;");
+        pigServer.registerQuery("E = FOREACH A GENERATE (D.count IS NOT NULL? 
D.count : 0l);;");
+
+        Iterator<Tuple> iter = pigServer.openIterator("E");
+        Tuple t = iter.next();
+        assertTrue(t.toString().equals("(0)"));
+    }
 }


Reply via email to