You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by xu...@apache.org on 2011/04/22 20:06:32 UTC

svn commit: r1095974 - in /pig/trunk: CHANGES.txt src/org/apache/pig/parser/QueryParser.g test/org/apache/pig/parser/TestLogicalPlanGenerator.java

Author: xuefu
Date: Fri Apr 22 18:06:31 2011
New Revision: 1095974

URL: http://svn.apache.org/viewvc?rev=1095974&view=rev
Log:
PIG-2007: Parsing error when map key referred directly from udf in nested foreach

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/parser/QueryParser.g
    pig/trunk/test/org/apache/pig/parser/TestLogicalPlanGenerator.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1095974&r1=1095973&r2=1095974&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Fri Apr 22 18:06:31 2011
@@ -42,6 +42,8 @@ PIG-1876: Typed map for Pig (daijy)
 
 IMPROVEMENTS
 
+PIG-2007: Parsing error when map key referred directly from udf in nested foreach (xuefu)
+
 PIG-2000: Pig gives incorrect error message dealing with scalar projection (xuefu)
 
 PIG-2002: Regression: Pig gives error "Projection with nothing to reference!" for a valid query (xuefu)

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=1095974&r1=1095973&r2=1095974&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/QueryParser.g (original)
+++ pig/trunk/src/org/apache/pig/parser/QueryParser.g Fri Apr 22 18:06:31 2011
@@ -556,16 +556,15 @@ nested_command_list : ( nested_command S
                     |
 ;
 
-nested_command : IDENTIFIER EQUAL func_eval
-              -> ^( NESTED_CMD_ASSI IDENTIFIER func_eval )
-               | IDENTIFIER EQUAL nested_op
-              -> ^( NESTED_CMD IDENTIFIER nested_op )
+nested_command : ( IDENTIFIER EQUAL col_ref PERIOD col_ref_list { input.LA( 1 ) == SEMI_COLON }? ) => ( IDENTIFIER EQUAL nested_proj )
+              -> ^( NESTED_CMD IDENTIFIER nested_proj )
                | IDENTIFIER EQUAL expr
               -> ^( NESTED_CMD_ASSI IDENTIFIER expr )
+               | IDENTIFIER EQUAL nested_op
+              -> ^( NESTED_CMD IDENTIFIER nested_op )
 ;
 
-nested_op : nested_proj
-          | nested_filter
+nested_op : nested_filter
           | nested_sort
           | nested_distinct
           | nested_limit

Modified: pig/trunk/test/org/apache/pig/parser/TestLogicalPlanGenerator.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/parser/TestLogicalPlanGenerator.java?rev=1095974&r1=1095973&r2=1095974&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/parser/TestLogicalPlanGenerator.java (original)
+++ pig/trunk/test/org/apache/pig/parser/TestLogicalPlanGenerator.java Fri Apr 22 18:06:31 2011
@@ -238,6 +238,20 @@ public class TestLogicalPlanGenerator {
     }
     
     @Test
+    public void test20() {
+        String query = "A = load 'x' using PigStorage() as (a:int,b:chararray);\n" +
+                       "B = foreach A { C = TOMAP()#'key1'; generate C as C; };";
+        generateLogicalPlan( query );
+    }
+    
+    @Test
+    public void test21() {
+        String query = "A = load 'x' as (u, v);\n" +
+                       "B = foreach A { S = u; T = org.apache.pig.builtin.TOMAP(); generate S, T;};";
+        generateLogicalPlan( query );
+    }
+    
+    @Test
     public void testFilter() {
         String query = "A = load 'x' as ( u:int, v:long, w:bytearray); " + 
                        "B = filter A by 2 > 1;\n" +