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/02/08 19:14:48 UTC

svn commit: r1566075 - in /pig/trunk: CHANGES.txt src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj test/org/apache/pig/test/TestAssert.java

Author: daijy
Date: Sat Feb  8 18:14:48 2014
New Revision: 1566075

URL: http://svn.apache.org/r1566075
Log:
PIG-3670: Fix assert in Pig script

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj
    pig/trunk/test/org/apache/pig/test/TestAssert.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1566075&r1=1566074&r2=1566075&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Sat Feb  8 18:14:48 2014
@@ -87,6 +87,8 @@ OPTIMIZATIONS
  
 BUG FIXES
 
+PIG-3670: Fix assert in Pig script (daijy)
+
 PIG-3447: Compiler warning message dropped for CastLineageSetter and others with no enum kind (knoguchi via cheolsoo)
 
 PIG-3627: Json storage : Doesn't work in cases , where other Store Functions (like PigStorage / AvroStorage)

Modified: pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj?rev=1566075&r1=1566074&r2=1566075&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj (original)
+++ pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj Sat Feb  8 18:14:48 2014
@@ -247,11 +247,12 @@ TOKEN_MGR_DECLS : {
 {
     <"split"> : PIG_START
 |   <"define"> : PIG_START
-|	<"store"> : PIG_START
-|	<"import"> : PIG_START
-| 	<(["a"-"z", "A"-"Z"])+(["a"-"z", "A"-"Z"] | ["0"-"9"] | "_")*(" " | "\t")*"="> : PIG_START
+|   <"store"> : PIG_START
+|   <"assert"> : PIG_START
+|   <"import"> : PIG_START
+|   <(["a"-"z", "A"-"Z"])+(["a"-"z", "A"-"Z"] | ["0"-"9"] | "_")*(" " | "\t")*"="> : PIG_START
 |   <"=>" (" " | "\t")*> : PIG_START
-| 	< <IDENTIFIER> (" " | "\t")* ("," (" " | "\t")* <IDENTIFIER> )* (" " | "\t")* "="> : PIG_START
+|   < <IDENTIFIER> (" " | "\t")* ("," (" " | "\t")* <IDENTIFIER> )* (" " | "\t")* "="> : PIG_START
 |   < <IDENTIFIER> (" " | "\t")* "(" > : PIG_START
 }
 

Modified: pig/trunk/test/org/apache/pig/test/TestAssert.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestAssert.java?rev=1566075&r1=1566074&r2=1566075&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestAssert.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestAssert.java Sat Feb  8 18:14:48 2014
@@ -21,6 +21,8 @@ import static junit.framework.Assert.ass
 import static org.apache.pig.builtin.mock.Storage.resetData;
 import static org.apache.pig.builtin.mock.Storage.tuple;
 
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 import java.util.List;
 import java.util.Properties;
 
@@ -55,7 +57,7 @@ public class TestAssert {
       pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage() AS (i:int);");
       pigServer.registerQuery("ASSERT A BY i > 0;");
       pigServer.registerQuery("STORE A INTO 'bar' USING mock.Storage();");
-      
+
       pigServer.executeBatch();
 
       List<Tuple> out = data.get("bar");
@@ -64,7 +66,38 @@ public class TestAssert {
       assertEquals(tuple(2), out.get(1));
       assertEquals(tuple(3), out.get(2));
   }
-  
+
+  /**
+   * Verify that ASSERT operator works in a Pig script
+   * See PIG-3670
+   * @throws Exception
+   */
+  @Test
+  public void testInScript() throws Exception {
+      PigServer pigServer = new PigServer(ExecType.LOCAL);
+      Data data = resetData(pigServer);
+
+      data.set("foo",
+              tuple(1),
+              tuple(2),
+              tuple(3)
+              );
+
+      StringBuffer query = new StringBuffer();
+      query.append("A = LOAD 'foo' USING mock.Storage() AS (i:int);\n");
+      query.append("ASSERT A BY i > 0;\n");
+      query.append("STORE A INTO 'bar' USING mock.Storage();");
+
+      InputStream is = new ByteArrayInputStream(query.toString().getBytes());
+      pigServer.registerScript(is);
+
+      List<Tuple> out = data.get("bar");
+      assertEquals(3, out.size());
+      assertEquals(tuple(1), out.get(0));
+      assertEquals(tuple(2), out.get(1));
+      assertEquals(tuple(3), out.get(2));
+  }
+
   /**
    * Verify that ASSERT operator works
    * @throws Exception