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)); + } + } }