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]),

Reply via email to