[
https://issues.apache.org/jira/browse/HIVE-405?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12699099#action_12699099
]
Zheng Shao commented on HIVE-405:
---------------------------------
As part of the fix, ExprNodeEvaluator will have the following signature:
{code}
public abstract class ExprNodeEvaluator {
/**
* Initialize should be called once and only once.
* Return the ObjectInspector for the return value, given the rowInspector.
*/
public abstract ObjectInspector initialize(ObjectInspector rowInspector)
throws HiveException;
/**
* Evaluate the expression given the row.
* This method should use the rowInspector passed in from initialize to
* inspect the row object.
* The return value will be inspected by the return value of initialize.
*/
public abstract Object evaluate(Object row) throws HiveException;
}
{code}
> Operators should pass ObjectInspector in init instead of forward
> ----------------------------------------------------------------
>
> Key: HIVE-405
> URL: https://issues.apache.org/jira/browse/HIVE-405
> Project: Hadoop Hive
> Issue Type: Bug
> Components: Query Processor
> Affects Versions: 0.4.0
> Reporter: Zheng Shao
> Priority: Critical
>
> We are always passing the same ObjectInspector, so there is no need to pass
> it again and again in forward.
> Also there is a problem that can ONLY be fixed by passing ObjectInspector in
> init: Outer Joins - Outer Joins may not be able to get ObjectInspectors for
> all inputs, as a result, there is no way to construct an output
> ObjectInspector based on the inputs. Currently we have hard-coded code that
> assumes joins are always outputting Strings, which did break but was hidden
> by the old framework (because we do toString() when serializing the output,
> and toString() is defined for all Java Classes).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.