This is an automated email from the ASF dual-hosted git repository.
lihaopeng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new d10a3dca726 [Fix](function) fix coredump for MULTI_MATCH_ANY (#37959)
d10a3dca726 is described below
commit d10a3dca726a3b192952d5ca45e06c4276fc08ef
Author: zclllhhjj <[email protected]>
AuthorDate: Tue Jul 23 10:24:19 2024 +0800
[Fix](function) fix coredump for MULTI_MATCH_ANY (#37959)
[INVALID_ARGUMENT][E33] Compile regexp expression failed. got Embedded
start anchors not supported.. some expressions may be illegal
---
be/src/vec/functions/regexps.h | 58 +++++++++++------
.../search_functions/test_multi_string_search.out | 24 ++++++-
.../test_multi_string_search.groovy | 74 +++++++++-------------
3 files changed, 90 insertions(+), 66 deletions(-)
diff --git a/be/src/vec/functions/regexps.h b/be/src/vec/functions/regexps.h
index d2963d853f5..efa2f77ccd2 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,10 @@
#include <utility>
#include <vector>
+#include "common/exception.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 +74,9 @@ public:
Regexps* get() {
std::lock_guard lock(mutex);
- if (regexps) return &*regexps;
+ if (regexps) {
+ return &*regexps;
+ }
regexps = constructor();
return &*regexps;
}
@@ -136,7 +137,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 +147,28 @@ 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(Status::InternalError("Compile regexp
expression failed. got {}",
+ error->message));
+ } else {
+ throw doris::Exception(Status::InvalidArgument(
+ "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 +176,15 @@ 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(Status::MemoryAllocFailed(
+ "Allocating memory failed on compiling regexp
expressions."));
+ } else {
+ throw doris::Exception(Status::InvalidArgument(
+ "Compile regexp expression failed with unexpected
arguments perhaps"));
+ }
+ }
return {db, scratch};
}
@@ -196,7 +210,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 +228,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 +267,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: [email protected]
For additional commands, e-mail: [email protected]