You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by ma...@apache.org on 2025/01/21 07:58:22 UTC
(spark) branch branch-4.0 updated: [SPARK-50751][SQL] Assign appropriate error condition for `_LEGACY_ERROR_TEMP_1305`: `UNSUPPORTED_TABLE_CHANGE_IN_JDBC_CATALOG`
This is an automated email from the ASF dual-hosted git repository.
maxgekk pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/branch-4.0 by this push:
new 0e11b2929688 [SPARK-50751][SQL] Assign appropriate error condition for `_LEGACY_ERROR_TEMP_1305`: `UNSUPPORTED_TABLE_CHANGE_IN_JDBC_CATALOG`
0e11b2929688 is described below
commit 0e11b292968842eea68020ffc44d1205cbabb9a1
Author: Haejoon Lee <ha...@databricks.com>
AuthorDate: Tue Jan 21 09:58:04 2025 +0200
[SPARK-50751][SQL] Assign appropriate error condition for `_LEGACY_ERROR_TEMP_1305`: `UNSUPPORTED_TABLE_CHANGE_IN_JDBC_CATALOG`
### What changes were proposed in this pull request?
This PR proposes to assign appropriate error condition for `_LEGACY_ERROR_TEMP_1305`: `UNSUPPORTED_TABLE_CHANGE_IN_JDBC_CATALOG` and improve its error message
### Why are the changes needed?
To improve the error message by assigning proper error condition and SQLSTATE
### Does this PR introduce _any_ user-facing change?
No, only user-facing error message improved
### How was this patch tested?
Updated the existing tests
### Was this patch authored or co-authored using generative AI tooling?
No
Closes #49395 from itholic/LEGACY_1305.
Authored-by: Haejoon Lee <ha...@databricks.com>
Signed-off-by: Max Gekk <ma...@gmail.com>
(cherry picked from commit ce073960422ab204e6df1b8dee58526f9e86ad7f)
Signed-off-by: Max Gekk <ma...@gmail.com>
---
common/utils/src/main/resources/error/error-conditions.json | 11 ++++++-----
.../org/apache/spark/sql/errors/QueryCompilationErrors.scala | 9 ++++++---
.../main/scala/org/apache/spark/sql/jdbc/JdbcDialects.scala | 2 +-
.../execution/datasources/v2/jdbc/JDBCTableCatalogSuite.scala | 8 +++++---
4 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/common/utils/src/main/resources/error/error-conditions.json b/common/utils/src/main/resources/error/error-conditions.json
index 2506c20453ae..556b00dd6a49 100644
--- a/common/utils/src/main/resources/error/error-conditions.json
+++ b/common/utils/src/main/resources/error/error-conditions.json
@@ -6007,6 +6007,12 @@
},
"sqlState" : "0A000"
},
+ "UNSUPPORTED_TABLE_CHANGE_IN_JDBC_CATALOG" : {
+ "message" : [
+ "The table change <change> is not supported for the JDBC catalog on table <tableName>. Supported changes include: AddColumn, RenameColumn, DeleteColumn, UpdateColumnType, UpdateColumnNullability."
+ ],
+ "sqlState" : "42000"
+ },
"UNSUPPORTED_TYPED_LITERAL" : {
"message" : [
"Literals of the type <unsupportedType> are not supported. Supported types are <supportedTypes>."
@@ -7175,11 +7181,6 @@
"Unable to find the column `<colName>` given [<actualColumns>]."
]
},
- "_LEGACY_ERROR_TEMP_1305" : {
- "message" : [
- "Unsupported TableChange <change> in JDBC catalog."
- ]
- },
"_LEGACY_ERROR_TEMP_1306" : {
"message" : [
"There is a 'path' or 'paths' option set and load() is called with path parameters. Either remove the path option if it's the same as the path parameter, or add it to the load() parameter if you do want to read multiple paths. To ignore this check, set '<config>' to 'true'."
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala
index e6f8f0d73d7d..2fda7894c0fb 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala
@@ -3317,10 +3317,13 @@ private[sql] object QueryCompilationErrors extends QueryErrorsBase with Compilat
new NoSuchTableException(ident)
}
- def unsupportedTableChangeInJDBCCatalogError(change: TableChange): Throwable = {
+ def unsupportedTableChangeInJDBCCatalogError(
+ change: TableChange, tableName: String): Throwable = {
+ val sanitizedTableName = tableName.replaceAll("\"", "")
new AnalysisException(
- errorClass = "_LEGACY_ERROR_TEMP_1305",
- messageParameters = Map("change" -> change.toString))
+ errorClass = "UNSUPPORTED_TABLE_CHANGE_IN_JDBC_CATALOG",
+ messageParameters = Map(
+ "change" -> change.toString, "tableName" -> toSQLId(sanitizedTableName)))
}
def pathOptionNotSetCorrectlyWhenReadingError(): Throwable = {
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JdbcDialects.scala b/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JdbcDialects.scala
index 694e60102852..69121e33c592 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JdbcDialects.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JdbcDialects.scala
@@ -627,7 +627,7 @@ abstract class JdbcDialect extends Serializable with Logging {
val name = updateNull.fieldNames
updateClause += getUpdateColumnNullabilityQuery(tableName, name(0), updateNull.nullable())
case _ =>
- throw QueryCompilationErrors.unsupportedTableChangeInJDBCCatalogError(change)
+ throw QueryCompilationErrors.unsupportedTableChangeInJDBCCatalogError(change, tableName)
}
}
updateClause.result()
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/jdbc/JDBCTableCatalogSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/jdbc/JDBCTableCatalogSuite.scala
index 580034ff7b0e..f6b63d7939a9 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/jdbc/JDBCTableCatalogSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/jdbc/JDBCTableCatalogSuite.scala
@@ -444,9 +444,11 @@ class JDBCTableCatalogSuite extends QueryTest with SharedSparkSession {
exception = intercept[AnalysisException] {
sql(s"ALTER TABLE $tableName ALTER COLUMN ID COMMENT 'test'")
},
- condition = "_LEGACY_ERROR_TEMP_1305",
- parameters = Map("change" ->
- "org.apache.spark.sql.connector.catalog.TableChange\\$UpdateColumnComment.*"),
+ condition = "UNSUPPORTED_TABLE_CHANGE_IN_JDBC_CATALOG",
+ parameters = Map(
+ "change" -> "org.apache.spark.sql.connector.catalog.TableChange\\$UpdateColumnComment.*",
+ "tableName" -> "`test`.`alt_table`"
+ ),
matchPVals = true)
// Update comment for not existing column
val sqlText = s"ALTER TABLE $tableName ALTER COLUMN bad_column COMMENT 'test'"
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org