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 2012/03/17 00:45:39 UTC

svn commit: r1301826 - in /pig/trunk: ./ src/org/apache/pig/parser/ test/e2e/pig/tests/ test/org/apache/pig/parser/

Author: daijy
Date: Fri Mar 16 23:45:39 2012
New Revision: 1301826

URL: http://svn.apache.org/viewvc?rev=1301826&view=rev
Log:
PIG-438: Handle realiasing of existing Alias (A=B;)

Modified:
    pig/trunk/CHANGES.txt
    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/LogicalPlanBuilder.java
    pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g
    pig/trunk/src/org/apache/pig/parser/QueryParser.g
    pig/trunk/test/e2e/pig/tests/nightly.conf
    pig/trunk/test/org/apache/pig/parser/TestErrorHandling.java
    pig/trunk/test/org/apache/pig/parser/TestQueryParser.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1301826&r1=1301825&r2=1301826&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Fri Mar 16 23:45:39 2012
@@ -149,6 +149,8 @@ INCOMPATIBLE CHANGES
 
 IMPROVEMENTS
 
+PIG-438: Handle realiasing of existing Alias (A=B;) (daijy)
+
 PIG-2548: Support for providing parameters to python script (daijy)
 
 PIG-2518: Add ability to clean ivy cache in build.xml (daijy)

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=1301826&r1=1301825&r2=1301826&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/AliasMasker.g (original)
+++ pig/trunk/src/org/apache/pig/parser/AliasMasker.g Fri Mar 16 23:45:39 2012
@@ -84,17 +84,24 @@ query : ^( QUERY statement* )
 
 statement : general_statement
           | split_statement
+          | realias_statement
 ;
 
 split_statement : split_clause
 ;
 
+realias_statement : realias_clause
+;
+
 // For foreach statement that with complex inner plan.
 general_statement 
     : ^( STATEMENT ( alias )? 
         op_clause parallel_clause? ) 
 ;
 
+realias_clause : ^(REALIAS alias IDENTIFIER)
+;
+
 parallel_clause 
     : ^( PARALLEL INTEGER ) 
 ;

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=1301826&r1=1301825&r2=1301826&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/AstPrinter.g (original)
+++ pig/trunk/src/org/apache/pig/parser/AstPrinter.g Fri Mar 16 23:45:39 2012
@@ -55,17 +55,24 @@ query : ^( QUERY statement* )
 
 statement : general_statement
           | split_statement { sb.append(";\n"); }
+          | realias_statement
 ;
 
 split_statement : split_clause
 ;
 
+realias_statement : realias_clause
+;
+
 // For foreach statement that with complex inner plan.
 general_statement 
     : ^( STATEMENT ( alias { sb.append(" = "); } )? 
         op_clause parallel_clause? ) { sb.append(";\n"); }
 ;
 
+realias_clause : ^(REALIAS alias IDENTIFIER)
+;
+
 parallel_clause 
     : ^( PARALLEL INTEGER ) { sb.append(" ").append($PARALLEL.text).append(" ").append($INTEGER.text); }
 ;

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=1301826&r1=1301825&r2=1301826&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/AstValidator.g (original)
+++ pig/trunk/src/org/apache/pig/parser/AstValidator.g Fri Mar 16 23:45:39 2012
@@ -100,14 +100,24 @@ query : ^( QUERY statement* )
 
 statement : general_statement
           | split_statement
+          | realias_statement
 ;
 
 split_statement : split_clause
 ;
 
+realias_statement : realias_clause
+;
+
 general_statement : ^( STATEMENT ( alias { aliases.add( $alias.name ); } )? op_clause parallel_clause? )
 ;
 
+realias_clause : ^(REALIAS alias IDENTIFIER)
+   {
+       aliases.add( $alias.name );
+   }
+;
+
 parallel_clause : ^( PARALLEL INTEGER )
 ;
 

Modified: pig/trunk/src/org/apache/pig/parser/LogicalPlanBuilder.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/parser/LogicalPlanBuilder.java?rev=1301826&r1=1301825&r2=1301826&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/LogicalPlanBuilder.java (original)
+++ pig/trunk/src/org/apache/pig/parser/LogicalPlanBuilder.java Fri Mar 16 23:45:39 2012
@@ -1201,5 +1201,9 @@ public class LogicalPlanBuilder {
                       "Only REPL, REPLICATED, HASH, SKEWED, MERGE, and MERGE-SPARSE are vaild JOIN modifiers." );
           }
     }
+    
+    void putOperator(String alias, Operator op) {
+        operators.put(alias, op);
+    }
 
 }

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=1301826&r1=1301825&r2=1301826&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g (original)
+++ pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g Fri Mar 16 23:45:39 2012
@@ -163,11 +163,15 @@ scope {
 }
  : general_statement
  | split_statement
+ | realias_statement
 ;
 
 split_statement : split_clause
 ;
 
