Author: olga Date: Tue Sep 30 13:45:42 2008 New Revision: 700576 URL: http://svn.apache.org/viewvc?rev=700576&view=rev Log: PIG-437: as causing parser errors
Modified: incubator/pig/branches/types/CHANGES.txt incubator/pig/branches/types/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj incubator/pig/branches/types/test/org/apache/pig/test/TestGrunt.java Modified: incubator/pig/branches/types/CHANGES.txt URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/CHANGES.txt?rev=700576&r1=700575&r2=700576&view=diff ============================================================================== --- incubator/pig/branches/types/CHANGES.txt (original) +++ incubator/pig/branches/types/CHANGES.txt Tue Sep 30 13:45:42 2008 @@ -261,3 +261,5 @@ PIG-463: POCast changes (pradeepk via olgan) PIG-427: casting input to UDFs + + PIG-437: as in alias names causing problems (sms via olgan) Modified: incubator/pig/branches/types/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj?rev=700576&r1=700575&r2=700576&view=diff ============================================================================== --- incubator/pig/branches/types/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj (original) +++ incubator/pig/branches/types/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj Tue Sep 30 13:45:42 2008 @@ -192,8 +192,8 @@ { <"'"> {prevState = PIG_START;} : IN_STRING | <"`"> {prevState = PIG_START;} : IN_COMMAND -| <["A","a"]["S","s"]> {prevState = PIG_START;} : SCHEMA_DEFINITION -| <["G","g"]["E","e"]["N","n"]["E","e"]["R","r"]["A","a"]["T","t"]["E","e"]> {prevState = PIG_START;} : GENERATE +| <(" " | "\t")*["A","a"]["S","s"](" " | "\t")* > {prevState = PIG_START;} : SCHEMA_DEFINITION +| <(" " | "\t")*["G","g"]["E","e"]["N","n"]["E","e"]["R","r"]["A","a"]["T","t"]["E","e"](" " | "\t")* > {prevState = PIG_START;} : GENERATE | <"{"> {pigBlockLevel = 1;} : IN_BLOCK | <"}"> {if (true) throw new TokenMgrError("Unmatched '}'", TokenMgrError.LEXICAL_ERROR);} | <";"> : PIG_END @@ -241,7 +241,7 @@ saveState(prevState); prevState = GENERATE; } : BAG_CONSTANT -| <["A","a"]["S","s"]> +| <(" " | "\t")+["A","a"]["S","s"](" " | "\t")+> { prevState = getState(prevState); saveState(prevState); @@ -289,8 +289,8 @@ <IN_BLOCK> MORE : { <"\""> {prevState = IN_BLOCK;} : IN_STRING -| <["A","a"]["S","s"]> {prevState = IN_BLOCK;} : SCHEMA_DEFINITION -| <["G","g"]["E","e"]["N","n"]["E","e"]["R","r"]["A","a"]["T","t"]["E","e"]> {prevState = IN_BLOCK;} : GENERATE +| <(" " | "\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++;} | <"}"(";")?> {pigBlockLevel--; if (pigBlockLevel == 0) SwitchTo(PIG_END);} | <"'"> {prevState = IN_BLOCK;} : IN_STRING Modified: incubator/pig/branches/types/test/org/apache/pig/test/TestGrunt.java URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/test/org/apache/pig/test/TestGrunt.java?rev=700576&r1=700575&r2=700576&view=diff ============================================================================== --- incubator/pig/branches/types/test/org/apache/pig/test/TestGrunt.java (original) +++ incubator/pig/branches/types/test/org/apache/pig/test/TestGrunt.java Tue Sep 30 13:45:42 2008 @@ -146,4 +146,125 @@ grunt.exec(); } + + @Test + public void testParsingAsInForeachBlock() throws Throwable { + PigServer server = new PigServer("MAPREDUCE"); + PigContext context = server.getPigContext(); + + String strCmd = "a = load 'foo' as (foo, fast); b = group a by foo; c = foreach b {generate SUM(a.fast) as fast;};\n"; + + ByteArrayInputStream cmd = new ByteArrayInputStream(strCmd.getBytes()); + InputStreamReader reader = new InputStreamReader(cmd); + + Grunt grunt = new Grunt(new BufferedReader(reader), context); + + grunt.exec(); + } + + @Test + public void testParsingAsInForeachWithOutBlock() throws Throwable { + PigServer server = new PigServer("MAPREDUCE"); + PigContext context = server.getPigContext(); + + String strCmd = "a = load 'foo' as (foo, fast); b = group a by foo; c = foreach b generate SUM(a.fast) as fast;\n"; + + ByteArrayInputStream cmd = new ByteArrayInputStream(strCmd.getBytes()); + InputStreamReader reader = new InputStreamReader(cmd); + + Grunt grunt = new Grunt(new BufferedReader(reader), context); + + grunt.exec(); + } + + @Test + public void testParsingWordWithAsInForeachBlock() throws Throwable { + PigServer server = new PigServer("MAPREDUCE"); + PigContext context = server.getPigContext(); + + String strCmd = "a = load 'foo' as (foo, fast); b = group a by foo; c = foreach b {generate SUM(a.fast);};\n"; + + ByteArrayInputStream cmd = new ByteArrayInputStream(strCmd.getBytes()); + InputStreamReader reader = new InputStreamReader(cmd); + + Grunt grunt = new Grunt(new BufferedReader(reader), context); + + grunt.exec(); + } + + @Test + public void testParsingWordWithAsInForeachWithOutBlock() throws Throwable { + PigServer server = new PigServer("MAPREDUCE"); + PigContext context = server.getPigContext(); + + String strCmd = "a = load 'foo' as (foo, fast); b = group a by foo; c = foreach b generate SUM(a.fast);\n"; + + ByteArrayInputStream cmd = new ByteArrayInputStream(strCmd.getBytes()); + InputStreamReader reader = new InputStreamReader(cmd); + + Grunt grunt = new Grunt(new BufferedReader(reader), context); + + grunt.exec(); + } + + + @Test + public void testParsingGenerateInForeachBlock() throws Throwable { + PigServer server = new PigServer("MAPREDUCE"); + PigContext context = server.getPigContext(); + + String strCmd = "a = load 'foo' as (foo, fast, regenerate); b = group a by foo; c = foreach b {generate a.regenerate;};\n"; + + ByteArrayInputStream cmd = new ByteArrayInputStream(strCmd.getBytes()); + InputStreamReader reader = new InputStreamReader(cmd); + + Grunt grunt = new Grunt(new BufferedReader(reader), context); + + grunt.exec(); + } + + @Test + public void testParsingGenerateInForeachWithOutBlock() throws Throwable { + PigServer server = new PigServer("MAPREDUCE"); + PigContext context = server.getPigContext(); + + String strCmd = "a = load 'foo' as (foo, fast, regenerate); b = group a by foo; c = foreach b generate a.regenerate;\n"; + + ByteArrayInputStream cmd = new ByteArrayInputStream(strCmd.getBytes()); + InputStreamReader reader = new InputStreamReader(cmd); + + Grunt grunt = new Grunt(new BufferedReader(reader), context); + + grunt.exec(); + } + + @Test + public void testParsingAsGenerateInForeachBlock() throws Throwable { + PigServer server = new PigServer("MAPREDUCE"); + PigContext context = server.getPigContext(); + + String strCmd = "a = load 'foo' as (foo, fast, regenerate); b = group a by foo; c = foreach b {generate {(1, '1', 0.4f),(2, '2', 0.45)} as b: bag{t(i: int, cease:chararray, degenerate: double)}, SUM(a.fast) as fast, a.regenerate as degenerated;};\n"; + + ByteArrayInputStream cmd = new ByteArrayInputStream(strCmd.getBytes()); + InputStreamReader reader = new InputStreamReader(cmd); + + Grunt grunt = new Grunt(new BufferedReader(reader), context); + + grunt.exec(); + } + + @Test + public void testParsingAsGenerateInForeachWithOutBlock() throws Throwable { + PigServer server = new PigServer("MAPREDUCE"); + PigContext context = server.getPigContext(); + + String strCmd = "a = load 'foo' as (foo, fast, regenerate); b = group a by foo; c = foreach b generate {(1, '1', 0.4f),(2, '2', 0.45)} as b: bag{t(i: int, cease:chararray, degenerate: double)}, SUM(a.fast) as fast, a.regenerate as degenerated;\n"; + + ByteArrayInputStream cmd = new ByteArrayInputStream(strCmd.getBytes()); + InputStreamReader reader = new InputStreamReader(cmd); + + Grunt grunt = new Grunt(new BufferedReader(reader), context); + + grunt.exec(); + } }