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

Zoltan Haindrich commented on HIVE-6590:
----------------------------------------

[~ashutoshc] I'm not sure what to do now :)

I totally aggree that raising errors for this would be problematic...it would 
cause more problems than it would solve...I would recommend to change the 
behaviour to a half-way solution - which would even comply to the standard 
more, by giving the expected results when the case is defined; but instead of 
errors - retains the old behaviour for all other cases.

Surprisingly in the schema evolution test the string column contained 'true' 
and 'false' strings, and the change in those q.out files are the result of the 
fact that now 'false' is parsed as 'false'.

I'll attach patch#4 which covers this change; if this is still too much, I'll 
do the partition parser only change.

> Hive does not work properly with boolean partition columns (wrong results and 
> inserts to incorrect HDFS path)
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-6590
>                 URL: https://issues.apache.org/jira/browse/HIVE-6590
>             Project: Hive
>          Issue Type: Bug
>          Components: Database/Schema, Metastore
>    Affects Versions: 0.10.0
>            Reporter: Lenni Kuff
>            Assignee: Zoltan Haindrich
>         Attachments: HIVE-6590.1.patch, HIVE-6590.2.patch, HIVE-6590.3.patch, 
> HIVE-6590.4.patch
>
>
> Hive does not work properly with boolean partition columns. Queries return 
> wrong results and also insert to incorrect HDFS paths.
> {code}
> create table bool_part(int_col int) partitioned by(bool_col boolean);
> # This works, creating 3 unique partitions!
> ALTER TABLE bool_table ADD PARTITION (bool_col=FALSE);
> ALTER TABLE bool_table ADD PARTITION (bool_col=false);
> ALTER TABLE bool_table ADD PARTITION (bool_col=False);
> {code}
> The first problem is that Hive cannot filter on a bool partition key column. 
> "select * from bool_part" returns the correct results, but if you apply a 
> filter on the bool partition key column hive won't return any results.
> The second problem is that Hive seems to just call "toString()" on the 
> boolean literal value. This means you can end up with multiple partitions 
> (FALSE, false, FaLSE, etc) mapping to the literal value 'FALSE'. For example, 
> if you can add three partition in have for the same logic value "false" doing:
> ALTER TABLE bool_table ADD PARTITION (bool_col=FALSE) -> 
> /test-warehouse/bool_table/bool_col=FALSE/
> ALTER TABLE bool_table ADD PARTITION (bool_col=false) -> 
> /test-warehouse/bool_table/bool_col=false/
> ALTER TABLE bool_table ADD PARTITION (bool_col=False) -> 
> /test-warehouse/bool_table/bool_col=False/



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to