Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions be/src/vec/functions/function_string.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1480,6 +1480,7 @@ void register_function_string(SimpleFunctionFactory& factory) {
factory.register_alias(FunctionLeft::name, "strleft");
factory.register_alias(FunctionRight::name, "strright");
factory.register_alias(SubstringUtil::name, "substr");
factory.register_alias(SubstringUtil::name, "mid");
factory.register_alias(FunctionToLower::name, "lcase");
factory.register_alias(FunctionToUpper::name, "ucase");
factory.register_alias(FunctionStringDigestOneArg<MD5Sum>::name, "md5");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@ MAX: 'MAX';
MAXVALUE: 'MAXVALUE';
MEMO:'MEMO';
MERGE: 'MERGE';
MID: 'MID';
MIGRATE: 'MIGRATE';
MIGRATIONS: 'MIGRATIONS';
MIN: 'MIN';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1603,7 +1603,7 @@ primaryExpression
(OVER windowSpec)? #groupConcat
| TRIM LEFT_PAREN
((BOTH | LEADING | TRAILING) expression? | expression) FROM expression RIGHT_PAREN #trim
| (SUBSTR | SUBSTRING) LEFT_PAREN
| (SUBSTR | SUBSTRING | MID) LEFT_PAREN
expression FROM expression (FOR expression)? RIGHT_PAREN #substring
| POSITION LEFT_PAREN expression IN expression RIGHT_PAREN #position
| functionCallExpression #functionCall
Expand Down Expand Up @@ -2059,6 +2059,7 @@ nonReserved
| MAX
| MEMO
| MERGE
| MID
| MIGRATE
| MIGRATIONS
| MIN
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -968,7 +968,7 @@ public class BuiltinScalarFunctions implements FunctionHelper {
scalar(StrToMap.class, "str_to_map"),
scalar(SubBitmap.class, "sub_bitmap"),
scalar(SubReplace.class, "sub_replace"),
scalar(Substring.class, "substr", "substring"),
scalar(Substring.class, "substr", "substring", "mid"),
scalar(SubstringIndex.class, "substring_index"),
scalar(Tan.class, "tan"),
scalar(Tanh.class, "tanh"),
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -1338,6 +1338,36 @@ suite("fold_constant_string_arithmatic") {
testFoldConst("select substring('abcdef' FROM 3)")
testFoldConst("select substring('' FROM 3)")

// mid
testFoldConst("select mid('a',0,1)")
testFoldConst("select mid('a',-1,1)")
testFoldConst("select mid('a',1,1)")
testFoldConst("select mid('a',-2,1)")
testFoldConst("select mid('a',2,1)")
testFoldConst("select mid('a',-3,1)")
testFoldConst("select mid('a',3,1)")
testFoldConst("select mid('abcdef',-3,-1)")
testFoldConst("select mid('abcdef',3,-1)")
testFoldConst("select mid('',3,-1)")
testFoldConst("select mid('abcdef',3,10)")
testFoldConst("select mid('abcdef',-3)")
testFoldConst("select mid('abcdef',3)")
testFoldConst("select mid('',3)")
testFoldConst("select mid('a' FROM 0 FOR 1)")
testFoldConst("select mid('a' FROM -1 FOR 1)")
testFoldConst("select mid('a' FROM 1 FOR 1)")
testFoldConst("select mid('a' FROM -2 FOR 1)")
testFoldConst("select mid('a' FROM 2 FOR 1)")
testFoldConst("select mid('a' FROM -3 FOR 1)")
testFoldConst("select mid('a' FROM 3 FOR 1)")
testFoldConst("select mid('abcdef' FROM -3 FOR -1)")
testFoldConst("select mid('abcdef' FROM 3 FOR -1)")
testFoldConst("select mid('' FROM 3 FOR -1)")
testFoldConst("select mid('abcdef' FROM 3 FOR 10)")
testFoldConst("select mid('abcdef' FROM -3)")
testFoldConst("select mid('abcdef' FROM 3)")
testFoldConst("select mid('' FROM 3)")

// substring_index
testFoldConst("select substring_index('a,b,c', ',', 2)")
testFoldConst("select substring_index('a,b,c', '', 2)")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,41 @@ suite("test_string_function", "arrow_flight_sql") {
qt_sql "select substr('abcdef',3,-1);"
qt_sql "select substr('abcdef',-3,-1);"

qt_mid_1 "select mid('a',0,1);"
qt_mid_2 "select mid('a',-1,1);"
qt_mid_3 "select mid('a',1,1);"
qt_mid_4 "select mid('a',-2,1);"
qt_mid_5 "select mid('a',2,1);"
qt_mid_6 "select mid('a',-3,1);"
qt_mid_7 "select mid('a',3,1);"
qt_mid_8 "select mid('abcdef',-3,-1);"
qt_mid_9 "select mid('abcdef',3,-1);"
qt_mid_10 "select mid('',3,-1);"
qt_mid_11 "select mid('abcdef',3,10);"
qt_mid_12 "select mid('abcdef',-3);"
qt_mid_13 "select mid('abcdef',3);"
qt_mid_14 "select mid('',3);"
qt_mid_15 "select mid('a' FROM 0 FOR 1);"
qt_mid_16 "select mid('a' FROM -1 FOR 1);"
qt_mid_17 "select mid('a' FROM 1 FOR 1);"
qt_mid_18 "select mid('a' FROM -2 FOR 1);"
qt_mid_19 "select mid('a' FROM 2 FOR 1);"
qt_mid_20 "select mid('a' FROM -3 FOR 1);"
qt_mid_21 "select mid('a' FROM 3 FOR 1);"
qt_mid_22 "select mid('abcdef' FROM -3 FOR -1);"
qt_mid_23 "select mid('abcdef' FROM 3 FOR -1);"
qt_mid_24 "select mid('' FROM 3 FOR -1);"
qt_mid_25 "select mid('abcdef' FROM 3 FOR 10);"
qt_mid_26 "select mid('abcdef' FROM -3);"
qt_mid_27 "select mid('abcdef' FROM 3);"
qt_mid_28 "select mid('' FROM 3);"
qt_mid_29 "select mid(NULL, 2);"
qt_mid_30 "select mid(NULL, 2, 3)"
qt_mid_31 "select mid(NULL FROM 2);"
qt_mid_32 "select mid(NULL FROM 2 FOR 3);"
qt_mid_33 "select mid('hello', NULL);"
qt_mid_34 "select mid('hello', 2, NULL);"

qt_sql "select sub_replace(\"this is origin str\",\"NEW-STR\",1);"
qt_sql "select sub_replace(\"doris\",\"***\",1,2);"

Expand Down
Loading