250 lines
3.2 KiB
SQL
250 lines
3.2 KiB
SQL
# name: test/sql/function/string/test_prefix.test
|
|
# description: Prefix test
|
|
# group: [string]
|
|
|
|
statement ok
|
|
SET default_null_order='nulls_first';
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
# "Early out prefix"
|
|
query T
|
|
SELECT prefix('abcd', 'a')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcd', 'ab')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcd', 'abc')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcd', 'abcd')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcd', 'b')
|
|
----
|
|
0
|
|
|
|
# "Inlined string"
|
|
query T
|
|
SELECT prefix('abcdefgh', 'a')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcdefgh', 'ab')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcdefgh', 'abc')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcdefgh', 'abcd')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcdefgh', 'abcde')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcdefgh', 'b')
|
|
----
|
|
0
|
|
|
|
# Longer (non-inlined) strings
|
|
query T
|
|
SELECT prefix('abcdefghijklmnopqrstuvwxyz', 'a')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcdefghijklmnopqrstuvwxyz', 'ab')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcdefghijklmnopqrstuvwxyz', 'abc')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcdefghijklmnopqrstuvwxyz', 'abcd')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcdefghijklmnopqrstuvwxyz', 'abcde')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcdefghijklmnopqrstuvwxyz', 'b')
|
|
----
|
|
0
|
|
|
|
query T
|
|
SELECT prefix('abcdefghijklmnopqrstuvwxyz', 'abcdefghijklmnopqrstuvwx')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('abcdefghijklmnopqrstuvwxyz', 'abcfefghijklmnopqrstuvwx')
|
|
----
|
|
0
|
|
|
|
# "Empty string and prefix"
|
|
query T
|
|
SELECT prefix('', 'aaa')
|
|
----
|
|
0
|
|
|
|
query T
|
|
SELECT prefix('aaa', '')
|
|
----
|
|
1
|
|
|
|
# "Issue #572 alloc exception on empty table"
|
|
statement ok
|
|
CREATE TABLE t0(c0 VARCHAR)
|
|
|
|
query T
|
|
SELECT * FROM t0 WHERE PREFIX(t0.c0, '')
|
|
----
|
|
|
|
# "Prefix test with UTF8"
|
|
query T
|
|
SELECT prefix('átomo', 'á')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('átomo', 'á')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('átomo', 'a')
|
|
----
|
|
0
|
|
|
|
query T
|
|
SELECT prefix('olá mundo', 'olá')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('olá mundo', 'olá')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('olá mundo', 'ola')
|
|
----
|
|
0
|
|
|
|
query T
|
|
SELECT prefix('ñeft', 'ñ')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('ñeft', 'ñ')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('ñeft', 'ñeft')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('ñeft', 'neft')
|
|
----
|
|
0
|
|
|
|
query T
|
|
SELECT prefix('two ñ three ₡ four 🦆 end', 'two ñ')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('two ñ three ₡ four 🦆 end', 'two ñ')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('two ñ three ₡ four 🦆 end', 'two n')
|
|
----
|
|
0
|
|
|
|
query T
|
|
SELECT prefix('two ñ three ₡ four 🦆 end', 'two ñ three')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('two ñ three ₡ four 🦆 end', 'two ñ three ₡')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('two ñ three ₡ four 🦆 end', 'two ñ three ₡ four 🦆')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('two ñ three ₡ four 🦆 end', 'two ñ three ₡ four 🦆 end')
|
|
----
|
|
1
|
|
|
|
query T
|
|
SELECT prefix('two ñ three ₡ four 🦆 end', 'two ñ three ₡ four 🦆 end')
|
|
----
|
|
1
|
|
|
|
# test empty prefix removal
|
|
statement ok
|
|
INSERT INTO t0 VALUES ('a'), ('b'), ('d')
|
|
|
|
query I
|
|
SELECT COUNT(*) FROM t0 WHERE prefix(t0.c0, '');
|
|
----
|
|
3
|
|
|
|
query II
|
|
SELECT c0, prefix(t0.c0, '') FROM t0 WHERE c0 <> 'b' ORDER BY t0.c0;
|
|
----
|
|
a 1
|
|
d 1
|
|
|
|
|
|
# now with a NULL value
|
|
statement ok
|
|
INSERT INTO t0 VALUES (NULL)
|
|
|
|
query I
|
|
SELECT COUNT(*) FROM t0 WHERE prefix(t0.c0, '');
|
|
----
|
|
3
|
|
|
|
query II
|
|
SELECT c0, prefix(t0.c0, '') FROM t0 WHERE c0 IS NULL OR c0 <> 'b' ORDER BY t0.c0;
|
|
----
|
|
NULL NULL
|
|
a 1
|
|
d 1
|