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