[ 
https://issues.apache.org/jira/browse/PIG-4376?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kevin Springborn updated PIG-4376:
----------------------------------
    Status: Patch Available  (was: Open)

Index: test/org/apache/pig/parser/TestColumnAliasConversion.java
===================================================================
--- test/org/apache/pig/parser/TestColumnAliasConversion.java   (revision 
1644458)
+++ test/org/apache/pig/parser/TestColumnAliasConversion.java   (working copy)
@@ -159,6 +159,22 @@
         Assert.fail( "Query should fail to validate." );
     }
 
+    @Test
+    public void testInvalidNestedProjection() throws Exception {
+        String query = "A = load 'x' as (field);" +
+                       "B = foreach A {" +
+                       "  C = LIMIT invalidName 1;" +
+                       "  generate C.foo;" +
+                       "};";
+        try {
+            validate( query );
+        } catch(PlanValidationException ex) {
+            System.out.println(ex.getMessage());
+            return;
+        }
+        Assert.fail( "Query should fail to validate." );
+    }
+
     private LogicalPlan validate(String query) throws RecognitionException, 
ParsingFailureException, IOException {
         LogicalPlan plan = ParserTestingUtils.generateLogicalPlan( query );
         ColumnAliasConversionVisitor visitor = new 
ColumnAliasConversionVisitor( plan );
Index: src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java
===================================================================
--- src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java    
(revision 1644458)
+++ src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java    
(working copy)
@@ -206,7 +206,7 @@
                    throw new FrontendException("Index "+rawColumn + " out of 
range in schema:" + schema.toString(false), 1127);
                }
                 columns.add( (Integer)rawColumn );
-            } else {
+            } else if (schema!=null) {
                 int pos = schema.getFieldPosition((String)rawColumn);
                 if( pos != -1) {
                     columns.add( pos );


> NullPointerException accessing a field of an invalid bag from a nested foreach
> ------------------------------------------------------------------------------
>
>                 Key: PIG-4376
>                 URL: https://issues.apache.org/jira/browse/PIG-4376
>             Project: Pig
>          Issue Type: Bug
>          Components: parser
>    Affects Versions: 0.12.0, 0.13.0, 0.14.0
>            Reporter: Kevin Springborn
>            Priority: Minor
>
> {noformat}
> a = load 'x' as (field);
> b = foreach a {
>   c = LIMIT invalidName 1;
>   generate c.foo;
> }
> {noformat}
> Results in the following stack trace:
> [main] ERROR org.apache.pig.PigServer - exception during parsing: Error 
> during parsing. null
> Failed to parse: null
>         at 
> org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:201)
>         at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1735)
>         at org.apache.pig.PigServer$Graph.access$000(PigServer.java:1443)
>         at org.apache.pig.PigServer.parseAndBuild(PigServer.java:387)
>         at org.apache.pig.PigServer.executeBatch(PigServer.java:412)
>         at org.apache.pig.PigServer.executeBatch(PigServer.java:398)
>         at 
> org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:171)
>         at 
> org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:741)
>         at 
> org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:372)
>         at 
> org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:230)
>         at 
> org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:205)
>         at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:81)
>         at org.apache.pig.Main.run(Main.java:495)
>         at org.apache.pig.Main.main(Main.java:170)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
>         at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
> Caused by: java.lang.NullPointerException
>         at 
> org.apache.pig.newplan.logical.expression.DereferenceExpression.translateAliasToPos(DereferenceExpression.java:210)
>         at 
> org.apache.pig.newplan.logical.expression.DereferenceExpression.getFieldSchema(DereferenceExpression.java:149)
>         at 
> org.apache.pig.newplan.logical.optimizer.FieldSchemaResetter.execute(SchemaResetter.java:264)
>         at 
> org.apache.pig.newplan.logical.expression.AllSameExpressionVisitor.visit(AllSameExpressionVisitor.java:148)
>         at 
> org.apache.pig.newplan.logical.expression.DereferenceExpression.accept(DereferenceExpression.java:84)
>         at 
> org.apache.pig.newplan.ReverseDependencyOrderWalker.walk(ReverseDependencyOrderWalker.java:70)
>         at org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52)
>         at 
> org.apache.pig.newplan.logical.optimizer.SchemaResetter.visitAll(SchemaResetter.java:67)
>         at 
> org.apache.pig.newplan.logical.optimizer.SchemaResetter.visit(SchemaResetter.java:122)
>         at 
> org.apache.pig.newplan.logical.relational.LOGenerate.accept(LOGenerate.java:245)
>         at 
> org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75)
>         at 
> org.apache.pig.newplan.logical.optimizer.SchemaResetter.visit(SchemaResetter.java:114)
>         at 
> org.apache.pig.parser.LogicalPlanBuilder.buildForeachOp(LogicalPlanBuilder.java:1055)
>         at 
> org.apache.pig.parser.LogicalPlanGenerator.foreach_clause(LogicalPlanGenerator.java:15896)
>         at 
> org.apache.pig.parser.LogicalPlanGenerator.op_clause(LogicalPlanGenerator.java:1933)
>         at 
> org.apache.pig.parser.LogicalPlanGenerator.general_statement(LogicalPlanGenerator.java:1102)
>         at 
> org.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGenerator.java:560)
>         at 
> org.apache.pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator.java:421)
>         at 
> org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:191)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to