You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by we...@apache.org on 2020/04/14 14:45:27 UTC

[spark] branch master updated: [SPARK-31439][SQL] Fix perf regression of fromJavaDate

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

wenchen 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 2c5d489  [SPARK-31439][SQL] Fix perf regression of fromJavaDate
2c5d489 is described below

commit 2c5d489679ba3814973680d65853877664bcd931
Author: Max Gekk <ma...@gmail.com>
AuthorDate: Tue Apr 14 14:44:00 2020 +0000

    [SPARK-31439][SQL] Fix perf regression of fromJavaDate
    
    ### What changes were proposed in this pull request?
    In the PR, I propose to re-use optimized implementation of days rebase function `rebaseJulianToGregorianDays()` introduced by the PR #28067 in conversion of `java.sql.Date` values to Catalyst's `DATE` values. The function `fromJavaDate` in `DateTimeUtils` was re-written by taking the implementation from Spark 2.4, and by rebasing the final results via `rebaseJulianToGregorianDays()`.
    
    Also I updated `DateTimeBenchmark`, and added a benchmark for conversion from `java.sql.Date`.
    
    ### Why are the changes needed?
    The PR fixes the regression of parallelizing a collection of `java.sql.Date` values, and improves performance of converting external values to Catalyst's `DATE` values:
    - x4 on the master branch
    - 30% against Spark 2.4.6-SNAPSHOT
    
    Spark 2.4.6-SNAPSHOT:
    ```
    To/from java.sql.Timestamp:               Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
    ------------------------------------------------------------------------------------------------------------------------
    From java.sql.Date                                  614            655          43          8.1         122.8       1.0X
    ```
    
    Before the changes:
    ```
    To/from java.sql.Timestamp:               Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
    ------------------------------------------------------------------------------------------------------------------------
    From java.sql.Date                                 1154           1206          46          4.3         230.9       1.0X
    ```
    
    After:
    ```
    To/from java.sql.Timestamp:               Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
    ------------------------------------------------------------------------------------------------------------------------
    From java.sql.Date                                  427            434           7         11.7          85.3       1.0X
    ```
    
    ### Does this PR introduce any user-facing change?
    No
    
    ### How was this patch tested?
    - By existing tests suites, in particular, `DateTimeUtilsSuite`, `RebaseDateTimeSuite`, `DateFunctionsSuite`, `DateExpressionsSuite`.
    - Re-run `DateTimeBenchmark` in the environment:
    
    | Item | Description |
    | ---- | ----|
    | Region | us-west-2 (Oregon) |
    | Instance | r3.xlarge |
    | AMI | ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20190722.1 (ami-06f2f779464715dc5) |
    | Java | OpenJDK 64-Bit Server VM 1.8.0_242 and OpenJDK 64-Bit Server VM 11.0.6+10 |
    
    Closes #28205 from MaxGekk/optimize-fromJavaDate.
    
    Authored-by: Max Gekk <ma...@gmail.com>
    Signed-off-by: Wenchen Fan <we...@databricks.com>
---
 .../spark/sql/catalyst/util/DateTimeUtils.scala    |  14 +-
 .../benchmarks/DateTimeBenchmark-jdk11-results.txt | 221 +++++++++++----------
 sql/core/benchmarks/DateTimeBenchmark-results.txt  | 221 +++++++++++----------
 .../execution/benchmark/DateTimeBenchmark.scala    |   7 +-
 4 files changed, 232 insertions(+), 231 deletions(-)

diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala
index af31276..56259df 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala
@@ -101,16 +101,10 @@ object DateTimeUtils {
    * @return The number of days since epoch from java.sql.Date.
    */
   def fromJavaDate(date: Date): SQLDate = {
-    val era = if (date.before(julianCommonEraStart)) 0 else 1
-    val localDate = LocalDate
-      .of(date.getYear + 1900, date.getMonth + 1, 1)
-      .`with`(ChronoField.ERA, era)
-      // Add days separately to convert dates existed in Julian calendar but not
-      // in Proleptic Gregorian calendar. For example, 1000-02-29 is valid date
-      // in Julian calendar because 1000 is a leap year but 1000 is not a leap
-      // year in Proleptic Gregorian calendar. And 1000-02-29 doesn't exist in it.
-      .plusDays(date.getDate - 1) // Returns the next valid date after `date.getDate - 1` days
-    localDateToDays(localDate)
+    val millisUtc = date.getTime
+    val millisLocal = millisUtc + TimeZone.getDefault.getOffset(millisUtc)
+    val julianDays = Math.toIntExact(Math.floorDiv(millisLocal, MILLIS_PER_DAY))
+    rebaseJulianToGregorianDays(julianDays)
   }
 
   /**
diff --git a/sql/core/benchmarks/DateTimeBenchmark-jdk11-results.txt b/sql/core/benchmarks/DateTimeBenchmark-jdk11-results.txt
index 27917c2..1323a01 100644
--- a/sql/core/benchmarks/DateTimeBenchmark-jdk11-results.txt
+++ b/sql/core/benchmarks/DateTimeBenchmark-jdk11-results.txt
@@ -6,92 +6,92 @@ OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 cast to timestamp:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-cast to timestamp wholestage off                    447            486          54         22.4          44.7       1.0X
-cast to timestamp wholestage on                     364            381          14         27.5          36.4       1.2X
+cast to timestamp wholestage off                    440            459          28         22.7          44.0       1.0X
+cast to timestamp wholestage on                     384            407          15         26.1          38.4       1.1X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 year of timestamp:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-year of timestamp wholestage off                   1366           1374          11          7.3         136.6       1.0X
-year of timestamp wholestage on                    1278           1302          21          7.8         127.8       1.1X
+year of timestamp wholestage off                   1334           1352          27          7.5         133.4       1.0X
+year of timestamp wholestage on                    1301           1309           9          7.7         130.1       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 quarter of timestamp:                     Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-quarter of timestamp wholestage off                1606           1622          23          6.2         160.6       1.0X
-quarter of timestamp wholestage on                 1569           1584          16          6.4         156.9       1.0X
+quarter of timestamp wholestage off                1623           1636          18          6.2         162.3       1.0X
+quarter of timestamp wholestage on                 1592           1603           9          6.3         159.2       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 month of timestamp:                       Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-month of timestamp wholestage off                  1243           1259          24          8.0         124.3       1.0X
-month of timestamp wholestage on                   1267           1282          13          7.9         126.7       1.0X
+month of timestamp wholestage off                  1246           1250           5          8.0         124.6       1.0X
+month of timestamp wholestage on                   1277           1290          15          7.8         127.7       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 weekofyear of timestamp:                  Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-weekofyear of timestamp wholestage off             1837           1846          12          5.4         183.7       1.0X
-weekofyear of timestamp wholestage on              1842           1848           4          5.4         184.2       1.0X
+weekofyear of timestamp wholestage off             1881           1896          20          5.3         188.1       1.0X
+weekofyear of timestamp wholestage on              1865           1879          16          5.4         186.5       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 day of timestamp:                         Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-day of timestamp wholestage off                    1262           1289          39          7.9         126.2       1.0X
-day of timestamp wholestage on                     1263           1268           6          7.9         126.3       1.0X
+day of timestamp wholestage off                    1223           1249          37          8.2         122.3       1.0X
+day of timestamp wholestage on                     1261           1276          19          7.9         126.1       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 dayofyear of timestamp:                   Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-dayofyear of timestamp wholestage off              1302           1308           8          7.7         130.2       1.0X
-dayofyear of timestamp wholestage on               1300           1308           8          7.7         130.0       1.0X
+dayofyear of timestamp wholestage off              1291           1312          29          7.7         129.1       1.0X
+dayofyear of timestamp wholestage on               1284           1290           6          7.8         128.4       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 dayofmonth of timestamp:                  Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-dayofmonth of timestamp wholestage off             1244           1248           6          8.0         124.4       1.0X
-dayofmonth of timestamp wholestage on              1253           1263          10          8.0         125.3       1.0X
+dayofmonth of timestamp wholestage off             1241           1246           7          8.1         124.1       1.0X
+dayofmonth of timestamp wholestage on              1268           1276           6          7.9         126.8       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 dayofweek of timestamp:                   Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-dayofweek of timestamp wholestage off              1407           1408           2          7.1         140.7       1.0X
-dayofweek of timestamp wholestage on               1411           1432          14          7.1         141.1       1.0X
+dayofweek of timestamp wholestage off              1402           1408           9          7.1         140.2       1.0X
+dayofweek of timestamp wholestage on               1414           1423           8          7.1         141.4       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 weekday of timestamp:                     Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-weekday of timestamp wholestage off                1349           1352           5          7.4         134.9       1.0X
-weekday of timestamp wholestage on                 1347           1354          10          7.4         134.7       1.0X
+weekday of timestamp wholestage off                1349           1350           2          7.4         134.9       1.0X
+weekday of timestamp wholestage on                 1344           1352           5          7.4         134.4       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 hour of timestamp:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-hour of timestamp wholestage off                   1038           1041           5          9.6         103.8       1.0X
-hour of timestamp wholestage on                     983            995           9         10.2          98.3       1.1X
+hour of timestamp wholestage off                    974            974           0         10.3          97.4       1.0X
+hour of timestamp wholestage on                    1009           1019          15          9.9         100.9       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 minute of timestamp:                      Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-minute of timestamp wholestage off                 1042           1043           1          9.6         104.2       1.0X
-minute of timestamp wholestage on                  1022           1030           9          9.8         102.2       1.0X
+minute of timestamp wholestage off                 1024           1028           6          9.8         102.4       1.0X
+minute of timestamp wholestage on                   978            992          11         10.2          97.8       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 second of timestamp:                      Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-second of timestamp wholestage off                  978            979           2         10.2          97.8       1.0X
-second of timestamp wholestage on                  1016           1028          21          9.8         101.6       1.0X
+second of timestamp wholestage off                 1023           1026           4          9.8         102.3       1.0X
+second of timestamp wholestage on                  1008           1024          14          9.9         100.8       1.0X
 
 
 ================================================================================================
@@ -102,15 +102,15 @@ OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 current_date:                             Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-current_date wholestage off                         295            299           6         33.9          29.5       1.0X
-current_date wholestage on                          321            327           7         31.2          32.1       0.9X
+current_date wholestage off                         296            299           5         33.8          29.6       1.0X
+current_date wholestage on                          316            318           2         31.7          31.6       0.9X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 current_timestamp:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-current_timestamp wholestage off                    342            387          63         29.2          34.2       1.0X
-current_timestamp wholestage on                     324            376          97         30.9          32.4       1.1X
+current_timestamp wholestage off                    310            345          49         32.2          31.0       1.0X
+current_timestamp wholestage on                     316            332          11         31.7          31.6       1.0X
 
 
 ================================================================================================
@@ -121,43 +121,43 @@ OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 cast to date:                             Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-cast to date wholestage off                        1065           1067           3          9.4         106.5       1.0X
-cast to date wholestage on                         1044           1053          10          9.6         104.4       1.0X
+cast to date wholestage off                        1067           1071           7          9.4         106.7       1.0X
+cast to date wholestage on                         1050           1072          20          9.5         105.0       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 last_day:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-last_day wholestage off                            1241           1245           6          8.1         124.1       1.0X
-last_day wholestage on                             1276           1287          11          7.8         127.6       1.0X
+last_day wholestage off                            1240           1245           8          8.1         124.0       1.0X
+last_day wholestage on                             1273           1290          14          7.9         127.3       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 next_day:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-next_day wholestage off                            1130           1150          28          8.8         113.0       1.0X
-next_day wholestage on                             1086           1096           8          9.2         108.6       1.0X
+next_day wholestage off                            1121           1130          13          8.9         112.1       1.0X
+next_day wholestage on                             1099           1106          11          9.1         109.9       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_add:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_add wholestage off                            1048           1054           9          9.5         104.8       1.0X
-date_add wholestage on                             1077           1079           2          9.3         107.7       1.0X
+date_add wholestage off                            1045           1051           8          9.6         104.5       1.0X
+date_add wholestage on                             1078           1086          16          9.3         107.8       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_sub:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_sub wholestage off                            1047           1052           7          9.6         104.7       1.0X
-date_sub wholestage on                             1078           1087           7          9.3         107.8       1.0X
+date_sub wholestage off                            1049           1050           1          9.5         104.9       1.0X
+date_sub wholestage on                             1078           1083           4          9.3         107.8       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 add_months:                               Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-add_months wholestage off                          1392           1421          41          7.2         139.2       1.0X
-add_months wholestage on                           1441           1447           6          6.9         144.1       1.0X
+add_months wholestage off                          1411           1415           7          7.1         141.1       1.0X
+add_months wholestage on                           1435           1447          13          7.0         143.5       1.0X
 
 
 ================================================================================================
@@ -168,8 +168,8 @@ OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 format date:                              Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-format date wholestage off                         6034           6047          19          1.7         603.4       1.0X
-format date wholestage on                          5874           5891          16          1.7         587.4       1.0X
+format date wholestage off                         5736           5786          71          1.7         573.6       1.0X
+format date wholestage on                          5550           5575          29          1.8         555.0       1.0X
 
 
 ================================================================================================
@@ -180,8 +180,8 @@ OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 from_unixtime:                            Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-from_unixtime wholestage off                       7350           7371          29          1.4         735.0       1.0X
-from_unixtime wholestage on                        7415           7428          13          1.3         741.5       1.0X
+from_unixtime wholestage off                       7378           7379           1          1.4         737.8       1.0X
+from_unixtime wholestage on                        7441           7465          24          1.3         744.1       1.0X
 
 
 ================================================================================================
@@ -192,15 +192,15 @@ OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 from_utc_timestamp:                       Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-from_utc_timestamp wholestage off                  1235           1236           2          8.1         123.5       1.0X
-from_utc_timestamp wholestage on                   1300           1309          10          7.7         130.0       0.9X
+from_utc_timestamp wholestage off                  1238           1260          30          8.1         123.8       1.0X
+from_utc_timestamp wholestage on                   1300           1308           5          7.7         130.0       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to_utc_timestamp:                         Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to_utc_timestamp wholestage off                    1798           1805          10          5.6         179.8       1.0X
-to_utc_timestamp wholestage on                     1765           1779          11          5.7         176.5       1.0X
+to_utc_timestamp wholestage off                    1790           1793           5          5.6         179.0       1.0X
+to_utc_timestamp wholestage on                     1737           1748          13          5.8         173.7       1.0X
 
 
 ================================================================================================
@@ -211,29 +211,29 @@ OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 cast interval:                            Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-cast interval wholestage off                        345            350           7         29.0          34.5       1.0X
-cast interval wholestage on                         325            337          11         30.7          32.5       1.1X
+cast interval wholestage off                        347            350           4         28.8          34.7       1.0X
+cast interval wholestage on                         327            329           4         30.6          32.7       1.1X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 datediff:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-datediff wholestage off                            1833           1834           2          5.5         183.3       1.0X
-datediff wholestage on                             1807           1815           9          5.5         180.7       1.0X
+datediff wholestage off                            1836           1860          33          5.4         183.6       1.0X
+datediff wholestage on                             1811           1826          16          5.5         181.1       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 months_between:                           Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-months_between wholestage off                      5938           5941           4          1.7         593.8       1.0X
-months_between wholestage on                       5891           5920          19          1.7         589.1       1.0X
+months_between wholestage off                      5613           5617           6          1.8         561.3       1.0X
+months_between wholestage on                       5590           5624          35          1.8         559.0       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 window:                                   Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-window wholestage off                              2153           2313         226          0.5        2153.3       1.0X
-window wholestage on                              47097          47143          31          0.0       47097.0       0.0X
+window wholestage off                              2222           2308         122          0.5        2222.2       1.0X
+window wholestage on                              48721          48828         101          0.0       48720.7       0.0X
 
 
 ================================================================================================
@@ -244,134 +244,134 @@ OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc YEAR:                          Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc YEAR wholestage off                     2458           2461           5          4.1         245.8       1.0X
-date_trunc YEAR wholestage on                      2433           2441           6          4.1         243.3       1.0X
+date_trunc YEAR wholestage off                     2482           2503          30          4.0         248.2       1.0X
+date_trunc YEAR wholestage on                      2520           2532          12          4.0         252.0       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc YYYY:                          Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc YYYY wholestage off                     2454           2457           4          4.1         245.4       1.0X
-date_trunc YYYY wholestage on                      2436           2442           7          4.1         243.6       1.0X
+date_trunc YYYY wholestage off                     2487           2493           9          4.0         248.7       1.0X
+date_trunc YYYY wholestage on                      2521           2527           8          4.0         252.1       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc YY:                            Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc YY wholestage off                       2467           2469           3          4.1         246.7       1.0X
-date_trunc YY wholestage on                        2435           2448          18          4.1         243.5       1.0X
+date_trunc YY wholestage off                       2479           2492          18          4.0         247.9       1.0X
+date_trunc YY wholestage on                        2519           2529           8          4.0         251.9       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc MON:                           Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc MON wholestage off                      2494           2494           1          4.0         249.4       1.0X
-date_trunc MON wholestage on                       2428           2441          14          4.1         242.8       1.0X
+date_trunc MON wholestage off                      2504           2519          21          4.0         250.4       1.0X
+date_trunc MON wholestage on                       2549           2563          15          3.9         254.9       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc MONTH:                         Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc MONTH wholestage off                    2502           2510          12          4.0         250.2       1.0X
-date_trunc MONTH wholestage on                     2438           2444           6          4.1         243.8       1.0X
+date_trunc MONTH wholestage off                    2517           2527          14          4.0         251.7       1.0X
+date_trunc MONTH wholestage on                     2538           2547          11          3.9         253.8       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc MM:                            Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc MM wholestage off                       2486           2487           1          4.0         248.6       1.0X
-date_trunc MM wholestage on                        2436           2441           4          4.1         243.6       1.0X
+date_trunc MM wholestage off                       2506           2507           2          4.0         250.6       1.0X
+date_trunc MM wholestage on                        2536           2546          10          3.9         253.6       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc DAY:                           Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc DAY wholestage off                      2406           2421          21          4.2         240.6       1.0X
-date_trunc DAY wholestage on                       2352           2370          23          4.3         235.2       1.0X
+date_trunc DAY wholestage off                      2443           2454          17          4.1         244.3       1.0X
+date_trunc DAY wholestage on                       2468           2479          12          4.1         246.8       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc DD:                            Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc DD wholestage off                       2414           2417           5          4.1         241.4       1.0X
-date_trunc DD wholestage on                        2355           2366           8          4.2         235.5       1.0X
+date_trunc DD wholestage off                       2440           2440           0          4.1         244.0       1.0X
+date_trunc DD wholestage on                        2459           2481          23          4.1         245.9       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc HOUR:                          Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc HOUR wholestage off                     2419           2426          10          4.1         241.9       1.0X
-date_trunc HOUR wholestage on                      2369           2374           4          4.2         236.9       1.0X
+date_trunc HOUR wholestage off                     2452           2453           2          4.1         245.2       1.0X
+date_trunc HOUR wholestage on                      2428           2435           5          4.1         242.8       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc MINUTE:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc MINUTE wholestage off                    357            378          30         28.0          35.7       1.0X
-date_trunc MINUTE wholestage on                     331            335           4         30.2          33.1       1.1X
+date_trunc MINUTE wholestage off                    359            359           1         27.8          35.9       1.0X
+date_trunc MINUTE wholestage on                     382            388           8         26.2          38.2       0.9X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc SECOND:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc SECOND wholestage off                    373            375           3         26.8          37.3       1.0X
-date_trunc SECOND wholestage on                     330            335           4         30.3          33.0       1.1X
+date_trunc SECOND wholestage off                    382            386           6         26.2          38.2       1.0X
+date_trunc SECOND wholestage on                     379            382           5         26.4          37.9       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc WEEK:                          Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc WEEK wholestage off                     2479           2480           2          4.0         247.9       1.0X
-date_trunc WEEK wholestage on                      2441           2450           8          4.1         244.1       1.0X
+date_trunc WEEK wholestage off                     2427           2429           3          4.1         242.7       1.0X
+date_trunc WEEK wholestage on                      2427           2441          12          4.1         242.7       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc QUARTER:                       Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc QUARTER wholestage off                  3337           3337           0          3.0         333.7       1.0X
-date_trunc QUARTER wholestage on                   3235           3244           8          3.1         323.5       1.0X
+date_trunc QUARTER wholestage off                  3551           3583          46          2.8         355.1       1.0X
+date_trunc QUARTER wholestage on                   3517           3526           6          2.8         351.7       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc year:                               Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc year wholestage off                           315            316           1         31.7          31.5       1.0X
-trunc year wholestage on                            293            302          16         34.2          29.3       1.1X
+trunc year wholestage off                           312            313           1         32.0          31.2       1.0X
+trunc year wholestage on                            319            326           7         31.3          31.9       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc yyyy:                               Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc yyyy wholestage off                           312            314           3         32.0          31.2       1.0X
-trunc yyyy wholestage on                            295            300           8         33.9          29.5       1.1X
+trunc yyyy wholestage off                           318            318           0         31.5          31.8       1.0X
+trunc yyyy wholestage on                            317            328          17         31.5          31.7       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc yy:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc yy wholestage off                             311            317           8         32.1          31.1       1.0X
-trunc yy wholestage on                              294            302           7         34.0          29.4       1.1X
+trunc yy wholestage off                             315            322          10         31.8          31.5       1.0X
+trunc yy wholestage on                              318            328           9         31.5          31.8       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc mon:                                Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc mon wholestage off                            312            314           3         32.0          31.2       1.0X
-trunc mon wholestage on                             296            299           5         33.8          29.6       1.1X
+trunc mon wholestage off                            311            313           2         32.1          31.1       1.0X
+trunc mon wholestage on                             322            326           6         31.0          32.2       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc month:                              Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc month wholestage off                          311            311           0         32.1          31.1       1.0X
-trunc month wholestage on                           293            297           4         34.2          29.3       1.1X
+trunc month wholestage off                          310            318          11         32.2          31.0       1.0X
+trunc month wholestage on                           319            326           8         31.3          31.9       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc mm:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc mm wholestage off                             315            320           7         31.7          31.5       1.0X
-trunc mm wholestage on                              291            296           8         34.4          29.1       1.1X
+trunc mm wholestage off                             311            314           4         32.2          31.1       1.0X
+trunc mm wholestage on                              318            324           7         31.4          31.8       1.0X
 
 
 ================================================================================================
@@ -382,36 +382,36 @@ OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to timestamp str:                         Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to timestamp str wholestage off                     161            171          15          6.2         160.6       1.0X
-to timestamp str wholestage on                      152            154           1          6.6         151.6       1.1X
+to timestamp str wholestage off                     166            167           2          6.0         165.7       1.0X
+to timestamp str wholestage on                      158            162           4          6.3         158.2       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to_timestamp:                             Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to_timestamp wholestage off                        1441           1450          13          0.7        1440.6       1.0X
-to_timestamp wholestage on                         1371           1381          20          0.7        1370.8       1.1X
+to_timestamp wholestage off                        1487           1488           1          0.7        1487.1       1.0X
+to_timestamp wholestage on                         1418           1422           4          0.7        1418.4       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to_unix_timestamp:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to_unix_timestamp wholestage off                   1329           1335           9          0.8        1328.7       1.0X
-to_unix_timestamp wholestage on                    1354           1357           4          0.7        1353.7       1.0X
+to_unix_timestamp wholestage off                   1409           1420          15          0.7        1409.2       1.0X
+to_unix_timestamp wholestage on                    1422           1428           8          0.7        1422.1       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to date str:                              Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to date str wholestage off                          212            213           2          4.7         211.7       1.0X
-to date str wholestage on                           206            207           1          4.9         205.9       1.0X
+to date str wholestage off                          207            207           0          4.8         206.9       1.0X
+to date str wholestage on                           209            210           1          4.8         209.4       1.0X
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to_date:                                  Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to_date wholestage off                             3255           3309          76          0.3        3255.0       1.0X
-to_date wholestage on                              3146           3168          23          0.3        3146.4       1.0X
+to_date wholestage off                             3378           3398          28          0.3        3377.7       1.0X
+to_date wholestage on                              3372           3379           8          0.3        3372.2       1.0X
 
 
 ================================================================================================
@@ -420,10 +420,11 @@ Conversion from/to external types
 
 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
-To/from java.sql.Timestamp:               Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
+To/from Java's date-time:                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-From java.sql.Timestamp                             359            365           8         13.9          71.8       1.0X
-Collect longs                                      1832           1895          84          2.7         366.3       0.2X
-Collect timestamps                                 1811           2046         247          2.8         362.2       0.2X
+From java.sql.Date                                  427            443          23         11.7          85.4       1.0X
+From java.sql.Timestamp                             361            369          11         13.8          72.3       1.2X
+Collect longs                                      1942           2044         170          2.6         388.3       0.2X
+Collect timestamps                                 1891           2093         192          2.6         378.2       0.2X
 
 
diff --git a/sql/core/benchmarks/DateTimeBenchmark-results.txt b/sql/core/benchmarks/DateTimeBenchmark-results.txt
index ee70aa3..77b6f83 100644
--- a/sql/core/benchmarks/DateTimeBenchmark-results.txt
+++ b/sql/core/benchmarks/DateTimeBenchmark-results.txt
@@ -6,92 +6,92 @@ OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 cast to timestamp:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-cast to timestamp wholestage off                    416            439          32         24.0          41.6       1.0X
-cast to timestamp wholestage on                     370            399          31         27.1          37.0       1.1X
+cast to timestamp wholestage off                    410            428          25         24.4          41.0       1.0X
+cast to timestamp wholestage on                     364            379          17         27.5          36.4       1.1X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 year of timestamp:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-year of timestamp wholestage off                   1328           1343          21          7.5         132.8       1.0X
-year of timestamp wholestage on                    1204           1247          27          8.3         120.4       1.1X
+year of timestamp wholestage off                   1308           1318          15          7.6         130.8       1.0X
+year of timestamp wholestage on                    1204           1234          19          8.3         120.4       1.1X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 quarter of timestamp:                     Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-quarter of timestamp wholestage off                1447           1451           6          6.9         144.7       1.0X
-quarter of timestamp wholestage on                 1384           1392           7          7.2         138.4       1.0X
+quarter of timestamp wholestage off                1439           1442           6          7.0         143.9       1.0X
+quarter of timestamp wholestage on                 1374           1385           9          7.3         137.4       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 month of timestamp:                       Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-month of timestamp wholestage off                  1233           1238           6          8.1         123.3       1.0X
-month of timestamp wholestage on                   1232           1252          15          8.1         123.2       1.0X
+month of timestamp wholestage off                  1228           1234           8          8.1         122.8       1.0X
+month of timestamp wholestage on                   1225           1241          25          8.2         122.5       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 weekofyear of timestamp:                  Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-weekofyear of timestamp wholestage off             1921           1923           3          5.2         192.1       1.0X
-weekofyear of timestamp wholestage on              1893           1914          14          5.3         189.3       1.0X
+weekofyear of timestamp wholestage off             1878           1880           3          5.3         187.8       1.0X
+weekofyear of timestamp wholestage on              1864           1870           6          5.4         186.4       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 day of timestamp:                         Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-day of timestamp wholestage off                    1224           1227           4          8.2         122.4       1.0X
-day of timestamp wholestage on                     1219           1238          15          8.2         121.9       1.0X
+day of timestamp wholestage off                    1218           1220           3          8.2         121.8       1.0X
+day of timestamp wholestage on                     1217           1226          10          8.2         121.7       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 dayofyear of timestamp:                   Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-dayofyear of timestamp wholestage off              1283           1283           1          7.8         128.3       1.0X
-dayofyear of timestamp wholestage on               1256           1261           5          8.0         125.6       1.0X
+dayofyear of timestamp wholestage off              1274           1282          12          7.8         127.4       1.0X
+dayofyear of timestamp wholestage on               1263           1274          14          7.9         126.3       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 dayofmonth of timestamp:                  Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-dayofmonth of timestamp wholestage off             1227           1233           8          8.2         122.7       1.0X
-dayofmonth of timestamp wholestage on              1220           1228           6          8.2         122.0       1.0X
+dayofmonth of timestamp wholestage off             1221           1226           6          8.2         122.1       1.0X
+dayofmonth of timestamp wholestage on              1215           1222           9          8.2         121.5       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 dayofweek of timestamp:                   Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-dayofweek of timestamp wholestage off              1404           1408           5          7.1         140.4       1.0X
-dayofweek of timestamp wholestage on               1376           1386           6          7.3         137.6       1.0X
+dayofweek of timestamp wholestage off              1404           1431          38          7.1         140.4       1.0X
+dayofweek of timestamp wholestage on               1374           1381           8          7.3         137.4       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 weekday of timestamp:                     Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-weekday of timestamp wholestage off                1346           1350           5          7.4         134.6       1.0X
-weekday of timestamp wholestage on                 1313           1319           6          7.6         131.3       1.0X
+weekday of timestamp wholestage off                1342           1350          12          7.5         134.2       1.0X
+weekday of timestamp wholestage on                 1311           1317           5          7.6         131.1       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 hour of timestamp:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-hour of timestamp wholestage off                   1005           1011           8         10.0         100.5       1.0X
-hour of timestamp wholestage on                     953            961           9         10.5          95.3       1.1X
+hour of timestamp wholestage off                    997           1000           4         10.0          99.7       1.0X
+hour of timestamp wholestage on                     959            969           8         10.4          95.9       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 minute of timestamp:                      Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-minute of timestamp wholestage off                  995           1000           8         10.1          99.5       1.0X
-minute of timestamp wholestage on                   957            959           3         10.5          95.7       1.0X
+minute of timestamp wholestage off                  968            970           2         10.3          96.8       1.0X
+minute of timestamp wholestage on                   952            960           8         10.5          95.2       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 second of timestamp:                      Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-second of timestamp wholestage off                  960            963           4         10.4          96.0       1.0X
-second of timestamp wholestage on                   957            960           3         10.4          95.7       1.0X
+second of timestamp wholestage off                  971            974           5         10.3          97.1       1.0X
+second of timestamp wholestage on                   952            953           0         10.5          95.2       1.0X
 
 
 ================================================================================================
@@ -102,15 +102,15 @@ OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 current_date:                             Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-current_date wholestage off                         290            295           7         34.4          29.0       1.0X
-current_date wholestage on                          287            295          13         34.9          28.7       1.0X
+current_date wholestage off                         277            282           7         36.1          27.7       1.0X
+current_date wholestage on                          283            290          11         35.3          28.3       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 current_timestamp:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-current_timestamp wholestage off                    294            296           4         34.1          29.4       1.0X
-current_timestamp wholestage on                     280            303          19         35.7          28.0       1.0X
+current_timestamp wholestage off                    302            324          31         33.1          30.2       1.0X
+current_timestamp wholestage on                     281            292          13         35.6          28.1       1.1X
 
 
 ================================================================================================
@@ -121,43 +121,43 @@ OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 cast to date:                             Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-cast to date wholestage off                        1066           1067           1          9.4         106.6       1.0X
-cast to date wholestage on                         1007           1014           6          9.9         100.7       1.1X
+cast to date wholestage off                        1064           1066           2          9.4         106.4       1.0X
+cast to date wholestage on                         1002           1010           8         10.0         100.2       1.1X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 last_day:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-last_day wholestage off                            1273           1289          22          7.9         127.3       1.0X
-last_day wholestage on                             1238           1246           9          8.1         123.8       1.0X
+last_day wholestage off                            1247           1250           4          8.0         124.7       1.0X
+last_day wholestage on                             1238           1245           4          8.1         123.8       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 next_day:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-next_day wholestage off                            1124           1125           2          8.9         112.4       1.0X
-next_day wholestage on                             1058           1064           8          9.5         105.8       1.1X
+next_day wholestage off                            1112           1113           1          9.0         111.2       1.0X
+next_day wholestage on                             1055           1059           5          9.5         105.5       1.1X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_add:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_add wholestage off                            1049           1049           0          9.5         104.9       1.0X
-date_add wholestage on                             1036           1041           7          9.6         103.6       1.0X
+date_add wholestage off                            1049           1051           3          9.5         104.9       1.0X
+date_add wholestage on                             1036           1043           9          9.6         103.6       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_sub:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_sub wholestage off                            1051           1052           2          9.5         105.1       1.0X
-date_sub wholestage on                             1040           1046           5          9.6         104.0       1.0X
+date_sub wholestage off                            1043           1063          29          9.6         104.3       1.0X
+date_sub wholestage on                             1036           1041           5          9.6         103.6       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 add_months:                               Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-add_months wholestage off                          1381           1388          11          7.2         138.1       1.0X
-add_months wholestage on                           1359           1367           8          7.4         135.9       1.0X
+add_months wholestage off                          1371           1373           2          7.3         137.1       1.0X
+add_months wholestage on                           1402           1409          10          7.1         140.2       1.0X
 
 
 ================================================================================================
@@ -168,8 +168,8 @@ OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 format date:                              Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-format date wholestage off                         5766           5793          38          1.7         576.6       1.0X
-format date wholestage on                          5803           5812           7          1.7         580.3       1.0X
+format date wholestage off                         5741           5862         171          1.7         574.1       1.0X
+format date wholestage on                          5589           5600          19          1.8         558.9       1.0X
 
 
 ================================================================================================
@@ -180,8 +180,8 @@ OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 from_unixtime:                            Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-from_unixtime wholestage off                       8891           8915          34          1.1         889.1       1.0X
-from_unixtime wholestage on                        8870           8885          12          1.1         887.0       1.0X
+from_unixtime wholestage off                       8681           8684           4          1.2         868.1       1.0X
+from_unixtime wholestage on                        8669           8707          33          1.2         866.9       1.0X
 
 
 ================================================================================================
@@ -192,15 +192,15 @@ OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 from_utc_timestamp:                       Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-from_utc_timestamp wholestage off                  1089           1094           7          9.2         108.9       1.0X
-from_utc_timestamp wholestage on                   1105           1107           3          9.0         110.5       1.0X
+from_utc_timestamp wholestage off                  1096           1101           7          9.1         109.6       1.0X
+from_utc_timestamp wholestage on                   1108           1116           6          9.0         110.8       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to_utc_timestamp:                         Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to_utc_timestamp wholestage off                    1620           1628          11          6.2         162.0       1.0X
-to_utc_timestamp wholestage on                     1600           1608           7          6.3         160.0       1.0X
+to_utc_timestamp wholestage off                    1626           1638          16          6.1         162.6       1.0X
+to_utc_timestamp wholestage on                     1594           1606          10          6.3         159.4       1.0X
 
 
 ================================================================================================
@@ -211,29 +211,29 @@ OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 cast interval:                            Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-cast interval wholestage off                        334            336           3         30.0          33.4       1.0X
-cast interval wholestage on                         305            310           4         32.7          30.5       1.1X
+cast interval wholestage off                        331            335           6         30.2          33.1       1.0X
+cast interval wholestage on                         298            305           5         33.5          29.8       1.1X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 datediff:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-datediff wholestage off                            1811           1816           7          5.5         181.1       1.0X
-datediff wholestage on                             1758           1761           3          5.7         175.8       1.0X
+datediff wholestage off                            1821           1822           2          5.5         182.1       1.0X
+datediff wholestage on                             1759           1763           3          5.7         175.9       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 months_between:                           Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-months_between wholestage off                      4780           4789          12          2.1         478.0       1.0X
-months_between wholestage on                       4765           4772           8          2.1         476.5       1.0X
+months_between wholestage off                      4752           4770          25          2.1         475.2       1.0X
+months_between wholestage on                       4740           4746           5          2.1         474.0       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 window:                                   Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-window wholestage off                              1840           1967         179          0.5        1840.4       1.0X
-window wholestage on                              46710          46792          57          0.0       46709.5       0.0X
+window wholestage off                              1936           2049         160          0.5        1935.7       1.0X
+window wholestage on                              44821          44850          44          0.0       44820.6       0.0X
 
 
 ================================================================================================
@@ -244,134 +244,134 @@ OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc YEAR:                          Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc YEAR wholestage off                     2350           2351           1          4.3         235.0       1.0X
-date_trunc YEAR wholestage on                      2317           2324           8          4.3         231.7       1.0X
+date_trunc YEAR wholestage off                     2382           2384           3          4.2         238.2       1.0X
+date_trunc YEAR wholestage on                      2309           2316           7          4.3         230.9       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc YYYY:                          Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc YYYY wholestage off                     2341           2343           3          4.3         234.1       1.0X
-date_trunc YYYY wholestage on                      2314           2332          22          4.3         231.4       1.0X
+date_trunc YYYY wholestage off                     2368           2375          10          4.2         236.8       1.0X
+date_trunc YYYY wholestage on                      2304           2313           7          4.3         230.4       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc YY:                            Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc YY wholestage off                       2348           2354           9          4.3         234.8       1.0X
-date_trunc YY wholestage on                        2313           2317           3          4.3         231.3       1.0X
+date_trunc YY wholestage off                       2381           2396          22          4.2         238.1       1.0X
+date_trunc YY wholestage on                        2303           2305           1          4.3         230.3       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc MON:                           Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc MON wholestage off                      2383           2385           3          4.2         238.3       1.0X
-date_trunc MON wholestage on                       2293           2307          22          4.4         229.3       1.0X
+date_trunc MON wholestage off                      2325           2333          11          4.3         232.5       1.0X
+date_trunc MON wholestage on                       2293           2301           6          4.4         229.3       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc MONTH:                         Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc MONTH wholestage off                    2380           2393          18          4.2         238.0       1.0X
-date_trunc MONTH wholestage on                     2296           2304           9          4.4         229.6       1.0X
+date_trunc MONTH wholestage off                    2335           2335           0          4.3         233.5       1.0X
+date_trunc MONTH wholestage on                     2296           2298           2          4.4         229.6       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc MM:                            Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc MM wholestage off                       2375           2380           7          4.2         237.5       1.0X
-date_trunc MM wholestage on                        2295           2302           8          4.4         229.5       1.0X
+date_trunc MM wholestage off                       2328           2329           1          4.3         232.8       1.0X
+date_trunc MM wholestage on                        2290           2295           4          4.4         229.0       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc DAY:                           Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc DAY wholestage off                      2145           2145           1          4.7         214.5       1.0X
-date_trunc DAY wholestage on                       2090           2096           6          4.8         209.0       1.0X
+date_trunc DAY wholestage off                      2139           2140           1          4.7         213.9       1.0X
+date_trunc DAY wholestage on                       2095           2101           7          4.8         209.5       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc DD:                            Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc DD wholestage off                       2142           2149          11          4.7         214.2       1.0X
-date_trunc DD wholestage on                        2090           2096           5          4.8         209.0       1.0X
+date_trunc DD wholestage off                       2143           2145           2          4.7         214.3       1.0X
+date_trunc DD wholestage on                        2087           2092           3          4.8         208.7       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc HOUR:                          Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc HOUR wholestage off                     2204           2212          11          4.5         220.4       1.0X
-date_trunc HOUR wholestage on                      2196           2201           5          4.6         219.6       1.0X
+date_trunc HOUR wholestage off                     2201           2207           8          4.5         220.1       1.0X
+date_trunc HOUR wholestage on                      2176           2185           6          4.6         217.6       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc MINUTE:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc MINUTE wholestage off                    353            353           1         28.3          35.3       1.0X
-date_trunc MINUTE wholestage on                     331            335           4         30.2          33.1       1.1X
+date_trunc MINUTE wholestage off                    356            356           0         28.1          35.6       1.0X
+date_trunc MINUTE wholestage on                     333            344           7         30.1          33.3       1.1X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc SECOND:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc SECOND wholestage off                    343            345           3         29.2          34.3       1.0X
-date_trunc SECOND wholestage on                     335            336           2         29.9          33.5       1.0X
+date_trunc SECOND wholestage off                    341            342           2         29.3          34.1       1.0X
+date_trunc SECOND wholestage on                     335            349          18         29.9          33.5       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc WEEK:                          Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc WEEK wholestage off                     2277           2279           3          4.4         227.7       1.0X
-date_trunc WEEK wholestage on                      2262           2270          10          4.4         226.2       1.0X
+date_trunc WEEK wholestage off                     2257           2257           1          4.4         225.7       1.0X
+date_trunc WEEK wholestage on                      2202           2211          11          4.5         220.2       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 date_trunc QUARTER:                       Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-date_trunc QUARTER wholestage off                  3395           3395           0          2.9         339.5       1.0X
-date_trunc QUARTER wholestage on                   3185           3193           6          3.1         318.5       1.1X
+date_trunc QUARTER wholestage off                  3180           3181           2          3.1         318.0       1.0X
+date_trunc QUARTER wholestage on                   3036           3043          12          3.3         303.6       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc year:                               Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc year wholestage off                           321            330          14         31.2          32.1       1.0X
-trunc year wholestage on                            293            308          14         34.1          29.3       1.1X
+trunc year wholestage off                           327            328           1         30.6          32.7       1.0X
+trunc year wholestage on                            310            325          13         32.3          31.0       1.1X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc yyyy:                               Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc yyyy wholestage off                           322            324           2         31.1          32.2       1.0X
-trunc yyyy wholestage on                            293            296           4         34.1          29.3       1.1X
+trunc yyyy wholestage off                           323            327           6         31.0          32.3       1.0X
+trunc yyyy wholestage on                            304            317          14         32.9          30.4       1.1X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc yy:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc yy wholestage off                             322            322           0         31.0          32.2       1.0X
-trunc yy wholestage on                              292            296           4         34.2          29.2       1.1X
+trunc yy wholestage off                             324            325           2         30.8          32.4       1.0X
+trunc yy wholestage on                              308            311           3         32.4          30.8       1.1X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc mon:                                Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc mon wholestage off                            319            320           1         31.3          31.9       1.0X
-trunc mon wholestage on                             293            295           1         34.1          29.3       1.1X
+trunc mon wholestage off                            323            323           1         31.0          32.3       1.0X
+trunc mon wholestage on                             303            310           7         33.0          30.3       1.1X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc month:                              Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc month wholestage off                          319            320           1         31.3          31.9       1.0X
-trunc month wholestage on                           293            295           2         34.1          29.3       1.1X
+trunc month wholestage off                          322            323           0         31.0          32.2       1.0X
+trunc month wholestage on                           307            337          65         32.6          30.7       1.1X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 trunc mm:                                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-trunc mm wholestage off                             318            319           1         31.4          31.8       1.0X
-trunc mm wholestage on                              293            312          26         34.1          29.3       1.1X
+trunc mm wholestage off                             324            325           2         30.9          32.4       1.0X
+trunc mm wholestage on                              294            306           7         34.0          29.4       1.1X
 
 
 ================================================================================================
@@ -382,36 +382,36 @@ OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to timestamp str:                         Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to timestamp str wholestage off                     220            226           9          4.5         220.3       1.0X
-to timestamp str wholestage on                      212            214           4          4.7         212.2       1.0X
+to timestamp str wholestage off                     216            216           1          4.6         215.7       1.0X
+to timestamp str wholestage on                      207            209           3          4.8         207.0       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to_timestamp:                             Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to_timestamp wholestage off                        1875           1876           2          0.5        1874.7       1.0X
-to_timestamp wholestage on                         2075           2091          25          0.5        2075.1       0.9X
+to_timestamp wholestage off                        1751           1751           1          0.6        1750.6       1.0X
+to_timestamp wholestage on                         1798           1832          31          0.6        1798.4       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to_unix_timestamp:                        Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to_unix_timestamp wholestage off                   2141           2143           2          0.5        2141.2       1.0X
-to_unix_timestamp wholestage on                    2145           2177          21          0.5        2144.7       1.0X
+to_unix_timestamp wholestage off                   1770           1773           4          0.6        1770.2       1.0X
+to_unix_timestamp wholestage on                    1743           1754          10          0.6        1743.0       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to date str:                              Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to date str wholestage off                          276            284          11          3.6         276.1       1.0X
-to date str wholestage on                           264            270           8          3.8         264.3       1.0X
+to date str wholestage off                          260            266           9          3.8         260.1       1.0X
+to date str wholestage on                           257            260           3          3.9         257.3       1.0X
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
 to_date:                                  Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-to_date wholestage off                             3876           3903          38          0.3        3876.1       1.0X
-to_date wholestage on                              3833           3843           6          0.3        3833.4       1.0X
+to_date wholestage off                             3589           3620          44          0.3        3589.0       1.0X
+to_date wholestage on                              3565           3579          15          0.3        3565.0       1.0X
 
 
 ================================================================================================
@@ -420,10 +420,11 @@ Conversion from/to external types
 
 OpenJDK 64-Bit Server VM 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08 on Linux 4.15.0-1063-aws
 Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
-To/from java.sql.Timestamp:               Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
+To/from Java's date-time:                 Best Time(ms)   Avg Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 ------------------------------------------------------------------------------------------------------------------------
-From java.sql.Timestamp                             394            399           5         12.7          78.7       1.0X
-Collect longs                                      1336           2676        1201          3.7         267.2       0.3X
-Collect timestamps                                 2025           2091          65          2.5         405.0       0.2X
+From java.sql.Date                                  416            420           6         12.0          83.2       1.0X
+From java.sql.Timestamp                             375            381           5         13.3          75.1       1.1X
+Collect longs                                      1225           1962        1101          4.1         245.1       0.3X
+Collect timestamps                                 2013           2829        1401          2.5         402.5       0.2X
 
 
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/benchmark/DateTimeBenchmark.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/benchmark/DateTimeBenchmark.scala
index 5a85762..5fa5b9b 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/benchmark/DateTimeBenchmark.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/benchmark/DateTimeBenchmark.scala
@@ -131,7 +131,12 @@ object DateTimeBenchmark extends SqlBasedBenchmark {
           import spark.implicits._
           val rowsNum = 5000000
           val numIters = 3
-          val benchmark = new Benchmark("To/from java.sql.Timestamp", rowsNum, output = output)
+          val benchmark = new Benchmark("To/from Java's date-time", rowsNum, output = output)
+          benchmark.addCase("From java.sql.Date", numIters) { _ =>
+            spark.range(rowsNum)
+              .map(millis => new java.sql.Date(millis))
+              .noop()
+          }
           benchmark.addCase("From java.sql.Timestamp", numIters) { _ =>
             spark.range(rowsNum)
               .map(millis => new Timestamp(millis))


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