+realias_statement : realias_clause
+;
+
 general_statement 
 : ^( STATEMENT ( alias { $statement::alias = $alias.name; } )? oa = op_clause parallel_clause? )
   {
@@ -176,6 +180,18 @@ general_statement 
   }
 ;
 
+realias_clause
+: ^(REALIAS alias IDENTIFIER)
+    {
+	    Operator op = builder.lookupOperator( $IDENTIFIER.text );
+	    if (op==null) {
+	        throw new UndefinedAliasException(input, 
+	            new SourceLocation( (PigParserNode)$IDENTIFIER ), $IDENTIFIER.text);
+	    }
+	    builder.putOperator( $alias.name, (LogicalRelationalOperator)op );
+    }
+;
+
 parallel_clause
  : ^( PARALLEL INTEGER )
    {

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=1301826&r1=1301825&r2=1301826&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/QueryParser.g (original)
+++ pig/trunk/src/org/apache/pig/parser/QueryParser.g Fri Mar 16 23:45:39 2012
@@ -155,6 +155,7 @@ statement : SEMI_COLON!
           | split_statement  
           | inline_statement        
           | import_statement
+          | realias_statement
 ;
 
 import_statement : import_clause SEMI_COLON!
@@ -170,6 +171,13 @@ general_statement : ( alias EQUAL )? (op
                  -> ^( STATEMENT alias? op_clause parallel_clause? )
 ;
 
+realias_statement : realias_clause SEMI_COLON!
+;
+
+realias_clause : alias EQUAL identifier 
+    -> ^(REALIAS alias identifier)
+;
+
 parallel_clause : PARALLEL^ INTEGER
 ;
 
@@ -756,6 +764,7 @@ eid : rel_str_op
     | null_keyword
     | TRUE
     | FALSE
+    | REALIAS
 ;
 
 // relational operator

Modified: pig/trunk/test/e2e/pig/tests/nightly.conf
URL: http://svn.apache.org/viewvc/pig/trunk/test/e2e/pig/tests/nightly.conf?rev=1301826&r1=1301825&r2=1301826&view=diff
==============================================================================
--- pig/trunk/test/e2e/pig/tests/nightly.conf (original)
+++ pig/trunk/test/e2e/pig/tests/nightly.conf Fri Mar 16 23:45:39 2012
@@ -4244,7 +4244,21 @@ store E into ':OUTPATH:';\, 
                         store B into ':OUTPATH:';\,
 }
             ]
-        }
+        }, {
+		'name' => 'Realias',
+		'tests' => [
+			{
+                'num' => 1,
+                'pig' => q\
+                        A = LOAD ':INPATH:/singlefile/studenttab10k';
+                        B = A;
+                        store B into ':OUTPATH:';\,
+                'verify_pig_script' => q\
+                        A = LOAD ':INPATH:/singlefile/studenttab10k';
+                        store A into ':OUTPATH:';\,
+                    }
+                ]
+            },
 
         ],
     },

Modified: pig/trunk/test/org/apache/pig/parser/TestErrorHandling.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/parser/TestErrorHandling.java?rev=1301826&r1=1301825&r2=1301826&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/parser/TestErrorHandling.java (original)
+++ pig/trunk/test/org/apache/pig/parser/TestErrorHandling.java Fri Mar 16 23:45:39 2012
@@ -218,7 +218,7 @@ public class TestErrorHandling {
         	String msg = ex.getMessage();
             System.out.println( msg );
             Assert.assertFalse( msg.contains( "file null" ) );
-            Assert.assertTrue( msg.contains( "mismatched input ''x'' expecting LEFT_PAREN" ) );
+            Assert.assertTrue( msg.contains( "Syntax error, unexpected symbol at or near 'A'" ) );
             return;
         }
         Assert.fail( "Testcase should fail" );

Modified: pig/trunk/test/org/apache/pig/parser/TestQueryParser.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/parser/TestQueryParser.java?rev=1301826&r1=1301825&r2=1301826&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/parser/TestQueryParser.java (original)
+++ pig/trunk/test/org/apache/pig/parser/TestQueryParser.java Fri Mar 16 23:45:39 2012
@@ -57,8 +57,9 @@ public class TestQueryParser {
     }
 
     @Test
+    // After PIG-438, realias statement is valid
     public void testNegative1() throws IOException, RecognitionException {
-        shouldFail("A = load 'x'; B=A;");
+        shouldPass("A = load 'x'; B=A;");
     }
     
     @Test
@@ -100,7 +101,7 @@ public class TestQueryParser {
        
         Assert.assertFalse(stats.isSuccessful());
         
-        String expected = "<file myscript.pig, line 1, column 10>";
+        String expected = "<file myscript.pig, line 1, column 0>";
         String msg = stats.getErrorMessage();
         
         Assert.assertFalse(msg == null);