diff --git a/dbms/tests/queries/0_stateless/00936_substring_utf8_non_const.reference b/dbms/tests/queries/0_stateless/00936_substring_utf8_non_const.reference index 47c756f3e5b..daa12776a92 100644 --- a/dbms/tests/queries/0_stateless/00936_substring_utf8_non_const.reference +++ b/dbms/tests/queries/0_stateless/00936_substring_utf8_non_const.reference @@ -226,3 +226,6 @@ o, пр lo, п lo, п lo, п +1 +1 +1 diff --git a/dbms/tests/queries/0_stateless/00936_substring_utf8_non_const.sql b/dbms/tests/queries/0_stateless/00936_substring_utf8_non_const.sql index 9dfdffde20e..a2b115d776d 100644 --- a/dbms/tests/queries/0_stateless/00936_substring_utf8_non_const.sql +++ b/dbms/tests/queries/0_stateless/00936_substring_utf8_non_const.sql @@ -25,3 +25,18 @@ SELECT substringUTF8(materialize('hello, привет'), 1, 10) FROM numbers(3); SELECT substringUTF8(materialize('hello, привет'), 5, 5) FROM numbers(3); SELECT substringUTF8(materialize('hello, привет'), -5) FROM numbers(3); SELECT substringUTF8(materialize('hello, привет'), -10, 5) FROM numbers(3); + +SELECT DISTINCT substring(toString(range(rand(1) % 50)), rand(2) % 50, rand(3) % 50) = substringUTF8(toString(range(rand(1) % 50)), rand(2) % 50, rand(3) % 50) AS res FROM numbers(1000000); +SELECT DISTINCT substring(toString(range(rand(1) % 50)), rand(2) % 50) = substringUTF8(toString(range(rand(1) % 50)), rand(2) % 50) AS res FROM numbers(1000000); + +-- NOTE: The behaviour of substring and substringUTF8 is inconsistent when negative offset is greater than string size: +-- substring: +-- hello +-- ^-----^ - offset -10, length 7, result: "he" +-- substringUTF8: +-- hello +-- ^-----^ - offset -10, length 7, result: "hello" + +-- SELECT DISTINCT substring(toString(range(rand(1) % 50)), -(rand(2) % 50), rand(3) % 50) = substringUTF8(toString(range(rand(1) % 50)), -(rand(2) % 50), rand(3) % 50) AS res FROM numbers(1000000); + +SELECT DISTINCT substring(toString(range(rand(1) % 50)), -(rand(2) % 50)) = substringUTF8(toString(range(rand(1) % 50)), -(rand(2) % 50)) AS res FROM numbers(1000000);