--source include/have_debug.inc --source include/have_sequence.inc --source include/have_log_bin.inc --source include/not_valgrind.inc # # Testing of atomic create view with crashes in a lot of different places --disable_query_log call mtr.add_suppression("InnoDB: .* does not exist in the InnoDB internal"); # Speed up wait_until_connected_again.inc let NO_WSREP=1; RESET MASTER; --enable_query_log let $MYSQLD_DATADIR= `SELECT @@datadir`; let $crash_count=6; let $crash_points='ddl_log_create_before_copy_view', 'ddl_log_create_before_create_view', 'definition_file_after_create','ddl_log_create_after_create_view', 'ddl_log_create_before_binlog', 'ddl_log_create_after_binlog'; let $statement_count=3; let $statements='CREATE VIEW t1 as select "new"', 'CREATE OR REPLACE VIEW t1 as select "new"', 'CREATE OR REPLACE VIEW t2 as select "new"'; let $old_debug=`select @@debug_dbug`; let $e=0; let $keep_include_silent=1; let $grep_script=CREATE|DROP; --disable_query_log while ($e < 1) { inc $e; let $r=0; while ($r < $statement_count) { inc $r; let $statement=`select ELT($r, $statements)`; --echo query: $statement let $c=0; while ($c < $crash_count) { inc $c; let $crash=`select ELT($c, $crash_points)`; create view t2 as select "old"; FLUSH BINARY LOGS; --let $start_binlog_file= query_get_value(SHOW MASTER STATUS, File, 1) --echo crash point: $crash --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --disable_reconnect --eval set @@debug_dbug="+d,$crash",@debug_crash_counter=1 let $errno=0; --error 0,2013 --eval $statement; let $error=$errno; --enable_reconnect --source include/wait_until_connected_again.inc --disable_query_log --eval set @@debug_dbug="$old_debug" if ($error == 0) { echo "No crash!"; } # Check which tables still exists --list_files $MYSQLD_DATADIR/test t* --list_files $MYSQLD_DATADIR/test *sql* select * from t2; --let $binlog_file=$start_binlog_file --let $binlog_output_name=master-bin.000001 --source include/show_binlog_events.inc if ($error) { --let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1) --let $binlog_output_name=master-bin.00c0002 if ($binlog_file != $start_binlog_file) { --source include/show_binlog_events.inc } } # Drop the tables. The warnings will show what was dropped --disable_warnings drop view if exists t1,t2; --enable_warnings } } } drop view if exists t1,t2; --enable_query_log