AbsaOSS / AbsaOSS/spark-data-standardization

Validation of timestamp with ISO8601 pattern with microseconds fails

未關閉
#68 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
bug
主要語言
Scala
星號
7
分支
2
平均合併
1 天 18 小時
30 天內合併 PR
4

描述

## 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:
1. Add the following test to `SchemaValidationSuite` and 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)
}
```
2. 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

貢獻指南

這個儲存庫沒有索引到貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。