This is an automated email from the ASF dual-hosted git repository. gurwls223 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 d61b3bc [SPARK-27527][SQL][DOCS] Improve descriptions of Timestamp and Date types d61b3bc is described below commit d61b3bc875941d5a815e0e68fe7aa986e372b4e8 Author: Maxim Gekk <max.g...@gmail.com> AuthorDate: Sun Apr 21 16:53:11 2019 +0900 [SPARK-27527][SQL][DOCS] Improve descriptions of Timestamp and Date types ## What changes were proposed in this pull request? In the PR, I propose more precise description of `TimestampType` and `DateType`, how they store timestamps and dates internally. Closes #24424 from MaxGekk/timestamp-date-type-doc. Authored-by: Maxim Gekk <max.g...@gmail.com> Signed-off-by: HyukjinKwon <gurwls...@apache.org> --- .../scala/org/apache/spark/sql/types/DateType.scala | 20 ++++++++++++-------- .../org/apache/spark/sql/types/TimestampType.scala | 19 ++++++++++++++----- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DateType.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DateType.scala index 7491014..ba322fa 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DateType.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DateType.scala @@ -23,19 +23,18 @@ import scala.reflect.runtime.universe.typeTag import org.apache.spark.annotation.Stable /** - * A date type, supporting "0001-01-01" through "9999-12-31". - * - * Please use the singleton `DataTypes.DateType`. - * - * Internally, this is represented as the number of days from 1970-01-01. + * The date type represents a valid date in the proleptic Gregorian calendar. + * Valid range is [0001-01-01, 9999-12-31]. * + * Please use the singleton `DataTypes.DateType` to refer the type. * @since 1.3.0 */ @Stable class DateType private() extends AtomicType { - // The companion object and this class is separated so the companion object also subclasses - // this type. Otherwise, the companion object would be of type "DateType$" in byte code. - // Defined with a private constructor so the companion object is the only possible instantiation. + /** + * Internally, a date is stored as a simple incrementing count of days + * where day 0 is 1970-01-01. Negative numbers represent earlier days. + */ private[sql] type InternalType = Int @transient private[sql] lazy val tag = typeTag[InternalType] @@ -51,6 +50,11 @@ class DateType private() extends AtomicType { } /** + * The companion case object and the DateType class is separated so the companion object + * also subclasses the class. Otherwise, the companion object would be of type "DateType$" + * in byte code. The DateType class is defined with a private constructor so its companion + * object is the only possible instantiation. + * * @since 1.3.0 */ @Stable diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/TimestampType.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/TimestampType.scala index a20f155..8dbe4dd 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/TimestampType.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/TimestampType.scala @@ -23,16 +23,20 @@ import scala.reflect.runtime.universe.typeTag import org.apache.spark.annotation.Stable /** - * The data type representing `java.sql.Timestamp` values. - * Please use the singleton `DataTypes.TimestampType`. + * The timestamp type represents a time instant in microsecond precision. + * Valid range is [0001-01-01T00:00:00.000000Z, 9999-12-31T23:59:59.999999Z] where + * the left/right-bound is a date and time of the proleptic Gregorian + * calendar in UTC+00:00. * + * Please use the singleton `DataTypes.TimestampType` to refer the type. * @since 1.3.0 */ @Stable class TimestampType private() extends AtomicType { - // The companion object and this class is separated so the companion object also subclasses - // this type. Otherwise, the companion object would be of type "TimestampType$" in byte code. - // Defined with a private constructor so the companion object is the only possible instantiation. + /** + * Internally, a timestamp is stored as the number of microseconds from + * the epoch of 1970-01-01T00:00:00.000000Z (UTC+00:00) + */ private[sql] type InternalType = Long @transient private[sql] lazy val tag = typeTag[InternalType] @@ -48,6 +52,11 @@ class TimestampType private() extends AtomicType { } /** + * The companion case object and its class is separated so the companion object also subclasses + * the TimestampType class. Otherwise, the companion object would be of type "TimestampType$" + * in byte code. Defined with a private constructor so the companion object is the only possible + * instantiation. + * * @since 1.3.0 */ @Stable --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org For additional commands, e-mail: commits-h...@spark.apache.org