You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Backport fix for Bug #30928710 NDB : NDB_RESTORE AUTO_INC SIGNED VALUES BELOW ZERO
Modify ndb_restore behaviour when restoring signed auto-increment
columns, so that it does not incorrectly consider negative values
when determining the maximum value included in the data.
Extend testing in ndb_restore_autoinc and ndb_restore_autoinc_debug
testcases to cover these scenarios.
Approved by : Priyanka Sangam <priyanka.sangam@oracle.com>
Copy file name to clipboardExpand all lines: mysql-test/suite/ndb/r/ndb_restore_autoinc.result
+159-2Lines changed: 159 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -51,9 +51,70 @@ Expect next == 6
51
51
select table_schema, table_name, auto_increment from information_schema.tables where table_schema="test" and table_name="big_varchars";
52
52
table_schema table_name auto_increment
53
53
test big_varchars 6
54
+
create table tinysignedauto (
55
+
a tinyint auto_increment primary key,
56
+
b varchar(2000)
57
+
) engine=ndb;
58
+
create table smallsignedauto (
59
+
a smallint auto_increment primary key,
60
+
b varchar(2000)
61
+
) engine=ndb;
62
+
create table medsignedauto (
63
+
a mediumint auto_increment primary key,
64
+
b varchar(2000)
65
+
) engine=ndb;
66
+
create table intsignedauto (
67
+
a int auto_increment primary key,
68
+
b varchar(2000)
69
+
) engine=ndb;
70
+
create table bigsignedauto (
71
+
a bigint auto_increment primary key,
72
+
b varchar(2000)
73
+
) engine=ndb;
74
+
insert into tinysignedauto(b) values (repeat('ILBJC', 40));
75
+
insert into tinysignedauto(b) values (repeat('ILBJC', 40));
76
+
insert into tinysignedauto(b) values (repeat('ILBJC', 40));
77
+
insert into smallsignedauto(b) values (repeat('ILBJC', 40));
78
+
insert into smallsignedauto(b) values (repeat('ILBJC', 40));
79
+
insert into smallsignedauto(b) values (repeat('ILBJC', 40));
80
+
insert into medsignedauto(b) values (repeat('ILBJC', 40));
81
+
insert into medsignedauto(b) values (repeat('ILBJC', 40));
82
+
insert into medsignedauto(b) values (repeat('ILBJC', 40));
83
+
insert into intsignedauto(b) values (repeat('ILBJC', 40));
84
+
insert into intsignedauto(b) values (repeat('ILBJC', 40));
85
+
insert into intsignedauto(b) values (repeat('ILBJC', 40));
86
+
insert into bigsignedauto(b) values (repeat('ILBJC', 40));
87
+
insert into bigsignedauto(b) values (repeat('ILBJC', 40));
88
+
insert into bigsignedauto(b) values (repeat('ILBJC', 40));
89
+
Expect next == 4
90
+
select table_schema, table_name, auto_increment from information_schema.tables where table_schema="test" and table_name like "%signedauto" order by table_name;
91
+
table_schema table_name auto_increment
92
+
test bigsignedauto 4
93
+
test intsignedauto 4
94
+
test medsignedauto 4
95
+
test smallsignedauto 4
96
+
test tinysignedauto 4
97
+
insert into tinysignedauto values (-100, repeat('IWBJC', 40));
98
+
insert into smallsignedauto values (-100, repeat('IWBJC', 40));
99
+
insert into medsignedauto values (-100, repeat('IWBJC', 40));
100
+
insert into intsignedauto values (-100, repeat('IWBJC', 40));
101
+
insert into bigsignedauto values (-100, repeat('IWBJC', 40));
102
+
Expect next == 4
103
+
select table_schema, table_name, auto_increment from information_schema.tables where table_schema="test" and table_name like "%signedauto" order by table_name;
104
+
table_schema table_name auto_increment
105
+
test bigsignedauto 4
106
+
test intsignedauto 4
107
+
test medsignedauto 4
108
+
test smallsignedauto 4
109
+
test tinysignedauto 4
54
110
----------------------------------------
55
111
2. Take a backup
56
112
----------------------------------------
113
+
drop table bigsignedauto;
114
+
drop table intsignedauto;
115
+
drop table medsignedauto;
116
+
drop table smallsignedauto;
117
+
drop table tinysignedauto;
57
118
drop table big_varchars;
58
119
drop table empty_specific;
59
120
drop table empty_default;
@@ -100,6 +161,27 @@ Expect next == 73
100
161
select table_schema, table_name, auto_increment from information_schema.tables where table_schema="test" and table_name="empty_specific";
101
162
table_schema table_name auto_increment
102
163
test empty_specific 73
164
+
Following unchanged
165
+
create table tinysignedauto (
166
+
a tinyint auto_increment primary key,
167
+
b varchar(2000)
168
+
) engine=ndb;
169
+
create table smallsignedauto (
170
+
a smallint auto_increment primary key,
171
+
b varchar(2000)
172
+
) engine=ndb;
173
+
create table medsignedauto (
174
+
a mediumint auto_increment primary key,
175
+
b varchar(2000)
176
+
) engine=ndb;
177
+
create table intsignedauto (
178
+
a int auto_increment primary key,
179
+
b varchar(2000)
180
+
) engine=ndb;
181
+
create table bigsignedauto (
182
+
a bigint auto_increment primary key,
183
+
b varchar(2000)
184
+
) engine=ndb;
103
185
----------------------------------------
104
186
4. Restore data
105
187
----------------------------------------
@@ -122,6 +204,14 @@ Expect 6
122
204
select table_schema, table_name, auto_increment from information_schema.tables where table_schema="test" and table_name="big_varchars";
123
205
table_schema table_name auto_increment
124
206
test big_varchars 6
207
+
Expect next == 4
208
+
select table_schema, table_name, auto_increment from information_schema.tables where table_schema="test" and table_name like "%signedauto" order by table_name;
209
+
table_schema table_name auto_increment
210
+
test bigsignedauto 4
211
+
test intsignedauto 4
212
+
test medsignedauto 4
213
+
test smallsignedauto 4
214
+
test tinysignedauto 4
125
215
----------------------------------------
126
216
6. Test via inserts
127
217
----------------------------------------
@@ -153,6 +243,27 @@ Expect 6
153
243
select max(a) from big_varchars;
154
244
max(a)
155
245
6
246
+
insert into tinysignedauto (b) values (repeat('IMBJC', 40));
247
+
insert into smallsignedauto (b) values (repeat('IMBJC', 40));
248
+
insert into medsignedauto (b) values (repeat('IMBJC', 40));
249
+
insert into intsignedauto (b) values (repeat('IMBJC', 40));
250
+
insert into bigsignedauto (b) values (repeat('IMBJC', 40));
251
+
Expect 4
252
+
select max(a) from tinysignedauto;
253
+
max(a)
254
+
4
255
+
select max(a) from smallsignedauto;
256
+
max(a)
257
+
4
258
+
select max(a) from medsignedauto;
259
+
max(a)
260
+
4
261
+
select max(a) from intsignedauto;
262
+
max(a)
263
+
4
264
+
select max(a) from bigsignedauto;
265
+
max(a)
266
+
4
156
267
----------------------------------------
157
268
7. Cleanup
158
269
----------------------------------------
@@ -161,6 +272,11 @@ drop table boring_keyless;
161
272
drop table empty_default;
162
273
drop table empty_specific;
163
274
drop table big_varchars;
275
+
drop table bigsignedauto;
276
+
drop table intsignedauto;
277
+
drop table medsignedauto;
278
+
drop table smallsignedauto;
279
+
drop table tinysignedauto;
164
280
drop table filler1, filler2, filler3, filler4;
165
281
drop table filler5, filler6, filler7, filler8;
166
282
----------------------------------------
@@ -182,6 +298,13 @@ test empty_specific 1
182
298
select table_schema, table_name, auto_increment from information_schema.tables where table_schema="test" and table_name="big_varchars";
183
299
table_schema table_name auto_increment
184
300
test big_varchars 1
301
+
select table_schema, table_name, auto_increment from information_schema.tables where table_schema="test" and table_name like "%signedauto" order by table_name;
302
+
table_schema table_name auto_increment
303
+
test bigsignedauto 1
304
+
test intsignedauto 1
305
+
test medsignedauto 1
306
+
test smallsignedauto 1
307
+
test tinysignedauto 1
185
308
----------------------------------------
186
309
10. Restore data
187
310
----------------------------------------
@@ -204,8 +327,16 @@ Expect 6
204
327
select table_schema, table_name, auto_increment from information_schema.tables where table_schema="test" and table_name="big_varchars";
205
328
table_schema table_name auto_increment
206
329
test big_varchars 6
330
+
Expect 4
331
+
select table_schema, table_name, auto_increment from information_schema.tables where table_schema="test" and table_name like "%signedauto" order by table_name;
332
+
table_schema table_name auto_increment
333
+
test bigsignedauto 4
334
+
test intsignedauto 4
335
+
test medsignedauto 4
336
+
test smallsignedauto 4
337
+
test tinysignedauto 4
207
338
----------------------------------------
208
-
6. Test via inserts
339
+
12. Test via inserts
209
340
----------------------------------------
210
341
insert into boring (b) values (99);
211
342
Expect 7
@@ -235,11 +366,37 @@ Expect 6
235
366
select max(a) from big_varchars;
236
367
max(a)
237
368
6
369
+
insert into tinysignedauto (b) values (repeat('IMBJC', 40));
370
+
insert into smallsignedauto (b) values (repeat('IMBJC', 40));
371
+
insert into medsignedauto (b) values (repeat('IMBJC', 40));
372
+
insert into intsignedauto (b) values (repeat('IMBJC', 40));
373
+
insert into bigsignedauto (b) values (repeat('IMBJC', 40));
0 commit comments