-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
The following timestamp pattern fails to be validated: yyyy-MM-dd'T'HH:mm:ss.SSSXXX. This is a pattern defined by ISO8601. However, it does validate when removing either the 'T' or the fractional second part (see test-cases below)
To Reproduce
Steps to reproduce the behavior OR commands run:
- Add the following test to
SchemaValidationSuiteand execute it
test("Timestamp with fractional seconds should be validated") {
val schema = StructType(
Array(
StructField("id", LongType),
StructField("name", StringType),
StructField("timestamp_without_fraction_ok", TimestampType, nullable = false, Metadata.fromJson(""" { "pattern": "yyyy-MM-dd'T'HH:mm:ssXXX", "default": "2025-01-08T13:07:39+00:00" } """.stripMargin)),
StructField("timestamp_with_fraction_without_T_ok", TimestampType, nullable = false, Metadata.fromJson(""" { "pattern": "yyyy-MM-dd HH:mm:ss.SSSXXX", "default": "2025-01-08 13:07:39.490+00:00" } """.stripMargin)),
StructField("timestamp_with_fraction_and_T_nok", TimestampType, nullable = false, Metadata.fromJson(""" { "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", "default": "2025-01-08T13:07:39.490+00:00" } """.stripMargin))
)
)
val failures = SchemaValidator.validateSchema(schema)(CommonTypeDefaults)
if (failures.nonEmpty) {
logger.error("Validation errors:")
logger.error(failures.mkString("\n"))
}
assert(failures.isEmpty)
}
- See the test failing with
Unparseable date: "2025-01-08T13:07:39.490:00
Expected behavior
The pattern with 'T' and fractional seconds should be successfully validated.
Use-case
Only for internal development / testing
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working