mariadb/mysql-test/include/maria_make_snapshot_for_comparison.inc
Vladislav Vaintroub 1d8cfe3c77 LP686006 : maria recovery tests fail.
All failing cases were attempts to use connection after
the server was brought down and restarted. Connections 
used client reconnect option.

The reason for failures is the behavior of sockets on Windows:
for a short period after crash (short enough to make the error 
not reproducible under debugger), write to socket on client
side would succeed but subsequent read would fail. 

MYSQL_OPT_RECONNECT does not really help in this case ,
because  in the case given here ,as  mysql_real_query() 
(which can handle reconnect option)  succeeds and 
mysql_read_results() (can't handle reconnect) fails.

The fix is adding --include wait_until_connected_again.inc to 
appropriate places in test. This ensures that read errors are 
caught and connection is recreated.
2011-03-30 21:26:31 +02:00

32 lines
912 B
PHP

# Maria helper script
# Copies clean tables' data and index file to other directory
# Tables are $mms_tname1...$mms_tname[$mms_tables]
# They are later used as a reference to see if recovery works.
# API:
# set $mms_tname to a string, and $mms_tables to a number N, the script will
# cover tables mysqltest.$mms_tname1,...$mms_tnameN
connection admin;
--source include/wait_until_connected_again.inc
let $mms_table_to_use=$mms_tables;
let $mms_purpose=comparison;
let $mms_copy=1;
--disable_query_log
--disable_warnings
eval drop database if exists mysqltest_for_$mms_purpose;
--enable_warnings
eval create database mysqltest_for_$mms_purpose;
--enable_query_log
while ($mms_table_to_use)
{
# to serve as a reference, table must be in a clean state
eval flush table $mms_tname$mms_table_to_use;
-- source include/maria_make_snapshot.inc
dec $mms_table_to_use;
}
let $mms_copy=0;
connection default;