Skip to content

Commit aa754c6

Browse files
author
Cheng-Yuan-Lai
committed
refactor: use TypeSignature::Coercible for crypto functions
1 parent 9ca09cf commit aa754c6

File tree

6 files changed

+90
-38
lines changed

6 files changed

+90
-38
lines changed

datafusion/functions/src/crypto/digest.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,15 @@
1818
//! "crypto" DataFusion functions
1919
use super::basic::{digest, utf8_or_binary_to_binary_type};
2020
use arrow::datatypes::DataType;
21-
use datafusion_common::Result;
21+
use datafusion_common::{
22+
types::{logical_binary, logical_string},
23+
Result,
24+
};
2225
use datafusion_expr::{
2326
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
24-
TypeSignature::*, Volatility,
27+
TypeSignature, Volatility,
2528
};
29+
use datafusion_expr_common::signature::{Coercion, TypeSignatureClass};
2630
use datafusion_macros::user_doc;
2731
use std::any::Any;
2832

@@ -64,15 +68,17 @@ impl Default for DigestFunc {
6468

6569
impl DigestFunc {
6670
pub fn new() -> Self {
67-
use DataType::*;
6871
Self {
6972
signature: Signature::one_of(
7073
vec![
71-
Exact(vec![Utf8View, Utf8View]),
72-
Exact(vec![Utf8, Utf8]),
73-
Exact(vec![LargeUtf8, Utf8]),
74-
Exact(vec![Binary, Utf8]),
75-
Exact(vec![LargeBinary, Utf8]),
74+
TypeSignature::Coercible(vec![
75+
Coercion::new_exact(TypeSignatureClass::Native(logical_string())),
76+
Coercion::new_exact(TypeSignatureClass::Native(logical_string())),
77+
]),
78+
TypeSignature::Coercible(vec![
79+
Coercion::new_exact(TypeSignatureClass::Native(logical_string())),
80+
Coercion::new_exact(TypeSignatureClass::Native(logical_binary())),
81+
]),
7682
],
7783
Volatility::Immutable,
7884
),

datafusion/functions/src/crypto/md5.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,16 @@
1818
//! "crypto" DataFusion functions
1919
use crate::crypto::basic::md5;
2020
use arrow::datatypes::DataType;
21-
use datafusion_common::{plan_err, Result};
21+
use datafusion_common::{
22+
plan_err,
23+
types::{logical_binary, logical_string},
24+
Result,
25+
};
2226
use datafusion_expr::{
2327
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
24-
Volatility,
28+
TypeSignature, Volatility,
2529
};
30+
use datafusion_expr_common::signature::{Coercion, TypeSignatureClass};
2631
use datafusion_macros::user_doc;
2732
use std::any::Any;
2833

@@ -52,11 +57,16 @@ impl Default for Md5Func {
5257

5358
impl Md5Func {
5459
pub fn new() -> Self {
55-
use DataType::*;
5660
Self {
57-
signature: Signature::uniform(
58-
1,
59-
vec![Utf8View, Utf8, LargeUtf8, Binary, LargeBinary],
61+
signature: Signature::one_of(
62+
vec![
63+
TypeSignature::Coercible(vec![Coercion::new_exact(
64+
TypeSignatureClass::Native(logical_string()),
65+
)]),
66+
TypeSignature::Coercible(vec![Coercion::new_exact(
67+
TypeSignatureClass::Native(logical_binary()),
68+
)]),
69+
],
6070
Volatility::Immutable,
6171
),
6272
}

datafusion/functions/src/crypto/sha224.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,15 @@
1818
//! "crypto" DataFusion functions
1919
use super::basic::{sha224, utf8_or_binary_to_binary_type};
2020
use arrow::datatypes::DataType;
21-
use datafusion_common::Result;
21+
use datafusion_common::{
22+
types::{logical_binary, logical_string},
23+
Result,
24+
};
2225
use datafusion_expr::{
2326
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
24-
Volatility,
27+
TypeSignature, Volatility,
2528
};
29+
use datafusion_expr_common::signature::{Coercion, TypeSignatureClass};
2630
use datafusion_macros::user_doc;
2731
use std::any::Any;
2832

@@ -53,11 +57,16 @@ impl Default for SHA224Func {
5357

5458
impl SHA224Func {
5559
pub fn new() -> Self {
56-
use DataType::*;
5760
Self {
58-
signature: Signature::uniform(
59-
1,
60-
vec![Utf8View, Utf8, LargeUtf8, Binary, LargeBinary],
61+
signature: Signature::one_of(
62+
vec![
63+
TypeSignature::Coercible(vec![Coercion::new_exact(
64+
TypeSignatureClass::Native(logical_string()),
65+
)]),
66+
TypeSignature::Coercible(vec![Coercion::new_exact(
67+
TypeSignatureClass::Native(logical_binary()),
68+
)]),
69+
],
6170
Volatility::Immutable,
6271
),
6372
}

datafusion/functions/src/crypto/sha256.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,15 @@
1818
//! "crypto" DataFusion functions
1919
use super::basic::{sha256, utf8_or_binary_to_binary_type};
2020
use arrow::datatypes::DataType;
21-
use datafusion_common::Result;
21+
use datafusion_common::{
22+
types::{logical_binary, logical_string},
23+
Result,
24+
};
2225
use datafusion_expr::{
2326
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
24-
Volatility,
27+
TypeSignature, Volatility,
2528
};
29+
use datafusion_expr_common::signature::{Coercion, TypeSignatureClass};
2630
use datafusion_macros::user_doc;
2731
use std::any::Any;
2832

@@ -52,11 +56,16 @@ impl Default for SHA256Func {
5256

5357
impl SHA256Func {
5458
pub fn new() -> Self {
55-
use DataType::*;
5659
Self {
57-
signature: Signature::uniform(
58-
1,
59-
vec![Utf8View, Utf8, LargeUtf8, Binary, LargeBinary],
60+
signature: Signature::one_of(
61+
vec![
62+
TypeSignature::Coercible(vec![Coercion::new_exact(
63+
TypeSignatureClass::Native(logical_string()),
64+
)]),
65+
TypeSignature::Coercible(vec![Coercion::new_exact(
66+
TypeSignatureClass::Native(logical_binary()),
67+
)]),
68+
],
6069
Volatility::Immutable,
6170
),
6271
}

datafusion/functions/src/crypto/sha384.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,15 @@
1818
//! "crypto" DataFusion functions
1919
use super::basic::{sha384, utf8_or_binary_to_binary_type};
2020
use arrow::datatypes::DataType;
21-
use datafusion_common::Result;
21+
use datafusion_common::{
22+
types::{logical_binary, logical_string},
23+
Result,
24+
};
2225
use datafusion_expr::{
2326
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
24-
Volatility,
27+
TypeSignature, Volatility,
2528
};
29+
use datafusion_expr_common::signature::{Coercion, TypeSignatureClass};
2630
use datafusion_macros::user_doc;
2731
use std::any::Any;
2832

@@ -52,11 +56,16 @@ impl Default for SHA384Func {
5256

5357
impl SHA384Func {
5458
pub fn new() -> Self {
55-
use DataType::*;
5659
Self {
57-
signature: Signature::uniform(
58-
1,
59-
vec![Utf8View, Utf8, LargeUtf8, Binary, LargeBinary],
60+
signature: Signature::one_of(
61+
vec![
62+
TypeSignature::Coercible(vec![Coercion::new_exact(
63+
TypeSignatureClass::Native(logical_string()),
64+
)]),
65+
TypeSignature::Coercible(vec![Coercion::new_exact(
66+
TypeSignatureClass::Native(logical_binary()),
67+
)]),
68+
],
6069
Volatility::Immutable,
6170
),
6271
}

datafusion/functions/src/crypto/sha512.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,15 @@
1818
//! "crypto" DataFusion functions
1919
use super::basic::{sha512, utf8_or_binary_to_binary_type};
2020
use arrow::datatypes::DataType;
21-
use datafusion_common::Result;
21+
use datafusion_common::{
22+
types::{logical_binary, logical_string},
23+
Result,
24+
};
2225
use datafusion_expr::{
2326
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
24-
Volatility,
27+
TypeSignature, Volatility,
2528
};
29+
use datafusion_expr_common::signature::{Coercion, TypeSignatureClass};
2630
use datafusion_macros::user_doc;
2731
use std::any::Any;
2832

@@ -52,11 +56,16 @@ impl Default for SHA512Func {
5256

5357
impl SHA512Func {
5458
pub fn new() -> Self {
55-
use DataType::*;
5659
Self {
57-
signature: Signature::uniform(
58-
1,
59-
vec![Utf8View, Utf8, LargeUtf8, Binary, LargeBinary],
60+
signature: Signature::one_of(
61+
vec![
62+
TypeSignature::Coercible(vec![Coercion::new_exact(
63+
TypeSignatureClass::Native(logical_string()),
64+
)]),
65+
TypeSignature::Coercible(vec![Coercion::new_exact(
66+
TypeSignatureClass::Native(logical_binary()),
67+
)]),
68+
],
6069
Volatility::Immutable,
6170
),
6271
}

0 commit comments

Comments
 (0)