You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jc...@apache.org on 2020/05/03 15:17:58 UTC
[hive] branch master updated: HIVE-23355: Fix quoting behavior when
masking is enabled (John Sherman, reviewed by Jesus Camacho Rodriguez)
This is an automated email from the ASF dual-hosted git repository.
jcamacho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 69d036f HIVE-23355: Fix quoting behavior when masking is enabled (John Sherman, reviewed by Jesus Camacho Rodriguez)
69d036f is described below
commit 69d036fced323ae4d6cd3158c282d758e1a8ee2c
Author: John Sherman <jf...@cloudera.com>
AuthorDate: Sun May 3 08:09:56 2020 -0700
HIVE-23355: Fix quoting behavior when masking is enabled (John Sherman, reviewed by Jesus Camacho Rodriguez)
---
.../java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 6 ++++--
ql/src/test/queries/clientnegative/stored_as_quoting.q | 4 ++++
ql/src/test/queries/clientnegative/stored_as_quoting2.q | 4 ++++
ql/src/test/queries/clientpositive/masking_reserved.q | 1 +
ql/src/test/results/clientnegative/stored_as_quoting.q.out | 1 +
ql/src/test/results/clientnegative/stored_as_quoting2.q.out | 1 +
ql/src/test/results/clientpositive/masking_reserved.q.out | 10 ++++++++++
7 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 2da3786..8cd763a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -12231,8 +12231,10 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
ast.getTokenStartIndex(), ast.getTokenStopIndex());
ASTNode rewrittenTree;
try {
- rewrittenTree = ParseUtils.parse(rewrittenQuery);
- } catch (ParseException e) {
+ // We pass a new empty context with our HiveConf so the lexer can
+ // detect if allowQuotedId is enabled.
+ rewrittenTree = ParseUtils.parse(rewrittenQuery, new Context(conf));
+ } catch (ParseException | IOException e) {
throw new SemanticException(e);
}
return rewrittenTree;
diff --git a/ql/src/test/queries/clientnegative/stored_as_quoting.q b/ql/src/test/queries/clientnegative/stored_as_quoting.q
new file mode 100644
index 0000000..3994b77
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/stored_as_quoting.q
@@ -0,0 +1,4 @@
+--- Verifying that the proper identifier makes it to processStorageFormat and
+--- displayed in the SemanticException.
+--- This should be DATE in the SemanticException
+create temporary table quoted_date(i int) stored as `DATE`;
diff --git a/ql/src/test/queries/clientnegative/stored_as_quoting2.q b/ql/src/test/queries/clientnegative/stored_as_quoting2.q
new file mode 100644
index 0000000..05c05cb
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/stored_as_quoting2.q
@@ -0,0 +1,4 @@
+--- Verifying that the proper identifier makes it to processStorageFormat and
+--- displayed in the SemanticException.
+--- This should be `ORC` in the SemanticException
+create temporary table quoted_orc(i int) stored as ```ORC```;
diff --git a/ql/src/test/queries/clientpositive/masking_reserved.q b/ql/src/test/queries/clientpositive/masking_reserved.q
index bf8fc1e..fe3e3f0 100644
--- a/ql/src/test/queries/clientpositive/masking_reserved.q
+++ b/ql/src/test/queries/clientpositive/masking_reserved.q
@@ -5,6 +5,7 @@ set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.autho
create table keyword_test_off (id int, `etad` string, key int);
create table keyword_test_on (id int, `date` string, key int);
create table masking_test_n_masking_reserved (id int, value string, key int);
+create temporary table masking_test_n_masking_temp stored as orc as select * from masking_test_n_masking_reserved;
explain select a.`etad`, b.value from keyword_test_off a join masking_test_n_masking_reserved b on b.id = a.id;
select a.`etad`, b.value from keyword_test_off a join masking_test_n_masking_reserved b on b.id = a.id;
diff --git a/ql/src/test/results/clientnegative/stored_as_quoting.q.out b/ql/src/test/results/clientnegative/stored_as_quoting.q.out
new file mode 100644
index 0000000..9501e64
--- /dev/null
+++ b/ql/src/test/results/clientnegative/stored_as_quoting.q.out
@@ -0,0 +1 @@
+FAILED: SemanticException Unrecognized file format in STORED AS clause: 'DATE'
diff --git a/ql/src/test/results/clientnegative/stored_as_quoting2.q.out b/ql/src/test/results/clientnegative/stored_as_quoting2.q.out
new file mode 100644
index 0000000..504577a
--- /dev/null
+++ b/ql/src/test/results/clientnegative/stored_as_quoting2.q.out
@@ -0,0 +1 @@
+FAILED: SemanticException Unrecognized file format in STORED AS clause: '`ORC`'
diff --git a/ql/src/test/results/clientpositive/masking_reserved.q.out b/ql/src/test/results/clientpositive/masking_reserved.q.out
index e174f6c..11d81cd 100644
--- a/ql/src/test/results/clientpositive/masking_reserved.q.out
+++ b/ql/src/test/results/clientpositive/masking_reserved.q.out
@@ -22,6 +22,16 @@ POSTHOOK: query: create table masking_test_n_masking_reserved (id int, value str
POSTHOOK: type: CREATETABLE
POSTHOOK: Output: database:default
POSTHOOK: Output: default@masking_test_n_masking_reserved
+PREHOOK: query: create temporary table masking_test_n_masking_temp stored as orc as select * from masking_test_n_masking_reserved
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@masking_test_n_masking_reserved
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test_n_masking_temp
+POSTHOOK: query: create temporary table masking_test_n_masking_temp stored as orc as select * from masking_test_n_masking_reserved
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@masking_test_n_masking_reserved
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test_n_masking_temp
PREHOOK: query: explain select a.`etad`, b.value from keyword_test_off a join masking_test_n_masking_reserved b on b.id = a.id
PREHOOK: type: QUERY
PREHOOK: Input: default@keyword_test_off