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

gurwls223 pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new 10208908 [SPARK-31802][SQL] Format Java date-time types in 
`Row.jsonValue` directly
10208908 is described below

commit 102089081e246bab306def2b63385bca35b87fe9
Author: Max Gekk <max.g...@gmail.com>
AuthorDate: Mon May 25 12:50:38 2020 +0900

    [SPARK-31802][SQL] Format Java date-time types in `Row.jsonValue` directly
    
    ### What changes were proposed in this pull request?
    Use `format()` methods for Java date-time types in `Row.jsonValue`. The PR 
https://github.com/apache/spark/pull/28582 added the methods to avoid 
conversions to days and microseconds.
    
    ### Why are the changes needed?
    To avoid unnecessary overhead of converting Java date-time types to 
micros/days before formatting. Also formatters have to convert input 
micros/days back to Java types to pass instances to standard library API.
    
    ### Does this PR introduce _any_ user-facing change?
    No
    
    ### How was this patch tested?
    By existing tests in `RowJsonSuite`.
    
    Closes #28620 from MaxGekk/toJson-format-Java-datetime-types.
    
    Authored-by: Max Gekk <max.g...@gmail.com>
    Signed-off-by: HyukjinKwon <gurwls...@apache.org>
    (cherry picked from commit 7f36310500a7ab6e80cc1b1e6c764ae7b9657758)
    Signed-off-by: HyukjinKwon <gurwls...@apache.org>
---
 sql/catalyst/src/main/scala/org/apache/spark/sql/Row.scala | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/Row.scala 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/Row.scala
index 4487a2d..5b17f1d 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/Row.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/Row.scala
@@ -571,14 +571,10 @@ trait Row extends Serializable {
       case (s: String, _) => JString(s)
       case (b: Array[Byte], BinaryType) =>
         JString(Base64.getEncoder.encodeToString(b))
-      case (d: LocalDate, _) =>
-        JString(dateFormatter.format(DateTimeUtils.localDateToDays(d)))
-      case (d: Date, _) =>
-        JString(dateFormatter.format(DateTimeUtils.fromJavaDate(d)))
-      case (i: Instant, _) =>
-        JString(timestampFormatter.format(DateTimeUtils.instantToMicros(i)))
-      case (t: Timestamp, _) =>
-        JString(timestampFormatter.format(DateTimeUtils.fromJavaTimestamp(t)))
+      case (d: LocalDate, _) => JString(dateFormatter.format(d))
+      case (d: Date, _) => JString(dateFormatter.format(d))
+      case (i: Instant, _) => JString(timestampFormatter.format(i))
+      case (t: Timestamp, _) => JString(timestampFormatter.format(t))
       case (i: CalendarInterval, _) => JString(i.toString)
       case (a: Array[_], ArrayType(elementType, _)) =>
         iteratorToJsonArray(a.iterator, elementType)


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

Reply via email to