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]