Repository: hive
Updated Branches:
  refs/heads/master 812d75718 -> 0e54f51a3


HIVE-6590 : Hive does not work properly with boolean partition columns (wrong 
results and inserts to incorrect HDFS path) (Zoltan Haindrich via Ashutosh 
Chauhan)

Signed-off-by: Ashutosh Chauhan <hashut...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0e54f51a
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0e54f51a
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0e54f51a

Branch: refs/heads/master
Commit: 0e54f51a3bd38331ea1a1274cd133010c1444e78
Parents: 812d757
Author: Zoltan Haindrich <k...@rxd.hu>
Authored: Tue Feb 14 13:43:00 2017 -0800
Committer: Ashutosh Chauhan <hashut...@apache.org>
Committed: Thu Nov 9 09:14:50 2017 -0800

----------------------------------------------------------------------
 .../queries/clientpositive/partition_boolean.q  |  41 ++++
 ...ma_evol_text_nonvec_part_all_primitive.q.out |   8 +-
 ...chema_evol_text_vec_part_all_primitive.q.out |   8 +-
 ...ma_evol_text_vecrow_part_all_primitive.q.out |   8 +-
 .../clientpositive/partition_boolean.q.out      | 239 +++++++++++++++++++
 .../PrimitiveObjectInspectorUtils.java          |  22 +-
 .../TestPrimitiveObjectInspectorUtils.java      |  16 +-
 7 files changed, 327 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/0e54f51a/ql/src/test/queries/clientpositive/partition_boolean.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/partition_boolean.q 
b/ql/src/test/queries/clientpositive/partition_boolean.q
new file mode 100644
index 0000000..a3b8d53
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/partition_boolean.q
@@ -0,0 +1,41 @@
+-- SORT_QUERY_RESULTS
+
+CREATE TABLE broken (c int) PARTITIONED BY (b1 BOOLEAN, s STRING, b2 BOOLEAN, 
i INT);
+
+-- Insert a few variants of 'false' partition-key values.;
+INSERT INTO TABLE broken PARTITION(b1=false,s='a',b2=false,i=0) VALUES(1);
+INSERT INTO TABLE broken PARTITION(b1=FALSE,s='a',b2=false,i=0) VALUES(3);
+INSERT INTO TABLE broken PARTITION(b1='no',s='a',b2=False,i=0) VALUES(5);
+INSERT INTO TABLE broken PARTITION(b1='off',s='a',b2='0',i=0) VALUES(7);
+
+select * from broken where b1=false and b2=false;
+
+-- Insert a few variants of 'true' partition-key values.;
+INSERT INTO TABLE broken PARTITION(b1=true,s='a',b2=true,i=0) VALUES(2);
+INSERT INTO TABLE broken PARTITION(b1=TRUE,s='a',b2=true,i=0) VALUES(4);
+INSERT INTO TABLE broken PARTITION(b1='yes',s='a',b2=True,i=0) VALUES(6);
+INSERT INTO TABLE broken PARTITION(b1='1',s='a',b2='on',i=0) VALUES(8);
+
+select * from broken where b1 is true and b2 is true;
+
+-- Insert a few variants of mixed 'true'/'false' partition-key values.;
+INSERT INTO TABLE broken PARTITION(b1=false,s='a',b2=true,i=0) VALUES(100);
+INSERT INTO TABLE broken PARTITION(b1=FALSE,s='a',b2=TRUE,i=0) VALUES(1000);
+INSERT INTO TABLE broken PARTITION(b1=true,s='a',b2=false,i=0) VALUES(10000);
+INSERT INTO TABLE broken PARTITION(b1=tRUe,s='a',b2=fALSe,i=0) VALUES(100000);
+
+select * from broken where b1 is true and b2=false;
+select * from broken where b1=false and b2 is true;
+
+select count(*) from broken;
+select * from broken;
+
+show partitions broken;
+
+ALTER TABLE broken DROP PARTITION(b1=true,s='a',b2=true,i=0);
+
+show partitions broken;
+
+select count(*) from broken;
+select * from broken;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/0e54f51a/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_part_all_primitive.q.out
 
b/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_part_all_primitive.q.out
index 719d802..e984b91 100644
--- 
a/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_part_all_primitive.q.out
+++ 
b/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_part_all_primitive.q.out
@@ -299,14 +299,14 @@ POSTHOOK: Input: 
default@part_change_various_various_boolean_to_bigint@part=1
 insert_num     part    c1      c2      c3      c4      c5      c6      c7      
c8      c9      c10     c11     c12     c13     c14     c15     c16     c17     
c18     c19     c20     c21     c22     c23     c24     c25     c26     c27     
c28     c29     c30     c31     c32     c33     c34     c35     c36     c37     
c38     c39     c40     c41     c42     c43     c44     c45     c46     c47     
c48     c49     c50     c51     c52     c53     b
 101    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    -128    -128    -128    -128    -128    -128    -128    -128    
