From 8046fefc4b20b69dbd9ecb7bff2b4322140c9bde Mon Sep 17 00:00:00 2001 From: Austin Date: Thu, 10 Jul 2025 14:54:20 -0400 Subject: [PATCH 1/5] [SQL] Clarify schema mismatch types in insertInto error --- .../catalyst/analysis/TableOutputResolver.scala | 11 ++++++++++- .../sql/errors/QueryCompilationErrors.scala | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TableOutputResolver.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TableOutputResolver.scala index adf74c489ce1f..ff9ed91ec1377 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TableOutputResolver.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TableOutputResolver.scala @@ -570,7 +570,16 @@ object TableOutputResolver extends SQLConfHelper with Logging { val canWriteExpr = canWrite( tableName, queryExpr.dataType, attrTypeWithoutCharVarchar, - byName, conf, addError, colPath) + byName, conf, errorMsg => { + val colName = colPath.lastOption.getOrElse(tableAttr.name) + addError(QueryCompilationErrors.insertIntoSchemaMismatchError( + colName, + queryExpr.dataType.simpleString, + tableAttr.name, + attrTypeWithoutCharVarchar.simpleString + )) + } + , colPath) if (canWriteExpr) outputField else None } 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 14f279ad5ad7f..1255b78ba4af0 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 @@ -576,6 +576,23 @@ private[sql] object QueryCompilationErrors extends QueryErrorsBase with Compilat origin = t.origin) } + def insertIntoSchemaMismatchError( + columnName: String, + sourceType: String, + targetColumnName: String, + targetType: String): AnalysisException = { + new AnalysisException( + errorClass = "INSERT_INTO_SCHEMA_MISMATCH", + messageParameters = Map( + "columnName" -> columnName, + "sourceType" -> sourceType, + "targetColumnName" -> targetColumnName, + "targetType" -> targetType + ) + ) + } + + def writeIntoViewNotAllowedError(identifier: TableIdentifier, t: TreeNode[_]): Throwable = { new AnalysisException( errorClass = "_LEGACY_ERROR_TEMP_1011", From 05f47e3c633e0d02984a6e808c34121e77360a29 Mon Sep 17 00:00:00 2001 From: Austin Date: Thu, 10 Jul 2025 15:15:42 -0400 Subject: [PATCH 2/5] Trigger self-test build --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 17344563d90ac..e400a2f9e252d 100644 --- a/README.md +++ b/README.md @@ -163,3 +163,4 @@ in the online documentation for an overview on how to configure Spark. Please review the [Contribution to Spark guide](https://spark.apache.org/contributing.html) for information on how to get started contributing to the project. +# trigger build From ff56757011575c29d25e60ecb9d746519801b7db Mon Sep 17 00:00:00 2001 From: Austin Date: Thu, 10 Jul 2025 15:37:14 -0400 Subject: [PATCH 3/5] Trigger re-run --- trigger.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 trigger.txt diff --git a/trigger.txt b/trigger.txt new file mode 100644 index 0000000000000..88bfa57916e6d --- /dev/null +++ b/trigger.txt @@ -0,0 +1 @@ +# trigger re-run From ea74e9016d9a1ad349eebeb67e7d404b9821f371 Mon Sep 17 00:00:00 2001 From: Austin Date: Thu, 10 Jul 2025 15:37:28 -0400 Subject: [PATCH 4/5] Trigger re-run --- trigger.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/trigger.txt b/trigger.txt index 88bfa57916e6d..76b7a36cb62fa 100644 --- a/trigger.txt +++ b/trigger.txt @@ -1 +1,2 @@ # trigger re-run +# trigger re-run From 93422b9946c804cb2a7ee5be1442e377b5d20702 Mon Sep 17 00:00:00 2001 From: Austin Date: Thu, 10 Jul 2025 16:16:56 -0400 Subject: [PATCH 5/5] error-conditions.json add metadata --- .../src/main/resources/error/error-conditions.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/common/utils/src/main/resources/error/error-conditions.json b/common/utils/src/main/resources/error/error-conditions.json index dc3b3c6aea55b..b276cde42fffe 100644 --- a/common/utils/src/main/resources/error/error-conditions.json +++ b/common/utils/src/main/resources/error/error-conditions.json @@ -2229,6 +2229,16 @@ }, "sqlState" : "21S01" }, + "INSERT_INTO_SCHEMA_MISMATCH": { + "message": "InsertInto schema mismatch at column '%columnName%':\n- DataFrame column has type %sourceType%\n- Target table column '%targetColumnName%' has type %targetType%\n- Columns matched by position", + "sqlState": "42K09", + "parameters": [ + "columnName", + "sourceType", + "targetColumnName", + "targetType" + ] + }, "INSERT_PARTITION_COLUMN_ARITY_MISMATCH" : { "message" : [ "Cannot write to '', :",