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

kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 9bf4a017ad9 [branch-2.0](function) fix coredump for MULTI_MATCH_ANY 
(#37959) (#38315)
9bf4a017ad9 is described below

commit 9bf4a017ad99faebd67098bb301554fbe008b7cc
Author: zclllhhjj <zhaochan...@selectdb.com>
AuthorDate: Wed Jul 31 21:53:33 2024 +0800

    [branch-2.0](function) fix coredump for MULTI_MATCH_ANY (#37959) (#38315)
---
 be/src/vec/functions/regexps.h                     | 64 +++++++++++++------
 .../search_functions/test_multi_string_search.out  | 24 ++++++-
 .../test_multi_string_search.groovy                | 74 +++++++++-------------
 3 files changed, 96 insertions(+), 66 deletions(-)

diff --git a/be/src/vec/functions/regexps.h b/be/src/vec/functions/regexps.h
index 378dd3ec68d..16f23f02ae0 100644
--- a/be/src/vec/functions/regexps.h
+++ b/be/src/vec/functions/regexps.h
@@ -21,9 +21,9 @@
 #pragma once
 
 #include <hs/hs.h>
+#include <hs/hs_common.h>
 
 #include <boost/container_hash/hash.hpp>
-#include <map>
 #include <memory>
 #include <mutex>
 #include <optional>
@@ -31,11 +31,11 @@
 #include <utility>
 #include <vector>
 
+#include "common/exception.h"
+#include "common/status.h"
 #include "vec/common/string_ref.h"
 
-namespace doris::vectorized {
-
-namespace multiregexps {
+namespace doris::vectorized::multiregexps {
 
 template <typename Deleter, Deleter deleter>
 struct HyperscanDeleter {
@@ -75,7 +75,9 @@ public:
 
     Regexps* get() {
         std::lock_guard lock(mutex);
-        if (regexps) return &*regexps;
+        if (regexps) {
+            return &*regexps;
+        }
         regexps = constructor();
         return &*regexps;
     }
@@ -136,7 +138,9 @@ Regexps constructRegexps(const std::vector<String>& 
str_patterns,
     /// We mark the patterns to provide the callback results.
     if constexpr (save_indices) {
         ids.reset(new unsigned int[patterns.size()]);
-        for (size_t i = 0; i < patterns.size(); ++i) ids[i] = 
static_cast<unsigned>(i + 1);
+        for (size_t i = 0; i < patterns.size(); ++i) {
+            ids[i] = static_cast<unsigned>(i + 1);
+        }
     }
 
     for (auto& pattern : patterns) {
@@ -144,24 +148,30 @@ Regexps constructRegexps(const std::vector<String>& 
str_patterns,
     }
 
     hs_error_t err;
-    if constexpr (!WithEditDistance)
+    if constexpr (!WithEditDistance) {
         err = hs_compile_multi(patterns.data(), flags.data(), ids.get(),
                                static_cast<unsigned>(patterns.size()), 
HS_MODE_BLOCK, nullptr, &db,
                                &compile_error);
-    else
+    } else {
         err = hs_compile_ext_multi(patterns.data(), flags.data(), ids.get(), 
ext_exprs_ptrs.data(),
                                    static_cast<unsigned>(patterns.size()), 
HS_MODE_BLOCK, nullptr,
                                    &db, &compile_error);
+    }
 
-    if (err != HS_SUCCESS) {
+    if (err != HS_SUCCESS) [[unlikely]] {
         /// CompilerError is a unique_ptr, so correct memory free after the 
exception is thrown.
         CompilerError error(compile_error);
 
-        if (error->expression < 0)
-            LOG(FATAL) << "Logical error: " + String(error->message);
-        else
-            LOG(FATAL) << "Bad arguments: Pattern " + 
str_patterns[error->expression] +
-                                  "failed with error " + 
String(error->message);
+        if (error->expression < 0) { // error has nothing to do with the 
patterns themselves
+            throw doris::Exception(
+                    ErrorCode::INTERNAL_ERROR,
+                    fmt::format("Compile regexp expression failed. got {}", 
error->message));
+        } else {
+            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
+                                   fmt::format("Compile regexp expression 
failed. got {}. some "
+                                               "expressions may be illegal",
+                                               error->message));
+        }
     }
 
     /// We allocate the scratch space only once, then copy it across multiple 
threads with hs_clone_scratch
@@ -169,8 +179,18 @@ Regexps constructRegexps(const std::vector<String>& 
str_patterns,
     hs_scratch_t* scratch = nullptr;
     err = hs_alloc_scratch(db, &scratch);
 
-    /// If not HS_SUCCESS, it is guaranteed that the memory would not be 
allocated for scratch.
-    if (err != HS_SUCCESS) LOG(FATAL) << "Could not allocate scratch space for 
hyperscan";
+    if (err != HS_SUCCESS) [[unlikely]] {
+        if (err == HS_NOMEM) [[unlikely]] {
+            throw doris::Exception(
+                    ErrorCode::MEM_ALLOC_FAILED,
+                    std::string("Allocating memory failed on compiling regexp 
expressions."));
+        } else {
+            throw doris::Exception(
+                    ErrorCode::INVALID_ARGUMENT,
+                    std::string(
+                            "Compile regexp expression failed with unexpected 
arguments perhaps"));
+        }
+    }
 
     return {db, scratch};
 }
@@ -196,7 +216,9 @@ struct GlobalCacheTable {
     static size_t getBucketIndexFor(const std::vector<String> patterns,
                                     std::optional<UInt32> edit_distance) {
         size_t hash = 0;
-        for (const auto& pattern : patterns) boost::hash_combine(hash, 
pattern);
+        for (const auto& pattern : patterns) {
+            boost::hash_combine(hash, pattern);
+        }
         boost::hash_combine(hash, edit_distance);
         return hash % CACHE_SIZE;
     }
@@ -212,7 +234,9 @@ DeferredConstructedRegexpsPtr getOrSet(const 
std::vector<StringRef>& patterns,
 
     std::vector<String> str_patterns;
     str_patterns.reserve(patterns.size());
-    for (const auto& pattern : patterns) 
str_patterns.emplace_back(pattern.to_string());
+    for (const auto& pattern : patterns) {
+        str_patterns.emplace_back(pattern.to_string());
+    }
 
     size_t bucket_idx = GlobalCacheTable::getBucketIndexFor(str_patterns, 
edit_distance);
 
@@ -249,6 +273,4 @@ DeferredConstructedRegexpsPtr getOrSet(const 
std::vector<StringRef>& patterns,
     return bucket.regexps;
 }
 
-} // namespace multiregexps
-
-} // namespace doris::vectorized
\ No newline at end of file
+} // namespace doris::vectorized::multiregexps
diff --git 
a/regression-test/data/nereids_p0/sql_functions/search_functions/test_multi_string_search.out
 
b/regression-test/data/nereids_p0/sql_functions/search_functions/test_multi_string_search.out
index 2eef34a6506..4be872c8288 100644
--- 
a/regression-test/data/nereids_p0/sql_functions/search_functions/test_multi_string_search.out
+++ 
b/regression-test/data/nereids_p0/sql_functions/search_functions/test_multi_string_search.out
@@ -1,45 +1,67 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !select --
 0
+
 -- !select --
 0
+
 -- !select --
 0
+
 -- !select --
 1
+
 -- !select --
 0
+
 -- !select --
 0
+
 -- !select --
 0
+
 -- !select --
 1
+
 -- !select --
 1
+
 -- !select --
 1
+
 -- !select --
 0
+
 -- !select --
 1
+
 -- !select --
 0
+
 -- !select --
 1
+
 -- !select --
 1
+
 -- !select --
 1
+
 -- !select --
 0
+
 -- !select --
 0
+
 -- !select --
 0
+
 -- !select --
 1
+
 -- !select --
 1
+
 -- !select --
-1
\ No newline at end of file
+1
+
diff --git 
a/regression-test/suites/nereids_p0/sql_functions/search_functions/test_multi_string_search.groovy
 
b/regression-test/suites/nereids_p0/sql_functions/search_functions/test_multi_string_search.groovy
index 52c7b761ac9..61be0d22964 100644
--- 
a/regression-test/suites/nereids_p0/sql_functions/search_functions/test_multi_string_search.groovy
+++ 
b/regression-test/suites/nereids_p0/sql_functions/search_functions/test_multi_string_search.groovy
@@ -18,48 +18,34 @@
 suite("test_multi_string_search") {
     sql "SET enable_nereids_planner=true"
     sql "SET enable_fallback_to_original_planner=false"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('mpnsguhwsitzvuleiwebwjfitmsg', 
['wbirxqoabpblrnvvmjizj', 'cfcxhuvrexyzyjsh', 'oldhtubemyuqlqbwvwwkwin', 
'bumoozxdkjglzu', 'intxlfohlxmajjomw', 'dxkeghohv', 'arsvmwwkjeopnlwnan', 
'ouugllgowpqtaxslcopkytbfhifaxbgt', 'hkedmjlbcrzvryaopjqdjjc', 
'tbqkljywstuahzh', 'o', 'wowoclosyfcuwotmvjygzuzhrery', 'vpefjiffkhlggntcu', 
'ytdixvasrorhripzfhjdmlhqksmctyycwp'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('qjjzqexjpgkglgxpzrbqbnskq', 
['vaiatcjacmlffdzsejpdareqzy', 'xspcfzdufkmecud', 'bcvtbuqtctq', 
'nkcopwbfytgemkqcfnnno', 'dylxnzuyhq', 'tno', 'scukuhufly', 'cdyquzuqlptv', 
'ohluyfeksyxepezdhqmtfmgkvzsyph', 'ualzwtahvqvtijwp', 'jg', 
'gwbawqlngzcknzgtmlj', 'qimvjcgbkkp', 'eaedbcgyrdvv', 'qcwrncjoewwedyyewcdkh', 
'uqcvhngoqngmitjfxpznqomertqnqcveoqk', 'ydrgjiankgygpm', 'axepgap'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('fdkmtqmxnegwvnjhghjq', 
['vynkybvdmhgeezybbdqfrukibisj', 'knazzamgjjpavwhvdkwigykh', 
'peumnifrmdhhmrqqnemw', 'lmsnyvqoisinlaqobxojlwfbi', 'oqwfzs', 
'dymudxxeodwjpgbibnkvr', 'vomtfsnizkplgzktqyoiw', 'yoyfuhlpgrzds', 'cefao', 
'gi', 'srpgxfjwl', 'etsjusdeiwbfe', 'ikvtzdopxo', 'ljfkavrau', 
'soqdhxtenfrkmeic', 'ktprjwfcelzbup', 'pcvuoddqwsaurcqdtjfnczekwni', 
'agkqkqxkfbkfgyqliahsljim'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('khljxzxlpcrxpkrfybbfk', ['', 'lpc', 
'rxpkrfybb', 'crxp', '', 'pkr', 'jxzxlpcrxpkrf', '', 'xzxlpcr', 'xpk', 'fyb', 
'xzxlpcrxpkrfybbfk', 'k', 'lpcrxp', 'ljxzxlpcr', 'r', 'pkr', 'fk'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('rbrizgjbigvzfnpgmpkqxoqxvdj', ['ee', 
'cohqnb', 'msol', 'yhlujcvhklnhuomy', 'ietn', 'vgmnlkcsybtokrepzrm', 
'wspiryefojxysgrzsxyrluykxfnnbzdstcel', 'mxisnsivndbefqxwznimwgazuulupbaihavg', 
'vpzdjvqqeizascxmzdhuq', 'pgvncohlxcqjhfkm', 
'mbaypcnfapltsegquurahlsruqvipfhrhq', 'ioxjbcyyqujfveujfhnfdfokfcrlsincjbdt', 
'cnvlujyowompdrqjwjx', 'wobwed', 'kdfhaoxiuifotmptcmdbk', 
'leoamsnorcvtlmokdomkzuo', 'jjw', 'ogugysetxuqmvggneosbsfbonszepsatq'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('uymwxzyjbfegbhgswiqhinf', 
['lizxzbzlwljkr', 'ukxygktlpzuyijcqeqktxenlaqi', 'onperabgbdiafsxwbvpjtyt', 
'xfqgoqvhqph', 'aflmcwabtwgmajmmqelxwkaolyyhmdlc', 'yfz', 'meffuiaicvwed', 
'hhzvgmifzamgftkifaeowayjrnnzw', 'nwewybtajv', 'ectiye', 'epjeiljegmqqjncubj', 
'zsjgftqjrn', 'pssng', 'raqoarfhdoeujulvqmdo'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('omgghgnzjmecpzqmtcvw', 
['fjhlzbszodmzavzg', 'gfofrnwrxprkfiokv', 'jmjiiqpgznlmyrxwewzqzbe', 
'pkyrsqkltlmxr', 'crqgkgqkkyujcyoc', 'endagbcxwqhueczuasykmajfsvtcmh', 
'xytmxtrnkdysuwltqomehddp', 'etmdxyyfotfyifwvbykghijvwv', 'mwqtgrncyhkfhjdg', 
'iuvymofrqpp', 'pgllsdanlhzqhkstwsmzzftp', 'disjylcceufxtjdvhy'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('mznihnmshftvnmmhnrulizzpslq', 
['nrul', 'mshftvnmmhnr', 'z', 'mhnrulizzps', 'hftvnmmhnrul', 
'ihnmshftvnmmhnrulizzp', 'izz', '', 'uli', 'nihnmshftvnmmhnru', 'hnrulizzp', 
'nrulizz'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('ruqmqrsxrbftvruvahonradau', 
['uqmqrsxrbft', 'ftv', 'tvruvahonrad', 'mqrsxrbftvruvahon', 'rbftvruvah', 
'qrsxrbftvru', 'o', 'ahonradau', 'a', 'ft', '', 'u', 'rsxrbftvruvahonradau', 
'ruvahon', 'bftvruvahonradau', 'qrsxrbftvru', 't', 'vahonrada', 
'vruvahonradau', 'onra'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('gpsevxtcoeexrltyzduyidmtzxf', 
['exrltyzduyid', 'vxtcoeexrltyz', 'xr', 'ltyzduyidmt', 'yzduy', 'exr', 
'coeexrltyzduy', 'coeexrltyzduy', 'rlty', 'rltyzduyidm', 'exrltyz', 
'xtcoeexrlty', 'vxtcoeexrltyzduyidm', '', 'coeexrl', 'sevxtcoeexrltyzdu', 
'dmt', ''])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('dyhycfhzyewaikgursyxfkuv', 
['sktnofpugrmyxmbizzrivmhn', 'fhlgadpoqcvktbfzncxbllvwutdawmw', 
'eewzjpcgzrqmltbgmhafwlwqb', 'tpogbkyj', 'rtllntxjgkzs', 
'mirbvsqexscnzglogigbujgdwjvcv', 'iktwpgjsakemewmahgqza', 
'xgfvzkvqgiuoihjjnxwwpznxhz', 'nxaumpaknreklbwynvxdsmatjekdlxvklh', 
'zadzwqhgfxqllihuudozxeixyokhny', 'tdqpgfpzexlkslodps', 
'slztannufxaabqfcjyfquafgfhfb', 'xvjldhfuwurvkb', 'aecv', 
'uycfsughpikqsbcmwvqygdyexkcykhbnau', 'jr'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('vbcsettndwuntnruiyclvvwoo', 
['dwuntnru', '', 'ttndwuntnruiyclvv', 'ntnr', 'nruiyclvvw', 'wo', '', 
'bcsettndwuntnruiycl', 'yc', 'untnruiyclvvw', 'csettndwuntnr', 
'ntnruiyclvvwo'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('pqqnugshlczcuxhpjxjbcnro', 
['dpeedqy', 'rtsc', 'jdgla', 'qkgudqjiyzvlvsj', 'xmfxawhijgxxtydbd', 
'ebgzazqthb', 'wyrjhvhwzhmpybnylirrn', 'iviqbyuclayqketooztwegtkgwnsezfl', 
'bhvidy', 'hijctxxweboq', 't', 'osnzfbziidteiaifgaanm'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('loqchlxspwuvvccucskuytr', ['', 'k', 
'qchlxspwu', 'u', 'hlxspwuvv', 'wuvvccucsku', 'vcc', 'uyt', 'uvv', 'spwu', 
'ytr', 'wuvvccucs', 'xspwuv', 'lxspwuvvccuc', 'spwuvvccu', 
'oqchlxspwuvvccucskuy'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('pjjyzupzwllshlnatiujmwvaofr', 
['lnatiujmwvao', '', 'zupzwllsh', 'nati', 'wllshl', 'hlnatiujmwv', 'mwvao', 
'shlnat', 'ati', 'wllshlnatiujmwvao', 'wllshlnatiujmwvaofr', 'nat'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('iketunkleyaqaxdlocci', 
['nkleyaqaxd', 'etunkleyaq', 'yaqaxdlocci', 'tunkleyaq', 'eyaqaxdlocc', 
'leyaq', 'nkleyaqaxdl', 'tunkleya', 'kleyaqa', 'etunkleya', 'leyaqa', 'dlo', 
'yaqa', 'leyaqaxd', 'etunkleyaq', ''])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('drqianqtangmgbdwruvblkqd', 
['wusajejyucamkyl', 'wsgibljugzrpkniliy', 'lhwqqiuafwffyersqjgjvvvfurx', 
'jfokpzzxfdonelorqu', 'ccwkpcgac', 'jmyulqpndkmzbfztobwtm', 'rwrgfkccgxht', 
'ggldjecrgbngkonphtcxrkcviujihidjx', 'spwweavbiokizv', 'lv', 'krb', 
'vstnhvkbwlqbconaxgbfobqky', 'pvxwdc', 'thrl', 'ahsblffdveamceonqwrbeyxzccmux', 
'yozji', 'oejtaxwmeovtqtz', 'zsnzznvqpxdvdxhznxrjn', 'hse', 
'kcmkrccxmljzizracxwmpoaggywhdfpxkq'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('yasnpckniistxcejowfijjsvkdajz', 
['slkpxhtsmrtvtm', 'crsbq', 'rdeshtxbfrlfwpsqojassxmvlfbzefldavmgme', 
'ipetilcbpsfroefkjirquciwtxhrimbmwnlyv', 'knjpwkmdwbvdbapuyqbtsw', 
'horueidziztxovqhsicnklmharuxhtgrsr', 'ofohrgpz', 
'oneqnwyevbaqsonrcpmxcynflojmsnix', 'shg', 'nglqzczevgevwawdfperpeytuodjlf'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('ueptpscfgxhplwsueckkxs', 
['ohhygchclbpcdwmftperprn', 'dvpjdqmqckekndvcerqrpkxen', 'lohhvarnmyi', 'zppd', 
'qmqxgfewitsunbuhffozcpjtc', 'hsjbioisycsrawktqssjovkmltxodjgv', 
'dbzuunwbkrtosyvctdujqtvaawfnvuq', 'gupbvpqthqxae', 'abjdmijaaiasnccgxttmqdsz', 
'uccyumqoyqe', 'kxxliepyzlc', 'wbqcqtbyyjbqcgdbpkmzugksmcxhvr', 'piedxm', 
'uncpphzoif', 'exkdankwck', 'qeitzozdrqopsergzr', 
'hesgrhaftgesnzflrrtjdobxhbepjoas', 'wfpexx'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('ldrzgttlqaphekkkdukgngl', 
['gttlqaphekkkdukgn', 'ekkkd', 'gttlqaphe', 'qaphek', 'h', 'kdu', 'he', 'phek', 
'', 'drzgttlqaphekkkd'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('ololo', ['ololo', 'ololo', 'ololo'])"
-    // Nereids does't support array function
-    // qt_select "select multi_match_any('khljxzxlpcrxpkrfybbfk', ['k'])"
+
+    qt_select "select multi_match_any('mpnsguhwsitzvuleiwebwjfitmsg', 
['wbirxqoabpblrnvvmjizj', 'cfcxhuvrexyzyjsh', 'oldhtubemyuqlqbwvwwkwin', 
'bumoozxdkjglzu', 'intxlfohlxmajjomw', 'dxkeghohv', 'arsvmwwkjeopnlwnan', 
'ouugllgowpqtaxslcopkytbfhifaxbgt', 'hkedmjlbcrzvryaopjqdjjc', 
'tbqkljywstuahzh', 'o', 'wowoclosyfcuwotmvjygzuzhrery', 'vpefjiffkhlggntcu', 
'ytdixvasrorhripzfhjdmlhqksmctyycwp'])"
+    qt_select "select multi_match_any('qjjzqexjpgkglgxpzrbqbnskq', 
['vaiatcjacmlffdzsejpdareqzy', 'xspcfzdufkmecud', 'bcvtbuqtctq', 
'nkcopwbfytgemkqcfnnno', 'dylxnzuyhq', 'tno', 'scukuhufly', 'cdyquzuqlptv', 
'ohluyfeksyxepezdhqmtfmgkvzsyph', 'ualzwtahvqvtijwp', 'jg', 
'gwbawqlngzcknzgtmlj', 'qimvjcgbkkp', 'eaedbcgyrdvv', 'qcwrncjoewwedyyewcdkh', 
'uqcvhngoqngmitjfxpznqomertqnqcveoqk', 'ydrgjiankgygpm', 'axepgap'])"
+    qt_select "select multi_match_any('fdkmtqmxnegwvnjhghjq', 
['vynkybvdmhgeezybbdqfrukibisj', 'knazzamgjjpavwhvdkwigykh', 
'peumnifrmdhhmrqqnemw', 'lmsnyvqoisinlaqobxojlwfbi', 'oqwfzs', 
'dymudxxeodwjpgbibnkvr', 'vomtfsnizkplgzktqyoiw', 'yoyfuhlpgrzds', 'cefao', 
'gi', 'srpgxfjwl', 'etsjusdeiwbfe', 'ikvtzdopxo', 'ljfkavrau', 
'soqdhxtenfrkmeic', 'ktprjwfcelzbup', 'pcvuoddqwsaurcqdtjfnczekwni', 
'agkqkqxkfbkfgyqliahsljim'])"
+    qt_select "select multi_match_any('khljxzxlpcrxpkrfybbfk', ['', 'lpc', 
'rxpkrfybb', 'crxp', '', 'pkr', 'jxzxlpcrxpkrf', '', 'xzxlpcr', 'xpk', 'fyb', 
'xzxlpcrxpkrfybbfk', 'k', 'lpcrxp', 'ljxzxlpcr', 'r', 'pkr', 'fk'])"
+    qt_select "select multi_match_any('rbrizgjbigvzfnpgmpkqxoqxvdj', ['ee', 
'cohqnb', 'msol', 'yhlujcvhklnhuomy', 'ietn', 'vgmnlkcsybtokrepzrm', 
'wspiryefojxysgrzsxyrluykxfnnbzdstcel', 'mxisnsivndbefqxwznimwgazuulupbaihavg', 
'vpzdjvqqeizascxmzdhuq', 'pgvncohlxcqjhfkm', 
'mbaypcnfapltsegquurahlsruqvipfhrhq', 'ioxjbcyyqujfveujfhnfdfokfcrlsincjbdt', 
'cnvlujyowompdrqjwjx', 'wobwed', 'kdfhaoxiuifotmptcmdbk', 
'leoamsnorcvtlmokdomkzuo', 'jjw', 'ogugysetxuqmvggneosbsfbonszepsatq'])"
+    qt_select "select multi_match_any('uymwxzyjbfegbhgswiqhinf', 
['lizxzbzlwljkr', 'ukxygktlpzuyijcqeqktxenlaqi', 'onperabgbdiafsxwbvpjtyt', 
'xfqgoqvhqph', 'aflmcwabtwgmajmmqelxwkaolyyhmdlc', 'yfz', 'meffuiaicvwed', 
'hhzvgmifzamgftkifaeowayjrnnzw', 'nwewybtajv', 'ectiye', 'epjeiljegmqqjncubj', 
'zsjgftqjrn', 'pssng', 'raqoarfhdoeujulvqmdo'])"
+    qt_select "select multi_match_any('omgghgnzjmecpzqmtcvw', 
['fjhlzbszodmzavzg', 'gfofrnwrxprkfiokv', 'jmjiiqpgznlmyrxwewzqzbe', 
'pkyrsqkltlmxr', 'crqgkgqkkyujcyoc', 'endagbcxwqhueczuasykmajfsvtcmh', 
'xytmxtrnkdysuwltqomehddp', 'etmdxyyfotfyifwvbykghijvwv', 'mwqtgrncyhkfhjdg', 
'iuvymofrqpp', 'pgllsdanlhzqhkstwsmzzftp', 'disjylcceufxtjdvhy'])"
+    qt_select "select multi_match_any('mznihnmshftvnmmhnrulizzpslq', ['nrul', 
'mshftvnmmhnr', 'z', 'mhnrulizzps', 'hftvnmmhnrul', 'ihnmshftvnmmhnrulizzp', 
'izz', '', 'uli', 'nihnmshftvnmmhnru', 'hnrulizzp', 'nrulizz'])"
+    qt_select "select multi_match_any('ruqmqrsxrbftvruvahonradau', 
['uqmqrsxrbft', 'ftv', 'tvruvahonrad', 'mqrsxrbftvruvahon', 'rbftvruvah', 
'qrsxrbftvru', 'o', 'ahonradau', 'a', 'ft', '', 'u', 'rsxrbftvruvahonradau', 
'ruvahon', 'bftvruvahonradau', 'qrsxrbftvru', 't', 'vahonrada', 
'vruvahonradau', 'onra'])"
+    qt_select "select multi_match_any('gpsevxtcoeexrltyzduyidmtzxf', 
['exrltyzduyid', 'vxtcoeexrltyz', 'xr', 'ltyzduyidmt', 'yzduy', 'exr', 
'coeexrltyzduy', 'coeexrltyzduy', 'rlty', 'rltyzduyidm', 'exrltyz', 
'xtcoeexrlty', 'vxtcoeexrltyzduyidm', '', 'coeexrl', 'sevxtcoeexrltyzdu', 
'dmt', ''])"
+    qt_select "select multi_match_any('dyhycfhzyewaikgursyxfkuv', 
['sktnofpugrmyxmbizzrivmhn', 'fhlgadpoqcvktbfzncxbllvwutdawmw', 
'eewzjpcgzrqmltbgmhafwlwqb', 'tpogbkyj', 'rtllntxjgkzs', 
'mirbvsqexscnzglogigbujgdwjvcv', 'iktwpgjsakemewmahgqza', 
'xgfvzkvqgiuoihjjnxwwpznxhz', 'nxaumpaknreklbwynvxdsmatjekdlxvklh', 
'zadzwqhgfxqllihuudozxeixyokhny', 'tdqpgfpzexlkslodps', 
'slztannufxaabqfcjyfquafgfhfb', 'xvjldhfuwurvkb', 'aecv', 
'uycfsughpikqsbcmwvqygdyexkcykhbnau', 'jr'])"
+    qt_select "select multi_match_any('vbcsettndwuntnruiyclvvwoo', 
['dwuntnru', '', 'ttndwuntnruiyclvv', 'ntnr', 'nruiyclvvw', 'wo', '', 
'bcsettndwuntnruiycl', 'yc', 'untnruiyclvvw', 'csettndwuntnr', 
'ntnruiyclvvwo'])"
+    qt_select "select multi_match_any('pqqnugshlczcuxhpjxjbcnro', ['dpeedqy', 
'rtsc', 'jdgla', 'qkgudqjiyzvlvsj', 'xmfxawhijgxxtydbd', 'ebgzazqthb', 
'wyrjhvhwzhmpybnylirrn', 'iviqbyuclayqketooztwegtkgwnsezfl', 'bhvidy', 
'hijctxxweboq', 't', 'osnzfbziidteiaifgaanm'])"
+    qt_select "select multi_match_any('loqchlxspwuvvccucskuytr', ['', 'k', 
'qchlxspwu', 'u', 'hlxspwuvv', 'wuvvccucsku', 'vcc', 'uyt', 'uvv', 'spwu', 
'ytr', 'wuvvccucs', 'xspwuv', 'lxspwuvvccuc', 'spwuvvccu', 
'oqchlxspwuvvccucskuy'])"
+    qt_select "select multi_match_any('pjjyzupzwllshlnatiujmwvaofr', 
['lnatiujmwvao', '', 'zupzwllsh', 'nati', 'wllshl', 'hlnatiujmwv', 'mwvao', 
'shlnat', 'ati', 'wllshlnatiujmwvao', 'wllshlnatiujmwvaofr', 'nat'])"
+    qt_select "select multi_match_any('iketunkleyaqaxdlocci', ['nkleyaqaxd', 
'etunkleyaq', 'yaqaxdlocci', 'tunkleyaq', 'eyaqaxdlocc', 'leyaq', 
'nkleyaqaxdl', 'tunkleya', 'kleyaqa', 'etunkleya', 'leyaqa', 'dlo', 'yaqa', 
'leyaqaxd', 'etunkleyaq', ''])"
+    qt_select "select multi_match_any('drqianqtangmgbdwruvblkqd', 
['wusajejyucamkyl', 'wsgibljugzrpkniliy', 'lhwqqiuafwffyersqjgjvvvfurx', 
'jfokpzzxfdonelorqu', 'ccwkpcgac', 'jmyulqpndkmzbfztobwtm', 'rwrgfkccgxht', 
'ggldjecrgbngkonphtcxrkcviujihidjx', 'spwweavbiokizv', 'lv', 'krb', 
'vstnhvkbwlqbconaxgbfobqky', 'pvxwdc', 'thrl', 'ahsblffdveamceonqwrbeyxzccmux', 
'yozji', 'oejtaxwmeovtqtz', 'zsnzznvqpxdvdxhznxrjn', 'hse', 
'kcmkrccxmljzizracxwmpoaggywhdfpxkq'])"
+    qt_select "select multi_match_any('yasnpckniistxcejowfijjsvkdajz', 
['slkpxhtsmrtvtm', 'crsbq', 'rdeshtxbfrlfwpsqojassxmvlfbzefldavmgme', 
'ipetilcbpsfroefkjirquciwtxhrimbmwnlyv', 'knjpwkmdwbvdbapuyqbtsw', 
'horueidziztxovqhsicnklmharuxhtgrsr', 'ofohrgpz', 
'oneqnwyevbaqsonrcpmxcynflojmsnix', 'shg', 'nglqzczevgevwawdfperpeytuodjlf'])"
+    qt_select "select multi_match_any('ueptpscfgxhplwsueckkxs', 
['ohhygchclbpcdwmftperprn', 'dvpjdqmqckekndvcerqrpkxen', 'lohhvarnmyi', 'zppd', 
'qmqxgfewitsunbuhffozcpjtc', 'hsjbioisycsrawktqssjovkmltxodjgv', 
'dbzuunwbkrtosyvctdujqtvaawfnvuq', 'gupbvpqthqxae', 'abjdmijaaiasnccgxttmqdsz', 
'uccyumqoyqe', 'kxxliepyzlc', 'wbqcqtbyyjbqcgdbpkmzugksmcxhvr', 'piedxm', 
'uncpphzoif', 'exkdankwck', 'qeitzozdrqopsergzr', 
'hesgrhaftgesnzflrrtjdobxhbepjoas', 'wfpexx'])"
+    qt_select "select multi_match_any('ldrzgttlqaphekkkdukgngl', 
['gttlqaphekkkdukgn', 'ekkkd', 'gttlqaphe', 'qaphek', 'h', 'kdu', 'he', 'phek', 
'', 'drzgttlqaphekkkd'])"
+    qt_select "select multi_match_any('ololo', ['ololo', 'ololo', 'ololo'])"
+    qt_select "select multi_match_any('khljxzxlpcrxpkrfybbfk', ['k'])"
+
+    test {
+        sql '''
+            select MULTI_MATCH_ANY(cast('aaaaa' as STRING), cast(['aaaaa', 
'12345!@#$%^&*()_', '', '中文测试', '123', 'abs ss 123'] as ARRAY < STRING > ));
+        '''
+        exception "some expressions may be illegal"
+    }
 }
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to