Skip to content

Commit 04e1ffd

Browse files
committed
fix: enable cast tests for Spark 4.0
1 parent 95c8c7d commit 04e1ffd

File tree

1 file changed

+8
-16
lines changed

1 file changed

+8
-16
lines changed

spark/src/test/scala/org/apache/comet/CometCastSuite.scala

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import org.apache.spark.sql.functions.col
3333
import org.apache.spark.sql.internal.SQLConf
3434
import org.apache.spark.sql.types.{ArrayType, BooleanType, ByteType, DataType, DataTypes, DecimalType, IntegerType, LongType, ShortType, StringType, StructField, StructType}
3535

36-
import org.apache.comet.CometSparkSessionExtensions.isSpark40Plus
3736
import org.apache.comet.expressions.{CometCast, CometEvalMode}
3837
import org.apache.comet.rules.CometScanTypeChecker
3938
import org.apache.comet.serde.Compatible
@@ -575,8 +574,6 @@ class CometCastSuite extends CometTestBase with AdaptiveSparkPlanHelper {
575574
// CAST from StringType
576575

577576
test("cast StringType to BooleanType") {
578-
// TODO fix for Spark 4.0.0
579-
assume(!isSpark40Plus)
580577
val testValues =
581578
(Seq("TRUE", "True", "true", "FALSE", "False", "false", "1", "0", "", null) ++
582579
gen.generateStrings(dataSize, "truefalseTRUEFALSEyesno10" + whitespaceChars, 8)).toDF("a")
@@ -617,35 +614,27 @@ class CometCastSuite extends CometTestBase with AdaptiveSparkPlanHelper {
617614
)
618615

619616
test("cast StringType to ByteType") {
620-
// TODO fix for Spark 4.0.0
621-
assume(!isSpark40Plus)
622617
// test with hand-picked values
623618
castTest(castStringToIntegralInputs.toDF("a"), DataTypes.ByteType)
624619
// fuzz test
625620
castTest(gen.generateStrings(dataSize, numericPattern, 4).toDF("a"), DataTypes.ByteType)
626621
}
627622

628623
test("cast StringType to ShortType") {
629-
// TODO fix for Spark 4.0.0
630-
assume(!isSpark40Plus)
631624
// test with hand-picked values
632625
castTest(castStringToIntegralInputs.toDF("a"), DataTypes.ShortType)
633626
// fuzz test
634627
castTest(gen.generateStrings(dataSize, numericPattern, 5).toDF("a"), DataTypes.ShortType)
635628
}
636629

637630
test("cast StringType to IntegerType") {
638-
// TODO fix for Spark 4.0.0
639-
assume(!isSpark40Plus)
640631
// test with hand-picked values
641632
castTest(castStringToIntegralInputs.toDF("a"), DataTypes.IntegerType)
642633
// fuzz test
643634
castTest(gen.generateStrings(dataSize, numericPattern, 8).toDF("a"), DataTypes.IntegerType)
644635
}
645636

646637
test("cast StringType to LongType") {
647-
// TODO fix for Spark 4.0.0
648-
assume(!isSpark40Plus)
649638
// test with hand-picked values
650639
castTest(castStringToIntegralInputs.toDF("a"), DataTypes.LongType)
651640
// fuzz test
@@ -707,8 +696,6 @@ class CometCastSuite extends CometTestBase with AdaptiveSparkPlanHelper {
707696
}
708697

709698
test("cast StringType to DateType") {
710-
// TODO fix for Spark 4.0.0
711-
assume(!isSpark40Plus)
712699
val validDates = Seq(
713700
"262142-01-01",
714701
"262142-01-01 ",
@@ -1294,11 +1281,16 @@ class CometCastSuite extends CometTestBase with AdaptiveSparkPlanHelper {
12941281
assert(cometMessage.contains("too large to store"))
12951282
} else {
12961283
if (CometSparkSessionExtensions.isSpark40Plus) {
1284+
// this is removed in Spark 4.0
1285+
val cometOnly =
1286+
"If necessary set \"spark.sql.ansi.enabled\" to \"false\" to bypass this error."
12971287
// for Spark 4 we expect to sparkException carries the message
1288+
val sparkOnly = "SQLSTATE"
12981289
assert(
1299-
sparkException.getMessage
1300-
.replace(".WITH_SUGGESTION] ", "]")
1301-
.startsWith(cometMessage))
1290+
sparkMessage.contains(sparkOnly) &&
1291+
sparkMessage
1292+
.replace(".WITH_SUGGESTION] ", "]")
1293+
.startsWith(cometMessage.replaceAll(cometOnly, "")))
13021294
} else {
13031295
// for Spark 3.4 we expect to reproduce the error message exactly
13041296
assert(cometMessage == sparkMessage)

0 commit comments

Comments
 (0)