forked from MaterializeInc/materialize
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcollatedstring_uniqueindex2.slt
142 lines (123 loc) · 2.46 KB
/
collatedstring_uniqueindex2.slt
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# Copyright 2015 - 2019 The Cockroach Authors. All rights reserved.
# Copyright Materialize, Inc. and contributors. All rights reserved.
#
# Use of this software is governed by the Business Source License
# included in the LICENSE file at the root of this repository.
#
# As of the Change Date specified in that file, in accordance with
# the Business Source License, use of this software will be governed
# by the Apache License, Version 2.0.
#
# This file is derived from the logic test suite in CockroachDB. The
# original file was retrieved on June 10, 2019 from:
#
# https://github.com/cockroachdb/cockroach/blob/d2f7fbf5dd1fc1a099bbad790a2e1f7c60a66cc3/pkg/sql/logictest/testdata/logic_test/collatedstring_uniqueindex2
#
# The original source code is subject to the terms of the Apache
# 2.0 license, a copy of which can be found in the LICENSE file at the
# root of this repository.
# not supported yet
halt
mode cockroach
##
# 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 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 üü