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:44:55 UTC

svn commit: r1301825 - in /pig/branches/branch-0.10: src/org/apache/pig/parser/ test/e2e/pig/tests/ test/org/apache/pig/parser/

Author: daijy
Date: Fri Mar 16 23:44:55 2012
New Revision: 1301825

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

Modified:
    pig/branches/branch-0.10/src/org/apache/pig/parser/AliasMasker.g
    pig/branches/branch-0.10/src/org/apache/pig/parser/AstPrinter.g
    pig/branches/branch-0.10/src/org/apache/pig/parser/AstValidator.g
    pig/branches/branch-0.10/src/org/apache/pig/parser/LogicalPlanBuilder.java
    pig/branches/branch-0.10/src/org/apache/pig/parser/LogicalPlanGenerator.g
    pig/branches/branch-0.10/src/org/apache/pig/parser/QueryParser.g
    pig/branches/branch-0.10/test/e2e/pig/tests/nightly.conf
    pig/branches/branch-0.10/test/org/apache/pig/parser/TestErrorHandling.java
    pig/branches/branch-0.10/test/org/apache/pig/parser/TestQueryParser.java

Modified: pig/branches/branch-0.10/src/org/apache/pig/parser/AliasMasker.g
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/src/org/apache/pig/parser/AliasMasker.g?rev=1301825&r1=1301824&r2=1301825&view=diff
==============================================================================
--- pig/branches/branch-0.10/src/org/apache/pig/parser/AliasMasker.g (original)
+++ pig/branches/branch-0.10/src/org/apache/pig/parser/AliasMasker.g Fri Mar 16 23:44:55 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/branches/branch-0.10/src/org/apache/pig/parser/AstPrinter.g
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/src/org/apache/pig/parser/AstPrinter.g?rev=1301825&r1=1301824&r2=1301825&view=diff
==============================================================================
--- pig/branches/branch-0.10/src/org/apache/pig/parser/AstPrinter.g (original)
+++ pig/branches/branch-0.10/src/org/apache/pig/parser/AstPrinter.g Fri Mar 16 23:44:55 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/branches/branch-0.10/src/org/apache/pig/parser/AstValidator.g
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/src/org/apache/pig/parser/AstValidator.g?rev=1301825&r1=1301824&r2=1301825&view=diff
==============================================================================
--- pig/branches/branch-0.10/src/org/apache/pig/parser/AstValidator.g (original)
+++ pig/branches/branch-0.10/src/org/apache/pig/parser/AstValidator.g Fri Mar 16 23:44:55 2012
@@ -97,14 +97,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/branches/branch-0.10/src/org/apache/pig/parser/LogicalPlanBuilder.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/src/org/apache/pig/parser/LogicalPlanBuilder.java?rev=1301825&r1=1301824&r2=1301825&view=diff
==============================================================================
--- pig/branches/branch-0.10/src/org/apache/pig/parser/LogicalPlanBuilder.java (original)
+++ pig/branches/branch-0.10/src/org/apache/pig/parser/LogicalPlanBuilder.java Fri Mar 16 23:44:55 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/branches/branch-0.10/src/org/apache/pig/parser/LogicalPlanGenerator.g
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/src/org/apache/pig/parser/LogicalPlanGenerator.g?rev=1301825&r1=1301824&r2=1301825&view=diff
==============================================================================
--- pig/branches/branch-0.10/src/org/apache/pig/parser/LogicalPlanGenerator.g (original)
+++ pig/branches/branch-0.10/src/org/apache/pig/parser/LogicalPlanGenerator.g Fri Mar 16 23:44:55 2012
@@ -162,11 +162,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? )
   {
@@ -175,6 +179,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/branches/branch-0.10/src/org/apache/pig/parser/QueryParser.g
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/src/org/apache/pig/parser/QueryParser.g?rev=1301825&r1=1301824&r2=1301825&view=diff
==============================================================================
--- pig/branches/branch-0.10/src/org/apache/pig/parser/QueryParser.g (original)
+++ pig/branches/branch-0.10/src/org/apache/pig/parser/QueryParser.g Fri Mar 16 23:44:55 2012
@@ -154,6 +154,7 @@ statement : SEMI_COLON!
           | split_statement  
           | inline_statement        
           | import_statement
+          | realias_statement
 ;
 
 import_statement : import_clause SEMI_COLON!
@@ -169,6 +170,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
 ;
 
@@ -753,6 +761,7 @@ eid : rel_str_op
     | null_keyword
     | TRUE
     | FALSE
+    | REALIAS
 ;
 
 // relational operator

Modified: pig/branches/branch-0.10/test/e2e/pig/tests/nightly.conf
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/test/e2e/pig/tests/nightly.conf?rev=1301825&r1=1301824&r2=1301825&view=diff
==============================================================================
--- pig/branches/branch-0.10/test/e2e/pig/tests/nightly.conf (original)
+++ pig/branches/branch-0.10/test/e2e/pig/tests/nightly.conf Fri Mar 16 23:44:55 2012
@@ -4068,7 +4068,22 @@ store E into ':OUTPATH:';\, 
                              store c 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/branches/branch-0.10/test/org/apache/pig/parser/TestErrorHandling.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/test/org/apache/pig/parser/TestErrorHandling.java?rev=1301825&r1=1301824&r2=1301825&view=diff
==============================================================================
--- pig/branches/branch-0.10/test/org/apache/pig/parser/TestErrorHandling.java (original)
+++ pig/branches/branch-0.10/test/org/apache/pig/parser/TestErrorHandling.java Fri Mar 16 23:44:55 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/branches/branch-0.10/test/org/apache/pig/parser/TestQueryParser.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/test/org/apache/pig/parser/TestQueryParser.java?rev=1301825&r1=1301824&r2=1301825&view=diff
==============================================================================
--- pig/branches/branch-0.10/test/org/apache/pig/parser/TestQueryParser.java (original)
+++ pig/branches/branch-0.10/test/org/apache/pig/parser/TestQueryParser.java Fri Mar 16 23:44:55 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);