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 195090a [SPARK-35764][SQL] Assign pretty names to TimestampWithoutTZType 195090a is described below commit 195090afcc8ed138336b353edc0a4db6f0f5f168 Author: Gengliang Wang <gengli...@apache.org> AuthorDate: Tue Jun 15 12:15:13 2021 +0300 [SPARK-35764][SQL] Assign pretty names to TimestampWithoutTZType ### What changes were proposed in this pull request? In the PR, I propose to override the typeName() method in TimestampWithoutTZType, and assign it a name according to the ANSI SQL standard ![image](https://user-images.githubusercontent.com/1097932/122013859-2cf50680-cdf1-11eb-9fcd-0ec1b59fb5c0.png) ### Why are the changes needed? To improve Spark SQL user experience, and have readable types in error messages. ### Does this PR introduce _any_ user-facing change? No, the new timestamp type is not released yet. ### How was this patch tested? Unit test Closes #32915 from gengliangwang/typename. Authored-by: Gengliang Wang <gengli...@apache.org> Signed-off-by: Max Gekk <max.g...@gmail.com> --- .../org/apache/spark/sql/types/TimestampWithoutTZType.scala | 2 ++ .../apache/spark/sql/catalyst/expressions/CastSuite.scala | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/TimestampWithoutTZType.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/TimestampWithoutTZType.scala index 558f5ee..856d549 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/TimestampWithoutTZType.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/TimestampWithoutTZType.scala @@ -48,6 +48,8 @@ class TimestampWithoutTZType private() extends AtomicType { */ override def defaultSize: Int = 8 + override def typeName: String = "timestamp without time zone" + private[spark] override def asNullable: TimestampWithoutTZType = this } 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 c268d52..910c757 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 @@ -1295,6 +1295,19 @@ abstract class AnsiCastSuiteBase extends CastSuiteBase { } } } + + test("disallow type conversions between Numeric types and Timestamp without time zone type") { + import DataTypeTestUtils.numericTypes + checkInvalidCastFromNumericType(TimestampWithoutTZType) + var errorMsg = "cannot cast bigint to timestamp without time zone" + verifyCastFailure(cast(Literal(0L), TimestampWithoutTZType), Some(errorMsg)) + + val timestampWithoutTZLiteral = Literal.create(LocalDateTime.now(), TimestampWithoutTZType) + errorMsg = "cannot cast timestamp without time zone to" + numericTypes.foreach { numericType => + verifyCastFailure(cast(timestampWithoutTZLiteral, numericType), Some(errorMsg)) + } + } } /** --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org For additional commands, e-mail: commits-h...@spark.apache.org