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

li xiang commented on PARQUET-334:
----------------------------------

In Pig code, src/org/apache/pig/EvalFunc.java. A private number 
"inputSchemaInternal" represent the schema. Setter and Getter are also provided
{code}
316     private Schema inputSchemaInternal=null;

328     /**
329      * This method is for internal use. It is called by Pig core in both 
front-end
330      * and back-end to setup the right input schema for EvalFunc
331      */
332     public void setInputSchema(Schema input){
333         this.inputSchemaInternal=input;
334     }
335 
336     /**
337      * This method is intended to be called by the user in {@link EvalFunc} 
to get the input
338      * schema of the EvalFunc
339      */
340     public Schema getInputSchema(){
341         return this.inputSchemaInternal;
342     }
{code}

But actually, they are overrided. In 
parquet-mr/parquet-pig/src/main/java/parquet/pig/summary/Summary.java, It uses 
a new number called inputSchema(vs. inputSchemaInternal) to represent schema 
and override setInputSchema(), but not override getInputSchema()

{code}
51  public class Summary extends EvalFunc<String> implements Algebraic {

54     private Schema inputSchema;

257   @Override
258   public void setInputSchema(Schema input) {
259     try {
260       // relation.bag.tuple
261       this.inputSchema=input.getField(0).schema.getField(0).schema;
262       saveSchemaToUDFContext();
263     } catch (FrontendException e) {
264       throw new RuntimeException("Usage: B = FOREACH (GROUP A ALL) GENERATE 
Summary(A); Can not get schema from " + input, e);
265     } catch (RuntimeException e) {
266       throw new RuntimeException("Usage: B = FOREACH (GROUP A ALL) GENERATE 
Summary(A); Can not get schema from "+input, e);
267     }
268   }
{code}

> UT TestSummary failed with java.lang.RuntimeException: Usage: B = FOREACH 
> (GROUP A ALL) GENERATE Summary(A); Can not get schema from null when Pig is 
> 0.15+
> -----------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: PARQUET-334
>                 URL: https://issues.apache.org/jira/browse/PARQUET-334
>             Project: Parquet
>          Issue Type: Bug
>          Components: parquet-mr
>    Affects Versions: 1.6.0
>            Reporter: li xiang
>            Priority: Critical
>
> org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1002: Unable to 
> store alias B
> at org.apache.pig.PigServer$Graph.registerQuery(PigServer.java:1694)
> at org.apache.pig.PigServer.registerQuery(PigServer.java:623)
> at org.apache.pig.PigServer.registerQuery(PigServer.java:636)
> at parquet.pig.summary.TestSummary.testMaxIsZero(TestSummary.java:154)
> ...
> Caused by: org.apache.pig.backend.executionengine.ExecException: ERROR 0: 
> java.lang.RuntimeException: Usage: B = FOREACH (GROUP A ALL) GENERATE 
> Summary(A); Can not get schema from null
> at 
> org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.launchPig(HExecutionEngine.java:307)
> at org.apache.pig.PigServer.launchPlan(PigServer.java:1390)
> at org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1375)
> at org.apache.pig.PigServer.execute(PigServer.java:1364)
> at org.apache.pig.PigServer.access$500(PigServer.java:113)
> at org.apache.pig.PigServer$Graph.registerQuery(PigServer.java:1689)
> ... 32 more
> Caused by: java.lang.RuntimeException: Usage: B = FOREACH (GROUP A ALL) 
> GENERATE Summary(A); Can not get schema from null
> at parquet.pig.summary.Summary.setInputSchema(Summary.java:266)
> at 
> org.apache.pig.newplan.logical.expression.ExpToPhyTranslationVisitor.visit(ExpToPhyTranslationVisitor.java:530)
> at 
> org.apache.pig.newplan.logical.expression.UserFuncExpression.accept(UserFuncExpression.java:132)
> at 
> org.apache.pig.newplan.ReverseDependencyOrderWalkerWOSeenChk.walk(ReverseDependencyOrderWalkerWOSeenChk.java:69)
> at 
> org.apache.pig.newplan.logical.relational.LogToPhyTranslationVisitor.visit(LogToPhyTranslationVisitor.java:808)
> at 
> org.apache.pig.newplan.logical.relational.LOForEach.accept(LOForEach.java:87)
> at 
> org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75)
> at org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52)
> at 
> org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.compile(HExecutionEngine.java:258)
> at 
> org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.launchPig(HExecutionEngine.java:293)
> ... 37 more
> Caused by: java.lang.NullPointerException
> at parquet.pig.summary.Summary.setInputSchema(Summary.java:261)
> ... 46 more



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

Reply via email to