Skip to content

Commit add5ee4

Browse files
committed
fixes
1 parent fee890e commit add5ee4

5 files changed

Lines changed: 21 additions & 20 deletions

File tree

native/spark-expr/src/conversion_funcs/string.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,31 +1103,31 @@ fn timestamp_parser<T: TimeZone>(
11031103
// Define regex patterns and corresponding parsing functions
11041104
let patterns = &[
11051105
(
1106-
Regex::new(r"^\d{4,5}$").unwrap(),
1106+
Regex::new(r"^\d{4,7}$").unwrap(),
11071107
parse_str_to_year_timestamp as fn(&str, &T) -> SparkResult<Option<i64>>,
11081108
),
11091109
(
1110-
Regex::new(r"^\d{4,5}-\d{2}$").unwrap(),
1110+
Regex::new(r"^\d{4,7}-\d{2}$").unwrap(),
11111111
parse_str_to_month_timestamp,
11121112
),
11131113
(
1114-
Regex::new(r"^\d{4,5}-\d{2}-\d{2}$").unwrap(),
1114+
Regex::new(r"^\d{4,7}-\d{2}-\d{2}$").unwrap(),
11151115
parse_str_to_day_timestamp,
11161116
),
11171117
(
1118-
Regex::new(r"^\d{4,5}-\d{2}-\d{2}T\d{1,2}$").unwrap(),
1118+
Regex::new(r"^\d{4,7}-\d{2}-\d{2}T\d{1,2}$").unwrap(),
11191119
parse_str_to_hour_timestamp,
11201120
),
11211121
(
1122-
Regex::new(r"^\d{4,5}-\d{2}-\d{2}T\d{2}:\d{2}$").unwrap(),
1122+
Regex::new(r"^\d{4,7}-\d{2}-\d{2}T\d{2}:\d{2}$").unwrap(),
11231123
parse_str_to_minute_timestamp,
11241124
),
11251125
(
1126-
Regex::new(r"^\d{4,5}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$").unwrap(),
1126+
Regex::new(r"^\d{4,7}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$").unwrap(),
11271127
parse_str_to_second_timestamp,
11281128
),
11291129
(
1130-
Regex::new(r"^\d{4,5}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{1,6}$").unwrap(),
1130+
Regex::new(r"^\d{4,7}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{1,6}$").unwrap(),
11311131
parse_str_to_microsecond_timestamp,
11321132
),
11331133
(

spark/src/main/scala/org/apache/comet/expressions/CometCast.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ object CometCast extends CometExpressionSerde[Cast] with CometExprShim {
218218
case DataTypes.TimestampType if timeZoneId.exists(tz => tz != "UTC") =>
219219
Incompatible(Some(s"Cast will use UTC instead of $timeZoneId"))
220220
case DataTypes.TimestampType =>
221-
Compatible(Some("Only supports years between 262143 BC and 262142 AD"))
221+
Incompatible(Some("Not all valid formats are supported"))
222222
case _ =>
223223
unsupported(DataTypes.StringType, toType)
224224
}

spark/src/main/spark-3.4/org/apache/spark/sql/comet/shims/ShimSparkErrorConverter.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ trait ShimSparkErrorConverter {
176176
"expression" -> expression,
177177
"sourceType" -> sourceType,
178178
"targetType" -> targetType,
179-
"ansiConfig" -> "`spark.sql.ansi.enabled`"),
179+
"ansiConfig" -> "\"spark.sql.ansi.enabled\""),
180180
context = context,
181181
summary = summary))
182182

spark/src/main/spark-3.5/org/apache/spark/sql/comet/shims/ShimSparkErrorConverter.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ trait ShimSparkErrorConverter {
174174
"expression" -> expression,
175175
"sourceType" -> sourceType,
176176
"targetType" -> targetType,
177-
"ansiConfig" -> "`spark.sql.ansi.enabled`"),
177+
"ansiConfig" -> "\"spark.sql.ansi.enabled\""),
178178
context = context,
179179
summary = summary))
180180

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -979,14 +979,21 @@ class CometCastSuite extends CometTestBase with AdaptiveSparkPlanHelper {
979979
"10000-01-01T12",
980980
"10000-01-01T12:34",
981981
"10000-01-01T12:34:56",
982-
"10000-01-01T12:34:56.123456")
983-
castTimestampTest(values.toDF("a"), DataTypes.TimestampType, assertNative = true)
982+
"10000-01-01T12:34:56.123456",
983+
"213170",
984+
"213170-06",
985+
"213170-06-15",
986+
"213170-06-15T12",
987+
"213170-06-15T12:34",
988+
"213170-06-15T12:34:56",
989+
"213170-06-15T12:34:56.123456")
990+
castTimestampTest(values.toDF("a"), DataTypes.TimestampType)
984991
}
985992
}
986993

987994
ignore("cast StringType to TimestampType") {
988-
// TODO: enable once all Spark timestamp formats are supported natively
989-
// (e.g. time-only formats like "T12:34" are accepted by Spark but not yet by Comet)
995+
// TODO: enable once all Spark timestamp formats are supported natively.
996+
// Currently missing: time-only formats with colon (e.g. "T12:34", "4:4").
990997
withSQLConf((SQLConf.SESSION_LOCAL_TIMEZONE.key, "UTC")) {
991998
val values = Seq("2020-01-01T12:34:56.123456", "T2") ++ gen.generateStrings(
992999
dataSize,
@@ -1041,12 +1048,6 @@ class CometCastSuite extends CometTestBase with AdaptiveSparkPlanHelper {
10411048
"10000-01-01T12:34:56.123456")
10421049
castTimestampTest(values.toDF("a"), DataTypes.TimestampType)
10431050
}
1044-
1045-
// test for invalid inputs with UTC - asserts native execution
1046-
withSQLConf(SQLConf.SESSION_LOCAL_TIMEZONE.key -> "UTC") {
1047-
val values = Seq("-9?", "1-", "0.5")
1048-
castTimestampTest(values.toDF("a"), DataTypes.TimestampType, assertNative = true)
1049-
}
10501051
}
10511052

10521053
// CAST from BinaryType

0 commit comments

Comments
 (0)