Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions core/src/main/resources/error/error-classes.json
Original file line number Diff line number Diff line change
Expand Up @@ -539,6 +539,11 @@
],
"sqlState" : "22023"
},
"INVALID_IDENTIFIER" : {
"message" : [
"The identifier <ident> is invalid. Please, consider quoting it with back-quotes as `<ident>`."
]
},
"INVALID_JSON_SCHEMA_MAP_TYPE" : {
"message" : [
"Input schema <jsonSchema> can only contain STRING as a key type for a MAP."
Expand Down Expand Up @@ -1348,11 +1353,6 @@
"Unsupported SQL statement."
]
},
"_LEGACY_ERROR_TEMP_0040" : {
"message" : [
"Possibly unquoted identifier <ident> detected. Please consider quoting it with back-quotes as `<ident>`."
]
},
"_LEGACY_ERROR_TEMP_0041" : {
"message" : [
"Found duplicate clauses: <clauseName>."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ case object PostProcessor extends SqlBaseParserBaseListener {
override def exitErrorIdent(ctx: SqlBaseParser.ErrorIdentContext): Unit = {
val ident = ctx.getParent.getText

throw QueryParsingErrors.unquotedIdentifierError(ident, ctx)
throw QueryParsingErrors.invalidIdentifierError(ident, ctx)
}

/** Remove the back ticks from an Identifier. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -458,9 +458,9 @@ private[sql] object QueryParsingErrors extends QueryErrorsBase {
Some("_LEGACY_ERROR_TEMP_0039"))
}

def unquotedIdentifierError(ident: String, ctx: ErrorIdentContext): Throwable = {
def invalidIdentifierError(ident: String, ctx: ErrorIdentContext): Throwable = {
new ParseException(
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
messageParameters = Map("ident" -> ident),
ctx)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,22 +42,22 @@ class ErrorParserSuite extends AnalysisTest {
test("hyphen in identifier - DDL tests") {
checkError(
exception = parseException("USE test-test"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-test"))
checkError(
exception = parseException("CREATE DATABASE IF NOT EXISTS my-database"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "my-database"))
checkError(
exception = parseException(
"""
|ALTER DATABASE my-database
|SET DBPROPERTIES ('p1'='v1')""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "my-database"))
checkError(
exception = parseException("DROP DATABASE my-database"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "my-database"))
checkError(
exception = parseException(
Expand All @@ -66,7 +66,7 @@ class ErrorParserSuite extends AnalysisTest {
|CHANGE COLUMN
|test-col TYPE BIGINT
""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-col"))
checkError(
exception = parseException(
Expand All @@ -75,7 +75,7 @@ class ErrorParserSuite extends AnalysisTest {
|RENAME COLUMN
|test-col TO test
""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-col"))
checkError(
exception = parseException(
Expand All @@ -84,7 +84,7 @@ class ErrorParserSuite extends AnalysisTest {
|RENAME COLUMN
|test TO test-col
""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-col"))
checkError(
exception = parseException(
Expand All @@ -93,23 +93,23 @@ class ErrorParserSuite extends AnalysisTest {
|DROP COLUMN
|test-col, test
""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-col"))
checkError(
exception = parseException("CREATE TABLE test (attri-bute INT)"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "attri-bute"))
checkError(
exception = parseException("CREATE FUNCTION test-func as org.test.func"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-func"))
checkError(
exception = parseException("DROP FUNCTION test-func as org.test.func"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-func"))
checkError(
exception = parseException("SHOW FUNCTIONS LIKE test-func"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-func"))
checkError(
exception = parseException(
Expand All @@ -120,68 +120,68 @@ class ErrorParserSuite extends AnalysisTest {
|LOCATION '/user/external/page_view'
|TBLPROPERTIES ('p1'='v1', 'p2'='v2')
|AS SELECT * FROM src""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "page-view"))
checkError(
exception = parseException(
"""
|CREATE TABLE IF NOT EXISTS tab
|USING test-provider
|AS SELECT * FROM src""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-provider"))
checkError(
exception = parseException("SHOW TABLES IN hyphen-database"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "hyphen-database"))
checkError(
exception = parseException("SHOW TABLE EXTENDED IN hyphen-db LIKE \"str\""),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "hyphen-db"))
checkError(
exception = parseException("SHOW COLUMNS IN t FROM test-db"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-db"))
checkError(
exception = parseException("DESC SCHEMA EXTENDED test-db"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-db"))
checkError(
exception = parseException("ANALYZE TABLE test-table PARTITION (part1)"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-table"))
checkError(
exception = parseException("LOAD DATA INPATH \"path\" INTO TABLE my-tab"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "my-tab"))
}

test("hyphen in identifier - DML tests") {
// dml tests
checkError(
exception = parseException("SELECT * FROM table-with-hyphen"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "table-with-hyphen"))
// special test case: minus in expression shouldn't be treated as hyphen in identifiers
checkError(
exception = parseException("SELECT a-b FROM table-with-hyphen"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "table-with-hyphen"))
checkError(
exception = parseException("SELECT a-b AS a-b FROM t"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "a-b"))
checkError(
exception = parseException("SELECT a-b FROM table-hyphen WHERE a-b = 0"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "table-hyphen"))
checkError(
exception = parseException("SELECT (a - test_func(b-c)) FROM test-table"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-table"))
checkError(
exception = parseException("WITH a-b AS (SELECT 1 FROM s) SELECT * FROM s;"),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "a-b"))
checkError(
exception = parseException(
Expand All @@ -190,7 +190,7 @@ class ErrorParserSuite extends AnalysisTest {
|FROM t1 JOIN t2
|USING (a, b, at-tr)
""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "at-tr"))
checkError(
exception = parseException(
Expand All @@ -199,7 +199,7 @@ class ErrorParserSuite extends AnalysisTest {
|OVER (PARTITION BY category ORDER BY revenue DESC) as hyphen-rank
|FROM productRevenue
""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "hyphen-rank"))
checkError(
exception = parseException(
Expand All @@ -210,7 +210,7 @@ class ErrorParserSuite extends AnalysisTest {
|GROUP BY fake-breaker
|ORDER BY c
""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "grammar-breaker"))
assert(parsePlan(
"""
Expand All @@ -231,15 +231,15 @@ class ErrorParserSuite extends AnalysisTest {
|WINDOW hyphen-window AS
| (PARTITION BY a, b ORDER BY c rows BETWEEN 1 PRECEDING AND 1 FOLLOWING)
""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "hyphen-window"))
checkError(
exception = parseException(
"""
|SELECT * FROM tab
|WINDOW window_ref AS window-ref
""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "window-ref"))
checkError(
exception = parseException(
Expand All @@ -248,7 +248,7 @@ class ErrorParserSuite extends AnalysisTest {
|FROM t-a INNER JOIN tb
|ON ta.a = tb.a AND ta.tag = tb.tag
""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "t-a"))
checkError(
exception = parseException(
Expand All @@ -257,7 +257,7 @@ class ErrorParserSuite extends AnalysisTest {
|SELECT a
|SELECT b
""".stripMargin),
errorClass = "_LEGACY_ERROR_TEMP_0040",
errorClass = "INVALID_IDENTIFIER",
parameters = Map("ident" -> "test-table"))
}

Expand Down