117 lines
1.8 KiB
SQL
117 lines
1.8 KiB
SQL
# name: test/sql/collate/test_collation_propagation.test
|
|
# description: Test collations with string functions.
|
|
# group: [collate]
|
|
|
|
statement ok
|
|
create table tbl (a varchar, b varchar);
|
|
|
|
statement ok
|
|
insert into tbl values ('ö', '>>>>>ö<<<<<'), ('o', '>>>>>o<<<<<'), ('p', '>>>>>p<<<<<');
|
|
|
|
query I
|
|
select a from tbl where contains(b collate nocase, 'O') order by all
|
|
----
|
|
o
|
|
|
|
# test propagation of collation through string functions
|
|
query I
|
|
select concat(a collate noaccent, a) from tbl order by all;
|
|
----
|
|
öö
|
|
oo
|
|
pp
|
|
|
|
query I
|
|
select lower(a collate noaccent) from tbl order by all;
|
|
----
|
|
ö
|
|
o
|
|
p
|
|
|
|
query I
|
|
select upper(a collate noaccent) from tbl order by all;
|
|
----
|
|
Ö
|
|
O
|
|
P
|
|
|
|
query I
|
|
select trim(b collate noaccent, '<>') from tbl order by all
|
|
----
|
|
ö
|
|
o
|
|
p
|
|
|
|
query I
|
|
select ltrim(b collate noaccent, '<>') from tbl order by all
|
|
----
|
|
ö<<<<<
|
|
o<<<<<
|
|
p<<<<<
|
|
|
|
query I
|
|
select rtrim(b collate noaccent, '<>') from tbl order by all
|
|
----
|
|
>>>>>ö
|
|
>>>>>o
|
|
>>>>>p
|
|
|
|
query I
|
|
select repeat(a collate noaccent, 10) from tbl order by all;
|
|
----
|
|
öööööööööö
|
|
oooooooooo
|
|
pppppppppp
|
|
|
|
query I
|
|
select left(b collate noaccent, 6) from tbl order by all;
|
|
----
|
|
>>>>>ö
|
|
>>>>>o
|
|
>>>>>p
|
|
|
|
query I
|
|
select right(b collate noaccent, 6) from tbl order by all;
|
|
----
|
|
ö<<<<<
|
|
o<<<<<
|
|
p<<<<<
|
|
|
|
query I
|
|
select right(left(b collate noaccent, 6), 1) from tbl order by all;
|
|
----
|
|
ö
|
|
o
|
|
p
|
|
|
|
query I
|
|
select reverse(a collate noaccent) from tbl order by all;
|
|
----
|
|
ö
|
|
o
|
|
p
|
|
|
|
# test pushing collations
|
|
query I
|
|
select a from tbl where contains(b collate noaccent, 'o') order by all
|
|
----
|
|
o
|
|
ö
|
|
|
|
query I
|
|
select a from tbl where contains(b, 'ö' collate noaccent) order by all
|
|
----
|
|
o
|
|
ö
|
|
|
|
query I
|
|
select a from tbl where contains(b collate nocase, 'O') order by all
|
|
----
|
|
o
|
|
|
|
query I
|
|
select a from tbl where starts_with(b collate noaccent, '>>>>>o') order by all
|
|
----
|
|
o
|
|
ö
|