Eugene Koifman created HIVE-10833:
-------------------------------------
Summary: RowResolver looks mangled with CBO
Key: HIVE-10833
URL: https://issues.apache.org/jira/browse/HIVE-10833
Project: Hive
Issue Type: Bug
Affects Versions: 1.3.0
Reporter: Eugene Koifman
Assignee: Laljo John Pullokkaran
While working on HIVE-10828 I noticed that internal state of RowResolver looks
odd when CBO is enabled.
Consider the script below.
{noformat}
set hive.enforce.bucketing=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.cbo.enable=false;
drop table if exists acid_partitioned;
create table acid_partitioned (a int, c string)
partitioned by (p int)
clustered by (a) into 1 buckets;
insert into acid_partitioned partition (p) (a,p) values(1,1);
{noformat}
With CBO on,
if you put a break point in {noformat}SemanticAnalyzer.genSelectPlan(String
dest, ASTNode selExprList, QB qb, Operator<?> input,
Operator<?> inputForSelectStar, boolean outerLV){noformat} at line
_selectStar = selectStar && exprList.getChildCount() == posn + 1;_
(currently 3865) and examine _out_rwsch.rslvMap_ variable looks like
{noformat}{null={values__tmp__table__1.tmp_values_col1=_col0: string,
values__tmp__table__1.tmp_values_col2=_col1: string}}{noformat}
with CBO disabled, the same _out_rwsch.rslvMap_ looks like
{noformat}{values__tmp__table__1={tmp_values_col1=_col0: string,
tmp_values_col2=_col1: string}}{noformat}
The _out_rwsch.invRslvMap_ also differs in the same way.
It seems that the version you get with CBO off is the correct one since
_insert into acid_partitioned partition (p) (a,p) values(1,1)_ is rewritten to
_insert into acid_partitioned partition (p) (a,p) select * from
values__tmp__table__1_
CC [~ashutoshc]
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)