This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new ebe031c019d [fix](inverted index) Fix match_regexp to correctly handle
empty string patterns (#40659)
ebe031c019d is described below
commit ebe031c019d13fd58da06fc82de1c62eb9cd049e
Author: zzzxl <[email protected]>
AuthorDate: Wed Sep 11 18:10:33 2024 +0800
[fix](inverted index) Fix match_regexp to correctly handle empty string
patterns (#40659)
https://github.com/apache/doris/pull/39503
---
be/src/vec/functions/match.cpp | 9 -------
.../inverted_index_p0/test_index_match_regexp.out | 3 +++
.../data/inverted_index_p0/test_no_index_match.out | 3 +++
.../test_index_match_regexp.groovy | 1 +
.../inverted_index_p0/test_no_index_match.groovy | 31 ++++++++++++----------
5 files changed, 24 insertions(+), 23 deletions(-)
diff --git a/be/src/vec/functions/match.cpp b/be/src/vec/functions/match.cpp
index d656c3f5f1d..5d87ed8efdd 100644
--- a/be/src/vec/functions/match.cpp
+++ b/be/src/vec/functions/match.cpp
@@ -407,15 +407,6 @@ Status FunctionMatchRegexp::execute_match(FunctionContext*
context, const std::s
VLOG_DEBUG << "begin to run FunctionMatchRegexp::execute_match,
parser_type: "
<<
inverted_index_parser_type_to_string(inverted_index_ctx->parser_type);
- if (match_query_str.empty()) {
- VLOG_DEBUG << fmt::format(
- "token parser result is empty for query, "
- "please check your query: '{}' and index parser: '{}'",
- match_query_str,
-
inverted_index_parser_type_to_string(inverted_index_ctx->parser_type));
- return Status::OK();
- }
-
const std::string& pattern = match_query_str;
hs_database_t* database = nullptr;
diff --git a/regression-test/data/inverted_index_p0/test_index_match_regexp.out
b/regression-test/data/inverted_index_p0/test_index_match_regexp.out
index f9a9caf6d74..fb5d23ad266 100644
--- a/regression-test/data/inverted_index_p0/test_index_match_regexp.out
+++ b/regression-test/data/inverted_index_p0/test_index_match_regexp.out
@@ -2,6 +2,9 @@
-- !sql --
1000
+-- !sql --
+1000
+
-- !sql --
54
diff --git a/regression-test/data/inverted_index_p0/test_no_index_match.out
b/regression-test/data/inverted_index_p0/test_no_index_match.out
index 932dd55fc5a..ea3bd71bcd6 100644
--- a/regression-test/data/inverted_index_p0/test_no_index_match.out
+++ b/regression-test/data/inverted_index_p0/test_no_index_match.out
@@ -20,3 +20,6 @@
-- !sql --
0
+-- !sql --
+1000
+
diff --git
a/regression-test/suites/inverted_index_p0/test_index_match_regexp.groovy
b/regression-test/suites/inverted_index_p0/test_index_match_regexp.groovy
index 3458f086740..31863432707 100644
--- a/regression-test/suites/inverted_index_p0/test_index_match_regexp.groovy
+++ b/regression-test/suites/inverted_index_p0/test_index_match_regexp.groovy
@@ -80,6 +80,7 @@ suite("test_index_match_regexp", "p0"){
sql "sync"
+ qt_sql """ select count() from test_index_match_regexp where request
match_regexp ''; """
qt_sql """ select count() from test_index_match_regexp where request
match_regexp '^h'; """
qt_sql """ select count() from test_index_match_regexp where request
match_regexp '^team'; """
qt_sql """ select count() from test_index_match_regexp where request
match_regexp 's\$'; """
diff --git
a/regression-test/suites/inverted_index_p0/test_no_index_match.groovy
b/regression-test/suites/inverted_index_p0/test_no_index_match.groovy
index 60227b01168..7cace77da7e 100644
--- a/regression-test/suites/inverted_index_p0/test_no_index_match.groovy
+++ b/regression-test/suites/inverted_index_p0/test_no_index_match.groovy
@@ -18,7 +18,7 @@
suite("test_no_index_match", "p0") {
// define a sql table
- def testTable_unique = "httplogs_unique"
+ def testTable = "test_no_index_match"
def create_httplogs_unique_table = {testTablex ->
// multi-line sql
@@ -77,35 +77,38 @@ suite("test_no_index_match", "p0") {
}
try {
- sql "DROP TABLE IF EXISTS ${testTable_unique}"
- create_httplogs_unique_table.call(testTable_unique)
- load_httplogs_data.call(testTable_unique, 'httplogs_unique', 'true',
'json', 'documents-1000.json')
+ sql "DROP TABLE IF EXISTS ${testTable}"
+ create_httplogs_unique_table.call(testTable)
+ load_httplogs_data.call(testTable, 'test_no_index_match', 'true',
'json', 'documents-1000.json')
- sql """ INSERT INTO ${testTable_unique} VALUES (1, '1', '', 1, 1); """
+ sql """ INSERT INTO ${testTable} VALUES (1, '1', '', 1, 1); """
sql 'sync'
+ sql """ set enable_common_expr_pushdown = true """
try {
- qt_sql """ select count() from ${testTable_unique} where (request
match_any 'hm bg'); """
- qt_sql """ select count() from ${testTable_unique} where (request
match_all 'hm bg'); """
- qt_sql """ select count() from ${testTable_unique} where (request
match_phrase 'hm bg'); """
- qt_sql """ select count() from ${testTable_unique} where (request
match_phrase_prefix 'hm b'); """
- qt_sql """ select count() from ${testTable_unique} where (request
match_regexp 'la'); """
+ qt_sql """ select count() from ${testTable} where (request match_any
'hm bg'); """
+ qt_sql """ select count() from ${testTable} where (request match_all
'hm bg'); """
+ qt_sql """ select count() from ${testTable} where (request
match_phrase 'hm bg'); """
+ qt_sql """ select count() from ${testTable} where (request
match_phrase_prefix 'hm b'); """
+ qt_sql """ select count() from ${testTable} where (request
match_regexp 'la'); """
- qt_sql """ select count() from ${testTable_unique} where (request
match_phrase '欧冶工业品'); """
- qt_sql """ select count() from ${testTable_unique} where (request
match_phrase_prefix '欧冶工业品'); """
+ qt_sql """ select count() from ${testTable} where (request
match_phrase '欧冶工业品'); """
+ qt_sql """ select count() from ${testTable} where (request
match_phrase_prefix '欧冶工业品'); """
+
+ qt_sql """ select count() from ${testTable} where (request
match_regexp ''); """
} finally {
}
try {
- sql """ select /*+ SET_VAR(enable_match_without_inverted_index = 0)
*/ count() from ${testTable_unique} where (request match_phrase 'hm bg'); """
+ sql """ select /*+ SET_VAR(enable_match_without_inverted_index = 0)
*/ count() from ${testTable} where (request match_phrase 'hm bg'); """
} catch (Exception e) {
log.info(e.getMessage());
assertTrue(e.getMessage().contains("match_phrase not support
execute_match"))
}
try {
- sql """ select /*+ SET_VAR(enable_match_without_inverted_index = 0)
*/ count() from ${testTable_unique} where (request match_phrase_prefix 'hm b');
"""
+ sql """ select /*+ SET_VAR(enable_match_without_inverted_index = 0)
*/ count() from ${testTable} where (request match_phrase_prefix 'hm b'); """
} catch (Exception e) {
log.info(e.getMessage());
assertTrue(e.getMessage().contains("match_phrase_prefix not support
execute_match"))
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]