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);