You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by ma...@apache.org on 2021/06/21 11:16:06 UTC

[spark] branch master updated: [SPARK-35840][SQL] Add `apply()` for a single field to `YearMonthIntervalType` and `DayTimeIntervalType`

This is an automated email from the ASF dual-hosted git repository.

maxgekk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/master by this push:
     new 37ef7bb  [SPARK-35840][SQL] Add `apply()` for a single field to `YearMonthIntervalType` and `DayTimeIntervalType`
37ef7bb is described below

commit 37ef7bb98cdb1a8eefa06677f119a4d97e242097
Author: Max Gekk <ma...@gmail.com>
AuthorDate: Mon Jun 21 14:15:33 2021 +0300

    [SPARK-35840][SQL] Add `apply()` for a single field to `YearMonthIntervalType` and `DayTimeIntervalType`
    
    ### What changes were proposed in this pull request?
    In the PR, I propose to add 2 new methods that accept one field and produce either `YearMonthIntervalType` or `DayTimeIntervalType`.
    
    ### Why are the changes needed?
    To improve code maintenance.
    
    ### Does this PR introduce _any_ user-facing change?
    No.
    
    ### How was this patch tested?
    By existing test suites.
    
    Closes #32997 from MaxGekk/ansi-interval-types-single-field.
    
    Authored-by: Max Gekk <ma...@gmail.com>
    Signed-off-by: Max Gekk <ma...@gmail.com>
---
 .../src/main/scala/org/apache/spark/sql/types/DataType.scala | 12 ++++++------
 .../org/apache/spark/sql/types/DayTimeIntervalType.scala     |  1 +
 .../org/apache/spark/sql/types/YearMonthIntervalType.scala   |  1 +
 .../spark/sql/catalyst/CatalystTypeConvertersSuite.scala     | 12 ++++++------
 .../apache/spark/sql/catalyst/expressions/CastSuite.scala    |  4 ++--
 .../scala/org/apache/spark/sql/types/DataTypeTestUtils.scala | 12 ++++++------
 6 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DataType.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DataType.scala