-128    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    -2147483648     -2147483648     
-2147483648     -2147483648     -2147483648     -2147483648     -2147483648     
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    new
 101    1       true    NULL    true    NULL    true    true    true    true    
true    1       NULL    0       NULL    -1      -1      NULL    -128    -128    
-128    84      1       -128    0       NULL    -1      -1      NULL    NULL    
NULL    NULL    -8620   1       -128    NULL    NULL    2147483647      
2147483647      NULL    -2147483648     -2147483648     -2147483648     
1272503892      1       -128    NULL    -2147483648     9223372036854775807     
9223372036854775807     NULL    NULL    NULL    NULL    134416490068    original
-102    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    127     127     127     127     127     127     127     127     
127     NULL    NULL    NULL    32767   32767   32767   32767   32767   32767   
32767   32767   NULL    NULL    NULL    NULL    2147483647      2147483647      
2147483647      2147483647      2147483647      2147483647      2147483647      
NULL    NULL    NULL    NULL    NULL    9223372036854775807     
9223372036854775807     9223372036854775807     9223372036854775807     
9223372036854775807     9223372036854775807     NULL    new
-102    1       true    true    true    true    true    true    true    true    
true    0       -1      -1      -1      0       0       NULL    127     127     
127     -38     0       127     -1      -1      0       0       NULL    32767   
32767   32767   7898    0       127     32767   -1      -2147483648     
-2147483648     NULL    2147483647      2147483647      2147483647      
1563893466      0       127     32767   2147483647      -9223372036854775808    
-9223372036854775808    NULL    9223372036854775807     9223372036854775807     
9223372036854775807     126117945050    original
+102    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    false   
NULL    NULL    127     127     127     127     127     127     127     127     
127     NULL    NULL    NULL    32767   32767   32767   32767   32767   32767   
32767   32767   NULL    NULL    NULL    NULL    2147483647      2147483647      
2147483647      2147483647      2147483647      2147483647      2147483647      
NULL    NULL    NULL    NULL    NULL    9223372036854775807     
9223372036854775807     9223372036854775807     9223372036854775807     
9223372036854775807     9223372036854775807     NULL    new
+102    1       true    true    true    true    true    true    true    false   
true    0       -1      -1      -1      0       0       NULL    127     127     
127     -38     0       127     -1      -1      0       0       NULL    32767   
32767   32767   7898    0       127     32767   -1      -2147483648     
-2147483648     NULL    2147483647      2147483647      2147483647      
1563893466      0       127     32767   2147483647      -9223372036854775808    
-9223372036854775808    NULL    9223372036854775807     9223372036854775807     
9223372036854775807     126117945050    original
 103    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    new
 103    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    false   
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    original
 104    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    23      23      23      23      23      23      23      23      
23      NULL    NULL    NULL    834     834     834     834     834     834     
834     834     NULL    NULL    NULL    NULL    203332  203332  203332  203332  
203332  203332  203332  NULL    NULL    NULL    NULL    NULL    888888847499264 
888888857923222 888888857923222 888888857923222 888888857923222 888888857923222 
NULL    new
 104    1       true    true    true    true    true    true    true    true    
true    1       66      68      -106    -100    30      NULL    23      23      
23      86      1       23      6724    3734    -100    30      NULL    834     
834     834     -12970  1       23      834     -1868624234     -100    30      
66475   203332  203332  203332  270912854       1       23      834     203332  
-100    30      66475   888888857923222 888888857923222 888888857923222 
270912854       original
-105    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    -99     -99     -99     -99     -99     -99     -99     -99     
-99     NULL    NULL    NULL    -28300  -28300  -28300  -28300  -28300  -28300  
-28300  -28300  NULL    NULL    NULL    NULL    -999992 -999992 -999992 -999992 
-999992 -999992 -999992 NULL    NULL    NULL    NULL    NULL    -222282153984   
-222282153733   -222282153733   -222282153733   -222282153733   -222282153733   
NULL    new
-105    1       true    true    true    true    NULL    true    true    true    
true    0       116     -56     -5      NULL    34      NULL    -99     -99     
-99     -41     0       -99     -16952  -32517  NULL    -19422  NULL    -28300  
-28300  -28300  -16681  0       -99     -28300  1056145659      NULL    46114   
9250340 -999992 -999992 -999992 663207639       0       -99     -28300  -999992 
NULL    46114   9250340 -222282153733   -222282153733   -222282153733   
663207639       original
+105    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    false   
NULL    NULL    -99     -99     -99     -99     -99     -99     -99     -99     
-99     NULL    NULL    NULL    -28300  -28300  -28300  -28300  -28300  -28300  
-28300  -28300  NULL    NULL    NULL    NULL    -999992 -999992 -999992 -999992 
-999992 -999992 -999992 NULL    NULL    NULL    NULL    NULL    -222282153984   
-222282153733   -222282153733   -222282153733   -222282153733   -222282153733   
NULL    new
+105    1       true    true    true    true    NULL    true    true    false   
true    0       116     -56     -5      NULL    34      NULL    -99     -99     
-99     -41     0       -99     -16952  -32517  NULL    -19422  NULL    -28300  
-28300  -28300  -16681  0       -99     -28300  1056145659      NULL    46114   
9250340 -999992 -999992 -999992 663207639       0       -99     -28300  -999992 
NULL    46114   9250340 -222282153733   -222282153733   -222282153733   
663207639       original
 PREHOOK: query: drop table part_change_various_various_boolean_to_bigint
 PREHOOK: type: DROPTABLE
 PREHOOK: Input: default@part_change_various_various_boolean_to_bigint

