AbsaOSS / AbsaOSS/spark-data-standardization

Validation of timestamp with ISO8601 pattern with microseconds fails

Aberta
#68 1 comentário 0 reações 0 responsáveis Ver no GitHub
bug
Linguagem predominante
Scala
Estrelas
7
Forks
2
Merge médio
1d 18h
PRs com merge (30d)
4

Descrição

## 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

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.