peter-toth 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_r293689150
##########
File path:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala
##########
@@ -1272,7 +1272,8 @@ class AstBuilder(conf: SQLConf) extends
SqlBaseBaseVisitor[AnyRef] with Logging
* Create a [[Cast]] expression.
*/
override def visitCast(ctx: CastContext): Expression = withOrigin(ctx) {
- Cast(expression(ctx.expression), visitSparkDataType(ctx.dataType))
+ Cast(expression(ctx.expression()), visitSparkDataType(ctx.dataType),
+ format = Option(ctx.STRING()).map(string))
Review comment:
I reverted `Cast` to its original signature and introduced `CastBase` sealed
trait and `FormattedCast` expression in the last commit.
@MaxGekk I also added an extractor to `CastBase` as handling complex pattern
matching like `case e @ WindowExpression(Cast(Literal(0L, _), _, _, _), _)`
becomes `case e @ WindowExpression(CastBase(Literal(0L, _), _), _)` with the
new extractor and it is much easier than matching on type and using fields as
the style guide suggests. Please let me know if you disagree.
@HyukjinKwon I'm very sorry but I don't see how `RuntimeReplaceable` should
come into play. Could you please elaborate on that?
----------------------------------------------------------------
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]