MaxGekk commented on a change in pull request #24742: [SPARK-27881][SQL]
Support CAST (... FORMAT <pattern>) expression
URL: https://github.com/apache/spark/pull/24742#discussion_r290343235
##########
File path:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala
##########
@@ -238,10 +245,50 @@ case class Cast(child: Expression, dataType: DataType,
timeZoneId: Option[String
private lazy val dateFormatter = DateFormatter()
private lazy val timestampFormatter =
TimestampFormatter.getFractionFormatter(zoneId)
+ private lazy val customDateFormatter: DateFormatter = format.map { f =>
+ try {
+ DateFormatter(f)
+ } catch {
+ case NonFatal(_) => null
Review comment:
> But these formatters are lazy so only during execution is an exception
raised
I think it is ok.
> Should we catch the wrong pattern during analysis?
Java's DateTimeFormatter inside of `TimestampFormatter` is lazy too
[see](https://github.com/apache/spark/blob/ef2d63bfb1859232d166320896957c0543c059cc/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/TimestampFormatter.scala#L50).
To force the checking, you need to parse/format something. I don't think it is
worth to do that here.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]