wForget commented on code in PR #2316: URL: https://github.com/apache/datafusion-comet/pull/2316#discussion_r2342780567
########## spark/src/main/scala/org/apache/comet/serde/datetime.scala: ########## @@ -51,6 +75,104 @@ object CometYear extends CometExpressionSerde[Year] { } } +object CometYear extends CometExpressionSerde[Year] with CometExprGetDateField[Year] { + override def convert( + expr: Year, + inputs: Seq[Attribute], + binding: Boolean): Option[ExprOuterClass.Expr] = { + getDateField(expr, CometGetDateField.Year, inputs, binding) + } +} + +object CometMonth extends CometExpressionSerde[Month] with CometExprGetDateField[Month] { + override def convert( + expr: Month, + inputs: Seq[Attribute], + binding: Boolean): Option[ExprOuterClass.Expr] = { + getDateField(expr, CometGetDateField.Month, inputs, binding) + } +} + +object CometDayOfMonth + extends CometExpressionSerde[DayOfMonth] + with CometExprGetDateField[DayOfMonth] { + override def convert( + expr: DayOfMonth, + inputs: Seq[Attribute], + binding: Boolean): Option[ExprOuterClass.Expr] = { + getDateField(expr, CometGetDateField.DayOfMonth, inputs, binding) + } +} + +object CometDayOfWeek + extends CometExpressionSerde[DayOfWeek] + with CometExprGetDateField[DayOfWeek] { + override def convert( + expr: DayOfWeek, + inputs: Seq[Attribute], + binding: Boolean): Option[ExprOuterClass.Expr] = { + // Datafusion: day of the week where Sunday is 0, but spark sunday is 1 (1 = Sunday, + // 2 = Monday, ..., 7 = Saturday). So we need to add 1 to the result of datepart(dow, ...) + val optExpr = getDateField(expr, CometGetDateField.DayOfWeek, inputs, binding) + .zip(exprToProtoInternal(Literal(1), inputs, binding)) Review Comment: > That would be quite unexpected if one day DF updates the calendar to get Sunday as 1 This behavior is covered by unit test, so if it changes we should be able to catch it in time. -- 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. To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For additional commands, e-mail: github-h...@datafusion.apache.org