http://git-wip-us.apache.org/repos/asf/hive/blob/0e54f51a/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_part_all_primitive.q.out
 
b/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_part_all_primitive.q.out
index cd2f30b..ce9b015 100644
--- 
a/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_part_all_primitive.q.out
+++ 
b/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_part_all_primitive.q.out
@@ -325,14 +325,14 @@ POSTHOOK: Input: 
default@part_change_various_various_boolean_to_bigint@part=1
 insert_num     part    c1      c2      c3      c4      c5      c6      c7      
c8      c9      c10     c11     c12     c13     c14     c15     c16     c17     
c18     c19     c20     c21     c22     c23     c24     c25     c26     c27     
c28     c29     c30     c31     c32     c33     c34     c35     c36     c37     
c38     c39     c40     c41     c42     c43     c44     c45     c46     c47     
c48     c49     c50     c51     c52     c53     b
 101    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    -128    -128    -128    -128    -128    -128    -128    -128    
-128    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    -2147483648     -2147483648     
-2147483648     -2147483648     -2147483648     -2147483648     -2147483648     
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    new
 101    1       true    NULL    true    NULL    true    true    true    true    
true    1       NULL    0       NULL    -1      -1      NULL    -128    -128    
-128    84      1       -128    0       NULL    -1      -1      NULL    NULL    
NULL    NULL    -8620   1       -128    NULL    NULL    2147483647      
2147483647      NULL    -2147483648     -2147483648     -2147483648     
1272503892      1       -128    NULL    -2147483648     9223372036854775807     
9223372036854775807     NULL    NULL    NULL    NULL    134416490068    original
-102    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    127     127     127     127     127     127     127     127     
127     NULL    NULL    NULL    32767   32767   32767   32767   32767   32767   
32767   32767   NULL    NULL    NULL    NULL    2147483647      2147483647      
2147483647      2147483647      2147483647      2147483647      2147483647      
NULL    NULL    NULL    NULL    NULL    9223372036854775807     
9223372036854775807     9223372036854775807     9223372036854775807     
9223372036854775807     9223372036854775807     NULL    new
-102    1       true    true    true    true    true    true    true    true    
true    0       -1      -1      -1      0       0       NULL    127     127     
127     -38     0       127     -1      -1      0       0       NULL    32767   
32767   32767   7898    0       127     32767   -1      -2147483648     
-2147483648     NULL    2147483647      2147483647      2147483647      
1563893466      0       127     32767   2147483647      -9223372036854775808    
-9223372036854775808    NULL    9223372036854775807     9223372036854775807     
9223372036854775807     126117945050    original
+102    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    false   
NULL    NULL    127     127     127     127     127     127     127     127     
127     NULL    NULL    NULL    32767   32767   32767   32767   32767   32767   
32767   32767   NULL    NULL    NULL    NULL    2147483647      2147483647      
2147483647      2147483647      2147483647      2147483647      2147483647      
NULL    NULL    NULL    NULL    NULL    9223372036854775807     
9223372036854775807     9223372036854775807     9223372036854775807     
9223372036854775807     9223372036854775807     NULL    new
+102    1       true    true    true    true    true    true    true    false   
true    0       -1      -1      -1      0       0       NULL    127     127     
127     -38     0       127     -1      -1      0       0       NULL    32767   
32767   32767   7898    0       127     32767   -1      -2147483648     
-2147483648     NULL    2147483647      2147483647      2147483647      
1563893466      0       127     32767   2147483647      -9223372036854775808    
-9223372036854775808    NULL    9223372036854775807     9223372036854775807     
9223372036854775807     126117945050    original
 103    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    new
 103    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    false   
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    original
 104    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    23      23      23      23      23      23      23      23      
23      NULL    NULL    NULL    834     834     834     834     834     834     
834     834     NULL    NULL    NULL    NULL    203332  203332  203332  203332  
203332  203332  203332  NULL    NULL    NULL    NULL    NULL    888888847499264 
888888857923222 888888857923222 888888857923222 888888857923222 888888857923222 
NULL    new
 104    1       true    true    true    true    true    true    true    true    
