Skip to content

Commit 66015fd

Browse files
maxenglanderarthurschreiber
authored andcommitted
optionally disable verify-after-insert behavior of lookup vindexes (vitessio#11313)
Add a VIndex option to skip verify-after-insert behavior when using INSERT...IGNORE or INSERT...ON DUPLICATE KEY UPDATE. Co-authored-by: Harshit Gangal <[email protected]> Co-authored-by: Jacques Grove <[email protected]> Signed-off-by: Max Englander <[email protected]> Signed-off-by: Max Englander <[email protected]>
1 parent ff422b1 commit 66015fd

File tree

9 files changed

+244
-90
lines changed

9 files changed

+244
-90
lines changed

go/test/endtoend/vtgate/vindex_bindvars/main_test.go

Lines changed: 75 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ var (
4141
id BIGINT NOT NULL,
4242
field BIGINT NOT NULL,
4343
field2 BIGINT,
44+
field3 BIGINT,
4445
PRIMARY KEY (id)
4546
) ENGINE=Innodb;
4647
@@ -56,6 +57,12 @@ CREATE TABLE lookup2 (
5657
UNIQUE KEY (field2)
5758
) ENGINE=Innodb;
5859
60+
CREATE TABLE lookup3 (
61+
field3 BIGINT NOT NULL,
62+
keyspace_id binary(8),
63+
UNIQUE KEY (field3)
64+
) ENGINE=Innodb;
65+
5966
CREATE TABLE thex (
6067
id VARBINARY(64) NOT NULL,
6168
field BIGINT NOT NULL,
@@ -88,7 +95,7 @@ CREATE TABLE thex (
8895
"table": "lookup1",
8996
"from": "field",
9097
"to": "keyspace_id",
91-
"ignore_nulls": "true"
98+
"ignore_nulls": "true"
9299
},
93100
"owner": "t1"
94101
},
@@ -98,7 +105,17 @@ CREATE TABLE thex (
98105
"table": "lookup2",
99106
"from": "field2",
100107
"to": "keyspace_id",
101-
"ignore_nulls": "true"
108+
"ignore_nulls": "true"
109+
},
110+
"owner": "t1"
111+
},
112+
"lookup3": {
113+
"type": "lookup",
114+
"params": {
115+
"from": "field3",
116+
"no_verify": "true",
117+
"table": "lookup3",
118+
"to": "keyspace_id"
102119
},
103120
"owner": "t1"
104121
}
@@ -117,6 +134,10 @@ CREATE TABLE thex (
117134
{
118135
"column": "field2",
119136
"name": "lookup2"
137+
},
138+
{
139+
"column": "field3",
140+
"name": "lookup3"
120141
}
121142
]
122143
},
@@ -136,6 +157,14 @@ CREATE TABLE thex (
136157
}
137158
]
138159
},
160+
"lookup3": {
161+
"column_vindexes": [
162+
{
163+
"column": "field3",
164+
"name": "binary_md5_vdx"
165+
}
166+
]
167+
},
139168
"thex": {
140169
"column_vindexes": [
141170
{
@@ -216,51 +245,51 @@ func TestVindexBindVarOverlap(t *testing.T) {
216245
require.Nil(t, err)
217246
defer conn.Close()
218247

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")
248+
utils.Exec(t, conn, "INSERT INTO t1 (id, field, field2, field3) VALUES "+
249+
"(0,1,2,3), "+
250+
"(1,2,3,4), "+
251+
"(2,3,4,5), "+
252+
"(3,4,5,6), "+
253+
"(4,5,6,7), "+
254+
"(5,6,7,8), "+
255+
"(6,7,8,9), "+
256+
"(7,8,9,10), "+
257+
"(8,9,10,11), "+
258+
"(9,10,11,12), "+
259+
"(10,11,12,13), "+
260+
"(11,12,13,14), "+
261+
"(12,13,14,15), "+
262+
"(13,14,15,16), "+
263+
"(14,15,16,17), "+
264+
"(15,16,17,18), "+
265+
"(16,17,18,19), "+
266+
"(17,18,19,20), "+
267+
"(18,19,20,21), "+
268+
"(19,20,21,22), "+
269+
"(20,21,22,23)")
270+
result := utils.Exec(t, conn, "select id, field, field2, field3 from t1 order by id")
242271

243272
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)]]"
273+
"[[INT64(0) INT64(1) INT64(2) INT64(3)] " +
274+
"[INT64(1) INT64(2) INT64(3) INT64(4)] " +
275+
"[INT64(2) INT64(3) INT64(4) INT64(5)] " +
276+
"[INT64(3) INT64(4) INT64(5) INT64(6)] " +
277+
"[INT64(4) INT64(5) INT64(6) INT64(7)] " +
278+
"[INT64(5) INT64(6) INT64(7) INT64(8)] " +
279+
"[INT64(6) INT64(7) INT64(8) INT64(9)] " +
280+
"[INT64(7) INT64(8) INT64(9) INT64(10)] " +
281+
"[INT64(8) INT64(9) INT64(10) INT64(11)] " +
282+
"[INT64(9) INT64(10) INT64(11) INT64(12)] " +
283+
"[INT64(10) INT64(11) INT64(12) INT64(13)] " +
284+
"[INT64(11) INT64(12) INT64(13) INT64(14)] " +
285+
"[INT64(12) INT64(13) INT64(14) INT64(15)] " +
286+
"[INT64(13) INT64(14) INT64(15) INT64(16)] " +
287+
"[INT64(14) INT64(15) INT64(16) INT64(17)] " +
288+
"[INT64(15) INT64(16) INT64(17) INT64(18)] " +
289+
"[INT64(16) INT64(17) INT64(18) INT64(19)] " +
290+
"[INT64(17) INT64(18) INT64(19) INT64(20)] " +
291+
"[INT64(18) INT64(19) INT64(20) INT64(21)] " +
292+
"[INT64(19) INT64(20) INT64(21) INT64(22)] " +
293+
"[INT64(20) INT64(21) INT64(22) INT64(23)]]"
265294
assert.Equal(t, expected, fmt.Sprintf("%v", result.Rows))
266295
}

go/vt/vtexplain/testdata/test-schema.sql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,9 @@ CREATE TABLE orders_id_lookup (
111111
keyspace_id varbinary(128),
112112
primary key(id)
113113
);
114+
115+
CREATE TABLE orders_id_lookup_no_verify (
116+
id int NOT NULL,
117+
keyspace_id varbinary(128),
118+
primary key(id)
119+
);

go/vt/vtexplain/testdata/test-vschema.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@
1919
},
2020
"owner": "orders"
2121
},
22+
"orders_id_vdx_no_verify": {
23+
"type": "lookup_unique",
24+
"params": {
25+
"table": "orders_id_lookup_no_verify",
26+
"from": "id",
27+
"to": "keyspace_id",
28+
"no_verify": "true"
29+
},
30+
"owner": "orders"
31+
},
2232
"music_user_map": {
2333
"type": "lookup_hash_unique",
2434
"owner": "music",
@@ -165,6 +175,14 @@
165175
}
166176
]
167177
},
178+
"orders_id_lookup_no_verify": {
179+
"column_vindexes": [
180+
{
181+
"column": "id",
182+
"name": "hash"
183+
}
184+
]
185+
},
168186
"email_customer_map": {
169187
"column_vindexes": [
170188
{

0 commit comments

Comments
 (0)