From d98bc1175c986871200c9817b7a363461319f9fc Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Thu, 7 May 2020 04:39:25 +0300 Subject: [PATCH] Added another test --- .../0_stateless/01273_extractGroups.reference | 23 +++++++++ .../0_stateless/01273_extractGroups.sql | 51 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 tests/queries/0_stateless/01273_extractGroups.reference create mode 100644 tests/queries/0_stateless/01273_extractGroups.sql diff --git a/tests/queries/0_stateless/01273_extractGroups.reference b/tests/queries/0_stateless/01273_extractGroups.reference new file mode 100644 index 00000000000..36012050e12 --- /dev/null +++ b/tests/queries/0_stateless/01273_extractGroups.reference @@ -0,0 +1,23 @@ +0 groups, zero matches +[] +1 group, multiple matches, String and FixedString +['hello','world'] +['hello','world'] +['hello','world'] +['hello','world'] +['hello','world'] +['hello','world'] +multiple matches +['abc','111'] +big match +0 0 [] +260 1 [156] +520 1 [156] +lots of matches +0 0 0 +260 1 1 +520 1 1 +lots of groups +0 0 [] +260 100 [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] +520 100 [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] diff --git a/tests/queries/0_stateless/01273_extractGroups.sql b/tests/queries/0_stateless/01273_extractGroups.sql new file mode 100644 index 00000000000..8639dcccb8a --- /dev/null +++ b/tests/queries/0_stateless/01273_extractGroups.sql @@ -0,0 +1,51 @@ +-- error cases +SELECT extractGroups(); --{serverError 42} not enough arguments +SELECT extractGroups('hello'); --{serverError 42} not enough arguments +SELECT extractGroups('hello', 123); --{serverError 43} invalid argument type +SELECT extractGroups(123, 'world'); --{serverError 43} invalid argument type +SELECT extractGroups('hello world', '((('); --{serverError 427} invalid re +SELECT extractGroups('hello world', materialize('\\w+')); --{serverError 44} non-cons needle + +SELECT '0 groups, zero matches'; +SELECT extractGroups('hello world', '\\w+'); + +SELECT '1 group, multiple matches, String and FixedString'; +SELECT extractGroups('hello world', '(\\w+) (\\w+)'); +SELECT extractGroups('hello world', CAST('(\\w+) (\\w+)' as FixedString(11))); +SELECT extractGroups(CAST('hello world' AS FixedString(12)), '(\\w+) (\\w+)'); +SELECT extractGroups(CAST('hello world' AS FixedString(12)), CAST('(\\w+) (\\w+)' as FixedString(11))); +SELECT extractGroups(materialize(CAST('hello world' AS FixedString(12))), '(\\w+) (\\w+)'); +SELECT extractGroups(materialize(CAST('hello world' AS FixedString(12))), CAST('(\\w+) (\\w+)' as FixedString(11))); + +SELECT 'multiple matches'; +SELECT extractGroups('abc=111, def=222, ghi=333 "jkl mno"="444 foo bar"', '("[^"]+"|\\w+)=("[^"]+"|\\w+)'); + +SELECT 'big match'; +SELECT + length(haystack), length(matches), arrayMap((x) -> length(x), matches) +FROM ( + SELECT + repeat('abcdefghijklmnopqrstuvwxyz', number * 10) AS haystack, + extractGroups(haystack, '(abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz)') AS matches + FROM numbers(3) +); + +SELECT 'lots of matches'; +SELECT + length(haystack), length(matches), arrayReduce('sum', arrayMap((x) -> length(x), matches)) +FROM ( + SELECT + repeat('abcdefghijklmnopqrstuvwxyz', number * 10) AS haystack, + extractGroups(haystack, '(\\w)') AS matches + FROM numbers(3) +); + +SELECT 'lots of groups'; +SELECT + length(haystack), length(matches), arrayMap((x) -> length(x), matches) +FROM ( + SELECT + repeat('abcdefghijklmnopqrstuvwxyz', number * 10) AS haystack, + extractGroups(haystack, repeat('(\\w)', 100)) AS matches + FROM numbers(3) +);