true    1       66      68      -106    -100    30      NULL    23      23      
23      86      1       23      6724    3734    -100    30      NULL    834     
834     834     -12970  1       23      834     -1868624234     -100    30      
66475   203332  203332  203332  270912854       1       23      834     203332  
-100    30      66475   888888857923222 888888857923222 888888857923222 
270912854       original
-105    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    -99     -99     -99     -99     -99     -99     -99     -99     
-99     NULL    NULL    NULL    -28300  -28300  -28300  -28300  -28300  -28300  
-28300  -28300  NULL    NULL    NULL    NULL    -999992 -999992 -999992 -999992 
-999992 -999992 -999992 NULL    NULL    NULL    NULL    NULL    -222282153984   
-222282153733   -222282153733   -222282153733   -222282153733   -222282153733   
NULL    new
-105    1       true    true    true    true    NULL    true    true    true    
true    0       116     -56     -5      NULL    34      NULL    -99     -99     
-99     -41     0       -99     -16952  -32517  NULL    -19422  NULL    -28300  
-28300  -28300  -16681  0       -99     -28300  1056145659      NULL    46114   
9250340 -999992 -999992 -999992 663207639       0       -99     -28300  -999992 
NULL    46114   9250340 -222282153733   -222282153733   -222282153733   
663207639       original
+105    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    false   
NULL    NULL    -99     -99     -99     -99     -99     -99     -99     -99     
-99     NULL    NULL    NULL    -28300  -28300  -28300  -28300  -28300  -28300  
-28300  -28300  NULL    NULL    NULL    NULL    -999992 -999992 -999992 -999992 
-999992 -999992 -999992 NULL    NULL    NULL    NULL    NULL    -222282153984   
-222282153733   -222282153733   -222282153733   -222282153733   -222282153733   
NULL    new
+105    1       true    true    true    true    NULL    true    true    false   
true    0       116     -56     -5      NULL    34      NULL    -99     -99     
-99     -41     0       -99     -16952  -32517  NULL    -19422  NULL    -28300  
-28300  -28300  -16681  0       -99     -28300  1056145659      NULL    46114   
9250340 -999992 -999992 -999992 663207639       0       -99     -28300  -999992 
NULL    46114   9250340 -222282153733   -222282153733   -222282153733   
663207639       original
 PREHOOK: query: drop table part_change_various_various_boolean_to_bigint
 PREHOOK: type: DROPTABLE
 PREHOOK: Input: default@part_change_various_various_boolean_to_bigint

http://git-wip-us.apache.org/repos/asf/hive/blob/0e54f51a/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_part_all_primitive.q.out
 
b/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_part_all_primitive.q.out
index f22e5cf..2b77421 100644
--- 
a/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_part_all_primitive.q.out
+++ 
b/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_part_all_primitive.q.out
@@ -325,14 +325,14 @@ POSTHOOK: Input: 
default@part_change_various_various_boolean_to_bigint@part=1
 insert_num     part    c1      c2      c3      c4      c5      c6      c7      
c8      c9      c10     c11     c12     c13     c14     c15     c16     c17     
c18     c19     c20     c21     c22     c23     c24     c25     c26     c27     
c28     c29     c30     c31     c32     c33     c34     c35     c36     c37     
c38     c39     c40     c41     c42     c43     c44     c45     c46     c47     
c48     c49     c50     c51     c52     c53     b
 101    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    -128    -128    -128    -128    -128    -128    -128    -128    
-128    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    -2147483648     -2147483648     
-2147483648     -2147483648     -2147483648     -2147483648     -2147483648     
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    new
 101    1       true    NULL    true    NULL    true    true    true    true    
true    1       NULL    0       NULL    -1      -1      NULL    -128    -128    
-128    84      1       -128    0       NULL    -1      -1      NULL    NULL    
NULL    NULL    -8620   1       -128    NULL    NULL    2147483647      
2147483647      NULL    -2147483648     -2147483648     -2147483648     
1272503892      1       -128    NULL    -2147483648     9223372036854775807     
9223372036854775807     NULL    NULL    NULL    NULL    134416490068    original
-102    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    127     127     127     127     127     127     127     127     
127     NULL    NULL    NULL    32767   32767   32767   32767   32767   32767   
32767   32767   NULL    NULL    NULL    NULL    2147483647      2147483647      
2147483647      2147483647      2147483647      2147483647      2147483647      
NULL    NULL    NULL    NULL    NULL    9223372036854775807     
9223372036854775807     9223372036854775807     9223372036854775807     
9223372036854775807     9223372036854775807     NULL    new
-102    1       true    true    true    true    true    true    true    true    
true    0       -1      -1      -1      0       0       NULL    127     127     
127     -38     0       127     -1      -1      0       0       NULL    32767   
32767   32767   7898    0       127     32767   -1      -2147483648     
-2147483648     NULL    2147483647      2147483647      2147483647      
1563893466      0       127     32767   2147483647      -9223372036854775808    
-9223372036854775808    NULL    9223372036854775807     9223372036854775807     
9223372036854775807     126117945050    original
+102    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    false   
NULL    NULL    127     127     127     127     127     127     127     127     
127     NULL    NULL    NULL    32767   32767   32767   32767   32767   32767   
32767   32767   NULL    NULL    NULL    NULL    2147483647      2147483647      
2147483647      2147483647      2147483647      2147483647      2147483647      
NULL    NULL    NULL    NULL    NULL    9223372036854775807     
9223372036854775807     9223372036854775807     9223372036854775807     
9223372036854775807     9223372036854775807     NULL    new
+102    1       true    true    true    true    true    true    true    false   
true    0       -1      -1      -1      0       0       NULL    127     127     
127     -38     0       127     -1      -1      0       0       NULL    32767   
32767   32767   7898    0       127     32767   -1      -2147483648     
-2147483648     NULL    2147483647      2147483647      2147483647      
1563893466      0       127     32767   2147483647      -9223372036854775808    
-9223372036854775808    NULL    9223372036854775807     9223372036854775807     
9223372036854775807     126117945050    original
 103    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    new
 103    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    false   
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    original
 104    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    23      23      23      23      23      23      23      23      
