[
https://issues.apache.org/jira/browse/HIVE-8272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14154598#comment-14154598
]
Jason Dere commented on HIVE-8272:
----------------------------------
Here's the plan with the patch
{noformat}
LOGICAL PLAN:
src
TableScan (TS_0)
alias: src
Statistics: Num rows: 58 Data size: 5812 Basic stats: COMPLETE Column
stats: NONE
Select Operator (SEL_1)
expressions: key (type: string)
outputColumnNames: key
Statistics: Num rows: 58 Data size: 5812 Basic stats: COMPLETE Column
stats: NONE
Group By Operator (GBY_2)
aggregations: sum(key)
mode: hash
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column
stats: NONE
Reduce Output Operator (RS_3)
sort order:
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column
stats: NONE
value expressions: _col0 (type: double)
Group By Operator (GBY_4)
aggregations: sum(VALUE._col0)
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column
stats: NONE
Select Operator (SEL_5)
expressions: CAST( (_col0 * 100) AS decimal(15,3)) (type:
decimal(15,3))
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column
stats: NONE
Reduce Output Operator (RS_6)
key expressions: _col0 (type: decimal(15,3))
sort order: +
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE
Column stats: NONE
Select Operator (SEL_7)
expressions: KEY.reducesinkkey0 (type: decimal(15,3))
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE
Column stats: NONE
File Output Operator (FS_8)
compressed: false
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE
Column stats: NONE
table:
input format: org.apache.hadoop.mapred.TextInputFormat
output format:
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
serde:
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
{noformat}
Without the patch, ReduceSinkDeDuplication.merge() was incorrectly merging RS6
and RS3, even though the sort key in R6 could not be resolved by R3. The patch
fixes backtrack() to return null if the ExprNode children of a function resolve
to null, which causes the merge to fail.
> Query with particular decimal expression causes NPE during execution
> initialization
> -----------------------------------------------------------------------------------
>
> Key: HIVE-8272
> URL: https://issues.apache.org/jira/browse/HIVE-8272
> Project: Hive
> Issue Type: Bug
> Components: Logical Optimizer, Physical Optimizer
> Reporter: Matt McCline
> Assignee: Jason Dere
> Priority: Critical
> Fix For: 0.14.0
>
> Attachments: HIVE-8272.1.patch
>
>
> Query:
> {code}
> select
> cast(sum(dc)*100 as decimal(11,3)) as c1
> from somedecimaltable
> order by c1
> limit 100;
> {code}
> Fails during execution initialization due to *null* ExprNodeDesc.
> Noticed while trying to simplify a Vectorization issue and realized it was a
> more general issue.
> {code}
> Caused by: java.lang.RuntimeException: Map operator initialization failed
> at
> org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:154)
> ... 22 more
> Caused by: java.lang.RuntimeException: java.lang.NullPointerException
> at
> org.apache.hadoop.hive.ql.exec.ReduceSinkOperator.initializeOp(ReduceSinkOperator.java:215)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:380)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:464)
> at
> org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:420)
> at
> org.apache.hadoop.hive.ql.exec.GroupByOperator.initializeOp(GroupByOperator.java:427)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:380)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:464)
> at
> org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:420)
> at
> org.apache.hadoop.hive.ql.exec.SelectOperator.initializeOp(SelectOperator.java:65)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:380)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:464)
> at
> org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:420)
> at
> org.apache.hadoop.hive.ql.exec.TableScanOperator.initializeOp(TableScanOperator.java:193)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:380)
> at
> org.apache.hadoop.hive.ql.exec.MapOperator.initializeOp(MapOperator.java:425)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:380)
> at
> org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:133)
> ... 22 more
> Caused by: java.lang.NullPointerException
> at
> org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc.getExprString(ExprNodeGenericFuncDesc.java:154)
> at
> org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc.getExprString(ExprNodeGenericFuncDesc.java:154)
> at
> org.apache.hadoop.hive.ql.exec.ReduceSinkOperator.initializeOp(ReduceSinkOperator.java:148)
> ... 38 more
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)