[ 
https://issues.apache.org/jira/browse/PIG-5335?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16453484#comment-16453484
 ] 

Koji Noguchi commented on PIG-5335:
-----------------------------------

Looking at why ProjectStarExpander was seeing a completely random schema with 
redundant a0
{panel}
Projected field \[a0] does not exist in schema: 
{color:red}a0:bytearray,a0:bytearray{color},a2:bytearray,a3:bytearray
{panel}

It was coming from LogicalPlanBuilder.buildForeachOp --> 
ProjectExpression.getFieldSchema where ProjectExpression was always picking the 
first field (column 0) when provided alias was not found.
This random behavior worked because later in 
LogicalPlan.validate()->ColumnAliasConversionVisitor, it did correctly identify 
the incorrect alias reference ("b1").

However, for this jira, before reaching to LogicalPlan.validate(), it is 
failing within LogicalPlanBuilder's phase where ProjectStarExpander looked up 
for range "a0..a2", and LogicalSchema.getField("a0") didn't return due to 

{code:title=LogicalSchema.java}
 610          StringBuilder sb = new StringBuilder("Found more than one match: 
" + result.alias + ", " + fs.alias);
 611          throw new FrontendException(sb.toString(), 1025);
{code}
and that exception was swallowed and got replaced with the misleading error 
message shown in the description.



> Error message from range projection completely misleading
> ---------------------------------------------------------
>
>                 Key: PIG-5335
>                 URL: https://issues.apache.org/jira/browse/PIG-5335
>             Project: Pig
>          Issue Type: Bug
>            Reporter: Koji Noguchi
>            Assignee: Koji Noguchi
>            Priority: Major
>
> {code}
> A = load 'input.txt' as (a0,a1,a2,a3);
> B = FOREACH A GENERATE a0, a1, a2, a3;
> store B into '/tmp/deleteme';
> C = FOREACH A GENERATE a0, b1, a2, a3;
> D = FOREACH C GENERATE a0..a2;
> (end of script, no store, nothing)
> {code}
> Error message
> {panel}
> 2018-04-10 10:22:33,360 \[main] ERROR org.apache.pig.PigServer - exception 
> during parsing: Error during parsing. Invalid field projection. Projected 
> field \[a0] does not exist in schema: 
> a0:bytearray,a0:bytearray,a2:bytearray,a3:bytearray.
> {panel}
> At least two issues.
> # Error should be about FOREACH for C referencing non-existing field 'b1'.  
> But the error message is saying something about 'a0'.
> # Script itself is not using relation C and D at all.  It's confusing to see 
> errors coming out of unused relations.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to