From 9835eb337398deedfdb9ef455554a1fdef45eee1 Mon Sep 17 00:00:00 2001 From: Tom Magrino Date: Mon, 1 Aug 2016 10:44:03 -0700 Subject: [PATCH 1/3] Quick fix of incorrect argument in TimeWindow constructors. --- .../apache/spark/sql/catalyst/expressions/TimeWindow.scala | 4 ++-- 1 file changed, 2 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 66c4bf29ea4b..7ff61ee47945 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) = { From e1450f8e972ae50c05bed338d527ff3158c114a9 Mon Sep 17 00:00:00 2001 From: Tom Magrino Date: Mon, 1 Aug 2016 11:29:33 -0700 Subject: [PATCH 2/3] Added a test to check that TimeWindow object apply is equivalent to the TimeWindow class constructors. --- .../sql/catalyst/expressions/TimeWindowSuite.scala | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 b82cf8d1693e..7326dc7b0031 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 @@ -18,10 +18,10 @@ package org.apache.spark.sql.catalyst.expressions import org.scalatest.PrivateMethodTester - import org.apache.spark.SparkFunSuite import org.apache.spark.sql.AnalysisException import org.apache.spark.sql.types.LongType +import org.apache.spark.unsafe.types.CalendarInterval class TimeWindowSuite extends SparkFunSuite with ExpressionEvalHelper with PrivateMethodTester { @@ -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) + } + } } From 0e0136a248b483893dcc545c8d7b7a6e91a8c027 Mon Sep 17 00:00:00 2001 From: Tom Magrino Date: Mon, 1 Aug 2016 11:33:37 -0700 Subject: [PATCH 3/3] Cleaning up unnecessary changes. --- .../apache/spark/sql/catalyst/expressions/TimeWindowSuite.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7326dc7b0031..d6c8fcf29184 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 @@ -18,10 +18,10 @@ package org.apache.spark.sql.catalyst.expressions import org.scalatest.PrivateMethodTester + import org.apache.spark.SparkFunSuite import org.apache.spark.sql.AnalysisException import org.apache.spark.sql.types.LongType -import org.apache.spark.unsafe.types.CalendarInterval class TimeWindowSuite extends SparkFunSuite with ExpressionEvalHelper with PrivateMethodTester {