[
https://issues.apache.org/jira/browse/HIVE-16609?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Dai updated HIVE-16609:
------------------------------
Description:
A variation of alter_partition_change_col.q produces wrong result:
{code}
SET hive.exec.dynamic.partition.mode = nonstrict;
create table alter_partition_change_col0 (c1 string, c2 string);
load data local inpath 'dec.txt' overwrite into table
alter_partition_change_col0;
create table alter_partition_change_col1 (c1 string, c2 string) partitioned by
(p1 string comment 'Column p1', p2 string comment 'Column p2');
insert overwrite table alter_partition_change_col1 partition (p1, p2)
select c1, c2, 'abc', '123' from alter_partition_change_col0
union all
select c1, c2, cast(null as string), '123' from alter_partition_change_col0;
select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__'
or lower(p1)='a';
{code}
The "select" statement does not produce the rows containing
"__HIVE_DEFAULT_PARTITION__".
We need another condition containing a udf so the condition is not recognized
by PartFilterExprUtil.makeExpressionTree in ObjectStore. Looks like HIVE-11208
breaks it.
was:
A variation of drop_partitions_filter4.q produces wrong result:
{code}
create table ptestfilter (a string, b int) partitioned by (c string, d int);
INSERT OVERWRITE TABLE ptestfilter PARTITION (c,d) select 'Col1', 1, null, null;
INSERT OVERWRITE TABLE ptestfilter PARTITION (c,d) select 'Col2', 2, null, 2;
INSERT OVERWRITE TABLE ptestfilter PARTITION (c,d) select 'Col3', 3, 'Uganda',
null;
select * from ptestfilter where c='__HIVE_DEFAULT_PARTITION__' or lower(c)='a';
{code}
The "select" statement does not produce the rows containing
"__HIVE_DEFAULT_PARTITION__".
Note "select * from ptestfilter where c is null or lower(c)='a';" works fine.
In the query, c is a non-string partition column, we need another condition
containing a udf so the condition is not recognized by
PartFilterExprUtil.makeExpressionTree in ObjectStore. HIVE-11208/HIVE-15923 is
addressing a similar issue in drop partition, however, select is not covered.
> col='__HIVE_DEFAULT_PARTITION__' condition in select statement may produce
> wrong result
> ---------------------------------------------------------------------------------------
>
> Key: HIVE-16609
> URL: https://issues.apache.org/jira/browse/HIVE-16609
> Project: Hive
> Issue Type: Bug
> Components: Metastore
> Reporter: Daniel Dai
> Assignee: Daniel Dai
>
> A variation of alter_partition_change_col.q produces wrong result:
> {code}
> SET hive.exec.dynamic.partition.mode = nonstrict;
> create table alter_partition_change_col0 (c1 string, c2 string);
> load data local inpath 'dec.txt' overwrite into table
> alter_partition_change_col0;
> create table alter_partition_change_col1 (c1 string, c2 string) partitioned
> by (p1 string comment 'Column p1', p2 string comment 'Column p2');
> insert overwrite table alter_partition_change_col1 partition (p1, p2)
> select c1, c2, 'abc', '123' from alter_partition_change_col0
> union all
> select c1, c2, cast(null as string), '123' from alter_partition_change_col0;
> select * from alter_partition_change_col1 where
> p1='__HIVE_DEFAULT_PARTITION__' or lower(p1)='a';
> {code}
> The "select" statement does not produce the rows containing
> "__HIVE_DEFAULT_PARTITION__".
> We need another condition containing a udf so the condition is not recognized
> by PartFilterExprUtil.makeExpressionTree in ObjectStore. Looks like
> HIVE-11208 breaks it.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)