23      NULL    NULL    NULL    834     834     834     834     834     834     
834     834     NULL    NULL    NULL    NULL    203332  203332  203332  203332  
203332  203332  203332  NULL    NULL    NULL    NULL    NULL    888888847499264 
888888857923222 888888857923222 888888857923222 888888857923222 888888857923222 
NULL    new
 104    1       true    true    true    true    true    true    true    true    
true    1       66      68      -106    -100    30      NULL    23      23      
23      86      1       23      6724    3734    -100    30      NULL    834     
834     834     -12970  1       23      834     -1868624234     -100    30      
66475   203332  203332  203332  270912854       1       23      834     203332  
-100    30      66475   888888857923222 888888857923222 888888857923222 
270912854       original
-105    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    true    
NULL    NULL    -99     -99     -99     -99     -99     -99     -99     -99     
-99     NULL    NULL    NULL    -28300  -28300  -28300  -28300  -28300  -28300  
-28300  -28300  NULL    NULL    NULL    NULL    -999992 -999992 -999992 -999992 
-999992 -999992 -999992 NULL    NULL    NULL    NULL    NULL    -222282153984   
-222282153733   -222282153733   -222282153733   -222282153733   -222282153733   
NULL    new
-105    1       true    true    true    true    NULL    true    true    true    
true    0       116     -56     -5      NULL    34      NULL    -99     -99     
-99     -41     0       -99     -16952  -32517  NULL    -19422  NULL    -28300  
-28300  -28300  -16681  0       -99     -28300  1056145659      NULL    46114   
9250340 -999992 -999992 -999992 663207639       0       -99     -28300  -999992 
NULL    46114   9250340 -222282153733   -222282153733   -222282153733   
663207639       original
+105    1       NULL    NULL    NULL    NULL    NULL    NULL    NULL    false   
NULL    NULL    -99     -99     -99     -99     -99     -99     -99     -99     
-99     NULL    NULL    NULL    -28300  -28300  -28300  -28300  -28300  -28300  
-28300  -28300  NULL    NULL    NULL    NULL    -999992 -999992 -999992 -999992 
-999992 -999992 -999992 NULL    NULL    NULL    NULL    NULL    -222282153984   
-222282153733   -222282153733   -222282153733   -222282153733   -222282153733   
NULL    new
+105    1       true    true    true    true    NULL    true    true    false   
true    0       116     -56     -5      NULL    34      NULL    -99     -99     
-99     -41     0       -99     -16952  -32517  NULL    -19422  NULL    -28300  
-28300  -28300  -16681  0       -99     -28300  1056145659      NULL    46114   
9250340 -999992 -999992 -999992 663207639       0       -99     -28300  -999992 
NULL    46114   9250340 -222282153733   -222282153733   -222282153733   
663207639       original
 PREHOOK: query: drop table part_change_various_various_boolean_to_bigint
 PREHOOK: type: DROPTABLE
 PREHOOK: Input: default@part_change_various_various_boolean_to_bigint

