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 2024/10/10 08:55:49 UTC
(spark) branch master updated: [SPARK-49748][CORE] Add `getCondition` and deprecate `getErrorClass` in `SparkThrowable`
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 e693af0a0ada [SPARK-49748][CORE] Add `getCondition` and deprecate `getErrorClass` in `SparkThrowable`
e693af0a0ada is described below
commit e693af0a0adafe845c90579c02810b4c7d0c2b7d
Author: Max Gekk <ma...@gmail.com>
AuthorDate: Thu Oct 10 10:55:35 2024 +0200
[SPARK-49748][CORE] Add `getCondition` and deprecate `getErrorClass` in `SparkThrowable`
### What changes were proposed in this pull request?
1. Deprecate the `getErrorClass` method in `SparkThrowable`
2. Add new method `getCondition` as the replacement of `getErrorClass` to the `SparkThrowable` interface
3. Use `getCondition` instead of `getErrorClass` in implementations of `SparkThrowable` to avoid warnings.
### Why are the changes needed?
To follow new naming convention proposed by SPARK-46810.
### Does this PR introduce _any_ user-facing change?
Yes, it extends existing APIs.
### How was this patch tested?
By running the existing tests.
### Was this patch authored or co-authored using generative AI tooling?
No.
Closes #48196 from MaxGekk/deprecate-getErrorClass.
Authored-by: Max Gekk <ma...@gmail.com>
Signed-off-by: Max Gekk <ma...@gmail.com>
---
.../spark/unsafe/types/CollationFactorySuite.scala | 2 +-
.../main/java/org/apache/spark/SparkThrowable.java | 20 +++++++++----
.../scala/org/apache/spark/SparkException.scala | 34 +++++++++++-----------
.../org/apache/spark/SparkThrowableHelper.scala | 4 +--
.../sql/streaming/StreamingQueryException.scala | 2 +-
.../spark/sql/avro/AvroLogicalTypeSuite.scala | 2 +-
.../org/apache/spark/sql/avro/AvroSuite.scala | 14 ++++-----
.../scala/org/apache/spark/sql/CatalogSuite.scala | 2 +-
.../spark/sql/ClientDataFrameStatSuite.scala | 6 ++--
.../org/apache/spark/sql/ClientE2ETestSuite.scala | 20 ++++++-------
.../connect/client/SparkConnectClientSuite.scala | 2 +-
.../connect/client/arrow/ArrowEncoderSuite.scala | 2 +-
.../sql/streaming/ClientStreamingQuerySuite.scala | 4 +--
.../spark/sql/kafka010/KafkaExceptions.scala | 2 +-
.../apache/spark/memory/SparkOutOfMemoryError.java | 2 +-
.../spark/SparkFileAlreadyExistsException.scala | 2 +-
.../org/apache/spark/scheduler/DAGScheduler.scala | 4 +--
.../org/apache/spark/JobCancellationSuite.scala | 2 +-
.../scala/org/apache/spark/SparkFunSuite.scala | 2 +-
.../org/apache/spark/SparkThrowableSuite.scala | 12 ++++----
.../apache/spark/broadcast/BroadcastSuite.scala | 8 ++---
.../org/apache/spark/ml/feature/Binarizer.scala | 2 +-
.../apache/spark/ml/feature/StringIndexer.scala | 2 +-
project/MimaExcludes.scala | 3 ++
.../org/apache/spark/sql/AnalysisException.scala | 2 +-
.../apache/spark/sql/catalyst/parser/parsers.scala | 6 ++--
.../sql/catalyst/analysis/CheckAnalysis.scala | 2 +-
.../sql/catalyst/encoders/ExpressionEncoder.scala | 4 +--
.../spark/sql/catalyst/parser/AstBuilder.scala | 4 +--
.../spark/sql/catalyst/util/GeneratedColumn.scala | 4 +--
.../sql/exceptions/SqlScriptingException.scala | 2 +-
.../org/apache/spark/sql/internal/SQLConf.scala | 2 +-
.../sql/connector/catalog/CatalogLoadingSuite.java | 2 +-
.../spark/sql/catalyst/analysis/AnalysisTest.scala | 2 +-
.../analysis/UnsupportedOperationsSuite.scala | 2 +-
.../spark/sql/catalyst/csv/CSVExprUtilsSuite.scala | 2 +-
.../catalyst/encoders/EncoderResolutionSuite.scala | 2 +-
.../sql/catalyst/encoders/RowEncoderSuite.scala | 2 +-
.../codegen/BufferHolderSparkSubmitSuite.scala | 4 +--
.../spark/sql/catalyst/parser/DDLParserSuite.scala | 2 +-
.../catalyst/parser/SqlScriptingParserSuite.scala | 8 ++---
.../sql/connect/planner/SparkConnectPlanner.scala | 2 +-
.../spark/sql/connect/utils/ErrorUtils.scala | 6 ++--
.../service/SparkConnectSessionManagerSuite.scala | 10 +++----
.../apache/spark/sql/DataSourceRegistration.scala | 2 +-
.../spark/sql/execution/datasources/rules.scala | 8 ++---
.../datasources/v2/FileDataSourceV2.scala | 2 +-
.../sql/execution/streaming/StreamExecution.scala | 2 +-
.../state/HDFSBackedStateStoreProvider.scala | 2 +-
.../state/RocksDBStateStoreProvider.scala | 4 +--
.../apache/spark/sql/internal/CatalogImpl.scala | 8 ++---
.../spark/sql/JavaColumnExpressionSuite.java | 2 +-
.../spark/sql/CollationExpressionWalkerSuite.scala | 2 +-
.../scala/org/apache/spark/sql/DatasetSuite.scala | 8 ++---
.../apache/spark/sql/LateralColumnAliasSuite.scala | 8 ++---
.../spark/sql/RuntimeNullChecksV2Writes.scala | 4 +--
.../org/apache/spark/sql/SQLQueryTestHelper.scala | 4 +--
.../scala/org/apache/spark/sql/SubquerySuite.scala | 8 ++---
.../test/scala/org/apache/spark/sql/UDFSuite.scala | 10 +++----
.../spark/sql/connector/DataSourceV2SQLSuite.scala | 2 +-
.../sql/connector/MergeIntoTableSuiteBase.scala | 6 ++--
.../sql/errors/QueryExecutionErrorsSuite.scala | 10 +++----
.../adaptive/AdaptiveQueryExecSuite.scala | 2 +-
.../binaryfile/BinaryFileFormatSuite.scala | 2 +-
.../sql/execution/datasources/csv/CSVSuite.scala | 2 +-
.../execution/datasources/orc/OrcFilterSuite.scala | 2 +-
.../execution/datasources/orc/OrcQuerySuite.scala | 6 ++--
.../execution/datasources/orc/OrcSourceSuite.scala | 4 +--
.../datasources/parquet/ParquetFilterSuite.scala | 2 +-
.../datasources/parquet/ParquetIOSuite.scala | 6 ++--
.../parquet/ParquetPartitionDiscoverySuite.scala | 2 +-
.../datasources/parquet/ParquetQuerySuite.scala | 2 +-
.../parquet/ParquetRebaseDatetimeSuite.scala | 4 +--
.../datasources/parquet/ParquetRowIndexSuite.scala | 2 +-
.../state/StateDataSourceChangeDataReadSuite.scala | 8 ++---
.../v2/state/StateDataSourceReadSuite.scala | 2 +-
.../execution/python/PythonDataSourceSuite.scala | 8 ++---
.../python/PythonStreamingDataSourceSuite.scala | 2 +-
.../StateSchemaCompatibilityCheckerSuite.scala | 8 ++---
.../streaming/state/StateStoreSuite.scala | 2 +-
.../org/apache/spark/sql/sources/InsertSuite.scala | 2 +-
.../streaming/StreamingQueryListenerSuite.scala | 2 +-
.../hive/thriftserver/HiveThriftServerErrors.scala | 2 +-
83 files changed, 201 insertions(+), 188 deletions(-)
diff --git a/common/unsafe/src/test/scala/org/apache/spark/unsafe/types/CollationFactorySuite.scala b/common/unsafe/src/test/scala/org/apache/spark/unsafe/types/CollationFactorySuite.scala
index ff40f16e5a05..66ff55119310 100644
--- a/common/unsafe/src/test/scala/org/apache/spark/unsafe/types/CollationFactorySuite.scala
+++ b/common/unsafe/src/test/scala/org/apache/spark/unsafe/types/CollationFactorySuite.scala
@@ -456,7 +456,7 @@ class CollationFactorySuite extends AnyFunSuite with Matchers { // scalastyle:ig
val e = intercept[SparkException] {
fetchCollation(collationName)
}
- assert(e.getErrorClass === "COLLATION_INVALID_NAME")
+ assert(e.getCondition === "COLLATION_INVALID_NAME")
assert(e.getMessageParameters.asScala === Map(
"collationName" -> collationName, "proposals" -> proposals))
}
diff --git a/common/utils/src/main/java/org/apache/spark/SparkThrowable.java b/common/utils/src/main/java/org/apache/spark/SparkThrowable.java
index e1235b2982ba..39808f58b08a 100644
--- a/common/utils/src/main/java/org/apache/spark/SparkThrowable.java
+++ b/common/utils/src/main/java/org/apache/spark/SparkThrowable.java
@@ -35,19 +35,29 @@ import java.util.Map;
*/
@Evolving
public interface SparkThrowable {
- // Succinct, human-readable, unique, and consistent representation of the error category
- // If null, error class is not set
- String getErrorClass();
+ /**
+ * Succinct, human-readable, unique, and consistent representation of the error condition.
+ * If null, error condition is not set.
+ */
+ String getCondition();
+
+ /**
+ * Succinct, human-readable, unique, and consistent representation of the error category.
+ * If null, error class is not set.
+ * @deprecated Use {@link #getCondition()} instead.
+ */
+ @Deprecated
+ default String getErrorClass() { return getCondition(); }
// Portable error identifier across SQL engines
// If null, error class or SQLSTATE is not set
default String getSqlState() {
- return SparkThrowableHelper.getSqlState(this.getErrorClass());
+ return SparkThrowableHelper.getSqlState(this.getCondition());
}
// True if this error is an internal error.
default boolean isInternalError() {
- return SparkThrowableHelper.isInternalError(this.getErrorClass());
+ return SparkThrowableHelper.isInternalError(this.getCondition());
}
default Map<String, String> getMessageParameters() {
diff --git a/common/utils/src/main/scala/org/apache/spark/SparkException.scala b/common/utils/src/main/scala/org/apache/spark/SparkException.scala
index fcaee787fd8d..0c0a1902ee2a 100644
--- a/common/utils/src/main/scala/org/apache/spark/SparkException.scala
+++ b/common/utils/src/main/scala/org/apache/spark/SparkException.scala
@@ -69,7 +69,7 @@ class SparkException(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass.orNull
+ override def getCondition: String = errorClass.orNull
override def getQueryContext: Array[QueryContext] = context
}
@@ -179,7 +179,7 @@ private[spark] class SparkUpgradeException private(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass.orNull
+ override def getCondition: String = errorClass.orNull
}
/**
@@ -212,7 +212,7 @@ private[spark] class SparkArithmeticException private(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass.orNull
+ override def getCondition: String = errorClass.orNull
override def getQueryContext: Array[QueryContext] = context
}
@@ -250,7 +250,7 @@ private[spark] class SparkUnsupportedOperationException private(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass.orNull
+ override def getCondition: String = errorClass.orNull
}
private[spark] object SparkUnsupportedOperationException {
@@ -280,7 +280,7 @@ private[spark] class SparkClassNotFoundException(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass
+ override def getCondition: String = errorClass
}
/**
@@ -296,7 +296,7 @@ private[spark] class SparkConcurrentModificationException(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass
+ override def getCondition: String = errorClass
}
/**
@@ -346,7 +346,7 @@ private[spark] class SparkDateTimeException private(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass.orNull
+ override def getCondition: String = errorClass.orNull
override def getQueryContext: Array[QueryContext] = context
}
@@ -362,7 +362,7 @@ private[spark] class SparkFileNotFoundException(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass
+ override def getCondition: String = errorClass
}
/**
@@ -396,7 +396,7 @@ private[spark] class SparkNumberFormatException private(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass.orNull
+ override def getCondition: String = errorClass.orNull
override def getQueryContext: Array[QueryContext] = context
}
@@ -448,7 +448,7 @@ private[spark] class SparkIllegalArgumentException private(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass.orNull
+ override def getCondition: String = errorClass.orNull
override def getQueryContext: Array[QueryContext] = context
}
@@ -477,7 +477,7 @@ private[spark] class SparkRuntimeException private(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass.orNull
+ override def getCondition: String = errorClass.orNull
override def getQueryContext: Array[QueryContext] = context
}
@@ -506,7 +506,7 @@ private[spark] class SparkPythonException private(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass.orNull
+ override def getCondition: String = errorClass.orNull
override def getQueryContext: Array[QueryContext] = context
}
@@ -524,7 +524,7 @@ private[spark] class SparkNoSuchElementException(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass
+ override def getCondition: String = errorClass
override def getQueryContext: Array[QueryContext] = context
}
@@ -541,7 +541,7 @@ private[spark] class SparkSecurityException(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass
+ override def getCondition: String = errorClass
}
/**
@@ -575,7 +575,7 @@ private[spark] class SparkArrayIndexOutOfBoundsException private(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass.orNull
+ override def getCondition: String = errorClass.orNull
override def getQueryContext: Array[QueryContext] = context
}
@@ -591,7 +591,7 @@ private[spark] class SparkSQLException(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass
+ override def getCondition: String = errorClass
}
/**
@@ -606,5 +606,5 @@ private[spark] class SparkSQLFeatureNotSupportedException(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass
+ override def getCondition: String = errorClass
}
diff --git a/common/utils/src/main/scala/org/apache/spark/SparkThrowableHelper.scala b/common/utils/src/main/scala/org/apache/spark/SparkThrowableHelper.scala
index 428c9d2a4935..b6c2b176de62 100644
--- a/common/utils/src/main/scala/org/apache/spark/SparkThrowableHelper.scala
+++ b/common/utils/src/main/scala/org/apache/spark/SparkThrowableHelper.scala
@@ -81,7 +81,7 @@ private[spark] object SparkThrowableHelper {
import ErrorMessageFormat._
format match {
case PRETTY => e.getMessage
- case MINIMAL | STANDARD if e.getErrorClass == null =>
+ case MINIMAL | STANDARD if e.getCondition == null =>
toJsonString { generator =>
val g = generator.useDefaultPrettyPrinter()
g.writeStartObject()
@@ -92,7 +92,7 @@ private[spark] object SparkThrowableHelper {
g.writeEndObject()
}
case MINIMAL | STANDARD =>
- val errorClass = e.getErrorClass
+ val errorClass = e.getCondition
toJsonString { generator =>
val g = generator.useDefaultPrettyPrinter()
g.writeStartObject()
diff --git a/common/utils/src/main/scala/org/apache/spark/sql/streaming/StreamingQueryException.scala b/common/utils/src/main/scala/org/apache/spark/sql/streaming/StreamingQueryException.scala
index 259f4330224c..1972ef05d875 100644
--- a/common/utils/src/main/scala/org/apache/spark/sql/streaming/StreamingQueryException.scala
+++ b/common/utils/src/main/scala/org/apache/spark/sql/streaming/StreamingQueryException.scala
@@ -84,7 +84,7 @@ class StreamingQueryException private[sql](
s"""${classOf[StreamingQueryException].getName}: ${cause.getMessage}
|$queryDebugString""".stripMargin
- override def getErrorClass: String = errorClass
+ override def getCondition: String = errorClass
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
}
diff --git a/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroLogicalTypeSuite.scala b/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroLogicalTypeSuite.scala
index 751ac275e048..bb0858decdf8 100644
--- a/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroLogicalTypeSuite.scala
+++ b/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroLogicalTypeSuite.scala
@@ -436,7 +436,7 @@ abstract class AvroLogicalTypeSuite extends QueryTest with SharedSparkSession {
val ex = intercept[SparkException] {
spark.read.format("avro").load(s"$dir.avro").collect()
}
- assert(ex.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(ex.getCondition.startsWith("FAILED_READ_FILE"))
checkError(
exception = ex.getCause.asInstanceOf[SparkArithmeticException],
condition = "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
diff --git a/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroSuite.scala b/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroSuite.scala
index be887bd5237b..e9d6c2458df8 100644
--- a/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroSuite.scala
+++ b/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroSuite.scala
@@ -891,7 +891,7 @@ abstract class AvroSuite
val ex = intercept[SparkException] {
spark.read.schema("a DECIMAL(4, 3)").format("avro").load(path.toString).collect()
}
- assert(ex.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(ex.getCondition.startsWith("FAILED_READ_FILE"))
checkError(
exception = ex.getCause.asInstanceOf[AnalysisException],
condition = "AVRO_INCOMPATIBLE_READ_TYPE",
@@ -969,7 +969,7 @@ abstract class AvroSuite
val ex = intercept[SparkException] {
spark.read.schema(s"a $sqlType").format("avro").load(path.toString).collect()
}
- assert(ex.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(ex.getCondition.startsWith("FAILED_READ_FILE"))
checkError(
exception = ex.getCause.asInstanceOf[AnalysisException],
condition = "AVRO_INCOMPATIBLE_READ_TYPE",
@@ -1006,7 +1006,7 @@ abstract class AvroSuite
val ex = intercept[SparkException] {
spark.read.schema(s"a $sqlType").format("avro").load(path.toString).collect()
}
- assert(ex.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(ex.getCondition.startsWith("FAILED_READ_FILE"))
checkError(
exception = ex.getCause.asInstanceOf[AnalysisException],
condition = "AVRO_INCOMPATIBLE_READ_TYPE",
@@ -1515,7 +1515,7 @@ abstract class AvroSuite
.write.format("avro").option("avroSchema", avroSchema)
.save(s"$tempDir/${UUID.randomUUID()}")
}
- assert(ex.getErrorClass == "TASK_WRITE_FAILED")
+ assert(ex.getCondition == "TASK_WRITE_FAILED")
assert(ex.getCause.isInstanceOf[java.lang.NullPointerException])
assert(ex.getCause.getMessage.contains(
"null value for (non-nullable) string at test_schema.Name"))
@@ -2629,7 +2629,7 @@ abstract class AvroSuite
val e = intercept[SparkException] {
df.write.format("avro").option("avroSchema", avroSchema).save(path3_x)
}
- assert(e.getErrorClass == "TASK_WRITE_FAILED")
+ assert(e.getCondition == "TASK_WRITE_FAILED")
assert(e.getCause.isInstanceOf[SparkUpgradeException])
}
checkDefaultLegacyRead(oldPath)
@@ -2884,7 +2884,7 @@ abstract class AvroSuite
val e = intercept[SparkException] {
df.write.format("avro").option("avroSchema", avroSchema).save(dir.getCanonicalPath)
}
- assert(e.getErrorClass == "TASK_WRITE_FAILED")
+ assert(e.getCondition == "TASK_WRITE_FAILED")
val errMsg = e.getCause.asInstanceOf[SparkUpgradeException].getMessage
assert(errMsg.contains("You may get a different result due to the upgrading"))
}
@@ -2895,7 +2895,7 @@ abstract class AvroSuite
val e = intercept[SparkException] {
df.write.format("avro").save(dir.getCanonicalPath)
}
- assert(e.getErrorClass == "TASK_WRITE_FAILED")
+ assert(e.getCondition == "TASK_WRITE_FAILED")
val errMsg = e.getCause.asInstanceOf[SparkUpgradeException].getMessage
assert(errMsg.contains("You may get a different result due to the upgrading"))
}
diff --git a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/CatalogSuite.scala b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/CatalogSuite.scala
index 0e3a683d2701..ce552bdd4f0f 100644
--- a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/CatalogSuite.scala
+++ b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/CatalogSuite.scala
@@ -69,7 +69,7 @@ class CatalogSuite extends ConnectFunSuite with RemoteSparkSession with SQLHelpe
val exception = intercept[SparkException] {
spark.catalog.setCurrentCatalog("notExists")
}
- assert(exception.getErrorClass == "CATALOG_NOT_FOUND")
+ assert(exception.getCondition == "CATALOG_NOT_FOUND")
spark.catalog.setCurrentCatalog("testcat")
assert(spark.catalog.currentCatalog().equals("testcat"))
val catalogsAfterChange = spark.catalog.listCatalogs().collect()
diff --git a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientDataFrameStatSuite.scala b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientDataFrameStatSuite.scala
index 88281352f247..84ed624a9521 100644
--- a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientDataFrameStatSuite.scala
+++ b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientDataFrameStatSuite.scala
@@ -251,16 +251,16 @@ class ClientDataFrameStatSuite extends ConnectFunSuite with RemoteSparkSession {
val error1 = intercept[AnalysisException] {
df.stat.bloomFilter("id", -1000, 100)
}
- assert(error1.getErrorClass === "DATATYPE_MISMATCH.VALUE_OUT_OF_RANGE")
+ assert(error1.getCondition === "DATATYPE_MISMATCH.VALUE_OUT_OF_RANGE")
val error2 = intercept[AnalysisException] {
df.stat.bloomFilter("id", 1000, -100)
}
- assert(error2.getErrorClass === "DATATYPE_MISMATCH.VALUE_OUT_OF_RANGE")
+ assert(error2.getCondition === "DATATYPE_MISMATCH.VALUE_OUT_OF_RANGE")
val error3 = intercept[AnalysisException] {
df.stat.bloomFilter("id", 1000, -1.0)
}
- assert(error3.getErrorClass === "DATATYPE_MISMATCH.VALUE_OUT_OF_RANGE")
+ assert(error3.getCondition === "DATATYPE_MISMATCH.VALUE_OUT_OF_RANGE")
}
}
diff --git a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientE2ETestSuite.scala b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientE2ETestSuite.scala
index b47231948dc9..0371981b728d 100644
--- a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientE2ETestSuite.scala
+++ b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientE2ETestSuite.scala
@@ -95,7 +95,7 @@ class ClientE2ETestSuite
.collect()
}
assert(
- ex.getErrorClass ===
+ ex.getCondition ===
"INCONSISTENT_BEHAVIOR_CROSS_VERSION.PARSE_DATETIME_BY_NEW_PARSER")
assert(
ex.getMessageParameters.asScala == Map(
@@ -122,12 +122,12 @@ class ClientE2ETestSuite
Seq("1").toDS().withColumn("udf_val", throwException($"value")).collect()
}
- assert(ex.getErrorClass != null)
+ assert(ex.getCondition != null)
assert(!ex.getMessageParameters.isEmpty)
assert(ex.getCause.isInstanceOf[SparkException])
val cause = ex.getCause.asInstanceOf[SparkException]
- assert(cause.getErrorClass == null)
+ assert(cause.getCondition == null)
assert(cause.getMessageParameters.isEmpty)
assert(cause.getMessage.contains("test" * 10000))
}
@@ -141,7 +141,7 @@ class ClientE2ETestSuite
val ex = intercept[AnalysisException] {
spark.sql("select x").collect()
}
- assert(ex.getErrorClass != null)
+ assert(ex.getCondition != null)
assert(!ex.messageParameters.isEmpty)
assert(ex.getSqlState != null)
assert(!ex.isInternalError)
@@ -169,14 +169,14 @@ class ClientE2ETestSuite
val ex = intercept[NoSuchNamespaceException] {
spark.sql("use database123")
}
- assert(ex.getErrorClass != null)
+ assert(ex.getCondition != null)
}
test("table not found for spark.catalog.getTable") {
val ex = intercept[AnalysisException] {
spark.catalog.getTable("test_table")
}
- assert(ex.getErrorClass != null)
+ assert(ex.getCondition != null)
}
test("throw NamespaceAlreadyExistsException") {
@@ -185,7 +185,7 @@ class ClientE2ETestSuite
val ex = intercept[NamespaceAlreadyExistsException] {
spark.sql("create database test_db")
}
- assert(ex.getErrorClass != null)
+ assert(ex.getCondition != null)
} finally {
spark.sql("drop database test_db")
}
@@ -197,7 +197,7 @@ class ClientE2ETestSuite
val ex = intercept[TempTableAlreadyExistsException] {
spark.sql("create temporary view test_view as select 1")
}
- assert(ex.getErrorClass != null)
+ assert(ex.getCondition != null)
} finally {
spark.sql("drop view test_view")
}
@@ -209,7 +209,7 @@ class ClientE2ETestSuite
val ex = intercept[TableAlreadyExistsException] {
spark.sql(s"create table testcat.test_table (id int)")
}
- assert(ex.getErrorClass != null)
+ assert(ex.getCondition != null)
}
}
@@ -217,7 +217,7 @@ class ClientE2ETestSuite
val ex = intercept[ParseException] {
spark.sql("selet 1").collect()
}
- assert(ex.getErrorClass != null)
+ assert(ex.getCondition != null)
assert(!ex.messageParameters.isEmpty)
assert(ex.getSqlState != null)
assert(!ex.isInternalError)
diff --git a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/client/SparkConnectClientSuite.scala b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/client/SparkConnectClientSuite.scala
index 46aeaeff43d2..ac56600392aa 100644
--- a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/client/SparkConnectClientSuite.scala
+++ b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/client/SparkConnectClientSuite.scala
@@ -224,7 +224,7 @@ class SparkConnectClientSuite extends ConnectFunSuite with BeforeAndAfterEach {
val error = constructor(testParams).asInstanceOf[Throwable with SparkThrowable]
assert(error.getMessage.contains(testParams.message))
assert(error.getCause == null)
- assert(error.getErrorClass == testParams.errorClass.get)
+ assert(error.getCondition == testParams.errorClass.get)
assert(error.getMessageParameters.asScala == testParams.messageParameters)
assert(error.getQueryContext.isEmpty)
}
diff --git a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/client/arrow/ArrowEncoderSuite.scala b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/client/arrow/ArrowEncoderSuite.scala
index 7176c582d0bb..10e4c11c406f 100644
--- a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/client/arrow/ArrowEncoderSuite.scala
+++ b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/client/arrow/ArrowEncoderSuite.scala
@@ -783,7 +783,7 @@ class ArrowEncoderSuite extends ConnectFunSuite with BeforeAndAfterAll {
Iterator.tabulate(10)(i => (i, "itr_" + i))
}
}
- assert(e.getErrorClass == "CANNOT_USE_KRYO")
+ assert(e.getCondition == "CANNOT_USE_KRYO")
}
test("transforming encoder") {
diff --git a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/streaming/ClientStreamingQuerySuite.scala b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/streaming/ClientStreamingQuerySuite.scala
index 27b1ee014a71..b1a7d81916e9 100644
--- a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/streaming/ClientStreamingQuerySuite.scala
+++ b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/streaming/ClientStreamingQuerySuite.scala
@@ -331,7 +331,7 @@ class ClientStreamingQuerySuite extends QueryTest with RemoteSparkSession with L
query.awaitTermination()
}
- assert(exception.getErrorClass != null)
+ assert(exception.getCondition != null)
assert(exception.getMessageParameters().get("id") == query.id.toString)
assert(exception.getMessageParameters().get("runId") == query.runId.toString)
assert(exception.getCause.isInstanceOf[SparkException])
@@ -369,7 +369,7 @@ class ClientStreamingQuerySuite extends QueryTest with RemoteSparkSession with L
spark.streams.awaitAnyTermination()
}
- assert(exception.getErrorClass != null)
+ assert(exception.getCondition != null)
assert(exception.getMessageParameters().get("id") == query.id.toString)
assert(exception.getMessageParameters().get("runId") == query.runId.toString)
assert(exception.getCause.isInstanceOf[SparkException])
diff --git a/connector/kafka-0-10-sql/src/main/scala/org/apache/spark/sql/kafka010/KafkaExceptions.scala b/connector/kafka-0-10-sql/src/main/scala/org/apache/spark/sql/kafka010/KafkaExceptions.scala
index 13a68e72269f..c4adb6b3f26e 100644
--- a/connector/kafka-0-10-sql/src/main/scala/org/apache/spark/sql/kafka010/KafkaExceptions.scala
+++ b/connector/kafka-0-10-sql/src/main/scala/org/apache/spark/sql/kafka010/KafkaExceptions.scala
@@ -184,5 +184,5 @@ private[kafka010] class KafkaIllegalStateException(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass
+ override def getCondition: String = errorClass
}
diff --git a/core/src/main/java/org/apache/spark/memory/SparkOutOfMemoryError.java b/core/src/main/java/org/apache/spark/memory/SparkOutOfMemoryError.java
index 8ec5c2221b6e..fa71eb066ff8 100644
--- a/core/src/main/java/org/apache/spark/memory/SparkOutOfMemoryError.java
+++ b/core/src/main/java/org/apache/spark/memory/SparkOutOfMemoryError.java
@@ -52,7 +52,7 @@ public final class SparkOutOfMemoryError extends OutOfMemoryError implements Spa
}
@Override
- public String getErrorClass() {
+ public String getCondition() {
return errorClass;
}
}
diff --git a/core/src/main/scala/org/apache/spark/SparkFileAlreadyExistsException.scala b/core/src/main/scala/org/apache/spark/SparkFileAlreadyExistsException.scala
index 0e578f045452..82a0261f32ae 100644
--- a/core/src/main/scala/org/apache/spark/SparkFileAlreadyExistsException.scala
+++ b/core/src/main/scala/org/apache/spark/SparkFileAlreadyExistsException.scala
@@ -33,5 +33,5 @@ private[spark] class SparkFileAlreadyExistsException(
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass
+ override def getCondition: String = errorClass
}
diff --git a/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala b/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala
index f41888320a29..4f7338f74e29 100644
--- a/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala
+++ b/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala
@@ -2892,8 +2892,8 @@ private[spark] class DAGScheduler(
val finalException = exception.collect {
// If the error is user-facing (defines error class and is not internal error), we don't
// wrap it with "Job aborted" and expose this error to the end users directly.
- case st: Exception with SparkThrowable if st.getErrorClass != null &&
- !SparkThrowableHelper.isInternalError(st.getErrorClass) =>
+ case st: Exception with SparkThrowable if st.getCondition != null &&
+ !SparkThrowableHelper.isInternalError(st.getCondition) =>
st
}.getOrElse {
new SparkException(s"Job aborted due to stage failure: $reason", cause = exception.orNull)
diff --git a/core/src/test/scala/org/apache/spark/JobCancellationSuite.scala b/core/src/test/scala/org/apache/spark/JobCancellationSuite.scala
index 380231ce97c0..ca51e61f5ed4 100644
--- a/core/src/test/scala/org/apache/spark/JobCancellationSuite.scala
+++ b/core/src/test/scala/org/apache/spark/JobCancellationSuite.scala
@@ -288,7 +288,7 @@ class JobCancellationSuite extends SparkFunSuite with Matchers with BeforeAndAft
sem.acquire(1)
sc.cancelJobGroupAndFutureJobs(s"job-group-$idx")
ThreadUtils.awaitReady(job, Duration.Inf).failed.foreach { case e: SparkException =>
- assert(e.getErrorClass == "SPARK_JOB_CANCELLED")
+ assert(e.getCondition == "SPARK_JOB_CANCELLED")
}
}
// submit a job with the 0 job group that was evicted from cancelledJobGroups set, it should run
diff --git a/core/src/test/scala/org/apache/spark/SparkFunSuite.scala b/core/src/test/scala/org/apache/spark/SparkFunSuite.scala
index 9f310c06ac5a..e38efc27b78f 100644
--- a/core/src/test/scala/org/apache/spark/SparkFunSuite.scala
+++ b/core/src/test/scala/org/apache/spark/SparkFunSuite.scala
@@ -343,7 +343,7 @@ abstract class SparkFunSuite
parameters: Map[String, String] = Map.empty,
matchPVals: Boolean = false,
queryContext: Array[ExpectedContext] = Array.empty): Unit = {
- assert(exception.getErrorClass === condition)
+ assert(exception.getCondition === condition)
sqlState.foreach(state => assert(exception.getSqlState === state))
val expectedParameters = exception.getMessageParameters.asScala
if (matchPVals) {
diff --git a/core/src/test/scala/org/apache/spark/SparkThrowableSuite.scala b/core/src/test/scala/org/apache/spark/SparkThrowableSuite.scala
index 946ea75686e3..9f005e575719 100644
--- a/core/src/test/scala/org/apache/spark/SparkThrowableSuite.scala
+++ b/core/src/test/scala/org/apache/spark/SparkThrowableSuite.scala
@@ -199,7 +199,7 @@ class SparkThrowableSuite extends SparkFunSuite {
val e = intercept[SparkException] {
getMessage("UNRESOLVED_COLUMN.WITHOUT_SUGGESTION", Map.empty[String, String])
}
- assert(e.getErrorClass === "INTERNAL_ERROR")
+ assert(e.getCondition === "INTERNAL_ERROR")
assert(e.getMessageParameters().get("message").contains("Undefined error message parameter"))
}
@@ -245,7 +245,7 @@ class SparkThrowableSuite extends SparkFunSuite {
throw new SparkException("Arbitrary legacy message")
} catch {
case e: SparkThrowable =>
- assert(e.getErrorClass == null)
+ assert(e.getCondition == null)
assert(!e.isInternalError)
assert(e.getSqlState == null)
case _: Throwable =>
@@ -262,7 +262,7 @@ class SparkThrowableSuite extends SparkFunSuite {
cause = null)
} catch {
case e: SparkThrowable =>
- assert(e.getErrorClass == "CANNOT_PARSE_DECIMAL")
+ assert(e.getCondition == "CANNOT_PARSE_DECIMAL")
assert(!e.isInternalError)
assert(e.getSqlState == "22018")
case _: Throwable =>
@@ -357,7 +357,7 @@ class SparkThrowableSuite extends SparkFunSuite {
|}""".stripMargin)
// Legacy mode when an exception does not have any error class
class LegacyException extends Throwable with SparkThrowable {
- override def getErrorClass: String = null
+ override def getCondition: String = null
override def getMessage: String = "Test message"
}
val e3 = new LegacyException
@@ -452,7 +452,7 @@ class SparkThrowableSuite extends SparkFunSuite {
val e = intercept[SparkException] {
new ErrorClassesJsonReader(Seq(errorJsonFilePath.toUri.toURL, json.toURI.toURL))
}
- assert(e.getErrorClass === "INTERNAL_ERROR")
+ assert(e.getCondition === "INTERNAL_ERROR")
assert(e.getMessage.contains("DIVIDE.BY_ZERO"))
}
@@ -478,7 +478,7 @@ class SparkThrowableSuite extends SparkFunSuite {
val e = intercept[SparkException] {
new ErrorClassesJsonReader(Seq(errorJsonFilePath.toUri.toURL, json.toURI.toURL))
}
- assert(e.getErrorClass === "INTERNAL_ERROR")
+ assert(e.getCondition === "INTERNAL_ERROR")
assert(e.getMessage.contains("BY.ZERO"))
}
}
diff --git a/core/src/test/scala/org/apache/spark/broadcast/BroadcastSuite.scala b/core/src/test/scala/org/apache/spark/broadcast/BroadcastSuite.scala
index 1efef3383b82..b0f36b9744fa 100644
--- a/core/src/test/scala/org/apache/spark/broadcast/BroadcastSuite.scala
+++ b/core/src/test/scala/org/apache/spark/broadcast/BroadcastSuite.scala
@@ -317,13 +317,13 @@ class BroadcastSuite extends SparkFunSuite with LocalSparkContext with Encryptio
// Instead, crash the driver by directly accessing the broadcast value.
val e1 = intercept[SparkException] { broadcast.value }
assert(e1.isInternalError)
- assert(e1.getErrorClass == "INTERNAL_ERROR_BROADCAST")
+ assert(e1.getCondition == "INTERNAL_ERROR_BROADCAST")
val e2 = intercept[SparkException] { broadcast.unpersist(blocking = true) }
assert(e2.isInternalError)
- assert(e2.getErrorClass == "INTERNAL_ERROR_BROADCAST")
+ assert(e2.getCondition == "INTERNAL_ERROR_BROADCAST")
val e3 = intercept[SparkException] { broadcast.destroy(blocking = true) }
assert(e3.isInternalError)
- assert(e3.getErrorClass == "INTERNAL_ERROR_BROADCAST")
+ assert(e3.getCondition == "INTERNAL_ERROR_BROADCAST")
} else {
val results = sc.parallelize(1 to partitions, partitions).map(x => (x, broadcast.value.sum))
assert(results.collect().toSet === (1 to partitions).map(x => (x, list.sum)).toSet)
@@ -339,7 +339,7 @@ package object testPackage extends Assertions {
val thrown = intercept[SparkException] { broadcast.value }
assert(thrown.getMessage.contains("BroadcastSuite.scala"))
assert(thrown.isInternalError)
- assert(thrown.getErrorClass == "INTERNAL_ERROR_BROADCAST")
+ assert(thrown.getCondition == "INTERNAL_ERROR_BROADCAST")
}
}
diff --git a/mllib/src/main/scala/org/apache/spark/ml/feature/Binarizer.scala b/mllib/src/main/scala/org/apache/spark/ml/feature/Binarizer.scala
index 30f3e4c4af02..5486c39034fd 100644
--- a/mllib/src/main/scala/org/apache/spark/ml/feature/Binarizer.scala
+++ b/mllib/src/main/scala/org/apache/spark/ml/feature/Binarizer.scala
@@ -204,7 +204,7 @@ final class Binarizer @Since("1.4.0") (@Since("1.4.0") override val uid: String)
val inputType = try {
SchemaUtils.getSchemaFieldType(schema, inputColName)
} catch {
- case e: SparkIllegalArgumentException if e.getErrorClass == "FIELD_NOT_FOUND" =>
+ case e: SparkIllegalArgumentException if e.getCondition == "FIELD_NOT_FOUND" =>
throw new SparkException(s"Input column $inputColName does not exist.")
case e: Exception =>
throw e
diff --git a/mllib/src/main/scala/org/apache/spark/ml/feature/StringIndexer.scala b/mllib/src/main/scala/org/apache/spark/ml/feature/StringIndexer.scala
index 8e64f60427d9..20b03edf23c4 100644
--- a/mllib/src/main/scala/org/apache/spark/ml/feature/StringIndexer.scala
+++ b/mllib/src/main/scala/org/apache/spark/ml/feature/StringIndexer.scala
@@ -127,7 +127,7 @@ private[feature] trait StringIndexerBase extends Params with HasHandleInvalid wi
validateAndTransformField(schema, inputColName, dtype, outputColName)
)
} catch {
- case e: SparkIllegalArgumentException if e.getErrorClass == "FIELD_NOT_FOUND" =>
+ case e: SparkIllegalArgumentException if e.getCondition == "FIELD_NOT_FOUND" =>
if (skipNonExistsCol) {
None
} else {
diff --git a/project/MimaExcludes.scala b/project/MimaExcludes.scala
index 3ccb0bddfb0e..f31a29788aaf 100644
--- a/project/MimaExcludes.scala
+++ b/project/MimaExcludes.scala
@@ -195,6 +195,9 @@ object MimaExcludes {
ProblemFilters.exclude[IncompatibleMethTypeProblem]("org.apache.spark.sql.SparkSession.setDefaultSession"),
ProblemFilters.exclude[DirectAbstractMethodProblem]("org.apache.spark.sql.api.SparkSessionCompanion.clearActiveSession"),
ProblemFilters.exclude[DirectAbstractMethodProblem]("org.apache.spark.sql.api.SparkSessionCompanion.clearDefaultSession"),
+
+ // SPARK-49748: Add getCondition and deprecate getErrorClass in SparkThrowable
+ ProblemFilters.exclude[ReversedMissingMethodProblem]("org.apache.spark.SparkThrowable.getCondition"),
) ++ loggingExcludes("org.apache.spark.sql.DataFrameReader") ++
loggingExcludes("org.apache.spark.sql.streaming.DataStreamReader") ++
loggingExcludes("org.apache.spark.sql.SparkSession#Builder")
diff --git a/sql/api/src/main/scala/org/apache/spark/sql/AnalysisException.scala b/sql/api/src/main/scala/org/apache/spark/sql/AnalysisException.scala
index a2c1f2cc41f8..51825ee1a5be 100644
--- a/sql/api/src/main/scala/org/apache/spark/sql/AnalysisException.scala
+++ b/sql/api/src/main/scala/org/apache/spark/sql/AnalysisException.scala
@@ -139,7 +139,7 @@ class AnalysisException protected (
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
- override def getErrorClass: String = errorClass.orNull
+ override def getCondition: String = errorClass.orNull
override def getQueryContext: Array[QueryContext] = context
diff --git a/sql/api/src/main/scala/org/apache/spark/sql/catalyst/parser/parsers.scala b/sql/api/src/main/scala/org/apache/spark/sql/catalyst/parser/parsers.scala
index 10da24567545..f2c7dd533af3 100644
--- a/sql/api/src/main/scala/org/apache/spark/sql/catalyst/parser/parsers.scala
+++ b/sql/api/src/main/scala/org/apache/spark/sql/catalyst/parser/parsers.scala
@@ -100,7 +100,7 @@ abstract class AbstractParser extends DataTypeParserInterface with Logging {
command = Option(command),
start = e.origin,
stop = e.origin,
- errorClass = e.getErrorClass,
+ errorClass = e.getCondition,
messageParameters = e.getMessageParameters.asScala.toMap,
queryContext = e.getQueryContext)
}
@@ -275,7 +275,7 @@ class ParseException private (
}
def withCommand(cmd: String): ParseException = {
- val cl = getErrorClass
+ val cl = getCondition
val (newCl, params) = if (cl == "PARSE_SYNTAX_ERROR" && cmd.trim().isEmpty) {
// PARSE_EMPTY_STATEMENT error class overrides the PARSE_SYNTAX_ERROR when cmd is empty
("PARSE_EMPTY_STATEMENT", Map.empty[String, String])
@@ -287,7 +287,7 @@ class ParseException private (
override def getQueryContext: Array[QueryContext] = queryContext
- override def getErrorClass: String = errorClass.getOrElse {
+ override def getCondition: String = errorClass.getOrElse {
throw SparkException.internalError("ParseException shall have an error class.")
}
}
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala
index a4f424ba4b42..4720b9dcdfa1 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala
@@ -1621,7 +1621,7 @@ class PreemptedError() {
// errors have the lowest priority.
def set(error: Exception with SparkThrowable, priority: Option[Int] = None): Unit = {
val calculatedPriority = priority.getOrElse {
- error.getErrorClass match {
+ error.getCondition match {
case c if c.startsWith("INTERNAL_ERROR") => 1
case _ => 2
}
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/encoders/ExpressionEncoder.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/encoders/ExpressionEncoder.scala
index d7d53230470d..f2f86a90d517 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/encoders/ExpressionEncoder.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/encoders/ExpressionEncoder.scala
@@ -87,7 +87,7 @@ object ExpressionEncoder {
}
constructProjection(row).get(0, anyObjectType).asInstanceOf[T]
} catch {
- case e: SparkRuntimeException if e.getErrorClass == "NOT_NULL_ASSERT_VIOLATION" =>
+ case e: SparkRuntimeException if e.getCondition == "NOT_NULL_ASSERT_VIOLATION" =>
throw e
case e: Exception =>
throw QueryExecutionErrors.expressionDecodingError(e, expressions)
@@ -115,7 +115,7 @@ object ExpressionEncoder {
inputRow(0) = t
extractProjection(inputRow)
} catch {
- case e: SparkRuntimeException if e.getErrorClass == "NOT_NULL_ASSERT_VIOLATION" =>
+ case e: SparkRuntimeException if e.getCondition == "NOT_NULL_ASSERT_VIOLATION" =>
throw e
case e: Exception =>
throw QueryExecutionErrors.expressionEncodingError(e, expressions)
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala
index c9150b8a2610..3ecb680cf642 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala
@@ -3256,7 +3256,7 @@ class AstBuilder extends DataTypeAstBuilder
} catch {
case e: SparkArithmeticException =>
throw new ParseException(
- errorClass = e.getErrorClass,
+ errorClass = e.getCondition,
messageParameters = e.getMessageParameters.asScala.toMap,
ctx)
}
@@ -3552,7 +3552,7 @@ class AstBuilder extends DataTypeAstBuilder
// Keep error class of SparkIllegalArgumentExceptions and enrich it with query context
case se: SparkIllegalArgumentException =>
val pe = new ParseException(
- errorClass = se.getErrorClass,
+ errorClass = se.getCondition,
messageParameters = se.getMessageParameters.asScala.toMap,
ctx)
pe.setStackTrace(se.getStackTrace)
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/GeneratedColumn.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/GeneratedColumn.scala
index 46f14876be36..8d88b05546ed 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/GeneratedColumn.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/GeneratedColumn.scala
@@ -127,7 +127,7 @@ object GeneratedColumn {
} catch {
case ex: AnalysisException =>
// Improve error message if possible
- if (ex.getErrorClass == "UNRESOLVED_COLUMN.WITH_SUGGESTION") {
+ if (ex.getCondition == "UNRESOLVED_COLUMN.WITH_SUGGESTION") {
ex.messageParameters.get("objectName").foreach { unresolvedCol =>
val resolver = SQLConf.get.resolver
// Whether `col` = `unresolvedCol` taking into account case-sensitivity
@@ -144,7 +144,7 @@ object GeneratedColumn {
}
}
}
- if (ex.getErrorClass == "UNRESOLVED_ROUTINE") {
+ if (ex.getCondition == "UNRESOLVED_ROUTINE") {
// Cannot resolve function using built-in catalog
ex.messageParameters.get("routineName").foreach { fnName =>
throw unsupportedExpressionError(s"failed to resolve $fnName to a built-in function")
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/exceptions/SqlScriptingException.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/exceptions/SqlScriptingException.scala
index f0c28c95046e..7602366c71a6 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/exceptions/SqlScriptingException.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/exceptions/SqlScriptingException.scala
@@ -33,7 +33,7 @@ class SqlScriptingException (
cause)
with SparkThrowable {
- override def getErrorClass: String = errorClass
+ override def getCondition: String = errorClass
override def getMessageParameters: java.util.Map[String, String] = messageParameters.asJava
}
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala
index 969eee4d912e..08002887135c 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala
@@ -782,7 +782,7 @@ object SQLConf {
CollationFactory.fetchCollation(collationName)
true
} catch {
- case e: SparkException if e.getErrorClass == "COLLATION_INVALID_NAME" => false
+ case e: SparkException if e.getCondition == "COLLATION_INVALID_NAME" => false
}
},
"DEFAULT_COLLATION",
diff --git a/sql/catalyst/src/test/java/org/apache/spark/sql/connector/catalog/CatalogLoadingSuite.java b/sql/catalyst/src/test/java/org/apache/spark/sql/connector/catalog/CatalogLoadingSuite.java
index 0db155e88aea..339f16407ae6 100644
--- a/sql/catalyst/src/test/java/org/apache/spark/sql/connector/catalog/CatalogLoadingSuite.java
+++ b/sql/catalyst/src/test/java/org/apache/spark/sql/connector/catalog/CatalogLoadingSuite.java
@@ -80,7 +80,7 @@ public class CatalogLoadingSuite {
SparkException exc = Assertions.assertThrows(CatalogNotFoundException.class,
() -> Catalogs.load("missing", conf));
- Assertions.assertEquals(exc.getErrorClass(), "CATALOG_NOT_FOUND");
+ Assertions.assertEquals(exc.getCondition(), "CATALOG_NOT_FOUND");
Assertions.assertEquals(exc.getMessageParameters().get("catalogName"), "`missing`");
}
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisTest.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisTest.scala
index 33b9fb488c94..71744f4d1510 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisTest.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisTest.scala
@@ -205,7 +205,7 @@ trait AnalysisTest extends PlanTest {
assert(e.message.contains(message))
}
if (condition.isDefined) {
- assert(e.getErrorClass == condition.get)
+ assert(e.getCondition == condition.get)
}
}
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/UnsupportedOperationsSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/UnsupportedOperationsSuite.scala
index 3e9a93dc743d..6ee19bab5180 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/UnsupportedOperationsSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/UnsupportedOperationsSuite.scala
@@ -1133,7 +1133,7 @@ class UnsupportedOperationsSuite extends SparkFunSuite with SQLHelper {
}
}
if (!condition.isEmpty) {
- assert(e.getErrorClass == condition)
+ assert(e.getCondition == condition)
}
}
}
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/csv/CSVExprUtilsSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/csv/CSVExprUtilsSuite.scala
index e8239c752394..f3817e4dd1a8 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/csv/CSVExprUtilsSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/csv/CSVExprUtilsSuite.scala
@@ -106,7 +106,7 @@ class CSVExprUtilsSuite extends SparkFunSuite {
} catch {
case e: SparkIllegalArgumentException =>
assert(separatorStr.isEmpty)
- assert(e.getErrorClass === expectedErrorClass.get)
+ assert(e.getCondition === expectedErrorClass.get)
}
}
}
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/encoders/EncoderResolutionSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/encoders/EncoderResolutionSuite.scala
index 35a27f41da80..6bd5b457ea24 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/encoders/EncoderResolutionSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/encoders/EncoderResolutionSuite.scala
@@ -173,7 +173,7 @@ class EncoderResolutionSuite extends PlanTest {
val exception = intercept[SparkRuntimeException] {
fromRow(InternalRow(new GenericArrayData(Array(1, null))))
}
- assert(exception.getErrorClass == "NOT_NULL_ASSERT_VIOLATION")
+ assert(exception.getCondition == "NOT_NULL_ASSERT_VIOLATION")
}
test("the real number of fields doesn't match encoder schema: tuple encoder") {
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/encoders/RowEncoderSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/encoders/RowEncoderSuite.scala
index f73911d344d9..79c6d07d6d21 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/encoders/RowEncoderSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/encoders/RowEncoderSuite.scala
@@ -279,7 +279,7 @@ class RowEncoderSuite extends CodegenInterpretedPlanTest {
// Check the error class only since the parameters may change depending on how we are running
// this test case.
val exception = intercept[SparkRuntimeException](toRow(encoder, null))
- assert(exception.getErrorClass == "NOT_NULL_ASSERT_VIOLATION")
+ assert(exception.getCondition == "NOT_NULL_ASSERT_VIOLATION")
}
test("RowEncoder should validate external type") {
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/BufferHolderSparkSubmitSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/BufferHolderSparkSubmitSuite.scala
index 3aeb0c882ac3..891e2d048b7a 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/BufferHolderSparkSubmitSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/BufferHolderSparkSubmitSuite.scala
@@ -64,7 +64,7 @@ object BufferHolderSparkSubmitSuite extends Assertions {
val e1 = intercept[SparkIllegalArgumentException] {
holder.grow(-1)
}
- assert(e1.getErrorClass === "_LEGACY_ERROR_TEMP_3198")
+ assert(e1.getCondition === "_LEGACY_ERROR_TEMP_3198")
// while to reuse a buffer may happen, this test checks whether the buffer can be grown
holder.grow(ARRAY_MAX / 2)
@@ -82,6 +82,6 @@ object BufferHolderSparkSubmitSuite extends Assertions {
val e2 = intercept[SparkIllegalArgumentException] {
holder.grow(ARRAY_MAX + 1 - holder.totalSize())
}
- assert(e2.getErrorClass === "_LEGACY_ERROR_TEMP_3199")
+ assert(e2.getCondition === "_LEGACY_ERROR_TEMP_3199")
}
}
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/DDLParserSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/DDLParserSuite.scala
index b7e2490b552c..926beacc592a 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/DDLParserSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/DDLParserSuite.scala
@@ -3065,7 +3065,7 @@ class DDLParserSuite extends AnalysisTest {
s"(id BIGINT GENERATED ALWAYS AS IDENTITY $identitySpecStr, val INT) USING foo"
)
}
- assert(exception.getErrorClass === "IDENTITY_COLUMNS_DUPLICATED_SEQUENCE_GENERATOR_OPTION")
+ assert(exception.getCondition === "IDENTITY_COLUMNS_DUPLICATED_SEQUENCE_GENERATOR_OPTION")
}
}
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/SqlScriptingParserSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/SqlScriptingParserSuite.scala
index 2972ba2db21d..2e702e5642a9 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/SqlScriptingParserSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/SqlScriptingParserSuite.scala
@@ -50,7 +50,7 @@ class SqlScriptingParserSuite extends SparkFunSuite with SQLHelper {
val e = intercept[ParseException] {
parseScript(sqlScriptText)
}
- assert(e.getErrorClass === "PARSE_SYNTAX_ERROR")
+ assert(e.getCondition === "PARSE_SYNTAX_ERROR")
assert(e.getMessage.contains("Syntax error"))
assert(e.getMessage.contains("SELECT"))
}
@@ -90,7 +90,7 @@ class SqlScriptingParserSuite extends SparkFunSuite with SQLHelper {
val e = intercept[ParseException] {
parseScript(sqlScriptText)
}
- assert(e.getErrorClass === "PARSE_SYNTAX_ERROR")
+ assert(e.getCondition === "PARSE_SYNTAX_ERROR")
assert(e.getMessage.contains("Syntax error"))
assert(e.getMessage.contains("at or near ';'"))
}
@@ -105,7 +105,7 @@ class SqlScriptingParserSuite extends SparkFunSuite with SQLHelper {
val e = intercept[ParseException] {
parseScript(sqlScriptText)
}
- assert(e.getErrorClass === "PARSE_SYNTAX_ERROR")
+ assert(e.getCondition === "PARSE_SYNTAX_ERROR")
assert(e.getMessage.contains("Syntax error"))
assert(e.getMessage.contains("at or near end of input"))
}
@@ -367,7 +367,7 @@ class SqlScriptingParserSuite extends SparkFunSuite with SQLHelper {
val e = intercept[ParseException] {
parseScript(sqlScriptText)
}
- assert(e.getErrorClass === "PARSE_SYNTAX_ERROR")
+ assert(e.getCondition === "PARSE_SYNTAX_ERROR")
assert(e.getMessage.contains("Syntax error"))
}
diff --git a/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/planner/SparkConnectPlanner.scala b/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/planner/SparkConnectPlanner.scala
index 25fd7d13b7d4..4e6994f9c2f8 100644
--- a/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/planner/SparkConnectPlanner.scala
+++ b/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/planner/SparkConnectPlanner.scala
@@ -3118,7 +3118,7 @@ class SparkConnectPlanner(
.newBuilder()
exception_builder
.setExceptionMessage(e.toString())
- .setErrorClass(e.getErrorClass)
+ .setErrorClass(e.getCondition)
val stackTrace = Option(ExceptionUtils.getStackTrace(e))
stackTrace.foreach { s =>
diff --git a/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/utils/ErrorUtils.scala b/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/utils/ErrorUtils.scala
index f1636ed1ef09..837d4a4d3ee7 100644
--- a/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/utils/ErrorUtils.scala
+++ b/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/utils/ErrorUtils.scala
@@ -114,8 +114,8 @@ private[connect] object ErrorUtils extends Logging {
case sparkThrowable: SparkThrowable =>
val sparkThrowableBuilder = FetchErrorDetailsResponse.SparkThrowable
.newBuilder()
- if (sparkThrowable.getErrorClass != null) {
- sparkThrowableBuilder.setErrorClass(sparkThrowable.getErrorClass)
+ if (sparkThrowable.getCondition != null) {
+ sparkThrowableBuilder.setErrorClass(sparkThrowable.getCondition)
}
for (queryCtx <- sparkThrowable.getQueryContext) {
val builder = FetchErrorDetailsResponse.QueryContext
@@ -193,7 +193,7 @@ private[connect] object ErrorUtils extends Logging {
if (state != null && state.nonEmpty) {
errorInfo.putMetadata("sqlState", state)
}
- val errorClass = e.getErrorClass
+ val errorClass = e.getCondition
if (errorClass != null && errorClass.nonEmpty) {
val messageParameters = JsonMethods.compact(
JsonMethods.render(map2jvalue(e.getMessageParameters.asScala.toMap)))
diff --git a/sql/connect/server/src/test/scala/org/apache/spark/sql/connect/service/SparkConnectSessionManagerSuite.scala b/sql/connect/server/src/test/scala/org/apache/spark/sql/connect/service/SparkConnectSessionManagerSuite.scala
index 42bb93de05e2..1f522ea28b76 100644
--- a/sql/connect/server/src/test/scala/org/apache/spark/sql/connect/service/SparkConnectSessionManagerSuite.scala
+++ b/sql/connect/server/src/test/scala/org/apache/spark/sql/connect/service/SparkConnectSessionManagerSuite.scala
@@ -37,7 +37,7 @@ class SparkConnectSessionManagerSuite extends SharedSparkSession with BeforeAndA
val exGetOrCreate = intercept[SparkSQLException] {
SparkConnectService.sessionManager.getOrCreateIsolatedSession(key, None)
}
- assert(exGetOrCreate.getErrorClass == "INVALID_HANDLE.FORMAT")
+ assert(exGetOrCreate.getCondition == "INVALID_HANDLE.FORMAT")
}
test(
@@ -72,7 +72,7 @@ class SparkConnectSessionManagerSuite extends SharedSparkSession with BeforeAndA
key,
Some(sessionHolder.session.sessionUUID + "invalid"))
}
- assert(exGet.getErrorClass == "INVALID_HANDLE.SESSION_CHANGED")
+ assert(exGet.getCondition == "INVALID_HANDLE.SESSION_CHANGED")
}
test(
@@ -85,12 +85,12 @@ class SparkConnectSessionManagerSuite extends SharedSparkSession with BeforeAndA
val exGetOrCreate = intercept[SparkSQLException] {
SparkConnectService.sessionManager.getOrCreateIsolatedSession(key, None)
}
- assert(exGetOrCreate.getErrorClass == "INVALID_HANDLE.SESSION_CLOSED")
+ assert(exGetOrCreate.getCondition == "INVALID_HANDLE.SESSION_CLOSED")
val exGet = intercept[SparkSQLException] {
SparkConnectService.sessionManager.getIsolatedSession(key, None)
}
- assert(exGet.getErrorClass == "INVALID_HANDLE.SESSION_CLOSED")
+ assert(exGet.getCondition == "INVALID_HANDLE.SESSION_CLOSED")
val sessionGetIfPresent = SparkConnectService.sessionManager.getIsolatedSessionIfPresent(key)
assert(sessionGetIfPresent.isEmpty)
@@ -102,7 +102,7 @@ class SparkConnectSessionManagerSuite extends SharedSparkSession with BeforeAndA
val exGet = intercept[SparkSQLException] {
SparkConnectService.sessionManager.getIsolatedSession(key, None)
}
- assert(exGet.getErrorClass == "INVALID_HANDLE.SESSION_NOT_FOUND")
+ assert(exGet.getCondition == "INVALID_HANDLE.SESSION_NOT_FOUND")
val sessionGetIfPresent = SparkConnectService.sessionManager.getIsolatedSessionIfPresent(key)
assert(sessionGetIfPresent.isEmpty)
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/DataSourceRegistration.scala b/sql/core/src/main/scala/org/apache/spark/sql/DataSourceRegistration.scala
index 8ffdbb952b08..3b64cb97e10b 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/DataSourceRegistration.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/DataSourceRegistration.scala
@@ -68,7 +68,7 @@ class DataSourceRegistration private[sql] (dataSourceManager: DataSourceManager)
DataSource.lookupDataSource(name, SQLConf.get)
throw QueryCompilationErrors.dataSourceAlreadyExists(name)
} catch {
- case e: SparkClassNotFoundException if e.getErrorClass == "DATA_SOURCE_NOT_FOUND" => // OK
+ case e: SparkClassNotFoundException if e.getCondition == "DATA_SOURCE_NOT_FOUND" => // OK
case _: Throwable =>
// If there are other errors when resolving the data source, it's unclear whether
// it's safe to proceed. To prevent potential lookup errors, treat it as an existing
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/rules.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/rules.scala
index 29385904a752..cbbf9f88f89d 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/rules.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/rules.scala
@@ -89,9 +89,9 @@ class ResolveSQLOnFile(sparkSession: SparkSession) extends Rule[LogicalPlan] {
LogicalRelation(ds.resolveRelation())
} catch {
case _: ClassNotFoundException => u
- case e: SparkIllegalArgumentException if e.getErrorClass != null =>
+ case e: SparkIllegalArgumentException if e.getCondition != null =>
u.failAnalysis(
- errorClass = e.getErrorClass,
+ errorClass = e.getCondition,
messageParameters = e.getMessageParameters.asScala.toMap,
cause = e)
case e: Exception if !e.isInstanceOf[AnalysisException] =>
@@ -469,8 +469,8 @@ object PreprocessTableInsertion extends ResolveInsertionBase {
supportColDefaultValue = true)
} catch {
case e: AnalysisException if staticPartCols.nonEmpty &&
- (e.getErrorClass == "INSERT_COLUMN_ARITY_MISMATCH.NOT_ENOUGH_DATA_COLUMNS" ||
- e.getErrorClass == "INSERT_COLUMN_ARITY_MISMATCH.TOO_MANY_DATA_COLUMNS") =>
+ (e.getCondition == "INSERT_COLUMN_ARITY_MISMATCH.NOT_ENOUGH_DATA_COLUMNS" ||
+ e.getCondition == "INSERT_COLUMN_ARITY_MISMATCH.TOO_MANY_DATA_COLUMNS") =>
val newException = e.copy(
errorClass = Some("INSERT_PARTITION_COLUMN_ARITY_MISMATCH"),
messageParameters = e.messageParameters ++ Map(
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/FileDataSourceV2.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/FileDataSourceV2.scala
index 168aea5b041f..4242fc5d8510 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/FileDataSourceV2.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/FileDataSourceV2.scala
@@ -131,7 +131,7 @@ object FileDataSourceV2 {
// The error is already FAILED_READ_FILE, throw it directly. To be consistent, schema
// inference code path throws `FAILED_READ_FILE`, but the file reading code path can reach
// that code path as well and we should not double-wrap the error.
- case e: SparkException if e.getErrorClass == "FAILED_READ_FILE.CANNOT_READ_FILE_FOOTER" =>
+ case e: SparkException if e.getCondition == "FAILED_READ_FILE.CANNOT_READ_FILE_FOOTER" =>
throw e
case e: SchemaColumnConvertNotSupportedException =>
throw QueryExecutionErrors.parquetColumnDataTypeMismatchError(
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/StreamExecution.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/StreamExecution.scala
index 8f030884ad33..14adf951f07e 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/StreamExecution.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/StreamExecution.scala
@@ -374,7 +374,7 @@ abstract class StreamExecution(
"message" -> message))
errorClassOpt = e match {
- case t: SparkThrowable => Option(t.getErrorClass)
+ case t: SparkThrowable => Option(t.getCondition)
case _ => None
}
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/state/HDFSBackedStateStoreProvider.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/state/HDFSBackedStateStoreProvider.scala
index 884b8aa3853c..3df63c41dbf9 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/state/HDFSBackedStateStoreProvider.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/state/HDFSBackedStateStoreProvider.scala
@@ -282,7 +282,7 @@ private[sql] class HDFSBackedStateStoreProvider extends StateStoreProvider with
newMap
}
catch {
- case e: SparkException if e.getErrorClass.contains("CANNOT_LOAD_STATE_STORE") =>
+ case e: SparkException if e.getCondition.contains("CANNOT_LOAD_STATE_STORE") =>
throw e
case e: OutOfMemoryError =>
throw QueryExecutionErrors.notEnoughMemoryToLoadStore(
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/state/RocksDBStateStoreProvider.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/state/RocksDBStateStoreProvider.scala
index 6ab634668bc2..870ed79ec174 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/state/RocksDBStateStoreProvider.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/state/RocksDBStateStoreProvider.scala
@@ -389,7 +389,7 @@ private[sql] class RocksDBStateStoreProvider
new RocksDBStateStore(version)
}
catch {
- case e: SparkException if e.getErrorClass.contains("CANNOT_LOAD_STATE_STORE") =>
+ case e: SparkException if e.getCondition.contains("CANNOT_LOAD_STATE_STORE") =>
throw e
case e: OutOfMemoryError =>
throw QueryExecutionErrors.notEnoughMemoryToLoadStore(
@@ -409,7 +409,7 @@ private[sql] class RocksDBStateStoreProvider
new RocksDBStateStore(version)
}
catch {
- case e: SparkException if e.getErrorClass.contains("CANNOT_LOAD_STATE_STORE") =>
+ case e: SparkException if e.getCondition.contains("CANNOT_LOAD_STATE_STORE") =>
throw e
case e: OutOfMemoryError =>
throw QueryExecutionErrors.notEnoughMemoryToLoadStore(
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/internal/CatalogImpl.scala b/sql/core/src/main/scala/org/apache/spark/sql/internal/CatalogImpl.scala
index 52b8d35e2fbf..64689e75e2e5 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/internal/CatalogImpl.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/internal/CatalogImpl.scala
@@ -177,7 +177,7 @@ class CatalogImpl(sparkSession: SparkSession) extends Catalog {
try {
Some(makeTable(catalogName +: ns :+ tableName))
} catch {
- case e: AnalysisException if e.getErrorClass == "UNSUPPORTED_FEATURE.HIVE_TABLE_TYPE" =>
+ case e: AnalysisException if e.getCondition == "UNSUPPORTED_FEATURE.HIVE_TABLE_TYPE" =>
Some(new Table(
name = tableName,
catalog = catalogName,
@@ -189,7 +189,7 @@ class CatalogImpl(sparkSession: SparkSession) extends Catalog {
}
}
} catch {
- case e: AnalysisException if e.getErrorClass == "TABLE_OR_VIEW_NOT_FOUND" => None
+ case e: AnalysisException if e.getCondition == "TABLE_OR_VIEW_NOT_FOUND" => None
}
}
@@ -203,7 +203,7 @@ class CatalogImpl(sparkSession: SparkSession) extends Catalog {
case _ => false
}
} catch {
- case e: AnalysisException if e.getErrorClass == "TABLE_OR_VIEW_NOT_FOUND" => false
+ case e: AnalysisException if e.getCondition == "TABLE_OR_VIEW_NOT_FOUND" => false
}
}
@@ -323,7 +323,7 @@ class CatalogImpl(sparkSession: SparkSession) extends Catalog {
case _ => false
}
} catch {
- case e: AnalysisException if e.getErrorClass == "UNRESOLVED_ROUTINE" => false
+ case e: AnalysisException if e.getCondition == "UNRESOLVED_ROUTINE" => false
}
}
diff --git a/sql/core/src/test/java/test/org/apache/spark/sql/JavaColumnExpressionSuite.java b/sql/core/src/test/java/test/org/apache/spark/sql/JavaColumnExpressionSuite.java
index 9fbd1919a266..9988d04220f0 100644
--- a/sql/core/src/test/java/test/org/apache/spark/sql/JavaColumnExpressionSuite.java
+++ b/sql/core/src/test/java/test/org/apache/spark/sql/JavaColumnExpressionSuite.java
@@ -85,7 +85,7 @@ public class JavaColumnExpressionSuite {
Dataset<Row> df = spark.createDataFrame(rows, schema);
AnalysisException e = Assertions.assertThrows(AnalysisException.class,
() -> df.filter(df.col("a").isInCollection(Arrays.asList(new Column("b")))));
- Assertions.assertTrue(e.getErrorClass().equals("DATATYPE_MISMATCH.DATA_DIFF_TYPES"));
+ Assertions.assertTrue(e.getCondition().equals("DATATYPE_MISMATCH.DATA_DIFF_TYPES"));
Map<String, String> messageParameters = new HashMap<>();
messageParameters.put("functionName", "`in`");
messageParameters.put("dataType", "[\"INT\", \"ARRAY<INT>\"]");
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/CollationExpressionWalkerSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/CollationExpressionWalkerSuite.scala
index 879c0c480943..8600ec4f8787 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/CollationExpressionWalkerSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/CollationExpressionWalkerSuite.scala
@@ -741,7 +741,7 @@ class CollationExpressionWalkerSuite extends SparkFunSuite with SharedSparkSessi
assert(resultUTF8.collect() === resultUTF8Lcase.collect())
}
} catch {
- case e: SparkRuntimeException => assert(e.getErrorClass == "USER_RAISED_EXCEPTION")
+ case e: SparkRuntimeException => assert(e.getCondition == "USER_RAISED_EXCEPTION")
case other: Throwable => throw other
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/DatasetSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/DatasetSuite.scala
index 85f296665b6e..45c34d9c7336 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/DatasetSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/DatasetSuite.scala
@@ -1273,7 +1273,7 @@ class DatasetSuite extends QueryTest
// Just check the error class here to avoid flakiness due to different parameters.
assert(intercept[SparkRuntimeException] {
buildDataset(Row(Row("hello", null))).collect()
- }.getErrorClass == "NOT_NULL_ASSERT_VIOLATION")
+ }.getCondition == "NOT_NULL_ASSERT_VIOLATION")
}
test("SPARK-12478: top level null field") {
@@ -1416,7 +1416,7 @@ class DatasetSuite extends QueryTest
val ex = intercept[SparkRuntimeException] {
spark.createDataFrame(rdd, schema).collect()
}
- assert(ex.getErrorClass == "EXPRESSION_ENCODING_FAILED")
+ assert(ex.getCondition == "EXPRESSION_ENCODING_FAILED")
assert(ex.getCause.getMessage.contains("The 1th field 'b' of input row cannot be null"))
}
@@ -1612,7 +1612,7 @@ class DatasetSuite extends QueryTest
test("Dataset should throw RuntimeException if top-level product input object is null") {
val e = intercept[SparkRuntimeException](Seq(ClassData("a", 1), null).toDS())
- assert(e.getErrorClass == "NOT_NULL_ASSERT_VIOLATION")
+ assert(e.getCondition == "NOT_NULL_ASSERT_VIOLATION")
}
test("dropDuplicates") {
@@ -2121,7 +2121,7 @@ class DatasetSuite extends QueryTest
test("SPARK-23835: null primitive data type should throw NullPointerException") {
val ds = Seq[(Option[Int], Option[Int])]((Some(1), None)).toDS()
val exception = intercept[SparkRuntimeException](ds.as[(Int, Int)].collect())
- assert(exception.getErrorClass == "NOT_NULL_ASSERT_VIOLATION")
+ assert(exception.getCondition == "NOT_NULL_ASSERT_VIOLATION")
}
test("SPARK-24569: Option of primitive types are mistakenly mapped to struct type") {
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/LateralColumnAliasSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/LateralColumnAliasSuite.scala
index a892cd4db02b..3f921618297d 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/LateralColumnAliasSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/LateralColumnAliasSuite.scala
@@ -205,7 +205,7 @@ class LateralColumnAliasSuite extends LateralColumnAliasSuiteBase {
withLCAOn { checkAnswer(sql(query), expectedAnswerLCAOn) }
withLCAOff {
assert(intercept[AnalysisException]{ sql(query) }
- .getErrorClass == "UNRESOLVED_COLUMN.WITH_SUGGESTION")
+ .getCondition == "UNRESOLVED_COLUMN.WITH_SUGGESTION")
}
}
@@ -216,8 +216,8 @@ class LateralColumnAliasSuite extends LateralColumnAliasSuiteBase {
errorParams: Map[String, String]): Unit = {
val e1 = intercept[AnalysisException] { sql(q1) }
val e2 = intercept[AnalysisException] { sql(q2) }
- assert(e1.getErrorClass == condition)
- assert(e2.getErrorClass == condition)
+ assert(e1.getCondition == condition)
+ assert(e2.getCondition == condition)
errorParams.foreach { case (k, v) =>
assert(e1.messageParameters.get(k).exists(_ == v))
assert(e2.messageParameters.get(k).exists(_ == v))
@@ -1187,7 +1187,7 @@ class LateralColumnAliasSuite extends LateralColumnAliasSuiteBase {
"sum_avg * 1.0 as sum_avg1, sum_avg1 + dept " +
s"from $testTable group by dept, properties.joinYear $havingSuffix"
).foreach { query =>
- assert(intercept[AnalysisException](sql(query)).getErrorClass ==
+ assert(intercept[AnalysisException](sql(query)).getCondition ==
"UNSUPPORTED_FEATURE.LATERAL_COLUMN_ALIAS_IN_AGGREGATE_WITH_WINDOW_AND_HAVING")
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/RuntimeNullChecksV2Writes.scala b/sql/core/src/test/scala/org/apache/spark/sql/RuntimeNullChecksV2Writes.scala
index 754c46cc5cd3..b48ff7121c76 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/RuntimeNullChecksV2Writes.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/RuntimeNullChecksV2Writes.scala
@@ -64,7 +64,7 @@ class RuntimeNullChecksV2Writes extends QueryTest with SQLTestUtils with SharedS
sql("INSERT INTO t VALUES ('txt', null)")
}
}
- assert(e.getErrorClass == "NOT_NULL_ASSERT_VIOLATION")
+ assert(e.getCondition == "NOT_NULL_ASSERT_VIOLATION")
}
}
@@ -404,7 +404,7 @@ class RuntimeNullChecksV2Writes extends QueryTest with SQLTestUtils with SharedS
private def assertNotNullException(e: SparkRuntimeException, colPath: Seq[String]): Unit = {
e.getCause match {
- case _ if e.getErrorClass == "NOT_NULL_ASSERT_VIOLATION" =>
+ case _ if e.getCondition == "NOT_NULL_ASSERT_VIOLATION" =>
case other =>
fail(s"Unexpected exception cause: $other")
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQueryTestHelper.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQueryTestHelper.scala
index 38e004e0b720..4bd20bc24561 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/SQLQueryTestHelper.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQueryTestHelper.scala
@@ -148,7 +148,7 @@ trait SQLQueryTestHelper extends Logging {
try {
result
} catch {
- case e: SparkThrowable with Throwable if e.getErrorClass != null =>
+ case e: SparkThrowable with Throwable if e.getCondition != null =>
(emptySchema, Seq(e.getClass.getName, getMessage(e, format)))
case a: AnalysisException =>
// Do not output the logical plan tree which contains expression IDs.
@@ -160,7 +160,7 @@ trait SQLQueryTestHelper extends Logging {
// information of stage, task ID, etc.
// To make result matching simpler, here we match the cause of the exception if it exists.
s.getCause match {
- case e: SparkThrowable with Throwable if e.getErrorClass != null =>
+ case e: SparkThrowable with Throwable if e.getCondition != null =>
(emptySchema, Seq(e.getClass.getName, getMessage(e, format)))
case cause =>
(emptySchema, Seq(cause.getClass.getName, cause.getMessage))
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala
index f17cf2556514..f8f7fd246832 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala
@@ -925,12 +925,12 @@ class SubquerySuite extends QueryTest
withSQLConf(SQLConf.DECORRELATE_INNER_QUERY_ENABLED.key -> "false") {
val error = intercept[AnalysisException] { sql(query) }
- assert(error.getErrorClass == "UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY." +
+ assert(error.getCondition == "UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY." +
"ACCESSING_OUTER_QUERY_COLUMN_IS_NOT_ALLOWED")
}
withSQLConf(SQLConf.DECORRELATE_SET_OPS_ENABLED.key -> "false") {
val error = intercept[AnalysisException] { sql(query) }
- assert(error.getErrorClass == "UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY." +
+ assert(error.getCondition == "UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY." +
"ACCESSING_OUTER_QUERY_COLUMN_IS_NOT_ALLOWED")
}
@@ -1004,12 +1004,12 @@ class SubquerySuite extends QueryTest
withSQLConf(SQLConf.DECORRELATE_INNER_QUERY_ENABLED.key -> "false") {
val error = intercept[AnalysisException] { sql(query) }
- assert(error.getErrorClass == "UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY." +
+ assert(error.getCondition == "UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY." +
"ACCESSING_OUTER_QUERY_COLUMN_IS_NOT_ALLOWED")
}
withSQLConf(SQLConf.DECORRELATE_SET_OPS_ENABLED.key -> "false") {
val error = intercept[AnalysisException] { sql(query) }
- assert(error.getErrorClass == "UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY." +
+ assert(error.getCondition == "UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY." +
"ACCESSING_OUTER_QUERY_COLUMN_IS_NOT_ALLOWED")
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/UDFSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/UDFSuite.scala
index 2e072e5afc92..d550d0f94f23 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/UDFSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/UDFSuite.scala
@@ -821,14 +821,14 @@ class UDFSuite extends QueryTest with SharedSparkSession {
val e1 = intercept[SparkException] {
Seq("20").toDF("col").select(udf(f1).apply(Column("col"))).collect()
}
- assert(e1.getErrorClass == "FAILED_EXECUTE_UDF")
+ assert(e1.getCondition == "FAILED_EXECUTE_UDF")
assert(e1.getCause.getStackTrace.head.toString.contains(
"UDFSuite$MalformedClassObject$MalformedNonPrimitiveFunction"))
val e2 = intercept[SparkException] {
Seq(20).toDF("col").select(udf(f2).apply(Column("col"))).collect()
}
- assert(e2.getErrorClass == "FAILED_EXECUTE_UDF")
+ assert(e2.getCondition == "FAILED_EXECUTE_UDF")
assert(e2.getCause.getStackTrace.head.toString.contains(
"UDFSuite$MalformedClassObject$MalformedPrimitiveFunction"))
}
@@ -938,7 +938,7 @@ class UDFSuite extends QueryTest with SharedSparkSession {
val e = intercept[SparkException] {
input.select(overflowFunc($"dateTime")).collect()
}
- assert(e.getErrorClass == "FAILED_EXECUTE_UDF")
+ assert(e.getCondition == "FAILED_EXECUTE_UDF")
assert(e.getCause.isInstanceOf[java.lang.ArithmeticException])
}
@@ -1053,7 +1053,7 @@ class UDFSuite extends QueryTest with SharedSparkSession {
val e = intercept[SparkException] {
input.select(overflowFunc($"d")).collect()
}
- assert(e.getErrorClass == "FAILED_EXECUTE_UDF")
+ assert(e.getCondition == "FAILED_EXECUTE_UDF")
assert(e.getCause.isInstanceOf[java.lang.ArithmeticException])
}
@@ -1101,7 +1101,7 @@ class UDFSuite extends QueryTest with SharedSparkSession {
val e = intercept[SparkException] {
input.select(overflowFunc($"p")).collect()
}
- assert(e.getErrorClass == "FAILED_EXECUTE_UDF")
+ assert(e.getCondition == "FAILED_EXECUTE_UDF")
assert(e.getCause.isInstanceOf[java.lang.ArithmeticException])
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/connector/DataSourceV2SQLSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/connector/DataSourceV2SQLSuite.scala
index 6b58d23e9260..52ae1bf5d9d3 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/connector/DataSourceV2SQLSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/connector/DataSourceV2SQLSuite.scala
@@ -840,7 +840,7 @@ class DataSourceV2SQLSuiteV1Filter
val exception = intercept[SparkRuntimeException] {
insertNullValueAndCheck()
}
- assert(exception.getErrorClass == "NOT_NULL_ASSERT_VIOLATION")
+ assert(exception.getCondition == "NOT_NULL_ASSERT_VIOLATION")
}
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/connector/MergeIntoTableSuiteBase.scala b/sql/core/src/test/scala/org/apache/spark/sql/connector/MergeIntoTableSuiteBase.scala
index 9d4e4fc01672..053616c88d63 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/connector/MergeIntoTableSuiteBase.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/connector/MergeIntoTableSuiteBase.scala
@@ -1326,7 +1326,7 @@ abstract class MergeIntoTableSuiteBase extends RowLevelOperationSuiteBase {
| UPDATE SET s = named_struct('n_i', null, 'n_l', -1L)
|""".stripMargin)
}
- assert(e1.getErrorClass == "NOT_NULL_ASSERT_VIOLATION")
+ assert(e1.getCondition == "NOT_NULL_ASSERT_VIOLATION")
val e2 = intercept[SparkRuntimeException] {
sql(
@@ -1337,7 +1337,7 @@ abstract class MergeIntoTableSuiteBase extends RowLevelOperationSuiteBase {
| UPDATE SET s = named_struct('n_i', null, 'n_l', -1L)
|""".stripMargin)
}
- assert(e2.getErrorClass == "NOT_NULL_ASSERT_VIOLATION")
+ assert(e2.getCondition == "NOT_NULL_ASSERT_VIOLATION")
val e3 = intercept[SparkRuntimeException] {
sql(
@@ -1348,7 +1348,7 @@ abstract class MergeIntoTableSuiteBase extends RowLevelOperationSuiteBase {
| INSERT (pk, s, dep) VALUES (s.pk, named_struct('n_i', null, 'n_l', -1L), 'invalid')
|""".stripMargin)
}
- assert(e3.getErrorClass == "NOT_NULL_ASSERT_VIOLATION")
+ assert(e3.getCondition == "NOT_NULL_ASSERT_VIOLATION")
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryExecutionErrorsSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryExecutionErrorsSuite.scala
index 86c1f17b4dbb..1adb1fdf0503 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryExecutionErrorsSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryExecutionErrorsSuite.scala
@@ -293,7 +293,7 @@ class QueryExecutionErrorsSuite
val e = intercept[SparkException] {
df.write.parquet(dir.getCanonicalPath)
}
- assert(e.getErrorClass == "TASK_WRITE_FAILED")
+ assert(e.getCondition == "TASK_WRITE_FAILED")
val format = "Parquet"
val config = "\"" + SQLConf.PARQUET_REBASE_MODE_IN_WRITE.key + "\""
@@ -312,7 +312,7 @@ class QueryExecutionErrorsSuite
val ex = intercept[SparkException] {
spark.read.schema("time timestamp_ntz").orc(file.getCanonicalPath).collect()
}
- assert(ex.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(ex.getCondition.startsWith("FAILED_READ_FILE"))
checkError(
exception = ex.getCause.asInstanceOf[SparkUnsupportedOperationException],
condition = "UNSUPPORTED_FEATURE.ORC_TYPE_CAST",
@@ -334,7 +334,7 @@ class QueryExecutionErrorsSuite
val ex = intercept[SparkException] {
spark.read.schema("time timestamp_ltz").orc(file.getCanonicalPath).collect()
}
- assert(ex.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(ex.getCondition.startsWith("FAILED_READ_FILE"))
checkError(
exception = ex.getCause.asInstanceOf[SparkUnsupportedOperationException],
condition = "UNSUPPORTED_FEATURE.ORC_TYPE_CAST",
@@ -382,7 +382,7 @@ class QueryExecutionErrorsSuite
}
val e2 = e1.getCause.asInstanceOf[SparkException]
- assert(e2.getErrorClass == "MALFORMED_RECORD_IN_PARSING.WITHOUT_SUGGESTION")
+ assert(e2.getCondition == "MALFORMED_RECORD_IN_PARSING.WITHOUT_SUGGESTION")
checkError(
exception = e2.getCause.asInstanceOf[SparkRuntimeException],
@@ -921,7 +921,7 @@ class QueryExecutionErrorsSuite
val e = intercept[StreamingQueryException] {
query.awaitTermination()
}
- assert(e.getErrorClass === "STREAM_FAILED")
+ assert(e.getCondition === "STREAM_FAILED")
assert(e.getCause.isInstanceOf[NullPointerException])
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala
index 75f016d050de..c5e64c96b2c8 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala
@@ -904,7 +904,7 @@ class AdaptiveQueryExecSuite
val error = intercept[SparkException] {
aggregated.count()
}
- assert(error.getErrorClass === "INVALID_BUCKET_FILE")
+ assert(error.getCondition === "INVALID_BUCKET_FILE")
assert(error.getMessage contains "Invalid bucket file")
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/binaryfile/BinaryFileFormatSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/binaryfile/BinaryFileFormatSuite.scala
index deb62eb3ac23..387a2baa256b 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/binaryfile/BinaryFileFormatSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/binaryfile/BinaryFileFormatSuite.scala
@@ -368,7 +368,7 @@ class BinaryFileFormatSuite extends QueryTest with SharedSparkSession {
checkAnswer(readContent(), expected)
}
}
- assert(caught.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(caught.getCondition.startsWith("FAILED_READ_FILE"))
assert(caught.getCause.getMessage.contains("exceeds the max length allowed"))
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/csv/CSVSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/csv/CSVSuite.scala
index 023f401516dc..422ae02a1832 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/csv/CSVSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/csv/CSVSuite.scala
@@ -392,7 +392,7 @@ abstract class CSVSuite
condition = "FAILED_READ_FILE.NO_HINT",
parameters = Map("path" -> s".*$carsFile.*"))
val e2 = e1.getCause.asInstanceOf[SparkException]
- assert(e2.getErrorClass == "MALFORMED_RECORD_IN_PARSING.WITHOUT_SUGGESTION")
+ assert(e2.getCondition == "MALFORMED_RECORD_IN_PARSING.WITHOUT_SUGGESTION")
checkError(
exception = e2.getCause.asInstanceOf[SparkRuntimeException],
condition = "MALFORMED_CSV_RECORD",
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcFilterSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcFilterSuite.scala
index f13d66b76838..500c0647bcb2 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcFilterSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcFilterSuite.scala
@@ -708,7 +708,7 @@ class OrcFilterSuite extends OrcTest with SharedSparkSession {
val ex = intercept[SparkException] {
sql(s"select A from $tableName where A < 0").collect()
}
- assert(ex.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(ex.getCondition.startsWith("FAILED_READ_FILE"))
assert(ex.getCause.isInstanceOf[SparkRuntimeException])
assert(ex.getCause.getMessage.contains(
"""Found duplicate field(s) "A": [A, a] in case-insensitive mode"""))
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcQuerySuite.scala
index 2e6413d998d1..ab0d4d9bc53b 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcQuerySuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcQuerySuite.scala
@@ -604,14 +604,14 @@ abstract class OrcQueryTest extends OrcTest {
val e1 = intercept[SparkException] {
testIgnoreCorruptFiles()
}
- assert(e1.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(e1.getCondition.startsWith("FAILED_READ_FILE"))
assert(e1.getCause.getMessage.contains("Malformed ORC file") ||
// Hive ORC table scan uses a different code path and has one more error stack
e1.getCause.getCause.getMessage.contains("Malformed ORC file"))
val e2 = intercept[SparkException] {
testIgnoreCorruptFilesWithoutSchemaInfer()
}
- assert(e2.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(e2.getCondition.startsWith("FAILED_READ_FILE"))
assert(e2.getCause.getMessage.contains("Malformed ORC file") ||
// Hive ORC table scan uses a different code path and has one more error stack
e2.getCause.getCause.getMessage.contains("Malformed ORC file"))
@@ -625,7 +625,7 @@ abstract class OrcQueryTest extends OrcTest {
val e4 = intercept[SparkException] {
testAllCorruptFilesWithoutSchemaInfer()
}
- assert(e4.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(e4.getCondition.startsWith("FAILED_READ_FILE"))
assert(e4.getCause.getMessage.contains("Malformed ORC file") ||
// Hive ORC table scan uses a different code path and has one more error stack
e4.getCause.getCause.getMessage.contains("Malformed ORC file"))
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcSourceSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcSourceSuite.scala
index 9348d10711b3..040999476ece 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcSourceSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/orc/OrcSourceSuite.scala
@@ -450,8 +450,8 @@ abstract class OrcSuite
val ex = intercept[SparkException] {
spark.read.orc(basePath).columns.length
}
- assert(ex.getErrorClass == "CANNOT_MERGE_SCHEMAS")
- assert(ex.getCause.asInstanceOf[SparkException].getErrorClass ===
+ assert(ex.getCondition == "CANNOT_MERGE_SCHEMAS")
+ assert(ex.getCause.asInstanceOf[SparkException].getCondition ===
"CANNOT_MERGE_INCOMPATIBLE_DATA_TYPE")
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetFilterSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetFilterSuite.scala
index 5c382b185871..903dda7f41c0 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetFilterSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetFilterSuite.scala
@@ -1958,7 +1958,7 @@ abstract class ParquetFilterSuite extends QueryTest with ParquetTest with Shared
val ex = intercept[SparkException] {
sql(s"select a from $tableName where b > 0").collect()
}
- assert(ex.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(ex.getCondition.startsWith("FAILED_READ_FILE"))
assert(ex.getCause.isInstanceOf[SparkRuntimeException])
assert(ex.getCause.getMessage.contains(
"""Found duplicate field(s) "B": [B, b] in case-insensitive mode"""))
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetIOSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetIOSuite.scala
index 0afa545595c7..95fb17815492 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetIOSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetIOSuite.scala
@@ -1223,7 +1223,7 @@ class ParquetIOSuite extends QueryTest with ParquetTest with SharedSparkSession
val m1 = intercept[SparkException] {
spark.range(1).coalesce(1).write.options(extraOptions).parquet(dir.getCanonicalPath)
}
- assert(m1.getErrorClass == "TASK_WRITE_FAILED")
+ assert(m1.getCondition == "TASK_WRITE_FAILED")
assert(m1.getCause.getMessage.contains("Intentional exception for testing purposes"))
}
@@ -1233,8 +1233,8 @@ class ParquetIOSuite extends QueryTest with ParquetTest with SharedSparkSession
.coalesce(1)
df.write.partitionBy("a").options(extraOptions).parquet(dir.getCanonicalPath)
}
- if (m2.getErrorClass != null) {
- assert(m2.getErrorClass == "TASK_WRITE_FAILED")
+ if (m2.getCondition != null) {
+ assert(m2.getCondition == "TASK_WRITE_FAILED")
assert(m2.getCause.getMessage.contains("Intentional exception for testing purposes"))
} else {
assert(m2.getMessage.contains("TASK_WRITE_FAILED"))
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetPartitionDiscoverySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetPartitionDiscoverySuite.scala
index eb4618834504..87a2843f34de 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetPartitionDiscoverySuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetPartitionDiscoverySuite.scala
@@ -1181,7 +1181,7 @@ abstract class ParquetPartitionDiscoverySuite
spark.read.parquet(dir.toString)
}
val msg = exception.getMessage
- assert(exception.getErrorClass === "CONFLICTING_PARTITION_COLUMN_NAMES")
+ assert(exception.getCondition === "CONFLICTING_PARTITION_COLUMN_NAMES")
// Partitions inside the error message can be presented in any order
assert("Partition column name list #[0-1]: col1".r.findFirstIn(msg).isDefined)
assert("Partition column name list #[0-1]: col1, col2".r.findFirstIn(msg).isDefined)
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetQuerySuite.scala
index 4d413efe5043..22a02447e720 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetQuerySuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetQuerySuite.scala
@@ -1075,7 +1075,7 @@ abstract class ParquetQuerySuite extends QueryTest with ParquetTest with SharedS
val e = intercept[SparkException] {
readParquet("d DECIMAL(3, 2)", path).collect()
}
- assert(e.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(e.getCondition.startsWith("FAILED_READ_FILE"))
assert(e.getCause.getMessage.contains("Please read this column/field as Spark BINARY type"))
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetRebaseDatetimeSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetRebaseDatetimeSuite.scala
index 6d9092391a98..30503af0fab6 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetRebaseDatetimeSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetRebaseDatetimeSuite.scala
@@ -414,7 +414,7 @@ abstract class ParquetRebaseDatetimeSuite
val e = intercept[SparkException] {
df.write.parquet(dir.getCanonicalPath)
}
- assert(e.getErrorClass == "TASK_WRITE_FAILED")
+ assert(e.getCondition == "TASK_WRITE_FAILED")
val errMsg = e.getCause.asInstanceOf[SparkUpgradeException].getMessage
assert(errMsg.contains("You may get a different result due to the upgrading"))
}
@@ -431,7 +431,7 @@ abstract class ParquetRebaseDatetimeSuite
val e = intercept[SparkException] {
df.write.parquet(dir.getCanonicalPath)
}
- assert(e.getErrorClass == "TASK_WRITE_FAILED")
+ assert(e.getCondition == "TASK_WRITE_FAILED")
val errMsg = e.getCause.asInstanceOf[SparkUpgradeException].getMessage
assert(errMsg.contains("You may get a different result due to the upgrading"))
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetRowIndexSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetRowIndexSuite.scala
index 95378d946747..08fd8a9ecb53 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetRowIndexSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetRowIndexSuite.scala
@@ -319,7 +319,7 @@ class ParquetRowIndexSuite extends QueryTest with SharedSparkSession {
.load(path.getAbsolutePath)
val exception = intercept[SparkException](dfRead.collect())
- assert(exception.getErrorClass.startsWith("FAILED_READ_FILE"))
+ assert(exception.getCondition.startsWith("FAILED_READ_FILE"))
assert(exception.getCause.getMessage.contains(
ParquetFileFormat.ROW_INDEX_TEMPORARY_COLUMN_NAME))
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/state/StateDataSourceChangeDataReadSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/state/StateDataSourceChangeDataReadSuite.scala
index 4833b8630134..59c0af8afd19 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/state/StateDataSourceChangeDataReadSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/state/StateDataSourceChangeDataReadSuite.scala
@@ -90,7 +90,7 @@ abstract class StateDataSourceChangeDataReaderSuite extends StateDataSourceTestB
.option(StateSourceOptions.CHANGE_END_BATCH_ID, 2)
.load(tempDir.getAbsolutePath)
}
- assert(exc.getErrorClass === "STDS_INVALID_OPTION_VALUE.WITH_MESSAGE")
+ assert(exc.getCondition === "STDS_INVALID_OPTION_VALUE.WITH_MESSAGE")
}
}
@@ -103,7 +103,7 @@ abstract class StateDataSourceChangeDataReaderSuite extends StateDataSourceTestB
.option(StateSourceOptions.CHANGE_END_BATCH_ID, 0)
.load(tempDir.getAbsolutePath)
}
- assert(exc.getErrorClass === "STDS_INVALID_OPTION_VALUE.IS_NEGATIVE")
+ assert(exc.getCondition === "STDS_INVALID_OPTION_VALUE.IS_NEGATIVE")
}
}
@@ -116,7 +116,7 @@ abstract class StateDataSourceChangeDataReaderSuite extends StateDataSourceTestB
.option(StateSourceOptions.CHANGE_END_BATCH_ID, 0)
.load(tempDir.getAbsolutePath)
}
- assert(exc.getErrorClass === "STDS_INVALID_OPTION_VALUE.WITH_MESSAGE")
+ assert(exc.getCondition === "STDS_INVALID_OPTION_VALUE.WITH_MESSAGE")
}
}
@@ -130,7 +130,7 @@ abstract class StateDataSourceChangeDataReaderSuite extends StateDataSourceTestB
.option(StateSourceOptions.CHANGE_END_BATCH_ID, 0)
.load(tempDir.getAbsolutePath)
}
- assert(exc.getErrorClass === "STDS_CONFLICT_OPTIONS")
+ assert(exc.getCondition === "STDS_CONFLICT_OPTIONS")
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/state/StateDataSourceReadSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/state/StateDataSourceReadSuite.scala
index 5f55848d540d..300da03f73e1 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/state/StateDataSourceReadSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/state/StateDataSourceReadSuite.scala
@@ -1137,7 +1137,7 @@ abstract class StateDataSourceReadSuite extends StateDataSourceTestBase with Ass
val exc = intercept[StateStoreSnapshotPartitionNotFound] {
stateDfError.show()
}
- assert(exc.getErrorClass === "CANNOT_LOAD_STATE_STORE.SNAPSHOT_PARTITION_ID_NOT_FOUND")
+ assert(exc.getCondition === "CANNOT_LOAD_STATE_STORE.SNAPSHOT_PARTITION_ID_NOT_FOUND")
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/python/PythonDataSourceSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/python/PythonDataSourceSuite.scala
index dcebece29037..1f2be12058eb 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/python/PythonDataSourceSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/python/PythonDataSourceSuite.scala
@@ -330,7 +330,7 @@ class PythonDataSourceSuite extends PythonDataSourceSuiteBase {
val err = intercept[AnalysisException] {
spark.read.format(dataSourceName).schema(schema).load().collect()
}
- assert(err.getErrorClass == "PYTHON_DATA_SOURCE_ERROR")
+ assert(err.getCondition == "PYTHON_DATA_SOURCE_ERROR")
assert(err.getMessage.contains("PySparkNotImplementedError"))
}
@@ -350,7 +350,7 @@ class PythonDataSourceSuite extends PythonDataSourceSuiteBase {
val err = intercept[AnalysisException] {
spark.read.format(dataSourceName).schema(schema).load().collect()
}
- assert(err.getErrorClass == "PYTHON_DATA_SOURCE_ERROR")
+ assert(err.getCondition == "PYTHON_DATA_SOURCE_ERROR")
assert(err.getMessage.contains("error creating reader"))
}
@@ -369,7 +369,7 @@ class PythonDataSourceSuite extends PythonDataSourceSuiteBase {
val err = intercept[AnalysisException] {
spark.read.format(dataSourceName).schema(schema).load().collect()
}
- assert(err.getErrorClass == "PYTHON_DATA_SOURCE_ERROR")
+ assert(err.getCondition == "PYTHON_DATA_SOURCE_ERROR")
assert(err.getMessage.contains("DATA_SOURCE_TYPE_MISMATCH"))
assert(err.getMessage.contains("PySparkAssertionError"))
}
@@ -480,7 +480,7 @@ class PythonDataSourceSuite extends PythonDataSourceSuiteBase {
spark.dataSource.registerPython(dataSourceName, dataSource)
val err = intercept[AnalysisException](
spark.read.format(dataSourceName).load().collect())
- assert(err.getErrorClass == "PYTHON_DATA_SOURCE_ERROR")
+ assert(err.getCondition == "PYTHON_DATA_SOURCE_ERROR")
assert(err.getMessage.contains("partitions"))
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/python/PythonStreamingDataSourceSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/python/PythonStreamingDataSourceSuite.scala
index 8d0e1c5f578f..3d91a045907f 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/python/PythonStreamingDataSourceSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/python/PythonStreamingDataSourceSuite.scala
@@ -574,7 +574,7 @@ class PythonStreamingDataSourceSuite extends PythonDataSourceSuiteBase {
val q = spark.readStream.format(dataSourceName).load().writeStream.format("console").start()
q.awaitTermination()
}
- assert(err.getErrorClass == "STREAM_FAILED")
+ assert(err.getCondition == "STREAM_FAILED")
assert(err.getMessage.contains("error creating stream reader"))
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/streaming/state/StateSchemaCompatibilityCheckerSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/streaming/state/StateSchemaCompatibilityCheckerSuite.scala
index 38533825ece9..99483bc0ee8d 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/streaming/state/StateSchemaCompatibilityCheckerSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/streaming/state/StateSchemaCompatibilityCheckerSuite.scala
@@ -423,14 +423,14 @@ class StateSchemaCompatibilityCheckerSuite extends SharedSparkSession {
// collation checks are also performed in this path. so we need to check for them explicitly.
if (keyCollationChecks) {
assert(ex.getMessage.contains("Binary inequality column is not supported"))
- assert(ex.getErrorClass === "STATE_STORE_UNSUPPORTED_OPERATION_BINARY_INEQUALITY")
+ assert(ex.getCondition === "STATE_STORE_UNSUPPORTED_OPERATION_BINARY_INEQUALITY")
} else {
if (ignoreValueSchema) {
// if value schema is ignored, the mismatch has to be on the key schema
- assert(ex.getErrorClass === "STATE_STORE_KEY_SCHEMA_NOT_COMPATIBLE")
+ assert(ex.getCondition === "STATE_STORE_KEY_SCHEMA_NOT_COMPATIBLE")
} else {
- assert(ex.getErrorClass === "STATE_STORE_KEY_SCHEMA_NOT_COMPATIBLE" ||
- ex.getErrorClass === "STATE_STORE_VALUE_SCHEMA_NOT_COMPATIBLE")
+ assert(ex.getCondition === "STATE_STORE_KEY_SCHEMA_NOT_COMPATIBLE" ||
+ ex.getCondition === "STATE_STORE_VALUE_SCHEMA_NOT_COMPATIBLE")
}
assert(ex.getMessage.contains("does not match existing"))
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/streaming/state/StateStoreSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/streaming/state/StateStoreSuite.scala
index 8bbc7a31760d..2a9944a81cb2 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/streaming/state/StateStoreSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/streaming/state/StateStoreSuite.scala
@@ -1373,7 +1373,7 @@ abstract class StateStoreSuiteBase[ProviderClass <: StateStoreProvider]
put(store, "a", 0, 0)
val e = intercept[SparkException](quietly { store.commit() } )
- assert(e.getErrorClass == "CANNOT_WRITE_STATE_STORE.CANNOT_COMMIT")
+ assert(e.getCondition == "CANNOT_WRITE_STATE_STORE.CANNOT_COMMIT")
if (store.getClass.getName contains ROCKSDB_STATE_STORE) {
assert(e.getMessage contains "RocksDBStateStore[id=(op=0,part=0)")
} else {
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/sources/InsertSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/sources/InsertSuite.scala
index 41447d8af574..baf99798965d 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/sources/InsertSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/sources/InsertSuite.scala
@@ -956,7 +956,7 @@ class InsertSuite extends DataSourceTest with SharedSparkSession {
val msg = intercept[SparkRuntimeException] {
sql("INSERT INTO TABLE test_table SELECT 2, null")
}
- assert(msg.getErrorClass == "NOT_NULL_ASSERT_VIOLATION")
+ assert(msg.getCondition == "NOT_NULL_ASSERT_VIOLATION")
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/streaming/StreamingQueryListenerSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/streaming/StreamingQueryListenerSuite.scala
index d9ce8002d285..a0eea14e54ee 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/streaming/StreamingQueryListenerSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/streaming/StreamingQueryListenerSuite.scala
@@ -296,7 +296,7 @@ class StreamingQueryListenerSuite extends StreamTest with BeforeAndAfter {
val exception = SparkException.internalError("testpurpose")
testSerialization(
new QueryTerminatedEvent(UUID.randomUUID, UUID.randomUUID,
- Some(exception.getMessage), Some(exception.getErrorClass)))
+ Some(exception.getMessage), Some(exception.getCondition)))
}
test("only one progress event per interval when no data") {
diff --git a/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/HiveThriftServerErrors.scala b/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/HiveThriftServerErrors.scala
index 8a8bdd4d38ee..59d1b61f2f8e 100644
--- a/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/HiveThriftServerErrors.scala
+++ b/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/HiveThriftServerErrors.scala
@@ -38,7 +38,7 @@ object HiveThriftServerErrors {
def runningQueryError(e: Throwable, format: ErrorMessageFormat.Value): Throwable = e match {
case st: SparkThrowable if format == ErrorMessageFormat.PRETTY =>
- val errorClassPrefix = Option(st.getErrorClass).map(e => s"[$e] ").getOrElse("")
+ val errorClassPrefix = Option(st.getCondition).map(e => s"[$e] ").getOrElse("")
new HiveSQLException(
s"Error running query: $errorClassPrefix${st.toString}", st.getSqlState, st)
case st: SparkThrowable with Throwable =>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org