This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
     new 4c1c1ab505 [fix](like) fix wrong result of like pattern with backslash 
(#18351)
4c1c1ab505 is described below

commit 4c1c1ab50529da83d2f058458456a5cb6cc98f0a
Author: TengJianPing <[email protected]>
AuthorDate: Mon Apr 3 20:39:08 2023 +0800

    [fix](like) fix wrong result of like pattern with backslash (#18351)
---
 be/src/vec/functions/like.cpp                      | 86 ++++++++++++++++++++--
 .../sql_functions/string_functions/like.csv        | 21 ++++++
 .../string_functions/sql/analytic_query.out        | 79 ++++++++++++++++++++
 .../string_functions/sql/like_backslash_1.out      |  7 ++
 .../string_functions/sql/like_backslash_2.out      |  7 ++
 .../string_functions/sql/like_backslash_3.out      | 12 +++
 .../string_functions/sql/like_backslash_4.out      | 12 +++
 .../string_functions/sql/like_backslash_5.out      |  4 +
 .../string_functions/sql/like_backslash_6.out      |  4 +
 .../string_functions/sql/like_backslash_7.out      |  6 ++
 .../string_functions/sql/like_backslash_8.out      |  6 ++
 .../string_functions/sql/like_backslash_9.out      |  3 +
 .../sql/like_backslash_begin_1.out                 |  3 +
 .../sql/like_backslash_begin_2.out                 |  3 +
 .../sql/like_backslash_begin_3.out                 |  7 ++
 .../sql/like_backslash_begin_4.out                 |  7 ++
 .../sql/like_backslash_begin_8.out                 |  4 +
 .../string_functions/sql/like_backslash_end_2.out  |  7 ++
 .../string_functions/sql/like_backslash_end_4.out  |  7 ++
 .../string_functions/sql/like_backslash_end_8.out  |  4 +
 .../string_functions/sql/like_regex_wild_1.out     |  4 +
 .../string_functions/sql/like_regex_wild_2.out     |  4 +
 .../sql/like_wild_many_begin_1.out                 |  7 ++
 .../sql/like_wild_many_begin_2.out                 |  6 ++
 .../sql/like_wild_many_begin_3.out                 |  4 +
 .../string_functions/sql/like_wild_one_begin_1.out |  6 ++
 .../sql/like_wild_one_begin_end_1.out              |  5 ++
 .../sql/like_wild_one_begin_middle_end_1.out       |  4 +
 .../string_functions/sql/like_wild_one_end_1.out   |  6 ++
 .../sql_functions/string_functions/load.groovy     | 49 ++++++++++++
 .../string_functions/sql/like_backslash_1.sql      |  1 +
 .../string_functions/sql/like_backslash_2.sql      |  1 +
 .../string_functions/sql/like_backslash_3.sql      |  1 +
 .../string_functions/sql/like_backslash_4.sql      |  1 +
 .../string_functions/sql/like_backslash_5.sql      |  1 +
 .../string_functions/sql/like_backslash_6.sql      |  1 +
 .../string_functions/sql/like_backslash_7.sql      |  1 +
 .../string_functions/sql/like_backslash_8.sql      |  1 +
 .../string_functions/sql/like_backslash_9.sql      |  1 +
 .../sql/like_backslash_begin_1.sql                 |  1 +
 .../sql/like_backslash_begin_2.sql                 |  1 +
 .../sql/like_backslash_begin_3.sql                 |  1 +
 .../sql/like_backslash_begin_4.sql                 |  1 +
 .../sql/like_backslash_begin_8.sql                 |  1 +
 .../string_functions/sql/like_backslash_end_2.sql  |  1 +
 .../string_functions/sql/like_backslash_end_4.sql  |  1 +
 .../string_functions/sql/like_backslash_end_8.sql  |  1 +
 .../string_functions/sql/like_regex_wild_1.sql     |  1 +
 .../string_functions/sql/like_regex_wild_2.sql     |  1 +
 .../sql/like_wild_many_begin_1.sql                 |  1 +
 .../sql/like_wild_many_begin_2.sql                 |  1 +
 .../sql/like_wild_many_begin_3.sql                 |  1 +
 .../string_functions/sql/like_wild_one_begin_1.sql |  1 +
 .../sql/like_wild_one_begin_end_1.sql              |  1 +
 .../sql/like_wild_one_begin_middle_end_1.sql       |  1 +
 .../string_functions/sql/like_wild_one_end_1.sql   |  1 +
 56 files changed, 404 insertions(+), 6 deletions(-)

diff --git a/be/src/vec/functions/like.cpp b/be/src/vec/functions/like.cpp
index 557ecf6771..629e8fe1fc 100644
--- a/be/src/vec/functions/like.cpp
+++ b/be/src/vec/functions/like.cpp
@@ -39,10 +39,10 @@ static const RE2 
STARTS_WITH_RE("\\^([^\\.\\^\\{\\[\\(\\|\\)\\]\\}\\+\\*\\?\\$\\
 static const RE2 
EQUALS_RE("\\^([^\\.\\^\\{\\[\\(\\|\\)\\]\\}\\+\\*\\?\\$\\\\]*)\\$");
 
 // Like patterns
-static const re2::RE2 
LIKE_SUBSTRING_RE("(?:%+)(((\\\\%)|(\\\\_)|([^%_]))+)(?:%+)");
-static const re2::RE2 LIKE_ENDS_WITH_RE("(?:%+)(((\\\\%)|(\\\\_)|([^%_]))+)");
-static const re2::RE2 
LIKE_STARTS_WITH_RE("(((\\\\%)|(\\\\_)|([^%_]))+)(?:%+)");
-static const re2::RE2 LIKE_EQUALS_RE("(((\\\\%)|(\\\\_)|([^%_]))+)");
+static const re2::RE2 
LIKE_SUBSTRING_RE("(?:%+)(((\\\\_)|([^%_\\\\]))+)(?:%+)");
+static const re2::RE2 LIKE_ENDS_WITH_RE("(?:%+)(((\\\\_)|([^%_]))+)");
+static const re2::RE2 
LIKE_STARTS_WITH_RE("(((\\\\%)|(\\\\_)|([^%_\\\\]))+)(?:%+)");
+static const re2::RE2 LIKE_EQUALS_RE("(((\\\\_)|([^%_]))+)");
 
 Status LikeSearchState::clone(LikeSearchState& cloned) {
     cloned.escape_char = escape_char;
@@ -510,7 +510,7 @@ void FunctionLike::convert_like_pattern(LikeSearchState* 
state, const std::strin
     }
 
     // add $ to pattern tail to match line tail
-    if (pattern.size() > 0 && pattern[pattern.size() - 1] != '%') {
+    if (pattern.size() > 0 && re_pattern->back() != '*') {
         re_pattern->append("$");
     }
 }
@@ -521,7 +521,8 @@ void FunctionLike::remove_escape_character(std::string* 
search_string) {
     int len = tmp_search_string.length();
     for (int i = 0; i < len;) {
         if (tmp_search_string[i] == '\\' && i + 1 < len &&
-            (tmp_search_string[i + 1] == '%' || tmp_search_string[i + 1] == 
'_')) {
+            (tmp_search_string[i + 1] == '%' || tmp_search_string[i + 1] == 
'_' ||
+             tmp_search_string[i + 1] == '\\')) {
             search_string->append(1, tmp_search_string[i + 1]);
             i += 2;
         } else {
@@ -531,6 +532,38 @@ void FunctionLike::remove_escape_character(std::string* 
search_string) {
     }
 }
 
+bool re2_full_match(const std::string& str, const RE2& re, 
std::vector<std::string>& results) {
+    if (!re.ok()) {
+        return false;
+    }
+
+    std::vector<RE2::Arg> arguments;
+    std::vector<RE2::Arg*> arguments_ptrs;
+    std::size_t args_count = re.NumberOfCapturingGroups();
+    arguments.resize(args_count);
+    arguments_ptrs.resize(args_count);
+    results.resize(args_count);
+    for (std::size_t i = 0; i < args_count; ++i) {
+        arguments[i] = &results[i];
+        arguments_ptrs[i] = &arguments[i];
+    }
+
+    return RE2::FullMatchN(str, re, arguments_ptrs.data(), args_count);
+}
+
+void verbose_log_match(const std::string& str, const std::string& 
pattern_name, const RE2& re) {
+    std::vector<std::string> results;
+    VLOG_DEBUG << "arg str: " << str << ", size: " << str.size() << ", pattern 
" << pattern_name
+               << ": " << re.pattern() << ", size: " << re.pattern().size();
+    if (re2_full_match(str, re, results)) {
+        for (int i = 0; i < results.size(); ++i) {
+            VLOG_DEBUG << "match " << i << ": " << results[i] << ", size: " << 
results[i].size();
+        }
+    } else {
+        VLOG_DEBUG << "no match";
+    }
+}
+
 Status FunctionLike::prepare(FunctionContext* context, 
FunctionContext::FunctionStateScope scope) {
     if (scope != FunctionContext::THREAD_LOCAL) {
         return Status::OK();
@@ -548,25 +581,61 @@ Status FunctionLike::prepare(FunctionContext* context, 
FunctionContext::Function
         state->search_state.pattern_str = pattern_str;
         std::string search_string;
         if (pattern_str.empty() || RE2::FullMatch(pattern_str, LIKE_EQUALS_RE, 
&search_string)) {
+            if (VLOG_DEBUG_IS_ON) {
+                verbose_log_match(pattern_str, "LIKE_EQUALS_RE", 
LIKE_EQUALS_RE);
+                VLOG_DEBUG << "search_string : " << search_string
+                           << ", size: " << search_string.size();
+            }
             remove_escape_character(&search_string);
+            if (VLOG_DEBUG_IS_ON) {
+                VLOG_DEBUG << "search_string escape removed: " << search_string
+                           << ", size: " << search_string.size();
+            }
             state->search_state.set_search_string(search_string);
             state->function = constant_equals_fn;
             state->predicate_like_function = constant_equals_fn_predicate;
             state->scalar_function = constant_equals_fn_scalar;
         } else if (RE2::FullMatch(pattern_str, LIKE_STARTS_WITH_RE, 
&search_string)) {
+            if (VLOG_DEBUG_IS_ON) {
+                verbose_log_match(pattern_str, "LIKE_STARTS_WITH_RE", 
LIKE_STARTS_WITH_RE);
+                VLOG_DEBUG << "search_string : " << search_string
+                           << ", size: " << search_string.size();
+            }
             remove_escape_character(&search_string);
+            if (VLOG_DEBUG_IS_ON) {
+                VLOG_DEBUG << "search_string escape removed: " << search_string
+                           << ", size: " << search_string.size();
+            }
             state->search_state.set_search_string(search_string);
             state->function = constant_starts_with_fn;
             state->predicate_like_function = constant_starts_with_fn_predicate;
             state->scalar_function = constant_starts_with_fn_scalar;
         } else if (RE2::FullMatch(pattern_str, LIKE_ENDS_WITH_RE, 
&search_string)) {
+            if (VLOG_DEBUG_IS_ON) {
+                verbose_log_match(pattern_str, "LIKE_ENDS_WITH_RE", 
LIKE_ENDS_WITH_RE);
+                VLOG_DEBUG << "search_string : " << search_string
+                           << ", size: " << search_string.size();
+            }
             remove_escape_character(&search_string);
+            if (VLOG_DEBUG_IS_ON) {
+                VLOG_DEBUG << "search_string escape removed: " << search_string
+                           << ", size: " << search_string.size();
+            }
             state->search_state.set_search_string(search_string);
             state->function = constant_ends_with_fn;
             state->predicate_like_function = constant_ends_with_fn_predicate;
             state->scalar_function = constant_ends_with_fn_scalar;
         } else if (RE2::FullMatch(pattern_str, LIKE_SUBSTRING_RE, 
&search_string)) {
+            if (VLOG_DEBUG_IS_ON) {
+                verbose_log_match(pattern_str, "LIKE_SUBSTRING_RE", 
LIKE_SUBSTRING_RE);
+                VLOG_DEBUG << "search_string : " << search_string
+                           << ", size: " << search_string.size();
+            }
             remove_escape_character(&search_string);
+            if (VLOG_DEBUG_IS_ON) {
+                VLOG_DEBUG << "search_string escape removed: " << search_string
+                           << ", size: " << search_string.size();
+            }
             state->search_state.set_search_string(search_string);
             state->function = constant_substring_fn;
             state->predicate_like_function = constant_substring_fn_predicate;
@@ -574,6 +643,11 @@ Status FunctionLike::prepare(FunctionContext* context, 
FunctionContext::Function
         } else {
             std::string re_pattern;
             convert_like_pattern(&state->search_state, pattern_str, 
&re_pattern);
+            if (VLOG_DEBUG_IS_ON) {
+                VLOG_DEBUG << "hyperscan, pattern str: " << pattern_str
+                           << ", size: " << pattern_str.size() << ", re 
pattern: " << re_pattern
+                           << ", size: " << re_pattern.size();
+            }
 
             hs_database_t* database = nullptr;
             hs_scratch_t* scratch = nullptr;
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/like.csv 
b/regression-test/data/query_p0/sql_functions/string_functions/like.csv
new file mode 100644
index 0000000000..e8edae4efa
--- /dev/null
+++ b/regression-test/data/query_p0/sql_functions/string_functions/like.csv
@@ -0,0 +1,21 @@
+%test
+te%st
+test%
+%test%
+%te%s%
+%tes\%
+\test
+\\test
+test\test
+test\
+test\\
+\test\
+\tes\t\
+test\\test
+_test
+te_st
+test_
+_test_
+_te_st_
+tes*t
+tes?t
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/analytic_query.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/analytic_query.out
new file mode 100644
index 0000000000..3807e5fcf9
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/analytic_query.out
@@ -0,0 +1,79 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !analytic_query --
+4627   1830    257.82  4627    4627    1830    4627    257.82  257.82  5.7.99  
60
+4535   1201    218.04  4535    4535    1201    4535    218.04  218.04  5.7.99  
76
+2581   1971    931.05  2581    2581    1971    2581    931.05  931.05  5.7.99  
4
+3554   317     332.0   3554    3554    317     3554    332.0   332.0   5.7.99  
18
+5517   1658    968.84  5517    5517    1658    5517    968.84  968.84  5.7.99  
82
+8761   1053    106.7   8761    8761    1053    8761    106.7   106.7   5.7.99  
24
+2972   57      123.11  2972    2972    57      2972    123.11  123.11  5.7.99  
58
+717    254     564.77  717     717     254     717     564.77  564.77  5.7.99  
82
+1674   705     102.28  1674    1674    705     1674    102.28  102.28  5.7.99  
38
+796    971     318.79  796     796     971     796     318.79  318.79  5.7.99  
72
+6707   1634    372.29  6707    6707    1634    6707    372.29  372.29  5.7.99  
35
+4049   1872    447.75  4049    4049    1872    4049    447.75  447.75  5.7.99  
73
+8067   1376    912.31  8067    8067    1376    8067    912.31  912.31  5.7.99  
53
+2313   1214    438.22  2313    2313    1214    2313    438.22  438.22  5.7.99  
52
+5327   73      108.96  5327    5327    73      5327    108.96  108.96  5.7.99  
24
+5500   1821    882.5   5500    5500    1821    5500    882.5   882.5   5.7.99  
51
+1798   433     128.56  1798    1798    433     1798    128.56  128.56  5.7.99  
92
+5475   39      532.26  5475    5475    39      5475    532.26  532.26  5.7.99  
90
+6054   1606    486.42  6054    6054    1606    6054    486.42  486.42  5.7.99  
89
+6875   1082    826.47  6875    6875    1082    6875    826.47  826.47  5.7.99  
53
+3180   1873    629.18  3180    3180    1873    3180    629.18  629.18  5.7.99  
17
+3391   1793    588.68  3391    3391    1793    3391    588.68  588.68  5.7.99  
78
+517    964     517.38  517     517     964     517     517.38  517.38  5.7.99  
65
+4580   97      761.41  4580    4580    97      4580    761.41  761.41  5.7.99  
73
+8071   1390    612.13  8071    8071    1390    8071    612.13  612.13  5.7.99  
91
+7236   736     872.53  7236    7236    736     7236    872.53  872.53  5.7.99  
37
+3126   1403    173.62  3126    3126    1403    3126    173.62  173.62  5.7.99  
21
+9755   1053    189.42  9755    9755    1053    9755    189.42  189.42  5.7.99  
54
+9702   26      821.89  9702    9702    26      9702    821.89  821.89  5.7.99  
2
+2356   1188    841.79  2356    2356    1188    2356    841.79  841.79  5.7.99  
89
+626    747     91.87   626     626     747     626     91.87   91.87   5.7.99  
80
+1285   1518    335.15  1285    1285    1518    1285    335.15  335.15  5.7.99  
99
+8316   959     435.36  8316    8316    959     8316    435.36  435.36  5.7.99  
62
+2338   1228    658.94  2338    2338    1228    2338    658.94  658.94  5.7.99  
29
+8112   1860    215.52  8112    8112    1860    8112    215.52  215.52  5.7.99  
4
+8915   1134    839.18  8915    8915    1134    8915    839.18  839.18  5.7.99  
71
+1303   772     942.93  1303    1303    772     1303    942.93  942.93  5.7.99  
5
+3238   648     69.51   3238    3238    648     3238    69.51   69.51   5.7.99  
80
+2205   850     219.21  2205    2205    850     2205    219.21  219.21  5.7.99  
17
+1064   1589    439.88  1064    1064    1589    1064    439.88  439.88  5.7.99  
30
+3224   1958    829.21  3224    3224    1958    3224    829.21  829.21  5.7.99  
3
+7645   252     275.23  7645    7645    252     7645    275.23  275.23  5.7.99  
34
+1550   999     136.14  1550    1550    999     1550    136.14  136.14  5.7.99  
2
+3896   1292    924.38  3896    3896    1292    3896    924.38  924.38  5.7.99  
4
+7278   972     967.71  7278    7278    972     7278    967.71  967.71  5.7.99  
75
+753    1365    871.48  753     753     1365    753     871.48  871.48  5.7.99  
80
+5985   663     332.39  5985    5985    663     5985    332.39  332.39  5.7.99  
57
+7347   1747    461.67  7347    7347    1747    7347    461.67  461.67  5.7.99  
90
+352    536     143.93  352     352     536     352     143.93  143.93  5.7.99  
97
+2261   1794    157.22  2261    2261    1794    2261    157.22  157.22  5.7.99  
95
+3793   503     68.79   3793    3793    503     3793    68.79   68.79   5.7.99  
34
+282    1423    800.36  282     282     1423    282     800.36  800.36  5.7.99  
41
+1567   1809    991.6   1567    1567    1809    1567    991.6   991.6   5.7.99  
39
+7407   922     457.36  7407    7407    922     7407    457.36  457.36  5.7.99  
91
+5827   1159    645.53  5827    5827    1159    5827    645.53  645.53  5.7.99  
68
+5472   1602    547.06  5472    5472    1602    5472    547.06  547.06  5.7.99  
85
+6971   723     108.21  6971    6971    723     6971    108.21  108.21  5.7.99  
20
+6443   598     265.4   6443    6443    598     6443    265.4   265.4   5.7.99  
99
+3242   1392    673.51  3242    3242    1392    3242    673.51  673.51  5.7.99  
7
+2113   1953    148.78  2113    2113    1953    2113    148.78  148.78  5.7.99  
86
+7244   951     709.23  7244    7244    951     7244    709.23  709.23  5.7.99  
52
+2894   1367    951.21  2894    2894    1367    2894    951.21  951.21  5.7.99  
82
+9489   1873    405.31  9489    9489    1873    9489    405.31  405.31  5.7.99  
3
+2708   1566    571.65  2708    2708    1566    2708    571.65  571.65  5.7.99  
87
+1019   122     451.29  1019    1019    122     1019    451.29  451.29  5.7.99  
23
+1821   1906    386.55  1821    1821    1906    1821    386.55  386.55  5.7.99  
39
+5058   1712    338.6   5058    5058    1712    5058    338.6   338.6   5.7.99  
13
+1695   1776    138.16  1695    1695    1776    1695    138.16  138.16  5.7.99  
77
+3058   343     18.48   3058    3058    343     3058    18.48   18.48   5.7.99  
44
+6105   516     600.29  6105    6105    516     6105    600.29  600.29  5.7.99  
17
+7441   289     519.98  7441    7441    289     7441    519.98  519.98  5.7.99  
71
+341    889     931.12  341     341     889     341     931.12  931.12  5.7.99  
23
+1168   1301    624.73  1168    1168    1301    1168    624.73  624.73  5.7.99  
16
+2307   119     473.64  2307    2307    119     2307    473.64  473.64  5.7.99  
20
+4692   113     141.48  4692    4692    113     4692    141.48  141.48  5.7.99  
92
+1726   1111    22.72   1726    1726    1111    1726    22.72   22.72   5.7.99  
84
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_1.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_1.out
new file mode 100644
index 0000000000..674b4409da
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_1.out
@@ -0,0 +1,7 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_1 --
+%te%s%
+%tes\\%
+%test%
+test%
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_2.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_2.out
new file mode 100644
index 0000000000..e325ca0611
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_2.out
@@ -0,0 +1,7 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_2 --
+%te%s%
+%tes\\%
+%test%
+test%
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_3.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_3.out
new file mode 100644
index 0000000000..b914b143b2
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_3.out
@@ -0,0 +1,12 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_3 --
+%tes\\%
+\\\\test
+\\tes\\t\\
+\\test
+\\test\\
+test\\
+test\\\\
+test\\\\test
+test\\test
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_4.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_4.out
new file mode 100644
index 0000000000..7f47dc88d8
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_4.out
@@ -0,0 +1,12 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_4 --
+%tes\\%
+\\\\test
+\\tes\\t\\
+\\test
+\\test\\
+test\\
+test\\\\
+test\\\\test
+test\\test
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_5.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_5.out
new file mode 100644
index 0000000000..5175a1b159
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_5.out
@@ -0,0 +1,4 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_5 --
+%tes\\%
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_6.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_6.out
new file mode 100644
index 0000000000..91cebaaca7
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_6.out
@@ -0,0 +1,4 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_6 --
+%tes\\%
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_7.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_7.out
new file mode 100644
index 0000000000..e9668ee354
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_7.out
@@ -0,0 +1,6 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_7 --
+\\\\test
+test\\\\
+test\\\\test
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_8.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_8.out
new file mode 100644
index 0000000000..faa932d084
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_8.out
@@ -0,0 +1,6 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_8 --
+\\\\test
+test\\\\
+test\\\\test
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_9.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_9.out
new file mode 100644
index 0000000000..140d06c4fd
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_9.out
@@ -0,0 +1,3 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_9 --
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_1.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_1.out
new file mode 100644
index 0000000000..6d783a4195
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_1.out
@@ -0,0 +1,3 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_begin_1 --
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_2.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_2.out
new file mode 100644
index 0000000000..f8d9ab36f7
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_2.out
@@ -0,0 +1,3 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_begin_2 --
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_3.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_3.out
new file mode 100644
index 0000000000..634a202a49
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_3.out
@@ -0,0 +1,7 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_begin_3 --
+\\\\test
+\\tes\\t\\
+\\test
+\\test\\
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_4.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_4.out
new file mode 100644
index 0000000000..5be16e649e
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_4.out
@@ -0,0 +1,7 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_begin_4 --
+\\\\test
+\\tes\\t\\
+\\test
+\\test\\
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_8.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_8.out
new file mode 100644
index 0000000000..639ee1d707
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_begin_8.out
@@ -0,0 +1,4 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_begin_8 --
+\\\\test
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_end_2.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_end_2.out
new file mode 100644
index 0000000000..0f866a3c98
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_end_2.out
@@ -0,0 +1,7 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_end_2 --
+\\tes\\t\\
+\\test\\
+test\\
+test\\\\
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_end_4.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_end_4.out
new file mode 100644
index 0000000000..bd5991f081
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_end_4.out
@@ -0,0 +1,7 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_end_4 --
+\\tes\\t\\
+\\test\\
+test\\
+test\\\\
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_end_8.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_end_8.out
new file mode 100644
index 0000000000..556c9276c4
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_backslash_end_8.out
@@ -0,0 +1,4 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_backslash_end_8 --
+test\\\\
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_regex_wild_1.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_regex_wild_1.out
new file mode 100644
index 0000000000..706910e9ac
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_regex_wild_1.out
@@ -0,0 +1,4 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_regex_wild_1 --
+tes?t
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_regex_wild_2.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_regex_wild_2.out
new file mode 100644
index 0000000000..8edf970afd
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_regex_wild_2.out
@@ -0,0 +1,4 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_regex_wild_2 --
+tes*t
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_1.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_1.out
new file mode 100644
index 0000000000..24c78e7580
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_1.out
@@ -0,0 +1,7 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_wild_many_begin_1 --
+%te%s%
+%tes\\%
+%test
+%test%
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_2.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_2.out
new file mode 100644
index 0000000000..2e76849548
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_2.out
@@ -0,0 +1,6 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_wild_many_begin_2 --
+%te%s%
+%tes\\%
+%test%
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_3.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_3.out
new file mode 100644
index 0000000000..30da8a4469
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_3.out
@@ -0,0 +1,4 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_wild_many_begin_3 --
+%te%s%
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_1.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_1.out
new file mode 100644
index 0000000000..5c0aa38814
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_1.out
@@ -0,0 +1,6 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_wild_one_begin_1 --
+_te_st_
+_test
+_test_
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_end_1.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_end_1.out
new file mode 100644
index 0000000000..c76c285cc8
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_end_1.out
@@ -0,0 +1,5 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_wild_one_begin_end_1 --
+_te_st_
+_test_
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_middle_end_1.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_middle_end_1.out
new file mode 100644
index 0000000000..fbdb034ba9
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_middle_end_1.out
@@ -0,0 +1,4 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_wild_one_begin_middle_end_1 --
+_te_st_
+
diff --git 
a/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_end_1.out
 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_end_1.out
new file mode 100644
index 0000000000..09266d7a17
--- /dev/null
+++ 
b/regression-test/data/query_p0/sql_functions/string_functions/sql/like_wild_one_end_1.out
@@ -0,0 +1,6 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !like_wild_one_end_1 --
+_te_st_
+_test_
+test_
+
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/load.groovy 
b/regression-test/suites/query_p0/sql_functions/string_functions/load.groovy
index 0086ed87a5..06f5634ac0 100644
--- a/regression-test/suites/query_p0/sql_functions/string_functions/load.groovy
+++ b/regression-test/suites/query_p0/sql_functions/string_functions/load.groovy
@@ -59,4 +59,53 @@ suite("load") {
             }
         }
     }
+
+    // for like test
+    def tbName = "test_string_function_like2"
+    sql "DROP TABLE IF EXISTS ${tbName}"
+    sql """
+            CREATE TABLE IF NOT EXISTS ${tbName} (
+                k varchar(32)
+            )
+            DISTRIBUTED BY HASH(k) BUCKETS 5 properties("replication_num" = 
"1");
+        """
+    sql """
+        INSERT INTO ${tbName} VALUES 
+            (""),
+            (" "),
+            ("a"),
+            ("b"),
+            ("bb"),
+            ("bab"),
+            ("ba"),
+            ("ab"),
+            ("accb");
+        """
+    streamLoad {
+        // you can skip declare db, because a default db already specify in 
${DORIS_HOME}/conf/regression-conf.groovy
+        // db 'regression_test'
+        table "${tbName}"
+
+        // default column_separator is specify in doris fe config, usually is 
'\t'.
+        // this line change to ','
+        set 'column_separator', '|'
+        // relate to 
${DORIS_HOME}/regression-test/data/demo/streamload_input.csv.
+        // also, you can stream load a http stream, e.g. http://xxx/some.csv
+        file """like.csv"""
+
+        time 10000 // limit inflight 10s
+
+        // if declared a check callback, the default check condition will 
ignore.
+        // So you must check all condition
+        check { result, exception, startTime, endTime ->
+            if (exception != null) {
+                throw exception
+            }
+            log.info("Stream load result: ${result}".toString())
+            def json = parseJson(result)
+            assertEquals('success', json.Status.toLowerCase())
+            assertEquals(json.NumberTotalRows, json.NumberLoadedRows)
+            assertTrue(json.NumberLoadedRows > 0 && json.LoadBytes > 0)
+        }
+    }
 }
\ No newline at end of file
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_1.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_1.sql
new file mode 100644
index 0000000000..50ec5ac31b
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_1.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_2.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_2.sql
new file mode 100644
index 0000000000..b93ff443c7
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_2.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_3.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_3.sql
new file mode 100644
index 0000000000..c2e642ded8
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_3.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_4.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_4.sql
new file mode 100644
index 0000000000..1463b1bf64
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_4.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\\\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_5.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_5.sql
new file mode 100644
index 0000000000..c68efa178a
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_5.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\\\\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_6.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_6.sql
new file mode 100644
index 0000000000..7b89020cf3
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_6.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\\\\\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_7.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_7.sql
new file mode 100644
index 0000000000..bb265e59a2
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_7.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\\\\\\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_8.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_8.sql
new file mode 100644
index 0000000000..c202a9dfb0
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_8.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\\\\\\\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_9.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_9.sql
new file mode 100644
index 0000000000..0754bb8b13
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_9.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\\\\\\\\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_1.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_1.sql
new file mode 100644
index 0000000000..9ef466c1ce
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_1.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_2.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_2.sql
new file mode 100644
index 0000000000..d4137c446f
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_2.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_3.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_3.sql
new file mode 100644
index 0000000000..4637af046b
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_3.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "\\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_4.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_4.sql
new file mode 100644
index 0000000000..0138071280
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_4.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "\\\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_8.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_8.sql
new file mode 100644
index 0000000000..47af27fac5
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_begin_8.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "\\\\\\\\%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_end_2.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_end_2.sql
new file mode 100644
index 0000000000..aa132cb62b
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_end_2.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\\" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_end_4.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_end_4.sql
new file mode 100644
index 0000000000..22b2a648e3
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_end_4.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\\\\" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_end_8.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_end_8.sql
new file mode 100644
index 0000000000..cac0dc0afc
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_backslash_end_8.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\\\\\\\\" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_regex_wild_1.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_regex_wild_1.sql
new file mode 100644
index 0000000000..0e610bc2d5
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_regex_wild_1.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%?%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_regex_wild_2.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_regex_wild_2.sql
new file mode 100644
index 0000000000..bba82b25bd
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_regex_wild_2.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%*%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_1.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_1.sql
new file mode 100644
index 0000000000..37466001d3
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_1.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "\%%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_2.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_2.sql
new file mode 100644
index 0000000000..6ea104fd7c
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_2.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "\%%\%%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_3.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_3.sql
new file mode 100644
index 0000000000..3647e828c2
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_many_begin_3.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "\%%\%_%%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_1.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_1.sql
new file mode 100644
index 0000000000..59da489ca6
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_1.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "\_%" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_end_1.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_end_1.sql
new file mode 100644
index 0000000000..7b0d3bd6c6
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_end_1.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "\_%\_" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_middle_end_1.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_middle_end_1.sql
new file mode 100644
index 0000000000..81f91447e8
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_begin_middle_end_1.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "\_%\_%\_" order by k;
diff --git 
a/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_end_1.sql
 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_end_1.sql
new file mode 100644
index 0000000000..d31dd79d18
--- /dev/null
+++ 
b/regression-test/suites/query_p0/sql_functions/string_functions/sql/like_wild_one_end_1.sql
@@ -0,0 +1 @@
+SELECT k FROM test_string_function_like2 WHERE k LIKE "%\_" order by k;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to