# LogicTest: default parallel-stmts distsql

##
# 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)

statement ok
CREATE UNIQUE INDEX ON t (a, b)

query ITTT
EXPLAIN SELECT a, b FROM t ORDER BY a, b
----
0  render
1  scan
1          table  t@t_a_b_key
1          spans  ALL

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 ITTT
EXPLAIN SELECT b, a FROM t ORDER BY b, a
----
0  render
1  scan
1          table  t@primary
1          spans  ALL

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 ITTT
EXPLAIN SELECT a, b FROM t ORDER BY a, b
----
0  render
1  scan
1          table  t@t_a_b_key
1          spans  ALL

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 ITTT
EXPLAIN SELECT b, a FROM t ORDER BY b, a
----
0  render
1  scan
1          table  t@primary
1          spans  ALL

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 ITTT
EXPLAIN SELECT a, b FROM t ORDER BY a, b
----
0  render
1  scan
1          table  t@t_a_b_key
1          spans  ALL

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

query ITTT
EXPLAIN SELECT b, a FROM t ORDER BY b, a
----
0  render
1  scan
1          table  t@primary
1          spans  ALL

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