@@ -150,3 +150,150 @@ unique_constraint_name
150
150
PRIMARY
151
151
DROP TABLE t2;
152
152
DROP TABLE t1;
153
+ #
154
+ # Bug#33053297 VIRTUAL INDEX CORRUPTED DURING CASCADE UPDATE ON CHILD TABLE
155
+ #
156
+ #Test-Case 1
157
+ CREATE TABLE `emails` (
158
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
159
+ PRIMARY KEY (`id`)
160
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
161
+ ROW_FORMAT=DYNAMIC;
162
+ CREATE TABLE `email_stats` (
163
+ `id` bigint unsigned NOT NULL AUTO_INCREMENT,
164
+ `email_id` int unsigned DEFAULT NULL,
165
+ `date_sent` datetime NOT NULL,
166
+ `generated_sent_date` date GENERATED ALWAYS AS
167
+ (concat(year(`date_sent`),'-',lpad(month(`date_sent`),2,'0'),
168
+ '-',lpad(dayofmonth(`date_sent`),2,'0'))) VIRTUAL,
169
+ PRIMARY KEY (`id`),
170
+ KEY `IDX_ES1` (`email_id`),
171
+ KEY `mautic_generated_sent_date_email_id`
172
+ (`generated_sent_date`,`email_id`),
173
+ CONSTRAINT `FK_EA1` FOREIGN KEY (`email_id`) REFERENCES
174
+ `emails` (`id`) ON DELETE SET NULL
175
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
176
+ ROW_FORMAT=DYNAMIC;
177
+ INSERT INTO `emails` VALUES (1);
178
+ INSERT INTO `email_stats` (`id`, `email_id`, `date_sent`) VALUES
179
+ (1,1,'2020-10-22 13:32:41');
180
+ SELECT * FROM `email_stats`;
181
+ id email_id date_sent generated_sent_date
182
+ 1 1 2020-10-22 13:32:41 2020-10-22
183
+ DELETE FROM `emails`;
184
+ DELETE FROM `email_stats`;
185
+ DROP TABLE `email_stats`;
186
+ DROP TABLE `emails`;
187
+ # Test-Case 2
188
+ CREATE TABLE `emails` (
189
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
190
+ PRIMARY KEY (`id`)
191
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
192
+ ROW_FORMAT=DYNAMIC;
193
+ CREATE TABLE `email_stats` (
194
+ `id` bigint unsigned NOT NULL AUTO_INCREMENT,
195
+ `email_id` int unsigned DEFAULT NULL,
196
+ `date_sent` datetime NOT NULL,
197
+ `generated_sent_date` date GENERATED ALWAYS AS
198
+ (concat(year(`date_sent`),'-',lpad(month(`date_sent`),2,'0'),
199
+ '-',lpad(dayofmonth(`date_sent`),2,'0'))) VIRTUAL,
200
+ PRIMARY KEY (`id`),
201
+ KEY `IDX_ES1` (`email_id`),
202
+ KEY `mautic_generated_sent_date_email_id`
203
+ (`generated_sent_date`,`email_id`),
204
+ CONSTRAINT `FK_EA1` FOREIGN KEY (`email_id`) REFERENCES
205
+ `emails` (`id`) ON DELETE SET NULL ON UPDATE SET NULL
206
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
207
+ ROW_FORMAT=DYNAMIC;
208
+ INSERT INTO `emails` VALUES (1);
209
+ INSERT INTO `email_stats` (`id`, `email_id`, `date_sent`) VALUES
210
+ (1,1,'2020-10-22 13:32:41');
211
+ UPDATE `emails` SET `id` = 2 where `id` = 1;
212
+ SELECT id FROM `email_stats` WHERE `generated_sent_date` IS NULL;
213
+ id
214
+ SELECT * FROM `email_stats`;
215
+ id email_id date_sent generated_sent_date
216
+ 1 NULL 2020-10-22 13:32:41 2020-10-22
217
+ UPDATE `email_stats` SET `email_id`=2
218
+ WHERE DATE(`generated_sent_date`) = '2020-10-22';
219
+ SELECT * FROM `email_stats`;
220
+ id email_id date_sent generated_sent_date
221
+ 1 2 2020-10-22 13:32:41 2020-10-22
222
+ DROP TABLE `email_stats`;
223
+ DROP TABLE `emails`;
224
+ # test-case 3
225
+ CREATE TABLE `emails` (
226
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
227
+ PRIMARY KEY (`id`)
228
+ ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
229
+ ROW_FORMAT=DYNAMIC;
230
+ CREATE TABLE `email_stats` (
231
+ `id` bigint unsigned NOT NULL AUTO_INCREMENT,
232
+ `email_id` int unsigned DEFAULT NULL,
233
+ `date_sent` datetime NOT NULL,
234
+ `generated_sent_email` varchar(20) GENERATED ALWAYS AS
235
+ (CONCAT(YEAR(`date_sent`),'-', COALESCE(`email_id`, ' '))) VIRTUAL,
236
+ PRIMARY KEY (`id`),
237
+ KEY `idx_es1` (`email_id`),
238
+ KEY `mautic_generated_sent_date_email`
239
+ (`generated_sent_email`,`email_id`),
240
+ CONSTRAINT `fk_ea1` FOREIGN KEY (`email_id`) REFERENCES
241
+ `emails` (`id`) ON DELETE SET NULL
242
+ ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
243
+ ROW_FORMAT=DYNAMIC;
244
+ INSERT INTO `emails` VALUES (1);
245
+ INSERT INTO `email_stats` (`id`, `email_id`, `date_sent`) VALUES
246
+ (1,1,'2020-10-22 13:32:41');
247
+ SELECT * FROM `email_stats`;
248
+ id email_id date_sent generated_sent_email
249
+ 1 1 2020-10-22 13:32:41 2020-1
250
+ SELECT `date_sent` FROM `email_stats` WHERE `generated_sent_email` = '2020-1';
251
+ date_sent
252
+ 2020-10-22 13:32:41
253
+ DELETE FROM `emails`;
254
+ SELECT * FROM `email_stats`;
255
+ id email_id date_sent generated_sent_email
256
+ 1 NULL 2020-10-22 13:32:41 2020-
257
+ SELECT `date_sent` FROM `email_stats` WHERE `generated_sent_email` = '2020-';
258
+ date_sent
259
+ 2020-10-22 13:32:41
260
+ DROP TABLE `email_stats`;
261
+ DROP TABLE `emails`;
262
+ # test-case 4
263
+ CREATE TABLE `emails` (
264
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
265
+ PRIMARY KEY (`id`)
266
+ ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
267
+ ROW_FORMAT=DYNAMIC;
268
+ CREATE TABLE `email_stats` (
269
+ `id` bigint unsigned NOT NULL AUTO_INCREMENT,
270
+ `email_id` int unsigned DEFAULT NULL,
271
+ `date_sent` datetime NOT NULL,
272
+ `generated_sent_email` varchar(20) GENERATED ALWAYS AS
273
+ (CONCAT(YEAR(`date_sent`),'-', COALESCE(`email_id`, ' '))) VIRTUAL,
274
+ PRIMARY KEY (`id`),
275
+ KEY `idx_es1` (`email_id`),
276
+ KEY `mautic_generated_sent_date_email`
277
+ (`generated_sent_email`,`email_id`),
278
+ CONSTRAINT `fk_ea1` FOREIGN KEY (`email_id`) REFERENCES
279
+ `emails` (`id`) ON UPDATE SET NULL
280
+ ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
281
+ ROW_FORMAT=DYNAMIC;
282
+ INSERT INTO `emails` VALUES (1);
283
+ INSERT INTO `email_stats` (`id`, `email_id`, `date_sent`) VALUES
284
+ (1,1,'2020-10-22 13:32:41');
285
+ SELECT * FROM `email_stats`;
286
+ id email_id date_sent generated_sent_email
287
+ 1 1 2020-10-22 13:32:41 2020-1
288
+ SELECT `date_sent` FROM `email_stats` WHERE `generated_sent_email` = '2020-1';
289
+ date_sent
290
+ 2020-10-22 13:32:41
291
+ UPDATE `emails` SET `id` = 2 WHERE `id` = 1;
292
+ SELECT * FROM `email_stats`;
293
+ id email_id date_sent generated_sent_email
294
+ 1 NULL 2020-10-22 13:32:41 2020-
295
+ SELECT `date_sent` FROM `email_stats` WHERE `generated_sent_email` = '2020-';
296
+ date_sent
297
+ 2020-10-22 13:32:41
298
+ DROP TABLE `email_stats`;
299
+ DROP TABLE `emails`;
0 commit comments