diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 2da3786d7c..8cd763a4cf 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -12231,8 +12231,10 @@ private ASTNode rewriteASTWithMaskAndFilter(TableMask tableMask, ASTNode ast, To 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 ql/src/test/queries/clientnegative/stored_as_quoting.q ql/src/test/queries/clientnegative/stored_as_quoting.q new file mode 100644 index 0000000000..3994b77d96 --- /dev/null +++ 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 ql/src/test/queries/clientnegative/stored_as_quoting2.q ql/src/test/queries/clientnegative/stored_as_quoting2.q new file mode 100644 index 0000000000..05c05cbf6d --- /dev/null +++ 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 ql/src/test/queries/clientpositive/masking_reserved.q ql/src/test/queries/clientpositive/masking_reserved.q index bf8fc1ece8..fe3e3f0949 100644 --- ql/src/test/queries/clientpositive/masking_reserved.q +++ 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 ql/src/test/results/clientnegative/stored_as_quoting.q.out ql/src/test/results/clientnegative/stored_as_quoting.q.out new file mode 100644 index 0000000000..9501e6417a --- /dev/null +++ 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 ql/src/test/results/clientnegative/stored_as_quoting2.q.out ql/src/test/results/clientnegative/stored_as_quoting2.q.out new file mode 100644 index 0000000000..504577aec9 --- /dev/null +++ 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 ql/src/test/results/clientpositive/masking_reserved.q.out ql/src/test/results/clientpositive/masking_reserved.q.out index e174f6cd2c..11d81cde39 100644 --- ql/src/test/results/clientpositive/masking_reserved.q.out +++ 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