Repository: ArroyoSystems/arroyo (language: rust)

Issue:
Implement StringConcat Operator - `||`
```
select person.name || ' was a part of this transaction.'
from nexmark;
```

results in 

![image](https://user-images.githubusercontent.com/12237683/232352994-9741275d-ecf6-4866-8704-03dbaf2fe488.png)



Discussion / hints:
`StringConcat` fn is already implemented without the `||` operator, so this change will be very straightforward.  Testing currently.

Fix patch:
diff --git a/arroyo-sql/src/expressions.rs b/arroyo-sql/src/expressions.rs
index 5b988e385..dabe2a9e2 100644
--- a/arroyo-sql/src/expressions.rs
+++ b/arroyo-sql/src/expressions.rs
@@ -188,6 +188,12 @@ pub fn to_expression_generator(expression: &Expr, input_struct: &StructDef) -> R
                 *op,
                 Box::new(to_expression_generator(right, input_struct)?),
             ),
+            datafusion_expr::Operator::StringConcat => {
+                Ok(Expression::String(StringFunction::Concat(vec![
+                    to_expression_generator(left, input_struct)?,
+                    to_expression_generator(right, input_struct)?,
+                ])))
+            }
             datafusion_expr::Operator::RegexMatch
             | datafusion_expr::Operator::RegexIMatch
             | datafusion_expr::Operator::RegexNotMatch
@@ -196,8 +202,7 @@ pub fn to_expression_generator(expression: &Expr, input_struct: &StructDef) -> R
             | datafusion_expr::Operator::BitwiseOr
             | datafusion_expr::Operator::BitwiseXor
             | datafusion_expr::Operator::BitwiseShiftRight
-            | datafusion_expr::Operator::BitwiseShiftLeft
-            | datafusion_expr::Operator::StringConcat => bail!("{:?} is unimplemented", op),
+            | datafusion_expr::Operator::BitwiseShiftLeft => bail!("{:?} is unimplemented", op),
         },
         Expr::Not(_) => bail!("NOT is unimplemented"),
         Expr::IsNotNull(expr) => Ok(UnaryBooleanExpression::new(


Test patch: