This is an automated email from the ASF dual-hosted git repository.
ayushsaxena 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 52011ce2aff HIVE-27825: Better error message for an empty quoted
identifier (#4829). (okumin, reviewed by Ayush Saxena)
52011ce2aff is described below
commit 52011ce2aff57771f90345c6292da683836799e9
Author: okumin <[email protected]>
AuthorDate: Mon Oct 30 13:07:39 2023 +0900
HIVE-27825: Better error message for an empty quoted identifier (#4829).
(okumin, reviewed by Ayush Saxena)
---
parser/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g | 2 +-
parser/src/java/org/apache/hadoop/hive/ql/parse/HiveLexerStandard.g | 4 ++--
.../test/queries/clientnegative/empty_quoted_identifier_column_name.q | 1 +
.../empty_quoted_identifier_column_name_standard_backtick.q | 2 ++
.../empty_quoted_identifier_column_name_standard_double_quote.q | 2 ++
.../test/queries/clientnegative/empty_quoted_identifier_table_name.q | 1 +
.../empty_quoted_identifier_table_name_standard_backtick.q | 2 ++
.../empty_quoted_identifier_table_name_standard_double_quote.q | 2 ++
.../results/clientnegative/empty_quoted_identifier_column_name.q.out | 1 +
.../empty_quoted_identifier_column_name_standard_backtick.q.out | 1 +
.../empty_quoted_identifier_column_name_standard_double_quote.q.out | 1 +
.../results/clientnegative/empty_quoted_identifier_table_name.q.out | 1 +
.../empty_quoted_identifier_table_name_standard_backtick.q.out | 1 +
.../empty_quoted_identifier_table_name_standard_double_quote.q.out | 1 +
14 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g
b/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g
index fff0fdade05..f3497d9edee 100644
--- a/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g
+++ b/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g
@@ -35,5 +35,5 @@ StringLiteral
fragment
QuotedIdentifier
:
- ('`' ( '``' | ~('`') )* '`') {
setText(StringUtils.replace(getText().substring(1, getText().length() -1 ),
"``", "`")); }
+ ('`' ( '``' | ~('`') )+ '`') {
setText(StringUtils.replace(getText().substring(1, getText().length() -1 ),
"``", "`")); }
;
diff --git
a/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveLexerStandard.g
b/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveLexerStandard.g
index 466b20014b6..b1b1e4aa65d 100644
--- a/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveLexerStandard.g
+++ b/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveLexerStandard.g
@@ -35,6 +35,6 @@ StringLiteral
fragment
QuotedIdentifier
:
- ('"' ( '""' | ~('"') )* '"') {
setText(StringUtils.replace(getText().substring(1, getText().length() -1 ),
"\"\"", "\"")); }
- | ('`' ( '``' | ~('`') )* '`') {
setText(StringUtils.replace(getText().substring(1, getText().length() -1 ),
"``", "`")); }
+ ('"' ( '""' | ~('"') )+ '"') {
setText(StringUtils.replace(getText().substring(1, getText().length() -1 ),
"\"\"", "\"")); }
+ | ('`' ( '``' | ~('`') )+ '`') {
setText(StringUtils.replace(getText().substring(1, getText().length() -1 ),
"``", "`")); }
;
diff --git
a/ql/src/test/queries/clientnegative/empty_quoted_identifier_column_name.q
b/ql/src/test/queries/clientnegative/empty_quoted_identifier_column_name.q
new file mode 100644
index 00000000000..8dccc381acf
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/empty_quoted_identifier_column_name.q
@@ -0,0 +1 @@
+select `` from `test_database`.`test_table`
diff --git
a/ql/src/test/queries/clientnegative/empty_quoted_identifier_column_name_standard_backtick.q
b/ql/src/test/queries/clientnegative/empty_quoted_identifier_column_name_standard_backtick.q
new file mode 100644
index 00000000000..7c4ede22cc4
--- /dev/null
+++
b/ql/src/test/queries/clientnegative/empty_quoted_identifier_column_name_standard_backtick.q
@@ -0,0 +1,2 @@
+set hive.support.quoted.identifiers=standard;
+select `` from `test_database`.`test_table`
diff --git
a/ql/src/test/queries/clientnegative/empty_quoted_identifier_column_name_standard_double_quote.q
b/ql/src/test/queries/clientnegative/empty_quoted_identifier_column_name_standard_double_quote.q
new file mode 100644
index 00000000000..f6b66651d96
--- /dev/null
+++
b/ql/src/test/queries/clientnegative/empty_quoted_identifier_column_name_standard_double_quote.q
@@ -0,0 +1,2 @@
+set hive.support.quoted.identifiers=standard;
+select "" from "test_database"."test_table"
diff --git
a/ql/src/test/queries/clientnegative/empty_quoted_identifier_table_name.q
b/ql/src/test/queries/clientnegative/empty_quoted_identifier_table_name.q
new file mode 100644
index 00000000000..245892d9bee
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/empty_quoted_identifier_table_name.q
@@ -0,0 +1 @@
+select * from `test_database`.``;
diff --git
a/ql/src/test/queries/clientnegative/empty_quoted_identifier_table_name_standard_backtick.q
b/ql/src/test/queries/clientnegative/empty_quoted_identifier_table_name_standard_backtick.q
new file mode 100644
index 00000000000..b1ba96fa64a
--- /dev/null
+++
b/ql/src/test/queries/clientnegative/empty_quoted_identifier_table_name_standard_backtick.q
@@ -0,0 +1,2 @@
+set hive.support.quoted.identifiers=standard;
+select * from `test_database`.``;
diff --git
a/ql/src/test/queries/clientnegative/empty_quoted_identifier_table_name_standard_double_quote.q
b/ql/src/test/queries/clientnegative/empty_quoted_identifier_table_name_standard_double_quote.q
new file mode 100644
index 00000000000..3d5a8a4921f
--- /dev/null
+++
b/ql/src/test/queries/clientnegative/empty_quoted_identifier_table_name_standard_double_quote.q
@@ -0,0 +1,2 @@
+set hive.support.quoted.identifiers=standard;
+select * from "test_database"."";
diff --git
a/ql/src/test/results/clientnegative/empty_quoted_identifier_column_name.q.out
b/ql/src/test/results/clientnegative/empty_quoted_identifier_column_name.q.out
new file mode 100644
index 00000000000..0635ad3b29e
--- /dev/null
+++
b/ql/src/test/results/clientnegative/empty_quoted_identifier_column_name.q.out
@@ -0,0 +1 @@
+FAILED: ParseException line 1:10 cannot recognize input near 'from'
'test_database' '.' in select clause
diff --git
a/ql/src/test/results/clientnegative/empty_quoted_identifier_column_name_standard_backtick.q.out
b/ql/src/test/results/clientnegative/empty_quoted_identifier_column_name_standard_backtick.q.out
new file mode 100644
index 00000000000..0da914f6b0a
--- /dev/null
+++
b/ql/src/test/results/clientnegative/empty_quoted_identifier_column_name_standard_backtick.q.out
@@ -0,0 +1 @@
+FAILED: ParseException line 2:10 cannot recognize input near 'from'
'test_database' '.' in select clause
diff --git
a/ql/src/test/results/clientnegative/empty_quoted_identifier_column_name_standard_double_quote.q.out
b/ql/src/test/results/clientnegative/empty_quoted_identifier_column_name_standard_double_quote.q.out
new file mode 100644
index 00000000000..0da914f6b0a
--- /dev/null
+++
b/ql/src/test/results/clientnegative/empty_quoted_identifier_column_name_standard_double_quote.q.out
@@ -0,0 +1 @@
+FAILED: ParseException line 2:10 cannot recognize input near 'from'
'test_database' '.' in select clause
diff --git
a/ql/src/test/results/clientnegative/empty_quoted_identifier_table_name.q.out
b/ql/src/test/results/clientnegative/empty_quoted_identifier_table_name.q.out
new file mode 100644
index 00000000000..33f9b4b1692
--- /dev/null
+++
b/ql/src/test/results/clientnegative/empty_quoted_identifier_table_name.q.out
@@ -0,0 +1 @@
+FAILED: ParseException line 1:32 cannot recognize input near 'test_database'
'.' '<EOF>' in table name
diff --git
a/ql/src/test/results/clientnegative/empty_quoted_identifier_table_name_standard_backtick.q.out
b/ql/src/test/results/clientnegative/empty_quoted_identifier_table_name_standard_backtick.q.out
new file mode 100644
index 00000000000..b9c938633b0
--- /dev/null
+++
b/ql/src/test/results/clientnegative/empty_quoted_identifier_table_name_standard_backtick.q.out
@@ -0,0 +1 @@
+FAILED: ParseException line 2:32 cannot recognize input near 'test_database'
'.' '<EOF>' in table name
diff --git
a/ql/src/test/results/clientnegative/empty_quoted_identifier_table_name_standard_double_quote.q.out
b/ql/src/test/results/clientnegative/empty_quoted_identifier_table_name_standard_double_quote.q.out
new file mode 100644
index 00000000000..b9c938633b0
--- /dev/null
+++
b/ql/src/test/results/clientnegative/empty_quoted_identifier_table_name_standard_double_quote.q.out
@@ -0,0 +1 @@
+FAILED: ParseException line 2:32 cannot recognize input near 'test_database'
'.' '<EOF>' in table name