This is an automated email from the ASF dual-hosted git repository.
agrove pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git
The following commit(s) were added to refs/heads/master by this push:
new 74872a319 Add more trim test cases (#3226)
74872a319 is described below
commit 74872a31969c01d976ecc36135082c8b8aeaf953
Author: Ayush Dattagupta <[email protected]>
AuthorDate: Tue Aug 23 07:30:45 2022 -0700
Add more trim test cases (#3226)
* Update sqlparser version to use main from git
* Update SqlExpr::Trim struct to match latest sqlparser changes
* Update trim function signature to accept two inputs
* Add more trim testcases
---
datafusion/core/tests/sql/expr.rs | 6 ++++++
datafusion/expr/src/function.rs | 4 ++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/datafusion/core/tests/sql/expr.rs
b/datafusion/core/tests/sql/expr.rs
index 4fa1f54d2..48a95884c 100644
--- a/datafusion/core/tests/sql/expr.rs
+++ b/datafusion/core/tests/sql/expr.rs
@@ -907,15 +907,21 @@ async fn test_string_expressions() -> Result<()> {
test_expression!("to_hex(9223372036854775807)", "7fffffffffffffff");
test_expression!("to_hex(CAST(NULL AS int))", "NULL");
test_expression!("trim(' tom ')", "tom");
+ test_expression!("trim(LEADING ' tom ')", "tom ");
+ test_expression!("trim(TRAILING ' tom ')", " tom");
+ test_expression!("trim(BOTH ' tom ')", "tom");
test_expression!("trim(LEADING ' ' FROM ' tom ')", "tom ");
test_expression!("trim(TRAILING ' ' FROM ' tom ')", " tom");
test_expression!("trim(BOTH ' ' FROM ' tom ')", "tom");
+ test_expression!("trim(' ' FROM ' tom ')", "tom");
test_expression!("trim(LEADING 'x' FROM 'xxxtomxxx')", "tomxxx");
test_expression!("trim(TRAILING 'x' FROM 'xxxtomxxx')", "xxxtom");
test_expression!("trim(BOTH 'x' FROM 'xxxtomxx')", "tom");
+ test_expression!("trim('x' FROM 'xxxtomxx')", "tom");
test_expression!("trim(LEADING 'xy' FROM 'xyxabcxyzdefxyx')",
"abcxyzdefxyx");
test_expression!("trim(TRAILING 'xy' FROM 'xyxabcxyzdefxyx')",
"xyxabcxyzdef");
test_expression!("trim(BOTH 'xy' FROM 'xyxabcxyzdefxyx')", "abcxyzdef");
+ test_expression!("trim('xy' FROM 'xyxabcxyzdefxyx')", "abcxyzdef");
test_expression!("trim(' tom')", "tom");
test_expression!("trim('')", "");
test_expression!("trim('tom ')", "tom");
diff --git a/datafusion/expr/src/function.rs b/datafusion/expr/src/function.rs
index 263c4540f..7851edb13 100644
--- a/datafusion/expr/src/function.rs
+++ b/datafusion/expr/src/function.rs
@@ -296,7 +296,6 @@ pub fn signature(fun: &BuiltinScalarFunction) -> Signature {
| BuiltinScalarFunction::SHA256
| BuiltinScalarFunction::SHA384
| BuiltinScalarFunction::SHA512
- | BuiltinScalarFunction::Trim
| BuiltinScalarFunction::Upper => Signature::uniform(
1,
vec![DataType::Utf8, DataType::LargeUtf8],
@@ -304,7 +303,8 @@ pub fn signature(fun: &BuiltinScalarFunction) -> Signature {
),
BuiltinScalarFunction::Btrim
| BuiltinScalarFunction::Ltrim
- | BuiltinScalarFunction::Rtrim => Signature::one_of(
+ | BuiltinScalarFunction::Rtrim
+ | BuiltinScalarFunction::Trim => Signature::one_of(
vec![
TypeSignature::Exact(vec![DataType::Utf8]),
TypeSignature::Exact(vec![DataType::Utf8, DataType::Utf8]),