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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
  
     | 
    
      set global aria_log_file_size=4294959104;
drop database if exists mysqltest;
create database mysqltest;
connect  admin, localhost, root,,mysqltest,,;
connection default;
use mysqltest;
connection default;
connection admin;
* shut down mysqld, removed logs, restarted it
connection default;
CREATE TABLE t1 (
line POINT NOT NULL,
kind ENUM('po', 'pp', 'rr', 'dr', 'rd', 'ts', 'cl') NOT NULL DEFAULT 'po',
name VARCHAR(32)
,SPATIAL key (line)
) transactional=1 row_format=page engine=aria;
SHOW INDEX FROM t1;
Table	Non_unique	Key_name	Seq_in_index	Column_name	Collation	Cardinality	Sub_part	Packed	Null	Index_type	Comment	Index_comment	Ignored
t1	1	line	1	line	A	NULL	32	NULL		SPATIAL			NO
CREATE TABLE t2 (a VARCHAR(200), b TEXT, FULLTEXT (a,b)
) transactional=1 row_format=page engine=aria;
SHOW INDEX FROM t2;
Table	Non_unique	Key_name	Seq_in_index	Column_name	Collation	Cardinality	Sub_part	Packed	Null	Index_type	Comment	Index_comment	Ignored
t2	1	a	1	a	NULL	NULL	NULL	NULL	YES	FULLTEXT			NO
t2	1	a	2	b	NULL	NULL	NULL	NULL	YES	FULLTEXT			NO
* TEST of REDO: see if recovery can reconstruct if we give it an old table
connection admin;
* copied t2 for feeding_recovery
* copied t1 for feeding_recovery
connection default;
connection admin;
flush table t2;
* copied t2 for comparison
flush table t1;
* copied t1 for comparison
connection default;
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 t2 back for feeding_recovery
* copied t1 back for feeding_recovery
* recovery happens
check table t2 extended;
Table	Op	Msg_type	Msg_text
mysqltest.t2	check	status	OK
* testing that checksum after recovery is as expected
Checksum-check
ok
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;
* TEST of INSERT and DELETE's rollback
connection admin;
flush table t2;
* copied t2 for comparison
flush table t1;
* copied t1 for comparison
connection default;
lock tables t1 write, t2 write;
connection admin;
SET SESSION debug_dbug="+d,maria_crash";
* crashing mysqld intentionally
set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to server during query
* recovery happens
check table t2 extended;
Table	Op	Msg_type	Msg_text
mysqltest.t2	check	status	OK
* testing that checksum after recovery is as expected
Checksum-check
ok
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;
connection admin;
flush table t2;
* copied t2 for comparison
flush table t1;
* copied t1 for comparison
connection default;
lock tables t1 write, t2 write;
connection admin;
SET SESSION debug_dbug="+d,maria_flush_whole_page_cache,maria_crash";
* crashing mysqld intentionally
set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to server during query
* recovery happens
check table t2 extended;
Table	Op	Msg_type	Msg_text
mysqltest.t2	check	status	OK
* testing that checksum after recovery is as expected
Checksum-check
ok
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;
connection admin;
flush table t2;
* copied t2 for comparison
flush table t1;
* copied t1 for comparison
connection default;
lock tables t1 write, t2 write;
connection admin;
SET SESSION debug_dbug="+d,maria_flush_states,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to server during query
* recovery happens
check table t2 extended;
Table	Op	Msg_type	Msg_text
mysqltest.t2	check	status	OK
* testing that checksum after recovery is as expected
Checksum-check
ok
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;
connection admin;
flush table t2;
* copied t2 for comparison
flush table t1;
* copied t1 for comparison
connection default;
lock tables t1 write, t2 write;
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
* recovery happens
check table t2 extended;
Table	Op	Msg_type	Msg_text
mysqltest.t2	check	status	OK
* testing that checksum after recovery is as expected
Checksum-check
ok
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;
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
* recovery happens
check table t2 extended;
Table	Op	Msg_type	Msg_text
mysqltest.t2	check	status	OK
* testing that checksum after recovery is as expected
Checksum-check
ok
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 database mysqltest_for_feeding_recovery;
drop database mysqltest_for_comparison;
drop database mysqltest;
 
     |