http://git-wip-us.apache.org/repos/asf/hive/blob/0e54f51a/ql/src/test/results/clientpositive/partition_boolean.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/partition_boolean.q.out 
b/ql/src/test/results/clientpositive/partition_boolean.q.out
new file mode 100644
index 0000000..4ef7c24
--- /dev/null
+++ b/ql/src/test/results/clientpositive/partition_boolean.q.out
@@ -0,0 +1,239 @@
+PREHOOK: query: CREATE TABLE broken (c int) PARTITIONED BY (b1 BOOLEAN, s 
STRING, b2 BOOLEAN, i INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@broken
+POSTHOOK: query: CREATE TABLE broken (c int) PARTITIONED BY (b1 BOOLEAN, s 
STRING, b2 BOOLEAN, i INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@broken
+PREHOOK: query: INSERT INTO TABLE broken 
PARTITION(b1=false,s='a',b2=false,i=0) VALUES(1)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=false/s=a/b2=false/i=0
+POSTHOOK: query: INSERT INTO TABLE broken 
PARTITION(b1=false,s='a',b2=false,i=0) VALUES(1)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=false/s=a/b2=false/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=false,s=a,b2=false,i=0).c EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, 
type:string, comment:), ]
+PREHOOK: query: INSERT INTO TABLE broken 
PARTITION(b1=FALSE,s='a',b2=false,i=0) VALUES(3)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=false/s=a/b2=false/i=0
+POSTHOOK: query: INSERT INTO TABLE broken 
PARTITION(b1=FALSE,s='a',b2=false,i=0) VALUES(3)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=false/s=a/b2=false/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=false,s=a,b2=false,i=0).c EXPRESSION 
[(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, 
type:string, comment:), ]
+PREHOOK: query: INSERT INTO TABLE broken PARTITION(b1='no',s='a',b2=False,i=0) 
VALUES(5)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=false/s=a/b2=false/i=0
+POSTHOOK: query: INSERT INTO TABLE broken 
PARTITION(b1='no',s='a',b2=False,i=0) VALUES(5)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=false/s=a/b2=false/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=false,s=a,b2=false,i=0).c EXPRESSION 
[(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, 
type:string, comment:), ]
+PREHOOK: query: INSERT INTO TABLE broken PARTITION(b1='off',s='a',b2='0',i=0) 
VALUES(7)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=false/s=a/b2=false/i=0
+POSTHOOK: query: INSERT INTO TABLE broken PARTITION(b1='off',s='a',b2='0',i=0) 
VALUES(7)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=false/s=a/b2=false/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=false,s=a,b2=false,i=0).c EXPRESSION 
[(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, 
type:string, comment:), ]
+PREHOOK: query: select * from broken where b1=false and b2=false
+PREHOOK: type: QUERY
+PREHOOK: Input: default@broken
+PREHOOK: Input: default@broken@b1=false/s=a/b2=false/i=0
+#### A masked pattern was here ####
+POSTHOOK: query: select * from broken where b1=false and b2=false
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@broken
+POSTHOOK: Input: default@broken@b1=false/s=a/b2=false/i=0
+#### A masked pattern was here ####
+1      false   a       false   0
+3      false   a       false   0
+5      false   a       false   0
+7      false   a       false   0
+PREHOOK: query: INSERT INTO TABLE broken PARTITION(b1=true,s='a',b2=true,i=0) 
VALUES(2)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=true/s=a/b2=true/i=0
+POSTHOOK: query: INSERT INTO TABLE broken PARTITION(b1=true,s='a',b2=true,i=0) 
VALUES(2)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=true/s=a/b2=true/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=true,s=a,b2=true,i=0).c EXPRESSION 
[(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, 
type:string, comment:), ]
+PREHOOK: query: INSERT INTO TABLE broken PARTITION(b1=TRUE,s='a',b2=true,i=0) 
VALUES(4)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=true/s=a/b2=true/i=0
+POSTHOOK: query: INSERT INTO TABLE broken PARTITION(b1=TRUE,s='a',b2=true,i=0) 
VALUES(4)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=true/s=a/b2=true/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=true,s=a,b2=true,i=0).c EXPRESSION 
[(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, 
type:string, comment:), ]
+PREHOOK: query: INSERT INTO TABLE broken PARTITION(b1='yes',s='a',b2=True,i=0) 
VALUES(6)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=true/s=a/b2=true/i=0
+POSTHOOK: query: INSERT INTO TABLE broken 
PARTITION(b1='yes',s='a',b2=True,i=0) VALUES(6)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=true/s=a/b2=true/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=true,s=a,b2=true,i=0).c EXPRESSION 
[(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, 
type:string, comment:), ]
+PREHOOK: query: INSERT INTO TABLE broken PARTITION(b1='1',s='a',b2='on',i=0) 
VALUES(8)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=true/s=a/b2=true/i=0
+POSTHOOK: query: INSERT INTO TABLE broken PARTITION(b1='1',s='a',b2='on',i=0) 
VALUES(8)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=true/s=a/b2=true/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=true,s=a,b2=true,i=0).c EXPRESSION 
[(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, 
type:string, comment:), ]
+PREHOOK: query: select * from broken where b1 is true and b2 is true
+PREHOOK: type: QUERY
+PREHOOK: Input: default@broken
+PREHOOK: Input: default@broken@b1=true/s=a/b2=true/i=0
+#### A masked pattern was here ####
+POSTHOOK: query: select * from broken where b1 is true and b2 is true
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@broken
+POSTHOOK: Input: default@broken@b1=true/s=a/b2=true/i=0
+#### A masked pattern was here ####
+2      true    a       true    0
+4      true    a       true    0
+6      true    a       true    0
+8      true    a       true    0
+PREHOOK: query: INSERT INTO TABLE broken PARTITION(b1=false,s='a',b2=true,i=0) 
VALUES(100)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=false/s=a/b2=true/i=0
+POSTHOOK: query: INSERT INTO TABLE broken 
PARTITION(b1=false,s='a',b2=true,i=0) VALUES(100)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=false/s=a/b2=true/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=false,s=a,b2=true,i=0).c EXPRESSION 
[(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, 
type:string, comment:), ]
+PREHOOK: query: INSERT INTO TABLE broken PARTITION(b1=FALSE,s='a',b2=TRUE,i=0) 
VALUES(1000)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=false/s=a/b2=true/i=0
+POSTHOOK: query: INSERT INTO TABLE broken 
PARTITION(b1=FALSE,s='a',b2=TRUE,i=0) VALUES(1000)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=false/s=a/b2=true/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=false,s=a,b2=true,i=0).c EXPRESSION 
[(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1,
 type:string, comment:), ]
