@@ -18,15 +18,12 @@ ddl_log_file_alter_table 0
18
18
SET DEBUG_SYNC = 'RESET';
19
19
SET DEBUG_SYNC = 'write_row_noreplace SIGNAL have_handle WAIT_FOR go_ahead';
20
20
INSERT INTO t1 VALUES(1,2,3);
21
- # Establish session con1 (user=root)
22
21
connect con1,localhost,root,,;
23
- connection con1;
24
22
SET DEBUG_SYNC = 'now WAIT_FOR have_handle';
25
23
SET lock_wait_timeout = 1;
26
24
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
27
25
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
28
26
SET DEBUG_SYNC = 'now SIGNAL go_ahead';
29
- # session default
30
27
connection default;
31
28
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
32
29
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
@@ -37,7 +34,6 @@ ddl_online_create_index 0
37
34
ddl_pending_alter_table 0
38
35
ddl_sort_file_alter_table 0
39
36
ddl_log_file_alter_table 0
40
- # session con1
41
37
connection con1;
42
38
SET @saved_debug_dbug = @@SESSION.debug_dbug;
43
39
SET DEBUG_DBUG = '+d,innodb_OOM_prepare_inplace_alter';
@@ -55,7 +51,6 @@ SET SESSION DEBUG = @saved_debug_dbug;
55
51
Warnings:
56
52
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
57
53
ALTER TABLE t1 ROW_FORMAT=REDUNDANT, ALGORITHM=INPLACE, LOCK=NONE;
58
- # session default
59
54
connection default;
60
55
SHOW CREATE TABLE t1;
61
56
Table Create Table
@@ -67,22 +62,17 @@ t1 CREATE TABLE `t1` (
67
62
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=REDUNDANT
68
63
BEGIN;
69
64
INSERT INTO t1 VALUES(7,4,2);
70
- # session con1
71
65
connection con1;
72
66
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL scanned WAIT_FOR insert_done';
73
67
ALTER TABLE t1 DROP PRIMARY KEY, ADD UNIQUE INDEX(c2);
74
68
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
75
- # session default
76
69
connection default;
77
70
COMMIT;
78
- # session con1
79
71
connection con1;
80
72
ALTER TABLE t1 DROP PRIMARY KEY, ADD UNIQUE INDEX(c2);
81
73
ERROR 23000: Duplicate entry '4' for key 'c2'
82
- # session default
83
74
connection default;
84
75
DELETE FROM t1 WHERE c1 = 7;
85
- # session con1
86
76
connection con1;
87
77
ALTER TABLE t1 DROP PRIMARY KEY, ADD UNIQUE INDEX(c2), ROW_FORMAT=COMPACT,
88
78
LOCK = SHARED, ALGORITHM = INPLACE;
@@ -100,7 +90,6 @@ t1 CREATE TABLE `t1` (
100
90
UNIQUE KEY `c2_2` (`c2`)
101
91
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=COMPACT
102
92
ALTER TABLE t1 DROP INDEX c2, ADD PRIMARY KEY(c1);
103
- # session default
104
93
connection default;
105
94
SET DEBUG_SYNC = 'now WAIT_FOR scanned';
106
95
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
@@ -114,13 +103,10 @@ ddl_log_file_alter_table 0
114
103
BEGIN;
115
104
INSERT INTO t1 VALUES(4,7,2);
116
105
SET DEBUG_SYNC = 'now SIGNAL insert_done';
117
- # session con1
118
106
connection con1;
119
107
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
120
- # session default
121
108
connection default;
122
109
ROLLBACK;
123
- # session con1
124
110
connection con1;
125
111
SHOW CREATE TABLE t1;
126
112
Table Create Table
@@ -142,7 +128,6 @@ ddl_online_create_index 0
142
128
ddl_pending_alter_table 0
143
129
ddl_sort_file_alter_table 0
144
130
ddl_log_file_alter_table 0
145
- # session default
146
131
connection default;
147
132
INSERT INTO t1 VALUES(6,3,1);
148
133
ERROR 23000: Duplicate entry '3' for key 'c2_2'
@@ -152,14 +137,12 @@ DROP INDEX c2_2 ON t1;
152
137
BEGIN;
153
138
INSERT INTO t1 VALUES(7,4,2);
154
139
ROLLBACK;
155
- # session con1
156
140
connection con1;
157
141
KILL QUERY @id;
158
142
ERROR 70100: Query execution was interrupted
159
143
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL rebuilt WAIT_FOR dml_done';
160
144
SET DEBUG_SYNC = 'row_log_table_apply2_before SIGNAL applied WAIT_FOR kill_done';
161
145
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
162
- # session default
163
146
connection default;
164
147
SET DEBUG_SYNC = 'now WAIT_FOR rebuilt';
165
148
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
@@ -176,7 +159,6 @@ ROLLBACK;
176
159
SET DEBUG_SYNC = 'now SIGNAL dml_done WAIT_FOR applied';
177
160
KILL QUERY @id;
178
161
SET DEBUG_SYNC = 'now SIGNAL kill_done';
179
- # session con1
180
162
connection con1;
181
163
ERROR 70100: Query execution was interrupted
182
164
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
@@ -187,7 +169,6 @@ ddl_online_create_index 0
187
169
ddl_pending_alter_table 0
188
170
ddl_sort_file_alter_table 0
189
171
ddl_log_file_alter_table 0
190
- # session default
191
172
connection default;
192
173
CHECK TABLE t1;
193
174
Table Op Msg_type Msg_text
@@ -212,7 +193,6 @@ WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
212
193
SET @rowlog_encrypt_0=
213
194
(SELECT variable_value FROM information_schema.global_status
214
195
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
215
- # session con1
216
196
connection con1;
217
197
SHOW CREATE TABLE t1;
218
198
Table Create Table
@@ -227,7 +207,6 @@ SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL rebuilt2 WAIT_FOR dml2_done
227
207
SET lock_wait_timeout = 10;
228
208
ALTER TABLE t1 ROW_FORMAT=COMPACT
229
209
PAGE_COMPRESSED = YES PAGE_COMPRESSION_LEVEL = 1, ALGORITHM = INPLACE;
230
- # session default
231
210
connection default;
232
211
INSERT INTO t1 SELECT 80 + c1, c2, c3 FROM t1;
233
212
INSERT INTO t1 SELECT 160 + c1, c2, c3 FROM t1;
@@ -290,7 +269,6 @@ SELECT
290
269
sort_balance @merge_encrypt_1>@merge_encrypt_0 @merge_decrypt_1>@merge_decrypt_0 @rowlog_encrypt_1>@rowlog_encrypt_0
291
270
0 0 0 0
292
271
SET DEBUG_SYNC = 'now SIGNAL dml2_done';
293
- # session con1
294
272
connection con1;
295
273
ERROR HY000: Creating index 'PRIMARY' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again
296
274
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
@@ -321,7 +299,6 @@ ERROR 23000: Duplicate entry '5' for key 'PRIMARY'
321
299
ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(c22f,c1,c4(5)),
322
300
CHANGE c2 c22f INT, CHANGE c3 c3 CHAR(255) NULL, CHANGE c1 c1 INT AFTER c22f,
323
301
ADD COLUMN c4 VARCHAR(6) DEFAULT 'Online', LOCK=NONE;
324
- # session default
325
302
connection default;
326
303
SET DEBUG_SYNC = 'now WAIT_FOR rebuilt3';
327
304
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
@@ -349,7 +326,6 @@ ddl_pending_alter_table 1
349
326
ddl_sort_file_alter_table 2
350
327
ddl_log_file_alter_table 2
351
328
SET DEBUG_SYNC = 'now SIGNAL dml3_done';
352
- # session con1
353
329
connection con1;
354
330
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
355
331
name count
@@ -405,35 +381,29 @@ SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL c3p5_created0 WAIT_FOR ins_
405
381
ALTER TABLE t1 MODIFY c3 CHAR(255) NOT NULL, DROP COLUMN c22f,
406
382
DROP PRIMARY KEY, ADD PRIMARY KEY(c1,c4(5)),
407
383
ADD COLUMN c5 CHAR(5) DEFAULT 'tired' FIRST;
408
- # session default
409
384
connection default;
410
385
SET DEBUG_SYNC = 'now WAIT_FOR c3p5_created0';
411
386
BEGIN;
412
387
INSERT INTO t1 VALUES(347,33101,'Pikku kakkosen posti','YLETV2');
413
388
INSERT INTO t1 VALUES(33101,347,NULL,'');
414
389
SET DEBUG_SYNC = 'now SIGNAL ins_done0';
415
- # session con1
416
390
connection con1;
417
391
ERROR 01000: Data truncated for column 'c3' at row 323
418
- # session default
419
392
connection default;
420
393
ROLLBACK;
421
- # session con1
422
394
connection con1;
423
395
ALTER TABLE t1 MODIFY c3 CHAR(255) NOT NULL;
424
396
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL c3p5_created WAIT_FOR ins_done';
425
397
ALTER TABLE t1 DROP PRIMARY KEY, DROP COLUMN c22f,
426
398
ADD COLUMN c6 VARCHAR(1000) DEFAULT
427
399
'I love tracking down hard-to-reproduce bugs.',
428
400
ADD PRIMARY KEY c3p5(c3(5), c6(2));
429
- # session default
430
401
connection default;
431
402
SET DEBUG_SYNC = 'now WAIT_FOR c3p5_created';
432
403
SET DEBUG_SYNC = 'ib_after_row_insert SIGNAL ins_done WAIT_FOR ddl_timed_out';
433
404
INSERT INTO t1 VALUES(347,33101,NULL,'');
434
405
ERROR 23000: Column 'c3' cannot be null
435
406
INSERT INTO t1 VALUES(347,33101,'Pikku kakkosen posti','');
436
- # session con1
437
407
connection con1;
438
408
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
439
409
SET DEBUG_SYNC = 'now SIGNAL ddl_timed_out';
@@ -445,7 +415,6 @@ ddl_online_create_index 0
445
415
ddl_pending_alter_table 0
446
416
ddl_sort_file_alter_table 6
447
417
ddl_log_file_alter_table 2
448
- # session default
449
418
connection default;
450
419
SELECT COUNT(*) FROM t1;
451
420
COUNT(*)
@@ -463,12 +432,8 @@ c22f c1 c3 c4
463
432
5 36 36foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
464
433
5 41 41foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
465
434
5 46 46foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo Online
466
- # session con1
467
435
connection con1;
468
436
ALTER TABLE t1 DISCARD TABLESPACE;
469
- # Disconnect session con1
470
- disconnect con1;
471
- # session default
472
437
connection default;
473
438
SHOW CREATE TABLE t1;
474
439
Table Create Table
@@ -482,6 +447,23 @@ t1 CREATE TABLE `t1` (
482
447
SET DEBUG_SYNC = 'RESET';
483
448
SET GLOBAL innodb_monitor_disable = module_ddl;
484
449
DROP TABLE t1;
450
+ #
451
+ # MDEV-29600 Memory leak in row_log_table_apply_update()
452
+ #
453
+ CREATE TABLE t1 (pk INT PRIMARY KEY, f TEXT) ENGINE=InnoDB;
454
+ INSERT INTO t1 SET pk=1;
455
+ connection con1;
456
+ SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL created WAIT_FOR updated';
457
+ ALTER TABLE t1 FORCE;
458
+ connection default;
459
+ SET DEBUG_SYNC = 'now WAIT_FOR created';
460
+ UPDATE t1 SET f = REPEAT('a', 20000);
461
+ SET DEBUG_SYNC = 'now SIGNAL updated';
462
+ connection con1;
463
+ disconnect con1;
464
+ connection default;
465
+ DROP TABLE t1;
466
+ SET DEBUG_SYNC = 'RESET';
485
467
SET GLOBAL innodb_file_per_table = @global_innodb_file_per_table_orig;
486
468
SET GLOBAL innodb_monitor_enable = default;
487
469
SET GLOBAL innodb_monitor_disable = default;
0 commit comments