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/10 07:32:06 UTC

svn commit: r1566518 - in /pig/trunk: src/org/apache/pig/parser/ test/org/apache/pig/test/

Author: daijy
Date: Mon Feb 10 06:32:05 2014
New Revision: 1566518

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

Modified:
    pig/trunk/src/org/apache/pig/parser/AliasMasker.g
    pig/trunk/src/org/apache/pig/parser/AstPrinter.g
    pig/trunk/src/org/apache/pig/parser/AstValidator.g
    pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g
    pig/trunk/src/org/apache/pig/parser/QueryParser.g
    pig/trunk/test/org/apache/pig/test/TestAssert.java

Modified: pig/trunk/src/org/apache/pig/parser/AliasMasker.g
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/parser/AliasMasker.g?rev=1566518&r1=1566517&r2=1566518&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/AliasMasker.g (original)
+++ pig/trunk/src/org/apache/pig/parser/AliasMasker.g Mon Feb 10 06:32:05 2014
@@ -85,11 +85,15 @@ query : ^( QUERY statement* )
 statement : general_statement
           | split_statement
           | realias_statement
+          | assert_statement
 ;
 
 split_statement : split_clause
 ;
 
+assert_statement: assert_clause
+;
+
 realias_statement : realias_clause
 ;
 
@@ -132,6 +136,7 @@ op_clause : define_clause
           | split_clause
           | foreach_clause
           | cube_clause
+          | assert_clause
 ;
 
 define_clause
@@ -299,6 +304,13 @@ store_clause
     : ^( STORE alias filename func_clause? )
 ;
 
+assert_clause
+    : ^( ASSERT alias cond comment? )
+;
+
+comment : QUOTEDSTRING
+;
+
 filter_clause
     : ^( FILTER rel cond )
 ;
@@ -695,6 +707,7 @@ eid : rel_str_op
     | TOBAG
     | TOMAP
     | TOTUPLE
+    | ASSERT
 ;
 
 // relational operator

Modified: pig/trunk/src/org/apache/pig/parser/AstPrinter.g
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/parser/AstPrinter.g?rev=1566518&r1=1566517&r2=1566518&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/AstPrinter.g (original)
+++ pig/trunk/src/org/apache/pig/parser/AstPrinter.g Mon Feb 10 06:32:05 2014
@@ -57,6 +57,7 @@ statement : general_statement
           | split_statement { sb.append(";\n"); }
           | import_statement { sb.append(";\n"); }
           | register_statement { sb.append(";\n"); }
+          | assert_statement { sb.append(";\n"); }
           | realias_statement
 ;
 
@@ -76,6 +77,9 @@ register_statement : ^( REGISTER QUOTEDS
                         } scripting_udf_clause? )
 ;
 
+assert_statement : assert_clause
+;
+
 scripting_udf_clause : scripting_language_clause scripting_namespace_clause
 ;
 
@@ -735,6 +739,7 @@ eid : rel_str_op
     | TOTUPLE    { sb.append($TOTUPLE.text); }
     | IN         { sb.append($IN.text); }
     | CASE       { sb.append($CASE.text); }
+    | ASSERT     { sb.append($ASSERT.text); }
 ;
 
 // relational operator

Modified: pig/trunk/src/org/apache/pig/parser/AstValidator.g
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/parser/AstValidator.g?rev=1566518&r1=1566517&r2=1566518&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/AstValidator.g (original)
+++ pig/trunk/src/org/apache/pig/parser/AstValidator.g Mon Feb 10 06:32:05 2014
@@ -117,6 +117,7 @@ statement : general_statement
           | split_statement
           | realias_statement
           | register_statement
+          | assert_statement
 ;
 
 split_statement : split_clause
@@ -128,6 +129,9 @@ realias_statement : realias_clause
 register_statement : ^( REGISTER QUOTEDSTRING (USING IDENTIFIER AS IDENTIFIER)? )
 ;
 
+assert_statement : assert_clause
+;
+
 general_statement : ^( STATEMENT ( alias { aliases.add( $alias.name ); } )? op_clause parallel_clause? )
 ;
 
@@ -724,6 +728,7 @@ eid : rel_str_op
     | TOBAG
     | TOMAP
     | TOTUPLE
+    | ASSERT
 ;
 
 // relational operator

Modified: pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g?rev=1566518&r1=1566517&r2=1566518&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g (original)
+++ pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g Mon Feb 10 06:32:05 2014
@@ -173,6 +173,7 @@ scope {
  : general_statement
  | split_statement
  | realias_statement
+ | assert_statement
  | register_statement
 ;
 
@@ -182,6 +183,9 @@ split_statement : split_clause
 realias_statement : realias_clause
 ;
 
+assert_statement : assert_clause
+;
+
 register_statement
 : ^( REGISTER QUOTEDSTRING (USING IDENTIFIER AS IDENTIFIER)? )
   {
@@ -2002,6 +2006,7 @@ eid returns[String id] : rel_str_op { $i
     | TOBAG { $id = "TOBAG"; }
     | TOMAP { $id = "TOMAP"; }
     | TOTUPLE { $id = "TOTUPLE"; }
+    | ASSERT { $id = "ASSERT"; } 
 ;
 
 // relational operator

Modified: pig/trunk/src/org/apache/pig/parser/QueryParser.g
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/parser/QueryParser.g?rev=1566518&r1=1566517&r2=1566518&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/QueryParser.g (original)
+++ pig/trunk/src/org/apache/pig/parser/QueryParser.g Mon Feb 10 06:32:05 2014
@@ -224,6 +224,7 @@ statement : SEMI_COLON!
           | import_clause SEMI_COLON!
           | realias_clause SEMI_COLON!
           | register_clause SEMI_COLON!
+          | assert_clause SEMI_COLON!
           // semicolons after foreach_complex_statement are optional for backwards compatibility, but to keep
           // the grammar unambiguous if there is one then we'll parse it as a single, standalone semicolon
           // (which matches the first statement rule)
@@ -382,7 +383,6 @@ op_clause : define_clause
           | union_clause
           | stream_clause
           | mr_clause
-          | assert_clause
 ;
 
 ship_clause : SHIP^ LEFT_PAREN! path_list? RIGHT_PAREN!
@@ -1029,6 +1029,7 @@ eid_without_columns : rel_str_op
     | FULL
     | REALIAS
     | BOOL_COND
+    | ASSERT
 ;
 
 eid : eid_without_columns
@@ -1075,6 +1076,5 @@ reserved_identifier_whitelist : RANK
                               | THEN
                               | ELSE
                               | END
-                              | ASSERT
 ;
 

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=1566518&r1=1566517&r2=1566518&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestAssert.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestAssert.java Mon Feb 10 06:32:05 2014
@@ -150,5 +150,29 @@ public class TestAssert {
                   "Job terminated with anomalous status FAILED"));
       }
   }
+  
+  /**
+   * Verify that alias is not assignable to the ASSERT operator
+   * @throws Exception
+   */
+  @Test(expected=FrontendException.class)
+  public void testNegativeWithAlias() throws Exception {
+      PigServer pigServer = new PigServer(ExecType.LOCAL);
+      Data data = resetData(pigServer);
+
+      data.set("foo",
+              tuple(1),
+              tuple(2),
+              tuple(3)
+              );
+      try {
+          pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage() AS (i:int);");
+          pigServer.registerQuery("B = ASSERT A BY i > 1 , 'i should be greater than 1';");
+      }
+      catch (FrontendException fe) {
+          Util.checkMessageInException(fe, "Syntax error, unexpected symbol at or near 'B'");
+          throw fe;
+      }
+  }
 
 }