41
41
id BIGINT NOT NULL,
42
42
field BIGINT NOT NULL,
43
43
field2 BIGINT,
44
+ field3 BIGINT,
45
+ field4 BIGINT,
46
+ field5 BIGINT,
47
+ field6 BIGINT,
44
48
PRIMARY KEY (id)
45
49
) ENGINE=Innodb;
46
50
@@ -56,6 +60,30 @@ CREATE TABLE lookup2 (
56
60
UNIQUE KEY (field2)
57
61
) ENGINE=Innodb;
58
62
63
+ CREATE TABLE lookup3 (
64
+ field3 BIGINT NOT NULL,
65
+ keyspace_id binary(8),
66
+ UNIQUE KEY (field3)
67
+ ) ENGINE=Innodb;
68
+
69
+ CREATE TABLE lookup4 (
70
+ field4 BIGINT NOT NULL,
71
+ keyspace_id binary(8),
72
+ UNIQUE KEY (field4)
73
+ ) ENGINE=Innodb;
74
+
75
+ CREATE TABLE lookup5 (
76
+ field5 BIGINT NOT NULL,
77
+ keyspace_id binary(8),
78
+ UNIQUE KEY (field5)
79
+ ) ENGINE=Innodb;
80
+
81
+ CREATE TABLE lookup6 (
82
+ field6 BIGINT NOT NULL,
83
+ keyspace_id binary(8),
84
+ UNIQUE KEY (field6)
85
+ ) ENGINE=Innodb;
86
+
59
87
CREATE TABLE thex (
60
88
id VARBINARY(64) NOT NULL,
61
89
field BIGINT NOT NULL,
@@ -88,7 +116,7 @@ CREATE TABLE thex (
88
116
"table": "lookup1",
89
117
"from": "field",
90
118
"to": "keyspace_id",
91
- "ignore_nulls": "true"
119
+ "ignore_nulls": "true"
92
120
},
93
121
"owner": "t1"
94
122
},
@@ -98,7 +126,47 @@ CREATE TABLE thex (
98
126
"table": "lookup2",
99
127
"from": "field2",
100
128
"to": "keyspace_id",
101
- "ignore_nulls": "true"
129
+ "ignore_nulls": "true"
130
+ },
131
+ "owner": "t1"
132
+ },
133
+ "lookup3": {
134
+ "type": "lookup",
135
+ "params": {
136
+ "from": "field3",
137
+ "no_verify": "true",
138
+ "table": "lookup3",
139
+ "to": "keyspace_id"
140
+ },
141
+ "owner": "t1"
142
+ },
143
+ "lookup4": {
144
+ "type": "lookup",
145
+ "params": {
146
+ "from": "field4",
147
+ "read_lock": "exclusive",
148
+ "table": "lookup4",
149
+ "to": "keyspace_id"
150
+ },
151
+ "owner": "t1"
152
+ },
153
+ "lookup5": {
154
+ "type": "lookup",
155
+ "params": {
156
+ "from": "field5",
157
+ "read_lock": "shared",
158
+ "table": "lookup5",
159
+ "to": "keyspace_id"
160
+ },
161
+ "owner": "t1"
162
+ },
163
+ "lookup6": {
164
+ "type": "lookup",
165
+ "params": {
166
+ "from": "field6",
167
+ "read_lock": "none",
168
+ "table": "lookup6",
169
+ "to": "keyspace_id"
102
170
},
103
171
"owner": "t1"
104
172
}
@@ -117,6 +185,22 @@ CREATE TABLE thex (
117
185
{
118
186
"column": "field2",
119
187
"name": "lookup2"
188
+ },
189
+ {
190
+ "column": "field3",
191
+ "name": "lookup3"
192
+ },
193
+ {
194
+ "column": "field4",
195
+ "name": "lookup4"
196
+ },
197
+ {
198
+ "column": "field5",
199
+ "name": "lookup5"
200
+ },
201
+ {
202
+ "column": "field6",
203
+ "name": "lookup6"
120
204
}
121
205
]
122
206
},
@@ -136,6 +220,38 @@ CREATE TABLE thex (
136
220
}
137
221
]
138
222
},
223
+ "lookup3": {
224
+ "column_vindexes": [
225
+ {
226
+ "column": "field3",
227
+ "name": "binary_md5_vdx"
228
+ }
229
+ ]
230
+ },
231
+ "lookup4": {
232
+ "column_vindexes": [
233
+ {
234
+ "column": "field4",
235
+ "name": "binary_md5_vdx"
236
+ }
237
+ ]
238
+ },
239
+ "lookup5": {
240
+ "column_vindexes": [
241
+ {
242
+ "column": "field5",
243
+ "name": "binary_md5_vdx"
244
+ }
245
+ ]
246
+ },
247
+ "lookup6": {
248
+ "column_vindexes": [
249
+ {
250
+ "column": "field6",
251
+ "name": "binary_md5_vdx"
252
+ }
253
+ ]
254
+ },
139
255
"thex": {
140
256
"column_vindexes": [
141
257
{
@@ -216,51 +332,51 @@ func TestVindexBindVarOverlap(t *testing.T) {
216
332
require .Nil (t , err )
217
333
defer conn .Close ()
218
334
219
- utils .Exec (t , conn , "INSERT INTO t1 (id, field, field2) VALUES " +
220
- "(0,1,2), " +
221
- "(1,2,3), " +
222
- "(2,3,4), " +
223
- "(3,4,5), " +
224
- "(4,5,6), " +
225
- "(5,6,7), " +
226
- "(6,7,8), " +
227
- "(7,8,9), " +
228
- "(8,9,10), " +
229
- "(9,10,11), " +
230
- "(10,11,12), " +
231
- "(11,12,13), " +
232
- "(12,13,14), " +
233
- "(13,14,15), " +
234
- "(14,15,16), " +
235
- "(15,16,17), " +
236
- "(16,17,18), " +
237
- "(17,18,19), " +
238
- "(18,19,20), " +
239
- "(19,20,21), " +
240
- "(20,21,22)" )
241
- result := utils .Exec (t , conn , "select id, field, field2 from t1 order by id" )
335
+ utils .Exec (t , conn , "INSERT INTO t1 (id, field, field2, field3, field4, field5, field6 ) VALUES " +
336
+ "(0,1,2,3,4,5,6 ), " +
337
+ "(1,2,3,4,5,6,7 ), " +
338
+ "(2,3,4,5,6,7,8 ), " +
339
+ "(3,4,5,6,7,8,9 ), " +
340
+ "(4,5,6,7,8,9,10 ), " +
341
+ "(5,6,7,8,9,10,11 ), " +
342
+ "(6,7,8,9,10,11,12 ), " +
343
+ "(7,8,9,10,11,12,13 ), " +
344
+ "(8,9,10,11,12,13,14 ), " +
345
+ "(9,10,11,12,13,14,15 ), " +
346
+ "(10,11,12,13,14,15,16 ), " +
347
+ "(11,12,13,14,15,16,17 ), " +
348
+ "(12,13,14,15,16,17,18 ), " +
349
+ "(13,14,15,16,17,18,19 ), " +
350
+ "(14,15,16,17,18,19,20 ), " +
351
+ "(15,16,17,18,19,20,21 ), " +
352
+ "(16,17,18,19,20,21,22 ), " +
353
+ "(17,18,19,20,21,22,23 ), " +
354
+ "(18,19,20,21,22,23,24 ), " +
355
+ "(19,20,21,22,23,24,25 ), " +
356
+ "(20,21,22,23,24,25,26 )" )
357
+ result := utils .Exec (t , conn , "select id, field, field2, field3, field4, field5, field6 from t1 order by id" )
242
358
243
359
expected :=
244
- "[[INT64(0) INT64(1) INT64(2)] " +
245
- "[INT64(1) INT64(2) INT64(3)] " +
246
- "[INT64(2) INT64(3) INT64(4)] " +
247
- "[INT64(3) INT64(4) INT64(5)] " +
248
- "[INT64(4) INT64(5) INT64(6)] " +
249
- "[INT64(5) INT64(6) INT64(7)] " +
250
- "[INT64(6) INT64(7) INT64(8)] " +
251
- "[INT64(7) INT64(8) INT64(9)] " +
252
- "[INT64(8) INT64(9) INT64(10)] " +
253
- "[INT64(9) INT64(10) INT64(11)] " +
254
- "[INT64(10) INT64(11) INT64(12)] " +
255
- "[INT64(11) INT64(12) INT64(13)] " +
256
- "[INT64(12) INT64(13) INT64(14)] " +
257
- "[INT64(13) INT64(14) INT64(15)] " +
258
- "[INT64(14) INT64(15) INT64(16)] " +
259
- "[INT64(15) INT64(16) INT64(17)] " +
260
- "[INT64(16) INT64(17) INT64(18)] " +
261
- "[INT64(17) INT64(18) INT64(19)] " +
262
- "[INT64(18) INT64(19) INT64(20)] " +
263
- "[INT64(19) INT64(20) INT64(21)] " +
264
- "[INT64(20) INT64(21) INT64(22)]]"
360
+ "[[INT64(0) INT64(1) INT64(2) INT64(3) INT64(4) INT64(5) INT64(6) ] " +
361
+ "[INT64(1) INT64(2) INT64(3) INT64(4) INT64(5) INT64(6) INT64(7) ] " +
362
+ "[INT64(2) INT64(3) INT64(4) INT64(5) INT64(6) INT64(7) INT64(8) ] " +
363
+ "[INT64(3) INT64(4) INT64(5) INT64(6) INT64(7) INT64(8) INT64(9) ] " +
364
+ "[INT64(4) INT64(5) INT64(6) INT64(7) INT64(8) INT64(9) INT64(10) ] " +
365
+ "[INT64(5) INT64(6) INT64(7) INT64(8) INT64(9) INT64(10) INT64(11) ] " +
366
+ "[INT64(6) INT64(7) INT64(8) INT64(9) INT64(10) INT64(11) INT64(12) ] " +
367
+ "[INT64(7) INT64(8) INT64(9) INT64(10) INT64(11) INT64(12) INT64(13) ] " +
368
+ "[INT64(8) INT64(9) INT64(10) INT64(11) INT64(12) INT64(13) INT64(14) ] " +
369
+ "[INT64(9) INT64(10) INT64(11) INT64(12) INT64(13) INT64(14) INT64(15) ] " +
370
+ "[INT64(10) INT64(11) INT64(12) INT64(13) INT64(14) INT64(15) INT64(16) ] " +
371
+ "[INT64(11) INT64(12) INT64(13) INT64(14) INT64(15) INT64(16) INT64(17) ] " +
372
+ "[INT64(12) INT64(13) INT64(14) INT64(15) INT64(16) INT64(17) INT64(18) ] " +
373
+ "[INT64(13) INT64(14) INT64(15) INT64(16) INT64(17) INT64(18) INT64(19) ] " +
374
+ "[INT64(14) INT64(15) INT64(16) INT64(17) INT64(18) INT64(19) INT64(20) ] " +
375
+ "[INT64(15) INT64(16) INT64(17) INT64(18) INT64(19) INT64(20) INT64(21) ] " +
376
+ "[INT64(16) INT64(17) INT64(18) INT64(19) INT64(20) INT64(21) INT64(22) ] " +
377
+ "[INT64(17) INT64(18) INT64(19) INT64(20) INT64(21) INT64(22) INT64(23) ] " +
378
+ "[INT64(18) INT64(19) INT64(20) INT64(21) INT64(22) INT64(23) INT64(24) ] " +
379
+ "[INT64(19) INT64(20) INT64(21) INT64(22) INT64(23) INT64(24) INT64(25) ] " +
380
+ "[INT64(20) INT64(21) INT64(22) INT64(23) INT64(24) INT64(25) INT64(26) ]]"
265
381
assert .Equal (t , expected , fmt .Sprintf ("%v" , result .Rows ))
266
382
}
0 commit comments