1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
# name: test/sql/window/test_window_order_collate.test
# description: Test collation is honoured by over(partition/order by)
# group: [window]
statement ok
PRAGMA enable_verification
query III rowsort
select
*,
array_agg(col) over(partition by id order by col collate nocase) as lead_col_nocase
from (
select
unnest(array[1, 1, 1, 1]) as id,
unnest(array['A', 'a', 'b', 'B']) as col
)
----
1 A [A, a]
1 B [A, a, b, B]
1 a [A, a]
1 b [A, a, b, B]
statement ok
CREATE TABLE db_city (name VARCHAR, city VARCHAR COLLATE NOCASE);
statement ok
INSERT INTO db_city VALUES
('DuckDB', 'Amsterdam'),
('MonetDB','amsterdam'),
('VectorWise', 'Amstërdam');
query III rowsort
SELECT name, city, row_number() OVER (PARTITION BY city) AS row_id
FROM db_city;
----
DuckDB Amsterdam 1
MonetDB amsterdam 2
VectorWise Amstërdam 1
query III rowsort
SELECT name, city, row_number() OVER (PARTITION BY city COLLATE NOCASE) AS row_id
FROM db_city;
----
DuckDB Amsterdam 1
MonetDB amsterdam 2
VectorWise Amstërdam 1
# Window operators are also created by EXCEPT set operations
# and need to honour collation correctly
statement ok
CREATE TABLE t86
(
c0 VARCHAR COLLATE NOCASE NOT NULL
);
statement ok
CREATE TABLE t0
(
c0 BOOLEAN UNIQUE NOT NULL,
PRIMARY KEY (c0)
);
statement ok
INSERT INTO t0(c0) VALUES (true);
statement ok
INSERT INTO t86(c0) VALUES (''), ('cOB4');
query II
(SELECT t86.c0, t0.c0 FROM t0, t86) EXCEPT ALL (
SELECT i,i FROM range(0, 4) r(i)
);
----
(empty) 1
cOB4 1
|