You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by kg...@apache.org on 2018/06/11 06:35:28 UTC
[14/14] hive git commit: HIVE-16505: Support "unknown" boolean truth
value (Laszlo Bodor via Zoltan Haindrich)
HIVE-16505: Support "unknown" boolean truth value (Laszlo Bodor via Zoltan Haindrich)
Signed-off-by: Zoltan Haindrich <ki...@rxd.hu>
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/f37fef06
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/f37fef06
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/f37fef06
Branch: refs/heads/master
Commit: f37fef06f37a4bc5931eb6c9e63b48d2ae1182a6
Parents: 2842f88
Author: Laszlo Bodor <bo...@gmail.com>
Authored: Mon Jun 11 08:31:37 2018 +0200
Committer: Zoltan Haindrich <ki...@rxd.hu>
Committed: Mon Jun 11 08:31:37 2018 +0200
----------------------------------------------------------------------
.../org/apache/hadoop/hive/ql/parse/HiveLexer.g | 1 +
.../apache/hadoop/hive/ql/parse/HiveParser.g | 2 +
.../hadoop/hive/ql/parse/IdentifiersParser.g | 5 +-
.../test/queries/clientpositive/bool_unknown.q | 10 +++
.../results/clientpositive/bool_unknown.q.out | 65 ++++++++++++++++++++
5 files changed, 82 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/f37fef06/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g
index d4b5782..43ad7dd 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g
@@ -43,6 +43,7 @@ import org.apache.hadoop.hive.conf.HiveConf;
KW_TRUE : 'TRUE';
KW_FALSE : 'FALSE';
+KW_UNKNOWN : 'UNKNOWN';
KW_ALL : 'ALL';
KW_NONE: 'NONE';
KW_AND : 'AND';
http://git-wip-us.apache.org/repos/asf/hive/blob/f37fef06/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
index d4a0ed3..324c804 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
@@ -69,6 +69,7 @@ TOK_OP_NOT;
TOK_OP_LIKE;
TOK_TRUE;
TOK_FALSE;
+TOK_UNKNOWN;
TOK_TRANSFORM;
TOK_SERDE;
TOK_SERDENAME;
@@ -451,6 +452,7 @@ import org.apache.hadoop.hive.conf.HiveConf;
// Keywords
xlateMap.put("KW_TRUE", "TRUE");
xlateMap.put("KW_FALSE", "FALSE");
+ xlateMap.put("KW_UNKNOWN", "UNKNOWN");
xlateMap.put("KW_ALL", "ALL");
xlateMap.put("KW_NONE", "NONE");
xlateMap.put("KW_AND", "AND");
http://git-wip-us.apache.org/repos/asf/hive/blob/f37fef06/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g
index 55bd92d..7dc6146 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g
@@ -450,9 +450,11 @@ isCondition
: KW_NULL -> Identifier["isnull"]
| KW_TRUE -> Identifier["istrue"]
| KW_FALSE -> Identifier["isfalse"]
+ | KW_UNKNOWN -> Identifier["isnull"]
| KW_NOT KW_NULL -> Identifier["isnotnull"]
| KW_NOT KW_TRUE -> Identifier["isnottrue"]
| KW_NOT KW_FALSE -> Identifier["isnotfalse"]
+ | KW_NOT KW_UNKNOWN -> Identifier["isnotnull"]
;
precedenceUnaryPrefixExpression
@@ -663,7 +665,7 @@ precedenceOrExpression
booleanValue
:
- KW_TRUE^ | KW_FALSE^
+ KW_TRUE^ | KW_FALSE^ | KW_UNKNOWN^
;
booleanValueTok
@@ -835,6 +837,7 @@ nonReserved
| KW_REOPTIMIZATION
| KW_RESOURCE | KW_PLAN | KW_PLANS | KW_QUERY_PARALLELISM | KW_ACTIVATE | KW_MOVE | KW_DO
| KW_POOL | KW_ALLOC_FRACTION | KW_SCHEDULING_POLICY | KW_PATH | KW_MAPPING | KW_WORKLOAD | KW_MANAGEMENT | KW_ACTIVE | KW_UNMANAGED
+ | KW_UNKNOWN
;
http://git-wip-us.apache.org/repos/asf/hive/blob/f37fef06/ql/src/test/queries/clientpositive/bool_unknown.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/bool_unknown.q b/ql/src/test/queries/clientpositive/bool_unknown.q
new file mode 100644
index 0000000..159bab3
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/bool_unknown.q
@@ -0,0 +1,10 @@
+select assert_true(null is unknown);
+
+select assert_true(true is not unknown);
+select assert_true(false is not unknown);
+
+select assert_true((null = null) is unknown);
+select assert_true((null = false) is unknown);
+select assert_true((null = true) is unknown);
+
+select assert_true((select cast(null as boolean)) is unknown);
http://git-wip-us.apache.org/repos/asf/hive/blob/f37fef06/ql/src/test/results/clientpositive/bool_unknown.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/bool_unknown.q.out b/ql/src/test/results/clientpositive/bool_unknown.q.out
new file mode 100644
index 0000000..8e9b48c
--- /dev/null
+++ b/ql/src/test/results/clientpositive/bool_unknown.q.out
@@ -0,0 +1,65 @@
+PREHOOK: query: select assert_true(null is unknown)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select assert_true(null is unknown)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+NULL
+PREHOOK: query: select assert_true(true is not unknown)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select assert_true(true is not unknown)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+NULL
+PREHOOK: query: select assert_true(false is not unknown)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select assert_true(false is not unknown)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+NULL
+PREHOOK: query: select assert_true((null = null) is unknown)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select assert_true((null = null) is unknown)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+NULL
+PREHOOK: query: select assert_true((null = false) is unknown)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select assert_true((null = false) is unknown)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+NULL
+PREHOOK: query: select assert_true((null = true) is unknown)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select assert_true((null = true) is unknown)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+NULL
+Warning: Shuffle Join JOIN[17][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Stage-2:MAPRED' is a cross product
+Warning: Shuffle Join JOIN[14][tables = [$hdt$_0, $hdt$_1]] in Stage 'Stage-1:MAPRED' is a cross product
+PREHOOK: query: select assert_true((select cast(null as boolean)) is unknown)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select assert_true((select cast(null as boolean)) is unknown)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+NULL