@@ -28,7 +28,7 @@ use crate::type_coercion::binary::get_wider_type;
28
28
use crate :: type_coercion:: functions:: data_types;
29
29
use crate :: { FuncMonotonicity , Signature , TypeSignature , Volatility } ;
30
30
31
- use arrow:: datatypes:: { DataType , Field , Fields , IntervalUnit , TimeUnit } ;
31
+ use arrow:: datatypes:: { DataType , Field , Fields , TimeUnit } ;
32
32
use datafusion_common:: { plan_err, DataFusionError , Result } ;
33
33
34
34
use strum:: IntoEnumIterator ;
@@ -180,12 +180,6 @@ pub enum BuiltinScalarFunction {
180
180
Concat ,
181
181
/// concat_ws
182
182
ConcatWithSeparator ,
183
- /// date_part
184
- DatePart ,
185
- /// date_trunc
186
- DateTrunc ,
187
- /// date_bin
188
- DateBin ,
189
183
/// ends_with
190
184
EndsWith ,
191
185
/// initcap
@@ -382,9 +376,6 @@ impl BuiltinScalarFunction {
382
376
BuiltinScalarFunction :: Chr => Volatility :: Immutable ,
383
377
BuiltinScalarFunction :: Concat => Volatility :: Immutable ,
384
378
BuiltinScalarFunction :: ConcatWithSeparator => Volatility :: Immutable ,
385
- BuiltinScalarFunction :: DatePart => Volatility :: Immutable ,
386
- BuiltinScalarFunction :: DateTrunc => Volatility :: Immutable ,
387
- BuiltinScalarFunction :: DateBin => Volatility :: Immutable ,
388
379
BuiltinScalarFunction :: EndsWith => Volatility :: Immutable ,
389
380
BuiltinScalarFunction :: InitCap => Volatility :: Immutable ,
390
381
BuiltinScalarFunction :: Left => Volatility :: Immutable ,
@@ -592,27 +583,6 @@ impl BuiltinScalarFunction {
592
583
}
593
584
BuiltinScalarFunction :: Concat => Ok ( Utf8 ) ,
594
585
BuiltinScalarFunction :: ConcatWithSeparator => Ok ( Utf8 ) ,
595
- BuiltinScalarFunction :: DatePart => Ok ( Float64 ) ,
596
- BuiltinScalarFunction :: DateBin | BuiltinScalarFunction :: DateTrunc => {
597
- match & input_expr_types[ 1 ] {
598
- Timestamp ( Nanosecond , None ) | Utf8 | Null => {
599
- Ok ( Timestamp ( Nanosecond , None ) )
600
- }
601
- Timestamp ( Nanosecond , tz_opt) => {
602
- Ok ( Timestamp ( Nanosecond , tz_opt. clone ( ) ) )
603
- }
604
- Timestamp ( Microsecond , tz_opt) => {
605
- Ok ( Timestamp ( Microsecond , tz_opt. clone ( ) ) )
606
- }
607
- Timestamp ( Millisecond , tz_opt) => {
608
- Ok ( Timestamp ( Millisecond , tz_opt. clone ( ) ) )
609
- }
610
- Timestamp ( Second , tz_opt) => Ok ( Timestamp ( Second , tz_opt. clone ( ) ) ) ,
611
- _ => plan_err ! (
612
- "The {self} function can only accept timestamp as the second arg."
613
- ) ,
614
- }
615
- }
616
586
BuiltinScalarFunction :: InitCap => {
617
587
utf8_to_str_type ( & input_expr_types[ 0 ] , "initcap" )
618
588
}
@@ -784,7 +754,6 @@ impl BuiltinScalarFunction {
784
754
/// Return the argument [`Signature`] supported by this function
785
755
pub fn signature ( & self ) -> Signature {
786
756
use DataType :: * ;
787
- use IntervalUnit :: * ;
788
757
use TimeUnit :: * ;
789
758
use TypeSignature :: * ;
790
759
// note: the physical expression must accept the type returned by this function or the execution panics.
@@ -947,108 +916,6 @@ impl BuiltinScalarFunction {
947
916
] ,
948
917
self . volatility ( ) ,
949
918
) ,
950
- BuiltinScalarFunction :: DateTrunc => Signature :: one_of (
951
- vec ! [
952
- Exact ( vec![ Utf8 , Timestamp ( Nanosecond , None ) ] ) ,
953
- Exact ( vec![
954
- Utf8 ,
955
- Timestamp ( Nanosecond , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
956
- ] ) ,
957
- Exact ( vec![ Utf8 , Timestamp ( Microsecond , None ) ] ) ,
958
- Exact ( vec![
959
- Utf8 ,
960
- Timestamp ( Microsecond , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
961
- ] ) ,
962
- Exact ( vec![ Utf8 , Timestamp ( Millisecond , None ) ] ) ,
963
- Exact ( vec![
964
- Utf8 ,
965
- Timestamp ( Millisecond , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
966
- ] ) ,
967
- Exact ( vec![ Utf8 , Timestamp ( Second , None ) ] ) ,
968
- Exact ( vec![
969
- Utf8 ,
970
- Timestamp ( Second , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
971
- ] ) ,
972
- ] ,
973
- self . volatility ( ) ,
974
- ) ,
975
- BuiltinScalarFunction :: DateBin => {
976
- let base_sig = |array_type : TimeUnit | {
977
- vec ! [
978
- Exact ( vec![
979
- Interval ( MonthDayNano ) ,
980
- Timestamp ( array_type. clone( ) , None ) ,
981
- Timestamp ( Nanosecond , None ) ,
982
- ] ) ,
983
- Exact ( vec![
984
- Interval ( MonthDayNano ) ,
985
- Timestamp ( array_type. clone( ) , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
986
- Timestamp ( Nanosecond , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
987
- ] ) ,
988
- Exact ( vec![
989
- Interval ( DayTime ) ,
990
- Timestamp ( array_type. clone( ) , None ) ,
991
- Timestamp ( Nanosecond , None ) ,
992
- ] ) ,
993
- Exact ( vec![
994
- Interval ( DayTime ) ,
995
- Timestamp ( array_type. clone( ) , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
996
- Timestamp ( Nanosecond , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
997
- ] ) ,
998
- Exact ( vec![
999
- Interval ( MonthDayNano ) ,
1000
- Timestamp ( array_type. clone( ) , None ) ,
1001
- ] ) ,
1002
- Exact ( vec![
1003
- Interval ( MonthDayNano ) ,
1004
- Timestamp ( array_type. clone( ) , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
1005
- ] ) ,
1006
- Exact ( vec![
1007
- Interval ( DayTime ) ,
1008
- Timestamp ( array_type. clone( ) , None ) ,
1009
- ] ) ,
1010
- Exact ( vec![
1011
- Interval ( DayTime ) ,
1012
- Timestamp ( array_type, Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
1013
- ] ) ,
1014
- ]
1015
- } ;
1016
-
1017
- let full_sig = [ Nanosecond , Microsecond , Millisecond , Second ]
1018
- . into_iter ( )
1019
- . map ( base_sig)
1020
- . collect :: < Vec < _ > > ( )
1021
- . concat ( ) ;
1022
-
1023
- Signature :: one_of ( full_sig, self . volatility ( ) )
1024
- }
1025
- BuiltinScalarFunction :: DatePart => Signature :: one_of (
1026
- vec ! [
1027
- Exact ( vec![ Utf8 , Timestamp ( Nanosecond , None ) ] ) ,
1028
- Exact ( vec![
1029
- Utf8 ,
1030
- Timestamp ( Nanosecond , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
1031
- ] ) ,
1032
- Exact ( vec![ Utf8 , Timestamp ( Millisecond , None ) ] ) ,
1033
- Exact ( vec![
1034
- Utf8 ,
1035
- Timestamp ( Millisecond , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
1036
- ] ) ,
1037
- Exact ( vec![ Utf8 , Timestamp ( Microsecond , None ) ] ) ,
1038
- Exact ( vec![
1039
- Utf8 ,
1040
- Timestamp ( Microsecond , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
1041
- ] ) ,
1042
- Exact ( vec![ Utf8 , Timestamp ( Second , None ) ] ) ,
1043
- Exact ( vec![
1044
- Utf8 ,
1045
- Timestamp ( Second , Some ( TIMEZONE_WILDCARD . into( ) ) ) ,
1046
- ] ) ,
1047
- Exact ( vec![ Utf8 , Date64 ] ) ,
1048
- Exact ( vec![ Utf8 , Date32 ] ) ,
1049
- ] ,
1050
- self . volatility ( ) ,
1051
- ) ,
1052
919
BuiltinScalarFunction :: SplitPart => Signature :: one_of (
1053
920
vec ! [
1054
921
Exact ( vec![ Utf8 , Utf8 , Int64 ] ) ,
@@ -1240,11 +1107,6 @@ impl BuiltinScalarFunction {
1240
1107
| BuiltinScalarFunction :: Pi
1241
1108
) {
1242
1109
Some ( vec ! [ Some ( true ) ] )
1243
- } else if matches ! (
1244
- & self ,
1245
- BuiltinScalarFunction :: DateTrunc | BuiltinScalarFunction :: DateBin
1246
- ) {
1247
- Some ( vec ! [ None , Some ( true ) ] )
1248
1110
} else if * self == BuiltinScalarFunction :: Log {
1249
1111
Some ( vec ! [ Some ( true ) , Some ( false ) ] )
1250
1112
} else {
@@ -1337,9 +1199,6 @@ impl BuiltinScalarFunction {
1337
1199
BuiltinScalarFunction :: CurrentDate => & [ "current_date" , "today" ] ,
1338
1200
BuiltinScalarFunction :: CurrentTime => & [ "current_time" ] ,
1339
1201
BuiltinScalarFunction :: MakeDate => & [ "make_date" ] ,
1340
- BuiltinScalarFunction :: DateBin => & [ "date_bin" ] ,
1341
- BuiltinScalarFunction :: DateTrunc => & [ "date_trunc" , "datetrunc" ] ,
1342
- BuiltinScalarFunction :: DatePart => & [ "date_part" , "datepart" ] ,
1343
1202
BuiltinScalarFunction :: ToChar => & [ "to_char" , "date_format" ] ,
1344
1203
BuiltinScalarFunction :: FromUnixtime => & [ "from_unixtime" ] ,
1345
1204
0 commit comments