@@ -24,6 +24,7 @@ use super::power::PowerFunc;
24
24
25
25
use arrow:: array:: { ArrayRef , AsArray } ;
26
26
use arrow:: datatypes:: { DataType , Float32Type , Float64Type } ;
27
+ use datafusion_common:: types:: NativeType ;
27
28
use datafusion_common:: {
28
29
exec_err, internal_err, plan_datafusion_err, plan_err, Result , ScalarValue ,
29
30
} ;
@@ -32,9 +33,10 @@ use datafusion_expr::simplify::{ExprSimplifyResult, SimplifyInfo};
32
33
use datafusion_expr:: sort_properties:: { ExprProperties , SortProperties } ;
33
34
use datafusion_expr:: {
34
35
lit, ColumnarValue , Documentation , Expr , ScalarFunctionArgs , ScalarUDF ,
35
- TypeSignature :: * ,
36
+ TypeSignature , TypeSignatureClass ,
36
37
} ;
37
38
use datafusion_expr:: { ScalarUDFImpl , Signature , Volatility } ;
39
+ use datafusion_expr_common:: signature:: Coercion ;
38
40
use datafusion_macros:: user_doc;
39
41
40
42
#[ user_doc(
@@ -58,14 +60,26 @@ impl Default for LogFunc {
58
60
59
61
impl LogFunc {
60
62
pub fn new ( ) -> Self {
61
- use DataType :: * ;
62
63
Self {
63
64
signature : Signature :: one_of (
64
65
vec ! [
65
- Exact ( vec![ Float32 ] ) ,
66
- Exact ( vec![ Float64 ] ) ,
67
- Exact ( vec![ Float32 , Float32 ] ) ,
68
- Exact ( vec![ Float64 , Float64 ] ) ,
66
+ TypeSignature :: Coercible ( vec![ Coercion :: new_implicit(
67
+ TypeSignatureClass :: Float ,
68
+ vec![ TypeSignatureClass :: Integer ] ,
69
+ NativeType :: Float64 ,
70
+ ) ] ) ,
71
+ TypeSignature :: Coercible ( vec![
72
+ Coercion :: new_implicit(
73
+ TypeSignatureClass :: Float ,
74
+ vec![ TypeSignatureClass :: Integer ] ,
75
+ NativeType :: Float32 ,
76
+ ) ,
77
+ Coercion :: new_implicit(
78
+ TypeSignatureClass :: Float ,
79
+ vec![ TypeSignatureClass :: Integer ] ,
80
+ NativeType :: Float64 ,
81
+ ) ,
82
+ ] ) ,
69
83
] ,
70
84
Volatility :: Immutable ,
71
85
) ,
0 commit comments