This is an automated email from the ASF dual-hosted git repository. maxgekk pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push: new b6eadf00fc5 [SPARK-42302][SQL] Assign name to _LEGACY_ERROR_TEMP_2135 b6eadf00fc5 is described below commit b6eadf00fc527df428a451ebb20777de9965b2de Author: itholic <haejoon....@databricks.com> AuthorDate: Mon Feb 6 13:51:40 2023 +0300 [SPARK-42302][SQL] Assign name to _LEGACY_ERROR_TEMP_2135 ### What changes were proposed in this pull request? This PR proposes to assign name to _LEGACY_ERROR_TEMP_2135, "FAILED_PARSE_EMPTY_STRING". ### Why are the changes needed? We should assign proper name to _LEGACY_ERROR_TEMP_* ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? `./build/sbt "sql/testOnly org.apache.spark.sql.SQLQueryTestSuite*"` Closes #39872 from itholic/LEGACY_2135. Lead-authored-by: itholic <haejoon....@databricks.com> Co-authored-by: Haejoon Lee <44108233+itho...@users.noreply.github.com> Signed-off-by: Max Gekk <max.g...@gmail.com> --- core/src/main/resources/error/error-classes.json | 11 ++++++----- .../org/apache/spark/sql/catalyst/json/JacksonParser.scala | 4 ++-- .../org/apache/spark/sql/errors/QueryExecutionErrors.scala | 7 +++---- .../spark/sql/execution/datasources/json/JsonSuite.scala | 12 +++++++----- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/core/src/main/resources/error/error-classes.json b/core/src/main/resources/error/error-classes.json index 88565eb9f1a..ed9f8a63347 100644 --- a/core/src/main/resources/error/error-classes.json +++ b/core/src/main/resources/error/error-classes.json @@ -506,6 +506,12 @@ ], "sqlState" : "22003" }, + "EMPTY_JSON_FIELD_VALUE" : { + "message" : [ + "Failed to parse an empty string for data type <dataType>." + ], + "sqlState" : "42604" + }, "ENCODER_NOT_FOUND" : { "message" : [ "Not found an encoder of the type <typeName> to Spark SQL internal representation. Consider to change the input type to one of supported at https://spark.apache.org/docs/latest/sql-ref-datatypes.html." @@ -4237,11 +4243,6 @@ "Cannot parse field value <value> for pattern <pattern> as target spark data type [<dataType>]." ] }, - "_LEGACY_ERROR_TEMP_2135" : { - "message" : [ - "Failed to parse an empty string for data type <dataType>." - ] - }, "_LEGACY_ERROR_TEMP_2138" : { "message" : [ "Cannot have circular references in bean class, but got the circular reference of class <clazz>." diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala index 3fe26e87499..bf07d65caa0 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala @@ -420,12 +420,12 @@ class JacksonParser( case VALUE_STRING if parser.getTextLength < 1 && allowEmptyString => dataType match { case FloatType | DoubleType | TimestampType | DateType => - throw QueryExecutionErrors.failToParseEmptyStringForDataTypeError(dataType) + throw QueryExecutionErrors.emptyJsonFieldValueError(dataType) case _ => null } case VALUE_STRING if parser.getTextLength < 1 => - throw QueryExecutionErrors.failToParseEmptyStringForDataTypeError(dataType) + throw QueryExecutionErrors.emptyJsonFieldValueError(dataType) case token => // We cannot parse this token based on the given data type. So, we throw a diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryExecutionErrors.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryExecutionErrors.scala index 54ae497a114..c8c0ad67c45 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryExecutionErrors.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryExecutionErrors.scala @@ -1431,11 +1431,10 @@ private[sql] object QueryExecutionErrors extends QueryErrorsBase { "dataType" -> dataType.toString())) } - def failToParseEmptyStringForDataTypeError(dataType: DataType): SparkRuntimeException = { + def emptyJsonFieldValueError(dataType: DataType): SparkRuntimeException = { new SparkRuntimeException( - errorClass = "_LEGACY_ERROR_TEMP_2135", - messageParameters = Map( - "dataType" -> dataType.catalogString)) + errorClass = "EMPTY_JSON_FIELD_VALUE", + messageParameters = Map("dataType" -> toSQLType(dataType))) } def cannotParseJSONFieldError(parser: JsonParser, jsonType: JsonToken, dataType: DataType) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/json/JsonSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/json/JsonSuite.scala index af8d4bd58d6..efc062e927c 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/json/JsonSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/json/JsonSuite.scala @@ -35,6 +35,7 @@ import org.apache.spark.rdd.RDD import org.apache.spark.sql.{functions => F, _} import org.apache.spark.sql.catalyst.json._ import org.apache.spark.sql.catalyst.util.{DateTimeTestUtils, DateTimeUtils} +import org.apache.spark.sql.catalyst.util.TypeUtils.toSQLType import org.apache.spark.sql.execution.ExternalRDD import org.apache.spark.sql.execution.datasources.{CommonFileDataSourceSuite, DataSource, InMemoryFileIndex, NoopCache} import org.apache.spark.sql.execution.datasources.v2.json.JsonScanBuilder @@ -2608,11 +2609,12 @@ abstract class JsonSuite private def failedOnEmptyString(dataType: DataType): Unit = { val df = spark.read.schema(s"a ${dataType.catalogString}") .option("mode", "FAILFAST").json(Seq("""{"a":""}""").toDS) - val errMessage = intercept[SparkException] { - df.collect() - }.getMessage - assert(errMessage.contains( - s"Failed to parse an empty string for data type ${dataType.catalogString}")) + val e = intercept[SparkException] {df.collect()} + checkError( + exception = e.getCause.getCause.getCause.asInstanceOf[SparkRuntimeException], + errorClass = "EMPTY_JSON_FIELD_VALUE", + parameters = Map("dataType" -> toSQLType(dataType)) + ) } private def emptyString(dataType: DataType, expected: Any): Unit = { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org For additional commands, e-mail: commits-h...@spark.apache.org