index d781b05..22c9428 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DataType.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DataType.scala
@@ -173,18 +173,18 @@ object DataType {
   private val otherTypes = {
     Seq(NullType, DateType, TimestampType, BinaryType, IntegerType, BooleanType, LongType,
       DoubleType, FloatType, ShortType, ByteType, StringType, CalendarIntervalType,
-      DayTimeIntervalType(DAY, DAY),
+      DayTimeIntervalType(DAY),
       DayTimeIntervalType(DAY, HOUR),
       DayTimeIntervalType(DAY, MINUTE),
       DayTimeIntervalType(DAY, SECOND),
-      DayTimeIntervalType(HOUR, HOUR),
+      DayTimeIntervalType(HOUR),
       DayTimeIntervalType(HOUR, MINUTE),
       DayTimeIntervalType(HOUR, SECOND),
-      DayTimeIntervalType(MINUTE, MINUTE),
+      DayTimeIntervalType(MINUTE),
       DayTimeIntervalType(MINUTE, SECOND),
-      DayTimeIntervalType(SECOND, SECOND),
-      YearMonthIntervalType(YEAR, YEAR),
-      YearMonthIntervalType(MONTH, MONTH),
+      DayTimeIntervalType(SECOND),
+      YearMonthIntervalType(YEAR),
+      YearMonthIntervalType(MONTH),
       YearMonthIntervalType(YEAR, MONTH),
       TimestampWithoutTZType)
       .map(t => t.typeName -> t).toMap
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DayTimeIntervalType.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DayTimeIntervalType.scala
index c6d2537..99aa5f1 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DayTimeIntervalType.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DayTimeIntervalType.scala
@@ -101,6 +101,7 @@ case object DayTimeIntervalType extends AbstractDataType {
   val DEFAULT = DayTimeIntervalType(DAY, SECOND)
 
   def apply(): DayTimeIntervalType = DEFAULT
+  def apply(field: Byte): DayTimeIntervalType = DayTimeIntervalType(field, field)
 
   override private[sql] def defaultConcreteType: DataType = DEFAULT
 
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/YearMonthIntervalType.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/YearMonthIntervalType.scala
index e6e2643..04902e3 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/YearMonthIntervalType.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/YearMonthIntervalType.scala
@@ -95,6 +95,7 @@ case object YearMonthIntervalType extends AbstractDataType {
   val DEFAULT = YearMonthIntervalType(YEAR, MONTH)
 
   def apply(): YearMonthIntervalType = DEFAULT
+  def apply(field: Byte): YearMonthIntervalType = YearMonthIntervalType(field, field)
 
   override private[sql] def defaultConcreteType: DataType = DEFAULT
 
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystTypeConvertersSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystTypeConvertersSuite.scala
index f08dc5f..f850a5a 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystTypeConvertersSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystTypeConvertersSuite.scala
@@ -277,16 +277,16 @@ class CatalystTypeConvertersSuite extends SparkFunSuite with SQLHelper {
 
   test("SPARK-35726: Truncate java.time.Duration by fields of day-time interval type") {
     val duration = Duration.ofSeconds(90061, 1000000023)
-    Seq((DayTimeIntervalType(DAY, DAY), 86400000000L, -86400000000L),
+    Seq((DayTimeIntervalType(DAY), 86400000000L, -86400000000L),
       (DayTimeIntervalType(DAY, HOUR), 90000000000L, -90000000000L),
       (DayTimeIntervalType(DAY, MINUTE), 90060000000L, -90060000000L),
       (DayTimeIntervalType(DAY, SECOND), 90062000000L, -90062000001L),
-      (DayTimeIntervalType(HOUR, HOUR), 90000000000L, -90000000000L),
+      (DayTimeIntervalType(HOUR), 90000000000L, -90000000000L),
       (DayTimeIntervalType(HOUR, MINUTE), 90060000000L, -90060000000L),
       (DayTimeIntervalType(HOUR, SECOND), 90062000000L, -90062000001L),
-      (DayTimeIntervalType(MINUTE, MINUTE), 90060000000L, -90060000000L),
+      (DayTimeIntervalType(MINUTE), 90060000000L, -90060000000L),
       (DayTimeIntervalType(MINUTE, SECOND), 90062000000L, -90062000001L),
-      (DayTimeIntervalType(SECOND, SECOND), 90062000000L, -90062000001L))
+      (DayTimeIntervalType(SECOND), 90062000000L, -90062000001L))
       .foreach { case (dt, positive, negative) =>
         assert(CatalystTypeConverters.createToCatalystConverter(dt)(duration) == positive)
         assert(
@@ -331,9 +331,9 @@ class CatalystTypeConvertersSuite extends SparkFunSuite with SQLHelper {
   }
 
   test("SPARK-35769: Truncate java.time.Period by fields of year-month interval type") {
-    Seq(YearMonthIntervalType(YEAR, YEAR) -> 12,
+    Seq(YearMonthIntervalType(YEAR) -> 12,
       YearMonthIntervalType(YEAR, MONTH) -> 13,
-      YearMonthIntervalType(MONTH, MONTH) -> 13)
+      YearMonthIntervalType(MONTH) -> 13)
       .foreach { case (ym, value) =>
         assert(CatalystTypeConverters.createToCatalystConverter(ym)(Period.of(1, 1, 0)) == value)
       }
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CastSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CastSuite.scala
index bdf8def..9659660 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CastSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CastSuite.scala
@@ -687,9 +687,9 @@ class CastSuite extends CastSuiteBase {
 
   test("SPARK-35819: Support cast YearMonthIntervalType in different fields") {
     val ym = cast(Literal.create("1-1"), YearMonthIntervalType(YEAR, MONTH))
-    Seq(YearMonthIntervalType(YEAR, YEAR) -> 12,
+    Seq(YearMonthIntervalType(YEAR) -> 12,
       YearMonthIntervalType(YEAR, MONTH) -> 13,
-      YearMonthIntervalType(MONTH, MONTH) -> 13)
+      YearMonthIntervalType(MONTH) -> 13)
       .foreach { case (dt, value) =>
         checkEvaluation(cast(ym, dt), value)
       }
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeTestUtils.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeTestUtils.scala
index d358ab6..efa01e1 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeTestUtils.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeTestUtils.scala
@@ -53,21 +53,21 @@ object DataTypeTestUtils {
   val numericTypeWithoutDecimal: Set[DataType] = integralType ++ Set(DoubleType, FloatType)
 
   val dayTimeIntervalTypes: Seq[DayTimeIntervalType] = Seq(
-    DayTimeIntervalType(DAY, DAY),
+    DayTimeIntervalType(DAY),
     DayTimeIntervalType(DAY, HOUR),
     DayTimeIntervalType(DAY, MINUTE),
     DayTimeIntervalType(DAY, SECOND),
-    DayTimeIntervalType(HOUR, HOUR),
+    DayTimeIntervalType(HOUR),
     DayTimeIntervalType(HOUR, MINUTE),
     DayTimeIntervalType(HOUR, SECOND),
-    DayTimeIntervalType(MINUTE, MINUTE),
+    DayTimeIntervalType(MINUTE),
     DayTimeIntervalType(MINUTE, SECOND),
-    DayTimeIntervalType(SECOND, SECOND))
+    DayTimeIntervalType(SECOND))
 
   val yearMonthIntervalTypes: Seq[YearMonthIntervalType] = Seq(
     YearMonthIntervalType(YEAR, MONTH),
-    YearMonthIntervalType(YEAR, YEAR),
-    YearMonthIntervalType(MONTH, MONTH))
+    YearMonthIntervalType(YEAR),
+    YearMonthIntervalType(MONTH))
 
   /**
    * Instances of all [[NumericType]]s and [[CalendarIntervalType]]

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org