+PREHOOK: query: INSERT INTO TABLE broken PARTITION(b1=true,s='a',b2=false,i=0) 
VALUES(10000)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=true/s=a/b2=false/i=0
+POSTHOOK: query: INSERT INTO TABLE broken 
PARTITION(b1=true,s='a',b2=false,i=0) VALUES(10000)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=true/s=a/b2=false/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=true,s=a,b2=false,i=0).c EXPRESSION 
[(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1,
 type:string, comment:), ]
+PREHOOK: query: INSERT INTO TABLE broken PARTITION(b1=tRUe,s='a',b2=fALSe,i=0) 
VALUES(100000)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@broken@b1=true/s=a/b2=false/i=0
+POSTHOOK: query: INSERT INTO TABLE broken 
PARTITION(b1=tRUe,s='a',b2=fALSe,i=0) VALUES(100000)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@broken@b1=true/s=a/b2=false/i=0
+POSTHOOK: Lineage: broken PARTITION(b1=true,s=a,b2=false,i=0).c EXPRESSION 
[(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1,
 type:string, comment:), ]
+PREHOOK: query: select * from broken where b1 is true and b2=false
+PREHOOK: type: QUERY
+PREHOOK: Input: default@broken
+PREHOOK: Input: default@broken@b1=true/s=a/b2=false/i=0
+#### A masked pattern was here ####
+POSTHOOK: query: select * from broken where b1 is true and b2=false
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@broken
+POSTHOOK: Input: default@broken@b1=true/s=a/b2=false/i=0
+#### A masked pattern was here ####
+10000  true    a       false   0
+100000 true    a       false   0
+PREHOOK: query: select * from broken where b1=false and b2 is true
+PREHOOK: type: QUERY
+PREHOOK: Input: default@broken
+PREHOOK: Input: default@broken@b1=false/s=a/b2=true/i=0
+#### A masked pattern was here ####
+POSTHOOK: query: select * from broken where b1=false and b2 is true
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@broken
+POSTHOOK: Input: default@broken@b1=false/s=a/b2=true/i=0
+#### A masked pattern was here ####
+100    false   a       true    0
+1000   false   a       true    0
+PREHOOK: query: select count(*) from broken
+PREHOOK: type: QUERY
+PREHOOK: Input: default@broken
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from broken
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@broken
+#### A masked pattern was here ####
+12
+PREHOOK: query: select * from broken
+PREHOOK: type: QUERY
+PREHOOK: Input: default@broken
+PREHOOK: Input: default@broken@b1=false/s=a/b2=false/i=0
+PREHOOK: Input: default@broken@b1=false/s=a/b2=true/i=0
+PREHOOK: Input: default@broken@b1=true/s=a/b2=false/i=0
+PREHOOK: Input: default@broken@b1=true/s=a/b2=true/i=0
+#### A masked pattern was here ####
+POSTHOOK: query: select * from broken
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@broken
+POSTHOOK: Input: default@broken@b1=false/s=a/b2=false/i=0
+POSTHOOK: Input: default@broken@b1=false/s=a/b2=true/i=0
+POSTHOOK: Input: default@broken@b1=true/s=a/b2=false/i=0
+POSTHOOK: Input: default@broken@b1=true/s=a/b2=true/i=0
+#### A masked pattern was here ####
+1      false   a       false   0
+100    false   a       true    0
+1000   false   a       true    0
+10000  true    a       false   0
+100000 true    a       false   0
+2      true    a       true    0
+3      false   a       false   0
+4      true    a       true    0
+5      false   a       false   0
+6      true    a       true    0
+7      false   a       false   0
+8      true    a       true    0
+PREHOOK: query: show partitions broken
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: default@broken
+POSTHOOK: query: show partitions broken
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: default@broken
+b1=false/s=a/b2=false/i=0
+b1=false/s=a/b2=true/i=0
+b1=true/s=a/b2=false/i=0
+b1=true/s=a/b2=true/i=0
+PREHOOK: query: ALTER TABLE broken DROP PARTITION(b1=true,s='a',b2=true,i=0)
+PREHOOK: type: ALTERTABLE_DROPPARTS
+PREHOOK: Input: default@broken
+PREHOOK: Output: default@broken@b1=true/s=a/b2=true/i=0
+POSTHOOK: query: ALTER TABLE broken DROP PARTITION(b1=true,s='a',b2=true,i=0)
+POSTHOOK: type: ALTERTABLE_DROPPARTS
+POSTHOOK: Input: default@broken
+POSTHOOK: Output: default@broken@b1=true/s=a/b2=true/i=0
+PREHOOK: query: show partitions broken
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: default@broken
+POSTHOOK: query: show partitions broken
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: default@broken
+b1=false/s=a/b2=false/i=0
+b1=false/s=a/b2=true/i=0
+b1=true/s=a/b2=false/i=0
+PREHOOK: query: select count(*) from broken
+PREHOOK: type: QUERY
+PREHOOK: Input: default@broken
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from broken
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@broken
+#### A masked pattern was here ####
+8
+PREHOOK: query: select * from broken
+PREHOOK: type: QUERY
+PREHOOK: Input: default@broken
+PREHOOK: Input: default@broken@b1=false/s=a/b2=false/i=0
+PREHOOK: Input: default@broken@b1=false/s=a/b2=true/i=0
+PREHOOK: Input: default@broken@b1=true/s=a/b2=false/i=0
+#### A masked pattern was here ####
+POSTHOOK: query: select * from broken
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@broken
+POSTHOOK: Input: default@broken@b1=false/s=a/b2=false/i=0
+POSTHOOK: Input: default@broken@b1=false/s=a/b2=true/i=0
+POSTHOOK: Input: default@broken@b1=true/s=a/b2=false/i=0
+#### A masked pattern was here ####
+1      false   a       false   0
+100    false   a       true    0
+1000   false   a       true    0
+10000  true    a       false   0
+100000 true    a       false   0
+3      false   a       false   0
+5      false   a       false   0
+7      false   a       false   0

