mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 19:06:14 +01:00 
			
		
		
		
	 b04c4801b0
			
		
	
	
	b04c4801b0
	
	
	
		
			
			Moved test from main suite to the new suites. Move tests from maria/t and maria/r to maria mysql-test/mysql-test-run.pl: Added support for the new suites
		
			
				
	
	
		
			135 lines
		
	
	
	
		
			4.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
	
		
			4.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| --source include/not_embedded.inc
 | |
| # Don't test this under valgrind, memory leaks will occur as we crash
 | |
| --source include/not_valgrind.inc
 | |
| # Binary must be compiled with debug for crash to occur
 | |
| --source include/have_debug.inc
 | |
| --source include/have_maria.inc
 | |
| 
 | |
| set global aria_log_file_size=4294959104;
 | |
| let $MARIA_LOG=../../tmp;
 | |
| 
 | |
| --disable_warnings
 | |
| drop database if exists mysqltest;
 | |
| --enable_warnings
 | |
| create database mysqltest;
 | |
| let $mms_tname=t;
 | |
| 
 | |
| # Include scripts can perform SQL. For it to not influence the main test
 | |
| # they use a separate connection. This way if they use a DDL it would
 | |
| # not autocommit in the main test.
 | |
| connect (admin, 127.0.0.1, root,,mysqltest,,);
 | |
| --enable_reconnect
 | |
| 
 | |
| connection default;
 | |
| use mysqltest;
 | |
| --enable_reconnect
 | |
| 
 | |
| let $mms_tables=1;
 | |
| let $mvr_restore_old_snapshot=0;
 | |
| let $mms_compare_physically=0;
 | |
| let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
 | |
| let $mvr_crash_statement= set global aria_checkpoint_interval=1;
 | |
| 
 | |
| -- source include/maria_empty_logs.inc
 | |
| 
 | |
| # Test for BUG#41037 (recovery failure)
 | |
| --echo * TEST of Checkpoint between writing the commit log record and committing in trnman
 | |
| # we want recovery to use the tables as they were at time of crash
 | |
| let $mvr_restore_old_snapshot=0;
 | |
| # UNDO phase prevents physical comparison, normally,
 | |
| # so we'll only use checksums to compare.
 | |
| let $mms_compare_physically=0;
 | |
| create table t1(a int primary key) engine=aria;
 | |
| insert into t1 values(1);
 | |
| -- source include/maria_make_snapshot_for_comparison.inc
 | |
| set session debug_dbug="+d,maria_sleep_in_commit";
 | |
| send insert into t1 values(2);
 | |
| sleep 1;
 | |
| # Now the INSERT of 2 has written a commit record
 | |
| # but not yet called trnman_commit(), so for checkpoint it's not
 | |
| # committed.
 | |
| connection admin;
 | |
| set global aria_checkpoint_interval=1000; # force a checkpoint
 | |
| connection default;
 | |
| reap; # end of INSERT
 | |
| delete from t1 where a=2;
 | |
| # Bug was that: Recovery starts REDO scanning from too far: from
 | |
| # Checkpoint record which says INSERT is not committed, so
 | |
| # Recovery executes the INSERT's UNDO and finds no key to delete
 | |
| # (as DELETE already deleted it), fails.
 | |
| -- source include/maria_verify_recovery.inc
 | |
| drop table t1;
 | |
| 
 | |
| # Note that even if machine is loaded and thus INSERT is committed
 | |
| # before checkpoint happens, test should still pass (though it won't
 | |
| # reproduce the conditions of the bug).
 | |
| 
 | |
| # Test for BUG#41493 Aria: two recovery failures (wrong logging of BLOB pages)
 | |
| --echo * TEST of logging of BLOBs
 | |
| let $mvr_restore_old_snapshot=1;
 | |
| let $mms_compare_physically=1;
 | |
| CREATE TABLE `t1` (
 | |
| `blob` blob,
 | |
| `blob_key` blob
 | |
| ) ENGINE=aria ROW_FORMAT=page
 | |
| ;
 | |
| -- source include/maria_make_snapshot_for_feeding_recovery.inc
 | |
| set global aria_checkpoint_interval=0; # no checkpoints
 | |
| INSERT INTO `t1` VALUES (NULL,repeat('A',5198));
 | |
| INSERT INTO `t1` VALUES (NULL,repeat('B',65535));
 | |
| INSERT INTO `t1` VALUES (repeat('K',5198),repeat('L',2325));
 | |
| INSERT INTO `t1` VALUES (repeat('C',65535),NULL);
 | |
| INSERT INTO `t1` VALUES (NULL,repeat('D',65535));
 | |
| INSERT INTO `t1` VALUES (repeat('E',65535),repeat('F',16111));
 | |
| INSERT INTO `t1` VALUES (repeat('G',65535),repeat('H',65535));
 | |
| INSERT INTO `t1` VALUES (repeat('I',5198),repeat('J',65535));
 | |
| check table t1 extended;
 | |
| -- source include/maria_make_snapshot_for_comparison.inc
 | |
| -- source include/maria_verify_recovery.inc
 | |
| drop table t1;
 | |
| 
 | |
| # Test for BUG#42112 "Aria: recovery failure (pushbuild2) Assertion
 | |
| # `rownr == 0 && new_page' failed"
 | |
| 
 | |
| let $mvr_restore_old_snapshot=0;
 | |
| let $mms_compare_physically=0;
 | |
| create table t1 engine=aria select 1;
 | |
| -- source include/maria_make_snapshot_for_feeding_recovery.inc
 | |
| set global aria_checkpoint_interval=0; # no checkpoints
 | |
| insert into t1 values(2);
 | |
| truncate table t1;
 | |
| -- source include/maria_make_snapshot_for_comparison.inc
 | |
| let $mvr_crash_statement= truncate table t1;
 | |
| let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash_create_table";
 | |
| truncate table t1;
 | |
| -- source include/maria_verify_recovery.inc
 | |
| # Table is bad but at least Recovery didn't crash and a new truncate
 | |
| # can succeed:
 | |
| truncate table t1;
 | |
| check table t1 extended;
 | |
| drop table t1;
 | |
| 
 | |
| #
 | |
| # Test for BUG#887051; Failure in recovery with delete
 | |
| #
 | |
| 
 | |
| let $mvr_restore_old_snapshot=0;
 | |
| let $mms_compare_physically=0;
 | |
| let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
 | |
| let $mvr_crash_statement= set global aria_checkpoint_interval=1;
 | |
| CREATE TABLE t1 ( word VARCHAR(255) PRIMARY KEY ) ENGINE=Aria;
 | |
| LOAD DATA INFILE '../../std_data/bug887051.txt' INTO TABLE t1;
 | |
| SET AUTOCOMMIT=0;
 | |
| DELETE FROM t1;
 | |
| LOAD DATA INFILE '../../std_data/bug887051.txt' INTO TABLE t1 IGNORE 1 LINES;
 | |
| COMMIT; 
 | |
| -- source include/maria_verify_recovery.inc
 | |
| select * from t1;
 | |
| drop table t1;
 | |
| 
 | |
| # clean up everything
 | |
| let $mms_purpose=feeding_recovery;
 | |
| eval drop database mysqltest_for_$mms_purpose;
 | |
| let $mms_purpose=comparison;
 | |
| eval drop database mysqltest_for_$mms_purpose;
 | |
| drop database mysqltest;
 |