1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
set global aria_log_file_size=4294959104;
drop database if exists mysqltest;
create database mysqltest;
connect admin, localhost, root,,mysqltest,,;
connection default;
use mysqltest;
* TEST of recovery with blobs
connection default;
connection admin;
* shut down mysqld, removed logs, restarted it
connection default;
create table t1 (a int, b longtext) engine=aria table_checksum=1;
connection admin;
* copied t1 for feeding_recovery
connection default;
insert into t1 values (1,"123456789012345678901234567890"),(2,"09876543210987654321");
connection admin;
flush table t1;
* copied t1 for comparison
connection default;
lock table t1 write;
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
update t1 set b=CONCAT(b,b);
select a,length(b) from t1;
a length(b)
1 31457280
2 20971520
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
update t1 set b=mid(b,1,length(b)/2);
select a,length(b) from t1;
a length(b)
1 8
2 5
connection admin;
SET SESSION debug_dbug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to server during query
* copied t1 back for feeding_recovery
* recovery happens
check table t1 extended;
Table Op Msg_type Msg_text
mysqltest.t1 check status OK
* testing that checksum after recovery is as expected
Checksum-check
ok
connection default;
use mysqltest;
drop table t1;
drop database mysqltest_for_feeding_recovery;
drop database mysqltest_for_comparison;
drop database mysqltest;
|