aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst/src/test
diff options
context:
space:
mode:
authorDavies Liu <davies@databricks.com>2015-08-01 21:46:46 -0700
committerDavies Liu <davies.liu@gmail.com>2015-08-01 21:46:46 -0700
commitc1b0cbd762d78bedca0ab564cf9ca0970b7b99d2 (patch)
treecbdb4059022abbf2cc502d1fd920f3c29f6e2618 /sql/catalyst/src/test
parent00cd92f32f17ca57d47aa2dcc716eb707aaee799 (diff)
downloadspark-c1b0cbd762d78bedca0ab564cf9ca0970b7b99d2.tar.gz
spark-c1b0cbd762d78bedca0ab564cf9ca0970b7b99d2.tar.bz2
spark-c1b0cbd762d78bedca0ab564cf9ca0970b7b99d2.zip
[SPARK-8185] [SPARK-8188] [SPARK-8191] [SQL] function datediff, to_utc_timestamp, from_utc_timestamp
This PR is based on #7643 , thanks to adrian-wang Author: Davies Liu <davies@databricks.com> Author: Daoyuan Wang <daoyuan.wang@intel.com> Closes #7847 from davies/datediff and squashes the following commits: 74333d7 [Davies Liu] fix bug 22d8a8c [Davies Liu] optimize 85cdd21 [Davies Liu] remove unnecessary tests 241d90c [Davies Liu] Merge branch 'master' of github.com:apache/spark into datediff e9dc0f5 [Davies Liu] fix datediff/to_utc_timestamp/from_utc_timestamp c360447 [Daoyuan Wang] function datediff, to_utc_timestamp, from_utc_timestamp (commits merged)
Diffstat (limited to 'sql/catalyst/src/test')
-rw-r--r--sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/DateExpressionsSuite.scala72
-rw-r--r--sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/util/DateTimeUtilsSuite.scala22
2 files changed, 84 insertions, 10 deletions
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/DateExpressionsSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/DateExpressionsSuite.scala
index 6c15c05da3..3bff8e012a 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/DateExpressionsSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/DateExpressionsSuite.scala
@@ -23,8 +23,8 @@ import java.util.Calendar
import org.apache.spark.SparkFunSuite
import org.apache.spark.sql.catalyst.util.DateTimeUtils
-import org.apache.spark.unsafe.types.CalendarInterval
import org.apache.spark.sql.types._
+import org.apache.spark.unsafe.types.CalendarInterval
class DateExpressionsSuite extends SparkFunSuite with ExpressionEvalHelper {
@@ -48,15 +48,13 @@ class DateExpressionsSuite extends SparkFunSuite with ExpressionEvalHelper {
test("DayOfYear") {
val sdfDay = new SimpleDateFormat("D")
- (1998 to 2002).foreach { y =>
- (0 to 3).foreach { m =>
- (0 to 5).foreach { i =>
- val c = Calendar.getInstance()
- c.set(y, m, 28, 0, 0, 0)
- c.add(Calendar.DATE, i)
- checkEvaluation(DayOfYear(Literal(new Date(c.getTimeInMillis))),
- sdfDay.format(c.getTime).toInt)
- }
+ (0 to 3).foreach { m =>
+ (0 to 5).foreach { i =>
+ val c = Calendar.getInstance()
+ c.set(2000, m, 28, 0, 0, 0)
+ c.add(Calendar.DATE, i)
+ checkEvaluation(DayOfYear(Literal(new Date(c.getTimeInMillis))),
+ sdfDay.format(c.getTime).toInt)
}
}
checkEvaluation(DayOfYear(Literal.create(null, DateType)), null)
@@ -433,4 +431,58 @@ class DateExpressionsSuite extends SparkFunSuite with ExpressionEvalHelper {
checkEvaluation(
UnixTimestamp(Literal("2015-07-24"), Literal("not a valid format")), null)
}
+
+ test("datediff") {
+ checkEvaluation(
+ DateDiff(Literal(Date.valueOf("2015-07-24")), Literal(Date.valueOf("2015-07-21"))), 3)
+ checkEvaluation(
+ DateDiff(Literal(Date.valueOf("2015-07-21")), Literal(Date.valueOf("2015-07-24"))), -3)
+ checkEvaluation(DateDiff(Literal.create(null, DateType), Literal(Date.valueOf("2015-07-24"))),
+ null)
+ checkEvaluation(DateDiff(Literal(Date.valueOf("2015-07-24")), Literal.create(null, DateType)),
+ null)
+ checkEvaluation(
+ DateDiff(Literal.create(null, DateType), Literal.create(null, DateType)),
+ null)
+ }
+
+ test("to_utc_timestamp") {
+ def test(t: String, tz: String, expected: String): Unit = {
+ checkEvaluation(
+ ToUTCTimestamp(
+ Literal.create(if (t != null) Timestamp.valueOf(t) else null, TimestampType),
+ Literal.create(tz, StringType)),
+ if (expected != null) Timestamp.valueOf(expected) else null)
+ checkEvaluation(
+ ToUTCTimestamp(
+ Literal.create(if (t != null) Timestamp.valueOf(t) else null, TimestampType),
+ NonFoldableLiteral.create(tz, StringType)),
+ if (expected != null) Timestamp.valueOf(expected) else null)
+ }
+ test("2015-07-24 00:00:00", "PST", "2015-07-24 07:00:00")
+ test("2015-01-24 00:00:00", "PST", "2015-01-24 08:00:00")
+ test(null, "UTC", null)
+ test("2015-07-24 00:00:00", null, null)
+ test(null, null, null)
+ }
+
+ test("from_utc_timestamp") {
+ def test(t: String, tz: String, expected: String): Unit = {
+ checkEvaluation(
+ FromUTCTimestamp(
+ Literal.create(if (t != null) Timestamp.valueOf(t) else null, TimestampType),
+ Literal.create(tz, StringType)),
+ if (expected != null) Timestamp.valueOf(expected) else null)
+ checkEvaluation(
+ FromUTCTimestamp(
+ Literal.create(if (t != null) Timestamp.valueOf(t) else null, TimestampType),
+ NonFoldableLiteral.create(tz, StringType)),
+ if (expected != null) Timestamp.valueOf(expected) else null)
+ }
+ test("2015-07-24 00:00:00", "PST", "2015-07-23 17:00:00")
+ test("2015-01-24 00:00:00", "PST", "2015-01-23 16:00:00")
+ test(null, "UTC", null)
+ test("2015-07-24 00:00:00", null, null)
+ test(null, null, null)
+ }
}
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/util/DateTimeUtilsSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/util/DateTimeUtilsSuite.scala
index 60d2bcfe13..d18fa4df13 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/util/DateTimeUtilsSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/util/DateTimeUtilsSuite.scala
@@ -398,4 +398,26 @@ class DateTimeUtilsSuite extends SparkFunSuite {
c2.set(1996, 2, 31, 0, 0, 0)
assert(monthsBetween(c1.getTimeInMillis * 1000L, c2.getTimeInMillis * 1000L) === 11)
}
+
+ test("from UTC timestamp") {
+ def test(utc: String, tz: String, expected: String): Unit = {
+ assert(toJavaTimestamp(fromUTCTime(fromJavaTimestamp(Timestamp.valueOf(utc)), tz)).toString
+ === expected)
+ }
+ test("2011-12-25 09:00:00.123456", "UTC", "2011-12-25 09:00:00.123456")
+ test("2011-12-25 09:00:00.123456", "JST", "2011-12-25 18:00:00.123456")
+ test("2011-12-25 09:00:00.123456", "PST", "2011-12-25 01:00:00.123456")
+ test("2011-12-25 09:00:00.123456", "Asia/Shanghai", "2011-12-25 17:00:00.123456")
+ }
+
+ test("to UTC timestamp") {
+ def test(utc: String, tz: String, expected: String): Unit = {
+ assert(toJavaTimestamp(toUTCTime(fromJavaTimestamp(Timestamp.valueOf(utc)), tz)).toString
+ === expected)
+ }
+ test("2011-12-25 09:00:00.123456", "UTC", "2011-12-25 09:00:00.123456")
+ test("2011-12-25 18:00:00.123456", "JST", "2011-12-25 09:00:00.123456")
+ test("2011-12-25 01:00:00.123456", "PST", "2011-12-25 09:00:00.123456")
+ test("2011-12-25 17:00:00.123456", "Asia/Shanghai", "2011-12-25 09:00:00.123456")
+ }
}