You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by pr...@apache.org on 2010/05/03 18:21:00 UTC

svn commit: r940502 - in /hadoop/pig/trunk: CHANGES.txt src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj test/org/apache/pig/test/TestGrunt.java

Author: pradeepkth
Date: Mon May  3 16:21:00 2010
New Revision: 940502

URL: http://svn.apache.org/viewvc?rev=940502&view=rev
Log:
PIG-740: Incorrect line number is generated when a string with double quotes is used instead of single quotes and is passed to UDF (pradeepkth)

Modified:
    hadoop/pig/trunk/CHANGES.txt
    hadoop/pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj
    hadoop/pig/trunk/test/org/apache/pig/test/TestGrunt.java

Modified: hadoop/pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=940502&r1=940501&r2=940502&view=diff
==============================================================================
--- hadoop/pig/trunk/CHANGES.txt (original)
+++ hadoop/pig/trunk/CHANGES.txt Mon May  3 16:21:00 2010
@@ -53,6 +53,9 @@ PIG-1309: Map-side Cogroup (ashutoshc)
 
 BUG FIXES
 
+740 : Incorrect line number is generated when a string with double quotes is
+used instead of single quotes and is passed to UDF (pradeepkth)
+
 1378: har url not usable in Pig scripts (pradeepkth)
 
 PIG-1395:  Mapside cogroup runs out of memory (ashutoshc)

Modified: hadoop/pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj?rev=940502&r1=940501&r2=940502&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj (original)
+++ hadoop/pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj Mon May  3 16:21:00 2010
@@ -309,7 +309,7 @@ TOKEN_MGR_DECLS : {
 
 <IN_BLOCK> MORE :
 {
-	<"\""> {prevState = IN_BLOCK;} : IN_STRING
+	<"\""> {prevState = IN_BLOCK;} : IN_DOUBLE_QUOTED_STRING
 |	<(" " | "\t")+["A","a"]["S","s"](" " | "\t")+ > {prevState = IN_BLOCK;} : SCHEMA_DEFINITION
 |   <(" " | "\t")+["G","g"]["E","e"]["N","n"]["E","e"]["R","r"]["A","a"]["T","t"]["E","e"](" " | "\t")+> {prevState = IN_BLOCK;} : GENERATE
 |	<"{"> {pigBlockLevel++;}
@@ -322,6 +322,14 @@ TOKEN_MGR_DECLS : {
 |       <(~[])>
 }
 
+<IN_DOUBLE_QUOTED_STRING> MORE :
+{
+    <"\\\"">
+|   <"\""> { SwitchTo(prevState);}
+|   <("\n" | "\r" | "\r\n")> {secondary_prompt();}
+|   <(~[])>
+}
+
 <PIG_END> TOKEN :
 {
         <PIG: ""> { 	matchedToken.image = image.toString();

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestGrunt.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestGrunt.java?rev=940502&r1=940501&r2=940502&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestGrunt.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestGrunt.java Mon May  3 16:21:00 2010
@@ -858,4 +858,26 @@ public class TestGrunt extends TestCase 
             assertTrue(results[i] == 0);
         }
     }
+    
+    // Test case for PIG-740 to report an error near the double quotes rather
+    // than an unrelated EOF error message
+    public void testBlockErrMessage() throws Throwable {
+        PigServer server = new PigServer(ExecType.MAPREDUCE, cluster.getProperties());
+        PigContext context = server.getPigContext();
+
+        String script = "A = load 'inputdata' using PigStorage() as ( curr_searchQuery );\n" +
+        		"B = foreach A { domain = CONCAT(curr_searchQuery,\"^www\\.\");\n" +
+        		"        generate domain; };\n";
+        ByteArrayInputStream cmd = new ByteArrayInputStream(script.getBytes());
+        InputStreamReader reader = new InputStreamReader(cmd);
+
+        Grunt grunt = new Grunt(new BufferedReader(reader), context);
+
+        try {
+        grunt.exec();
+        } catch(Error e) {
+            e.printStackTrace();
+            assertTrue(e.getMessage().contains("Encountered: \"^\" (94), after : \"\\\"\""));
+        }
+    }
 }