aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/TimeWindow.scala4
-rw-r--r--sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/TimeWindowSuite.scala12
2 files changed, 14 insertions, 2 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/TimeWindow.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/TimeWindow.scala
index 66c4bf29ea..7ff61ee479 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/TimeWindow.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/TimeWindow.scala
@@ -45,12 +45,12 @@ case class TimeWindow(
slideDuration: Expression,
startTime: Expression) = {
this(timeColumn, TimeWindow.parseExpression(windowDuration),
- TimeWindow.parseExpression(windowDuration), TimeWindow.parseExpression(startTime))
+ TimeWindow.parseExpression(slideDuration), TimeWindow.parseExpression(startTime))
}
def this(timeColumn: Expression, windowDuration: Expression, slideDuration: Expression) = {
this(timeColumn, TimeWindow.parseExpression(windowDuration),
- TimeWindow.parseExpression(windowDuration), 0)
+ TimeWindow.parseExpression(slideDuration), 0)
}
def this(timeColumn: Expression, windowDuration: Expression) = {
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/TimeWindowSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/TimeWindowSuite.scala
index b82cf8d169..d6c8fcf291 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/TimeWindowSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/TimeWindowSuite.scala
@@ -108,4 +108,16 @@ class TimeWindowSuite extends SparkFunSuite with ExpressionEvalHelper with Priva
TimeWindow.invokePrivate(parseExpression(Rand(123)))
}
}
+
+ test("SPARK-16837: TimeWindow.apply equivalent to TimeWindow constructor") {
+ val slideLength = "1 second"
+ for (windowLength <- Seq("10 second", "1 minute", "2 hours")) {
+ val applyValue = TimeWindow(Literal(10L), windowLength, slideLength, "0 seconds")
+ val constructed = new TimeWindow(Literal(10L),
+ Literal(windowLength),
+ Literal(slideLength),
+ Literal("0 seconds"))
+ assert(applyValue == constructed)
+ }
+ }
}