From 68c36d1677adaab526babfa1954be9f3c81e7d6c Mon Sep 17 00:00:00 2001 From: Max Gekk Date: Mon, 19 Apr 2021 10:59:36 +0300 Subject: [PATCH] Add a comment --- .../org/apache/spark/sql/catalyst/parser/AstBuilder.scala | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala index b6776d64fdba5..63290d3547c01 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala @@ -2315,6 +2315,10 @@ class AstBuilder extends SqlBaseBaseVisitor[AnyRef] with SQLConfHelper with Logg override def visitInterval(ctx: IntervalContext): Literal = withOrigin(ctx) { val calendarInterval = parseIntervalLiteral(ctx) if (ctx.errorCapturingUnitToUnitInterval != null && !conf.legacyIntervalEnabled) { + // Check the `to` unit to distinguish year-month and day-time intervals because + // `CalendarInterval` doesn't have enough info. For instance, new CalendarInterval(0, 0, 0) + // can be derived from INTERVAL '0-0' YEAR TO MONTH as well as from + // INTERVAL '0 00:00:00' DAY TO SECOND. val toUnit = ctx.errorCapturingUnitToUnitInterval.body.to.getText.toLowerCase(Locale.ROOT) if (toUnit == "month") { assert(calendarInterval.days == 0 && calendarInterval.microseconds == 0)