File tree Expand file tree Collapse file tree 2 files changed +18
-3
lines changed
parser/src/main/java/io/dingodb/expr/parser
runtime/src/main/java/io/dingodb/expr/runtime/op/string Expand file tree Collapse file tree 2 files changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -239,7 +239,7 @@ public DefaultFunFactory(@NonNull ExprConfig config) {
239239
240240 // String functions
241241 registerUnaryFun (CharLengthFunFactory .NAME , Exprs .CHAR_LENGTH );
242- registerBinaryFun (ConcatFun .NAME , Exprs .CONCAT );
242+ registerVariadicFun (ConcatFun .NAME , Exprs .CONCAT );
243243 registerUnaryFun (LowerFunFactory .NAME , Exprs .LOWER );
244244 registerUnaryFun (UpperFunFactory .NAME , Exprs .UPPER );
245245 registerBinaryFun (LeftFunFactory .NAME , Exprs .LEFT );
Original file line number Diff line number Diff line change 2020import io .dingodb .expr .common .type .Types ;
2121import io .dingodb .expr .runtime .ExprConfig ;
2222import io .dingodb .expr .runtime .op .BinaryOp ;
23+ import io .dingodb .expr .runtime .op .OpKey ;
24+ import io .dingodb .expr .runtime .op .VariadicOp ;
2325import org .checkerframework .checker .nullness .qual .NonNull ;
2426
25- public class ConcatFun extends BinaryOp {
27+ public class ConcatFun extends VariadicOp {
2628 public static final String NAME = "CONCAT" ;
2729 public static final ConcatFun INSTANCE = new ConcatFun ();
2830
2931 private static final long serialVersionUID = 5454356467741754567L ;
3032
31- @ Override
33+ // @Override
3234 public Object evalValue (Object value0 , Object value1 , ExprConfig config ) {
3335 if (value0 == null || value1 == null ) {
3436 return null ;
3537 }
3638 return String .valueOf (value0 ) + value1 ;
3739 }
3840
41+ @ Override
42+ protected Object evalNonNullValue (@ NonNull Object [] value , ExprConfig config ) {
43+ StringBuilder stringBuilder = new StringBuilder ();
44+ for (Object valueItem : value ) {
45+ stringBuilder .append (valueItem );
46+ }
47+ return stringBuilder .toString ();
48+ }
49+
3950 @ Override
4051 public @ NonNull String getName () {
4152 return NAME ;
@@ -46,4 +57,8 @@ public Type getType() {
4657 return Types .STRING ;
4758 }
4859
60+ @ Override
61+ public OpKey keyOf (@ NonNull Type @ NonNull ... types ) {
62+ return null ;
63+ }
4964}
You can’t perform that action at this time.
0 commit comments