f1d27cdd91
### What changes were proposed in this pull request? ``` <extract expression> ::= EXTRACT <left paren> <extract field> FROM <extract source> <right paren> <extract source> ::= <datetime value expression> | <interval value expression> ``` We now only support datetime values as extract source for `extract` expression but it's alternative function `date_part` supports both datetime and interval. This pr adds interval value support for `extract` expression as extract source ### Why are the changes needed? For ANSI compliance and the semantic consistency between extract and `date_part`, we support intervals for extract expressions. ### Does this PR introduce any user-facing change? yes, in the `extract(abc from xyz)` expression, the `xyz` can be intervals ### How was this patch tested? add unit tests Closes #27876 from yaooqinn/SPARK-31119. Authored-by: Kent Yao <yaooqinn@hotmail.com> Signed-off-by: Wenchen Fan <wenchen@databricks.com>
139 lines
15 KiB
Plaintext
139 lines
15 KiB
Plaintext
Java HotSpot(TM) 64-Bit Server VM 1.8.0_231-b11 on Mac OS X 10.15.3
|
|
Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
|
|
Invoke extract for timestamp: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
|
|
------------------------------------------------------------------------------------------------------------------------
|
|
cast to timestamp 275 307 28 36.3 27.5 1.0X
|
|
MILLENNIUM of timestamp 911 924 20 11.0 91.1 0.3X
|
|
CENTURY of timestamp 846 850 5 11.8 84.6 0.3X
|
|
DECADE of timestamp 744 761 21 13.4 74.4 0.4X
|
|
YEAR of timestamp 750 764 15 13.3 75.0 0.4X
|
|
ISOYEAR of timestamp 815 828 11 12.3 81.5 0.3X
|
|
QUARTER of timestamp 882 895 12 11.3 88.2 0.3X
|
|
MONTH of timestamp 739 760 19 13.5 73.9 0.4X
|
|
WEEK of timestamp 1058 1082 23 9.4 105.8 0.3X
|
|
DAY of timestamp 722 730 8 13.8 72.2 0.4X
|
|
DAYOFWEEK of timestamp 860 907 58 11.6 86.0 0.3X
|
|
DOW of timestamp 853 860 7 11.7 85.3 0.3X
|
|
ISODOW of timestamp 829 835 8 12.1 82.9 0.3X
|
|
DOY of timestamp 757 772 20 13.2 75.7 0.4X
|
|
HOUR of timestamp 586 594 7 17.1 58.6 0.5X
|
|
MINUTE of timestamp 577 584 8 17.3 57.7 0.5X
|
|
SECOND of timestamp 810 827 17 12.4 81.0 0.3X
|
|
MILLISECONDS of timestamp 687 704 16 14.6 68.7 0.4X
|
|
MICROSECONDS of timestamp 628 632 6 15.9 62.8 0.4X
|
|
EPOCH of timestamp 750 761 12 13.3 75.0 0.4X
|
|
|
|
Java HotSpot(TM) 64-Bit Server VM 1.8.0_231-b11 on Mac OS X 10.15.3
|
|
Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
|
|
Invoke date_part for timestamp: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
|
|
------------------------------------------------------------------------------------------------------------------------
|
|
cast to timestamp 238 242 4 42.0 23.8 1.0X
|
|
MILLENNIUM of timestamp 811 835 25 12.3 81.1 0.3X
|
|
CENTURY of timestamp 799 823 21 12.5 79.9 0.3X
|
|
DECADE of timestamp 733 743 12 13.6 73.3 0.3X
|
|
YEAR of timestamp 714 717 3 14.0 71.4 0.3X
|
|
ISOYEAR of timestamp 874 900 24 11.4 87.4 0.3X
|
|
QUARTER of timestamp 903 910 11 11.1 90.3 0.3X
|
|
MONTH of timestamp 774 808 44 12.9 77.4 0.3X
|
|
WEEK of timestamp 1053 1064 12 9.5 105.3 0.2X
|
|
DAY of timestamp 755 770 14 13.2 75.5 0.3X
|
|
DAYOFWEEK of timestamp 831 841 9 12.0 83.1 0.3X
|
|
DOW of timestamp 871 898 23 11.5 87.1 0.3X
|
|
ISODOW of timestamp 832 887 59 12.0 83.2 0.3X
|
|
DOY of timestamp 755 767 13 13.2 75.5 0.3X
|
|
HOUR of timestamp 580 597 27 17.3 58.0 0.4X
|
|
MINUTE of timestamp 572 589 15 17.5 57.2 0.4X
|
|
SECOND of timestamp 716 730 12 14.0 71.6 0.3X
|
|
MILLISECONDS of timestamp 716 762 57 14.0 71.6 0.3X
|
|
MICROSECONDS of timestamp 600 610 12 16.7 60.0 0.4X
|
|
EPOCH of timestamp 751 779 44 13.3 75.1 0.3X
|
|
|
|
Java HotSpot(TM) 64-Bit Server VM 1.8.0_231-b11 on Mac OS X 10.15.3
|
|
Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
|
|
Invoke extract for date: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
|
|
------------------------------------------------------------------------------------------------------------------------
|
|
cast to date 629 634 6 15.9 62.9 1.0X
|
|
MILLENNIUM of date 826 912 97 12.1 82.6 0.8X
|
|
CENTURY of date 797 840 54 12.6 79.7 0.8X
|
|
DECADE of date 734 737 4 13.6 73.4 0.9X
|
|
YEAR of date 721 768 78 13.9 72.1 0.9X
|
|
ISOYEAR of date 884 892 13 11.3 88.4 0.7X
|
|
QUARTER of date 894 949 69 11.2 89.4 0.7X
|
|
MONTH of date 726 729 2 13.8 72.6 0.9X
|
|
WEEK of date 1013 1023 9 9.9 101.3 0.6X
|
|
DAY of date 727 747 26 13.8 72.7 0.9X
|
|
DAYOFWEEK of date 828 832 6 12.1 82.8 0.8X
|
|
DOW of date 846 850 5 11.8 84.6 0.7X
|
|
ISODOW of date 803 810 7 12.5 80.3 0.8X
|
|
DOY of date 751 761 11 13.3 75.1 0.8X
|
|
HOUR of date 1372 1376 5 7.3 137.2 0.5X
|
|
MINUTE of date 1379 1398 20 7.3 137.9 0.5X
|
|
SECOND of date 1530 1542 10 6.5 153.0 0.4X
|
|
MILLISECONDS of date 1532 1541 8 6.5 153.2 0.4X
|
|
MICROSECONDS of date 1442 1462 23 6.9 144.2 0.4X
|
|
EPOCH of date 1573 1594 20 6.4 157.3 0.4X
|
|
|
|
Java HotSpot(TM) 64-Bit Server VM 1.8.0_231-b11 on Mac OS X 10.15.3
|
|
Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
|
|
Invoke date_part for date: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
|
|
------------------------------------------------------------------------------------------------------------------------
|
|
cast to date 622 633 14 16.1 62.2 1.0X
|
|
MILLENNIUM of date 793 814 20 12.6 79.3 0.8X
|
|
CENTURY of date 798 809 12 12.5 79.8 0.8X
|
|
DECADE of date 735 740 6 13.6 73.5 0.8X
|
|
YEAR of date 714 732 23 14.0 71.4 0.9X
|
|
ISOYEAR of date 881 886 4 11.3 88.1 0.7X
|
|
QUARTER of date 916 925 14 10.9 91.6 0.7X
|
|
MONTH of date 732 737 5 13.7 73.2 0.8X
|
|
WEEK of date 1022 1034 10 9.8 102.2 0.6X
|
|
DAY of date 722 745 26 13.8 72.2 0.9X
|
|
DAYOFWEEK of date 831 849 17 12.0 83.1 0.7X
|
|
DOW of date 853 858 4 11.7 85.3 0.7X
|
|
ISODOW of date 824 825 1 12.1 82.4 0.8X
|
|
DOY of date 749 752 4 13.3 74.9 0.8X
|
|
HOUR of date 1422 1425 3 7.0 142.2 0.4X
|
|
MINUTE of date 1379 1394 13 7.3 137.9 0.5X
|
|
SECOND of date 1525 1536 9 6.6 152.5 0.4X
|
|
MILLISECONDS of date 1542 1555 14 6.5 154.2 0.4X
|
|
MICROSECONDS of date 1446 1449 2 6.9 144.6 0.4X
|
|
EPOCH of date 1589 1621 35 6.3 158.9 0.4X
|
|
|
|
Java HotSpot(TM) 64-Bit Server VM 1.8.0_231-b11 on Mac OS X 10.15.3
|
|
Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
|
|
Invoke extract for interval: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
|
|
------------------------------------------------------------------------------------------------------------------------
|
|
cast to interval 913 921 8 11.0 91.3 1.0X
|
|
MILLENNIUM of interval 976 983 12 10.2 97.6 0.9X
|
|
CENTURY of interval 976 979 3 10.2 97.6 0.9X
|
|
DECADE of interval 975 987 10 10.3 97.5 0.9X
|
|
YEAR of interval 964 968 5 10.4 96.4 0.9X
|
|
QUARTER of interval 987 997 12 10.1 98.7 0.9X
|
|
MONTH of interval 974 983 11 10.3 97.4 0.9X
|
|
DAY of interval 959 962 3 10.4 95.9 1.0X
|
|
HOUR of interval 972 986 13 10.3 97.2 0.9X
|
|
MINUTE of interval 985 988 4 10.2 98.5 0.9X
|
|
SECOND of interval 1128 1141 13 8.9 112.8 0.8X
|
|
MILLISECONDS of interval 1083 1086 3 9.2 108.3 0.8X
|
|
MICROSECONDS of interval 963 969 5 10.4 96.3 0.9X
|
|
EPOCH of interval 1094 1116 23 9.1 109.4 0.8X
|
|
|
|
Java HotSpot(TM) 64-Bit Server VM 1.8.0_231-b11 on Mac OS X 10.15.3
|
|
Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
|
|
Invoke date_part for interval: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
|
|
------------------------------------------------------------------------------------------------------------------------
|
|
cast to interval 950 971 23 10.5 95.0 1.0X
|
|
MILLENNIUM of interval 989 1000 11 10.1 98.9 1.0X
|
|
CENTURY of interval 984 990 6 10.2 98.4 1.0X
|
|
DECADE of interval 962 978 14 10.4 96.2 1.0X
|
|
YEAR of interval 945 963 16 10.6 94.5 1.0X
|
|
QUARTER of interval 985 998 17 10.2 98.5 1.0X
|
|
MONTH of interval 970 976 9 10.3 97.0 1.0X
|
|
DAY of interval 953 962 8 10.5 95.3 1.0X
|
|
HOUR of interval 942 956 17 10.6 94.2 1.0X
|
|
MINUTE of interval 975 993 16 10.3 97.5 1.0X
|
|
SECOND of interval 1110 1122 12 9.0 111.0 0.9X
|
|
MILLISECONDS of interval 1056 1074 22 9.5 105.6 0.9X
|
|
MICROSECONDS of interval 939 960 36 10.7 93.9 1.0X
|
|
EPOCH of interval 1071 1093 21 9.3 107.1 0.9X
|
|
|