http://git-wip-us.apache.org/repos/asf/hive/blob/0e54f51a/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
----------------------------------------------------------------------
diff --git 
a/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
 
b/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
index 9f7c318..6a4733f 100644
--- 
a/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
+++ 
b/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
@@ -532,10 +532,10 @@ public final class PrimitiveObjectInspectorUtils {
       StringObjectInspector soi = (StringObjectInspector) oi;
       if (soi.preferWritable()) {
         Text t = soi.getPrimitiveWritableObject(o);
-        result = t.getLength() != 0;
+        result = parseBoolean(t);
       } else {
         String s = soi.getPrimitiveJavaObject(o);
-        result = s.length() != 0;
+        result = parseBoolean(s);
       }
       break;
     case TIMESTAMP:
@@ -554,6 +554,24 @@ public final class PrimitiveObjectInspectorUtils {
     return result;
   }
 
+
+  private static final String falseBooleans[] = { "false", "no", "off", "0", 
"" };
+
+  private static boolean parseBoolean(String s) {
+    for(int i=0;i<falseBooleans.length;i++){
+      if(falseBooleans[i].equalsIgnoreCase(s))
+        return false;
+    }
+    return true;
+  }
+
+  private static boolean parseBoolean(Text t) {
+    if(t.getLength()>5)
+      return true;
+    String strVal=t.toString();
+    return parseBoolean(strVal);
+  }
+
   /**
    * Get the byte value out of a primitive object. Note that
    * NullPointerException will be thrown if o is null. Note that

http://git-wip-us.apache.org/repos/asf/hive/blob/0e54f51a/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java
----------------------------------------------------------------------
diff --git 
a/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java
 
b/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java
index ca37b1a..9d86a54 100644
--- 
a/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java
+++ 
b/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java
@@ -27,7 +27,6 @@ import java.util.TimeZone;
 import org.apache.hadoop.hive.common.type.HiveChar;
 import org.apache.hadoop.hive.common.type.HiveDecimal;
 import org.apache.hadoop.hive.common.type.HiveVarchar;
-import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils.PrimitiveGrouping;
@@ -223,4 +222,19 @@ public class TestPrimitiveObjectInspectorUtils extends 
TestCase {
     DateFormat localDateFormat = new SimpleDateFormat("yyyy-MM-dd 
HH:mm:ss.SSS");
     assertEquals("2015-02-07 00:00:00.000", 
localDateFormat.format(PrimitiveObjectInspectorUtils.getTimestampFromString("2015-02-07")));
   }
+
+  @Test
+  public void testGetBoolean() {
+    String mustEvaluateToTrue[] = { "yes", "Yes", "ON", "on", "True", "1", 
"ANYTHING?" };
+    String mustEvaluateToFalse[] = { "", "No", "OFF", "FaLsE", "0" };
+
+    for (String falseStr : mustEvaluateToFalse) {
+      assertFalse(falseStr, PrimitiveObjectInspectorUtils.getBoolean(falseStr,
+          PrimitiveObjectInspectorFactory.javaStringObjectInspector));
+    }
+    for (String trueStr : mustEvaluateToTrue) {
+      assertTrue(trueStr, PrimitiveObjectInspectorUtils.getBoolean(trueStr,
+          PrimitiveObjectInspectorFactory.javaStringObjectInspector));
+    }
+  }
 }

Reply via email to