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/05 18:10:14 UTC
svn commit: r1089102 - in /pig/trunk: ./ src/org/apache/pig/
src/org/apache/pig/parser/ test/org/apache/pig/parser/
test/org/apache/pig/test/
Author: xuefu
Date: Tue Apr 5 16:10:13 2011
New Revision: 1089102
URL: http://svn.apache.org/viewvc?rev=1089102&view=rev
Log:
PIG-1956: Pig parser shouldn't log error code 0 PIG-1957: Pig parser gives misleading error message when the next foreach block has syntactic errors PIG-1958: Regression: Pig doesn't log type cast warning messages
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/PigServer.java
pig/trunk/src/org/apache/pig/parser/ParserException.java
pig/trunk/src/org/apache/pig/parser/QueryParser.g
pig/trunk/test/org/apache/pig/parser/TestErrorHandling.java
pig/trunk/test/org/apache/pig/test/TestGrunt.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1089102&r1=1089101&r2=1089102&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Tue Apr 5 16:10:13 2011
@@ -26,6 +26,12 @@ PIG-1680: HBaseStorage should work with
IMPROVEMENTS
+PIG-1956: Pig parser shouldn't log error code 0 (xuefu)
+
+PIG-1957: Pig parser gives misleading error message when the next foreach block has syntactic errors (xuefu)
+
+PIG-1958: Regression: Pig doesn't log type cast warning messages (xuefu)
+
PIG-1918: Line number should be give for logical plan failures (xuefu)
PIG-1899: Add end to end test harness for Pig (gates)
Modified: pig/trunk/src/org/apache/pig/PigServer.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/PigServer.java?rev=1089102&r1=1089101&r2=1089102&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/PigServer.java (original)
+++ pig/trunk/src/org/apache/pig/PigServer.java Tue Apr 5 16:10:13 2011
@@ -70,6 +70,7 @@ import org.apache.pig.impl.io.FileLocali
import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.impl.logicalLayer.schema.Schema;
import org.apache.pig.impl.plan.CompilationMessageCollector;
+import org.apache.pig.impl.plan.CompilationMessageCollector.MessageType;
import org.apache.pig.impl.streaming.StreamingCommand;
import org.apache.pig.impl.util.LogUtils;
import org.apache.pig.impl.util.ObjectSerializer;
@@ -179,6 +180,7 @@ public class PigServer {
private boolean isMultiQuery = true;
+ private boolean aggregateWarning = true;
private String constructScope() {
// scope servers for now as a session id
@@ -227,7 +229,7 @@ public class PigServer {
this.pigContext = context;
currDAG = new Graph(false);
- //aggregateWarning = "true".equalsIgnoreCase(pigContext.getProperties().getProperty("aggregate.warning"));
+ aggregateWarning = "true".equalsIgnoreCase(pigContext.getProperties().getProperty("aggregate.warning"));
isMultiQuery = "true".equalsIgnoreCase(pigContext.getProperties().getProperty("opt.multiquery","true"));
jobName = pigContext.getProperties().getProperty(
@@ -1591,7 +1593,16 @@ public class PigServer {
// TODO: input/output validation visitor
CompilationMessageCollector collector = new CompilationMessageCollector() ;
+
new TypeCheckingRelVisitor( lp, collector).visit();
+ if(aggregateWarning) {
+ CompilationMessageCollector.logMessages(collector, MessageType.Warning, aggregateWarning, log);
+ } else {
+ for(Enum type: MessageType.values()) {
+ CompilationMessageCollector.logAllMessages(collector, log);
+ }
+ }
+
new UnionOnSchemaSetter( lp ).visit();
new CastLineageSetter(lp, collector).visit();
}
Modified: pig/trunk/src/org/apache/pig/parser/ParserException.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/parser/ParserException.java?rev=1089102&r1=1089101&r2=1089102&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/ParserException.java (original)
+++ pig/trunk/src/org/apache/pig/parser/ParserException.java Tue Apr 5 16:10:13 2011
@@ -24,17 +24,18 @@ import org.apache.pig.impl.logicalLayer.
public class ParserException extends FrontendException {
private static final long serialVersionUID = 1L;
+ private static final int errorCode = 1200;
public ParserException(RecognitionException recoException) {
- super( recoException );
+ super( "Pig script failed to parse: " + recoException, errorCode, recoException );
}
public ParserException(String msg) {
- super( msg );
+ super( msg, errorCode );
}
public ParserException(String msg, Throwable cause) {
- super( msg, cause );
+ super( msg, errorCode, cause );
}
@Override
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=1089102&r1=1089101&r2=1089102&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/QueryParser.g (original)
+++ pig/trunk/src/org/apache/pig/parser/QueryParser.g Tue Apr 5 16:10:13 2011
@@ -166,10 +166,16 @@ parallel_clause : PARALLEL^ INTEGER
// is covered by general_statement.
// We need to handle foreach specifically because of the ending ';', which is not required
// if there is a nested block. This is ugly, but it gets the job done.
-foreach_statement : ( alias EQUAL )? foreach_clause_complex SEMI_COLON?
- -> ^( STATEMENT alias? foreach_clause_complex )
- | ( alias EQUAL )? foreach_clause_simple parallel_clause? SEMI_COLON
- -> ^( STATEMENT alias? foreach_clause_simple parallel_clause? )
+foreach_statement : ( ( alias EQUAL )? FOREACH rel LEFT_CURLY ) => foreach_complex_statement
+ | foreach_simple_statement
+;
+
+foreach_complex_statement : ( alias EQUAL )? foreach_clause_complex SEMI_COLON?
+ -> ^( STATEMENT alias? foreach_clause_complex )
+;
+
+foreach_simple_statement : ( alias EQUAL )? foreach_clause_simple parallel_clause? SEMI_COLON
+ -> ^( STATEMENT alias? foreach_clause_simple parallel_clause? )
;
alias : IDENTIFIER
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=1089102&r1=1089101&r2=1089102&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/parser/TestErrorHandling.java (original)
+++ pig/trunk/test/org/apache/pig/parser/TestErrorHandling.java Tue Apr 5 16:10:13 2011
@@ -155,4 +155,22 @@ public class TestErrorHandling {
Assert.fail( "Testcase should fail" );
}
+ @Test // PIG-1956, 1957
+ public void tesNegative9() throws IOException {
+ String query = "A = load 'x' as (name, age, gpa);\n" +
+ "B = group A by name;\n" +
+ "C = foreach B { ba = filter A by age < '25'; bb = foreach ba generate gpa; generate group, flatten(bb);}";
+ try {
+ pig.registerQuery( query );
+ } catch(FrontendException ex) {
+ String msg = ex.getMessage();
+ System.out.println( msg );
+ Assert.assertEquals( 1200, ex.getErrorCode() );
+ Assert.assertTrue( msg.contains( "line 3, column 58" ) );
+ Assert.assertTrue( msg.contains( "mismatched input 'ba' expecting LEFT_PAREN" ) );
+ return;
+ }
+ Assert.fail( "Testcase should fail" );
+ }
+
}
Modified: pig/trunk/test/org/apache/pig/test/TestGrunt.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestGrunt.java?rev=1089102&r1=1089101&r2=1089102&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestGrunt.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestGrunt.java Tue Apr 5 16:10:13 2011
@@ -125,9 +125,7 @@ public class TestGrunt extends TestCase
try {
grunt.exec();
} catch (Exception e) {
- PigException pe = LogUtils.getPigException(e);
- String msg = (pe == null? e.getMessage(): pe.getMessage());
- assertTrue(msg.contains("Error during parsing"));
+ assertTrue(e.getMessage().contains("Error during parsing"));
}
}