You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2017/11/09 17:15:30 UTC

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

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 <ha...@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 <ki...@rxd.hu>
Authored: Tue Feb 14 13:43:00 2017 -0800
Committer: Ashutosh Chauhan <ha...@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));
+    }
+  }
 }