# LogicTest: local local-opt local-parallel-stmts fakedist fakedist-opt fakedist-metadata fakedist-disk

##
# Test a primary key with a collated string in second position (cannot get a key range).
#
# German collation chart: http://www.unicode.org/cldr/charts/30/collation/de.html

statement ok
CREATE TABLE t (
  a STRING COLLATE de,
  b INT,
  c BOOL,
  PRIMARY KEY (b, a)
)

statement ok
INSERT INTO t VALUES
  ('A' COLLATE de, 1, TRUE),
  ('A' COLLATE de, 2, NULL),
  ('a' COLLATE de, 2, FALSE),
  ('a' COLLATE de, 3, TRUE),
  ('B' COLLATE de, 3, NULL),
  ('b' COLLATE de, 4, FALSE),
  ('ü' COLLATE de, 6, TRUE),
  ('ü' COLLATE de, 5, NULL),
  ('x' COLLATE de, 5, FALSE)

query TI
SELECT a, b FROM t ORDER BY a, b
----
a  2
a  3
A  1
A  2
b  4
B  3
ü  5
ü  6
x  5

query IT
SELECT b, a FROM t ORDER BY b, a
----
1  A
2  a
2  A
3  a
3  B
4  b
5  ü
5  x
6  ü

query I
SELECT COUNT (a) FROM t WHERE a = ('a' COLLATE de)
----
2

query I
SELECT COUNT (a) FROM t WHERE a = ('y' COLLATE de)
----
0

query I
SELECT COUNT (a) FROM t WHERE a > ('a' COLLATE de) AND a < ('c' COLLATE de)
----
4

# Create an index and try again.

statement ok
CREATE INDEX ON t (a, b) STORING (c)

query TI
SELECT a, b FROM t ORDER BY a, b
----
a  2
a  3
A  1
A  2
b  4
B  3
ü  5
ü  6
x  5

query IT
SELECT b, a FROM t ORDER BY b, a
----
1  A
2  a
2  A
3  a
3  B
4  b
5  ü
5  x
6  ü

query I
SELECT COUNT (a) FROM t WHERE a = ('a' COLLATE de)
----
2

query I
SELECT COUNT (a) FROM t WHERE a = ('y' COLLATE de)
----
0

query I
SELECT COUNT (a) FROM t WHERE a > ('a' COLLATE de) AND a < ('c' COLLATE de)
----
4

# Update and try again.

statement ok
UPDATE t SET a = (a :: STRING || a :: STRING) COLLATE de

query TI
SELECT a, b FROM t ORDER BY a, b
----
aa  2
aa  3
AA  1
AA  2
bb  4
BB  3
üü  5
üü  6
xx  5

query IT
SELECT b, a FROM t ORDER BY b, a
----
1  AA
2  aa
2  AA
3  aa
3  BB
4  bb
5  üü
5  xx
6  üü

# Delete and try again

statement ok
DELETE FROM t WHERE a > ('a' COLLATE de) AND a < ('c' COLLATE de)

query TI
SELECT a, b FROM t ORDER BY a, b
----
üü  5
üü  6
xx  5

query IT
SELECT b, a FROM t ORDER BY b, a
----
5  üü
5  xx
6  üü
