From 07b5d554ee62543cea0dc5bb36883446b9dcaa4a Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Fri, 25 Feb 2011 14:55:40 +0200 Subject: [PATCH] - maria/ma_test_all.sh can now be run with --tmpdir=/dev/shm for faster testing - Fixed mysql-test-run failures on window - Fixed compiler warnings from my last push (sorry about that) - Fixed that maria_chk --repair --extended works again - Fixed compiler warnings about using not unitialized data mysql-test/mysql-test-run.pl: Better output mysql-test/suite/parts/inc/partition_check_drop.inc: Use remove_files_wildcard instead of rm mysys/safemalloc.c: Fixed argument to printf storage/maria/ma_cache.c: Don't give errors when running maria_chk storage/maria/ma_dynrec.c: Don't give errors when running maria_chk storage/maria/ma_rt_test.c: Added option --datadir for where to put logs and test data storage/maria/ma_test1.c: Added option --datadir for where to put logs and test data storage/maria/ma_test2.c: Added option --datadir for where to put logs and test data storage/maria/maria_chk.c: If --datadir is used but --logdir is not, set --logdir from --datadir (this reflects how --help said how things should work) storage/maria/maria_read_log.c: Changed short option for 'maria-log-dir-path' from -l to -h to be same as mysqld, maria_chk, ma_test1 etc.. storage/maria/unittest/ma_test_all-t: Allow one to specify --tmpdir for where to store logs and data storage/xtradb/buf/buf0buf.c: Fixed compiler warnings about using not unitialized data storage/xtradb/row/row0upd.c: Fixed compiler warnings about using not unitialized data storage/xtradb/srv/srv0srv.c: Fixed compiler warnings about using not unitialized data --- mysql-test/mysql-test-run.pl | 2 +- .../suite/parts/inc/partition_check_drop.inc | 4 +- mysys/safemalloc.c | 4 +- storage/maria/ma_cache.c | 7 +- storage/maria/ma_dynrec.c | 6 +- storage/maria/ma_rt_test.c | 7 +- storage/maria/ma_test1.c | 7 +- storage/maria/ma_test2.c | 10 +- storage/maria/maria_chk.c | 12 +- storage/maria/maria_read_log.c | 4 +- storage/maria/unittest/ma_test_all-t | 266 ++++++++++-------- storage/xtradb/buf/buf0buf.c | 2 +- storage/xtradb/row/row0upd.c | 2 +- storage/xtradb/srv/srv0srv.c | 1 + 14 files changed, 197 insertions(+), 137 deletions(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 56dec12fd5d..ed6512b9e16 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -5310,7 +5310,7 @@ sub start_servers($) { for (all_servers()) { next unless $_->{WAIT} and started($_); if ($_->{WAIT}->($_)) { - $tinfo->{comment}= "Failed to start ".$_->name(); + $tinfo->{comment}= "Failed to start ".$_->name() . "\n"; return 1; } } diff --git a/mysql-test/suite/parts/inc/partition_check_drop.inc b/mysql-test/suite/parts/inc/partition_check_drop.inc index daaa5e541c7..cd4a4cfe2f5 100644 --- a/mysql-test/suite/parts/inc/partition_check_drop.inc +++ b/mysql-test/suite/parts/inc/partition_check_drop.inc @@ -66,10 +66,10 @@ if ($found_garbage) } # Do a manual cleanup, because the following tests should not suffer from # remaining files - --exec rm -f $MYSQLD_DATADIR/test/t1* || true + --remove_files_wildcard $MYSQLD_DATADIR/test t1* if ($with_directories) { - --exec rm -f $MYSQLTEST_VARDIR/tmp/t1* || true + --remove_files_wildcard $MYSQLD_DATADIR/test/tmp t1* } } --enable_query_log diff --git a/mysys/safemalloc.c b/mysys/safemalloc.c index 7067ebbe843..2a61b8edede 100644 --- a/mysys/safemalloc.c +++ b/mysys/safemalloc.c @@ -125,7 +125,7 @@ void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags) uchar *data; DBUG_ENTER("_mymalloc"); DBUG_PRINT("enter",("Size: %lu Total alloc: %lu", (ulong) size, - sf_malloc_cur_memory)); + (ulong) sf_malloc_cur_memory)); if (!sf_malloc_quick) (void) _sanity (filename, lineno); @@ -317,7 +317,7 @@ void _myfree(void *ptr, const char *filename, uint lineno, myf myflags) sf_malloc_cur_memory-= irem->datasize; sf_malloc_count--; pthread_mutex_unlock(&THR_LOCK_malloc); - DBUG_PRINT("info", ("bytes freed: %ld", irem->datasize)); + DBUG_PRINT("info", ("bytes freed: %ld", (ulong) irem->datasize)); #ifndef HAVE_valgrind /* Mark this data as free'ed */ diff --git a/storage/maria/ma_cache.c b/storage/maria/ma_cache.c index 91018720e15..059e815ae1b 100644 --- a/storage/maria/ma_cache.c +++ b/storage/maria/ma_cache.c @@ -98,7 +98,12 @@ my_bool _ma_read_cache(MARIA_HA *handler, IO_CACHE *info, uchar *buff, ("Error %d reading next-multi-part block (Got %d bytes)", my_errno, (int) read_length)); if (!my_errno || my_errno == HA_ERR_FILE_TOO_SHORT) - _ma_set_fatal_error(handler->s, HA_ERR_WRONG_IN_RECORD); + { + if (!handler->in_check_table) + _ma_set_fatal_error(handler->s, HA_ERR_WRONG_IN_RECORD); + else + my_errno= HA_ERR_WRONG_IN_RECORD; + } DBUG_RETURN(1); } bzero(buff+read_length,MARIA_BLOCK_INFO_HEADER_LENGTH - in_buff_length - diff --git a/storage/maria/ma_dynrec.c b/storage/maria/ma_dynrec.c index 602d3f17e42..7b120910a42 100644 --- a/storage/maria/ma_dynrec.c +++ b/storage/maria/ma_dynrec.c @@ -2053,6 +2053,10 @@ uint _ma_get_block_info(MARIA_HA *handler, MARIA_BLOCK_INFO *info, File file, } err: - _ma_set_fatal_error(handler->s, HA_ERR_WRONG_IN_RECORD); + if (!handler->in_check_table) + { + /* We may be scanning the table for new rows; Don't give an error */ + _ma_set_fatal_error(handler->s, HA_ERR_WRONG_IN_RECORD); + } return BLOCK_ERROR; } diff --git a/storage/maria/ma_rt_test.c b/storage/maria/ma_rt_test.c index af54e6b27be..ed48883b858 100644 --- a/storage/maria/ma_rt_test.c +++ b/storage/maria/ma_rt_test.c @@ -93,9 +93,10 @@ static enum data_file_type record_type= DYNAMIC_RECORD; int main(int argc, char *argv[]) { + char buff[FN_REFLEN]; MY_INIT(argv[0]); - get_options(argc, argv); maria_data_root= (char *)"."; + get_options(argc, argv); /* Maria requires that we always have a page cache */ if (maria_init() || (init_pagecache(maria_pagecache, maria_block_size * 16, 0, 0, @@ -113,7 +114,7 @@ int main(int argc, char *argv[]) exit(1); } - exit(run_test("rt_test")); + exit(run_test(fn_format(buff, "test1", maria_data_root, "", MYF(0)))); } @@ -614,6 +615,8 @@ static struct my_option my_long_options[] = #endif {"help", '?', "Display help and exit", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"datadir", 'h', "Path to the database root.", &maria_data_root, + &maria_data_root, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"row-fixed-size", 'S', "Fixed size records", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"rows-in-block", 'M', "Store rows in block format", diff --git a/storage/maria/ma_test1.c b/storage/maria/ma_test1.c index affa3a71634..ec3060822f9 100644 --- a/storage/maria/ma_test1.c +++ b/storage/maria/ma_test1.c @@ -70,12 +70,13 @@ extern int _ma_flush_table_files(MARIA_HA *info, uint flush_data_or_index, int main(int argc,char *argv[]) { + char buff[FN_REFLEN]; #if defined(SAFE_MUTEX) && defined(THREAD) safe_mutex_deadlock_detector= 1; #endif MY_INIT(argv[0]); - get_options(argc,argv); maria_data_root= (char *)"."; + get_options(argc,argv); /* Maria requires that we always have a page cache */ if (maria_init() || (init_pagecache(maria_pagecache, maria_block_size * 16, 0, 0, @@ -95,7 +96,7 @@ int main(int argc,char *argv[]) if (opt_versioning) init_thr_lock(); - exit(run_test("test1")); + exit(run_test(fn_format(buff, "test1", maria_data_root, "", MYF(0)))); } @@ -724,6 +725,8 @@ static struct my_option my_long_options[] = {"debug", '#', "Undocumented", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif + {"datadir", 'h', "Path to the database root.", &maria_data_root, + &maria_data_root, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"delete-rows", 'd', "Abort after this many rows has been deleted", (uchar**) &remove_count, (uchar**) &remove_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0}, diff --git a/storage/maria/ma_test2.c b/storage/maria/ma_test2.c index 9e2f32f767b..6ab8cae2915 100644 --- a/storage/maria/ma_test2.c +++ b/storage/maria/ma_test2.c @@ -69,24 +69,25 @@ int main(int argc, char *argv[]) MARIA_KEYDEF keyinfo[10]; MARIA_COLUMNDEF recinfo[10]; MARIA_INFO info; - const char *filename; char *blob_buffer; MARIA_CREATE_INFO create_info; + char filename[FN_REFLEN]; #if defined(SAFE_MUTEX) && defined(THREAD) safe_mutex_deadlock_detector= 1; #endif MY_INIT(argv[0]); - filename= "test2"; + maria_data_root= (char *)"."; get_options(argc,argv); + fn_format(filename, "test2", maria_data_root, "", MYF(0)); + if (! async_io) my_disable_async_io=1; /* If we sync or not have no affect on this test */ my_disable_sync= 1; - maria_data_root= (char *)"."; /* Maria requires that we always have a page cache */ if (maria_init() || (init_pagecache(maria_pagecache, pagecache_size, 0, 0, @@ -1101,6 +1102,9 @@ static void get_options(int argc, char **argv) case 'H': checkpoint= atoi(++pos); break; + case 'h': + maria_data_root= ++pos; + break; case 'k': if ((keys=(uint) atoi(++pos)) < 1 || keys > (uint) (MARIA_KEYS-first_key)) diff --git a/storage/maria/maria_chk.c b/storage/maria/maria_chk.c index ee5e32d3d54..7c0995da1a1 100644 --- a/storage/maria/maria_chk.c +++ b/storage/maria/maria_chk.c @@ -38,6 +38,7 @@ static uint decode_bits; static char **default_argv; static const char *load_default_groups[]= { "maria_chk", 0 }; static const char *set_collation_name, *opt_tmpdir, *opt_log_dir; +static const char *default_log_dir; static CHARSET_INFO *set_collation; static int stopwords_inited= 0; static MY_TMPDIR maria_chk_tmpdir; @@ -106,7 +107,7 @@ int main(int argc, char **argv) int error; MY_INIT(argv[0]); - opt_log_dir= maria_data_root= (char *)"."; + default_log_dir= opt_log_dir= maria_data_root= (char *)"."; maria_chk_init(&check_param); check_param.opt_lock_memory= 1; /* Lock memory if possible */ check_param.using_global_keycache = 0; @@ -207,7 +208,7 @@ enum options_mc { OPT_MAX_RECORD_LENGTH, OPT_AUTO_CLOSE, OPT_STATS_METHOD, OPT_TRANSACTION_LOG, OPT_SKIP_SAFEMALLOC, OPT_ZEROFILL_KEEP_LSN, OPT_REQUIRE_CONTROL_FILE, OPT_IGNORE_CONTROL_FILE, - OPT_LOG_DIR, OPT_DATADIR, OPT_WARNING_FOR_WRONG_TRANSID + OPT_LOG_DIR, OPT_WARNING_FOR_WRONG_TRANSID }; static struct my_option my_long_options[] = @@ -277,7 +278,7 @@ static struct my_option my_long_options[] = &check_param.keys_in_use, &check_param.keys_in_use, 0, GET_ULL, REQUIRED_ARG, -1, 0, 0, 0, 0, 0}, - {"datadir", OPT_DATADIR, + {"datadir", 'h', "Path for control file (and logs if --logdir not used).", &maria_data_root, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -928,6 +929,11 @@ static void get_options(register int *argc,register char ***argv) MYF(MY_WME)))) exit(1); + if (maria_data_root != default_log_dir && opt_log_dir == default_log_dir) + { + /* --datadir was used and --log-dir was not. Set log-dir to datadir */ + opt_log_dir= maria_data_root; + } return; } /* get options */ diff --git a/storage/maria/maria_read_log.c b/storage/maria/maria_read_log.c index 89f3e82e2aa..d323c9500ee 100644 --- a/storage/maria/maria_read_log.c +++ b/storage/maria/maria_read_log.c @@ -44,9 +44,9 @@ int main(int argc, char **argv) uint warnings_count; MY_INIT(argv[0]); + maria_data_root= (char *)"."; load_defaults("my", load_default_groups, &argc, &argv); default_argv= argv; - maria_data_root= (char *)"."; get_options(&argc, &argv); maria_in_recovery= TRUE; @@ -195,7 +195,7 @@ static struct my_option my_long_options[] = { "end-lsn", 'e', "Stop applying at this lsn. If end-lsn is used, UNDO:s " "will not be applied", &opt_end_lsn, &opt_end_lsn, 0, GET_ULL, REQUIRED_ARG, 0, 0, ~(longlong) 0, 0, 0, 0 }, - {"maria-log-dir-path", 'l', + {"maria-log-dir-path", 'h', "Path to the directory where to store transactional log", (uchar **) &maria_data_root, (uchar **) &maria_data_root, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, diff --git a/storage/maria/unittest/ma_test_all-t b/storage/maria/unittest/ma_test_all-t index 8e52f42b483..036e96caebb 100755 --- a/storage/maria/unittest/ma_test_all-t +++ b/storage/maria/unittest/ma_test_all-t @@ -8,7 +8,7 @@ use File::Basename; $|= 1; $^W = 1; # warnings, because env cannot parse 'perl -w' -$VER= "1.4"; +$VER= "1.5"; $opt_version= 0; $opt_help= 0; @@ -28,6 +28,8 @@ my $NEW_TEST= 0; # Test group separator in an array of tests my $test_begin= 0; my $test_end= 0; my $test_counter= 0; +my $full_tmpdir; +my $tmpdir="tmp"; run_tests(); @@ -46,6 +48,7 @@ sub run_tests "abort-on-error" => \$opt_abort_on_error, "valgrind=s" => \$opt_valgrind, "silent=s" => \$opt_silent, + "tmpdir=s" => \$full_tmpdir, "number-of-tests" => \$opt_number_of_tests, "run-tests=s" => \$opt_run_tests, "start-from=s" => \$opt_run_tests)) @@ -77,10 +80,23 @@ sub run_tests } } } - } + } usage() if ($opt_help || $flag_exit); + if (defined($full_tmpdir)) + { + $tmpdir= $full_tmpdir; + } + else + { + $full_tmpdir= "tmp"; + if (! -d "$full_tmpdir") + { + die if (!mkdir("$full_tmpdir")); + } + } + # # IMPORTANT: If you modify this file, please read this: # @@ -146,7 +162,7 @@ sub run_tests # clean-up # - unlink <*.TMD maria_log*>; # Delete temporary files + unlink_all_possible_tmp_files(); # # Run tests @@ -210,6 +226,7 @@ sub run_tests run_ma_test_recovery($opt_verbose, 0); run_tests_on_clrs($suffix, $opt_verbose, 0); + unlink_all_possible_tmp_files(); exit($runtime_error); } @@ -280,38 +297,38 @@ sub run_check_tests for ($i= 0; defined($ma_test1_opt[$i]); $i++) { - unlink ; - ok("$maria_exe_path/ma_test1$suffix $silent $ma_test1_opt[$i][0] $row_type", + unlink_log_files(); + ok("$maria_exe_path/ma_test1$suffix $silent -h$tmpdir $ma_test1_opt[$i][0] $row_type", $verbose, $i + 1); - ok("$maria_exe_path/maria_chk$suffix $ma_test1_opt[$i][1] test1", + ok("$maria_exe_path/maria_chk$suffix -h$tmpdir $ma_test1_opt[$i][1] $tmpdir/test1", $verbose, $i + 1); } # # These tests are outside the loops. Make sure to include them in # nr_tests manually # - ok("$maria_exe_path/maria_pack$suffix --force -s test1", $verbose, 0); - ok("$maria_exe_path/maria_chk$suffix -ess test1", $verbose, 0); + ok("$maria_exe_path/maria_pack$suffix --force -s $tmpdir/test1", $verbose, 0); + ok("$maria_exe_path/maria_chk$suffix -ess $tmpdir/test1", $verbose, 0); for ($i= 0; defined($ma_test2_opt[$i]); $i++) { - unlink ; - ok("$maria_exe_path/ma_test2$suffix $silent $ma_test2_opt[$i][0] $row_type", + unlink_log_files(); + ok("$maria_exe_path/ma_test2$suffix $silent -h$tmpdir $ma_test2_opt[$i][0] $row_type", $verbose, $i + 1); - ok("$maria_exe_path/maria_chk$suffix $ma_test2_opt[$i][1] test2", + ok("$maria_exe_path/maria_chk$suffix -h$tmpdir $ma_test2_opt[$i][1] $tmpdir/test2", $verbose, $i + 1); } for ($i= 0; defined($ma_rt_test_opt[$i]); $i++) { - unlink ; - ok("$maria_exe_path/ma_rt_test$suffix $silent $ma_rt_test_opt[$i][0] $row_type", + unlink_log_files(); + ok("$maria_exe_path/ma_rt_test$suffix $silent -h$tmpdir $ma_rt_test_opt[$i][0] $row_type", $verbose, $i + 1); - ok("$maria_exe_path/maria_chk$suffix $ma_rt_test_opt[$i][1] rt_test", + ok("$maria_exe_path/maria_chk$suffix -h$tmpdir $ma_rt_test_opt[$i][1] $tmpdir/rt_test", $verbose, $i + 1); } - unlink ; + unlink_log_files(); return 0; } @@ -326,35 +343,35 @@ sub run_repair_tests() my ($i); my @t= ($NEW_TEST, - "$maria_exe_path/ma_test1$suffix $silent --checksum $row_type", - "$maria_exe_path/maria_chk$suffix -se test1", - "$maria_exe_path/maria_chk$suffix --silent -re --transaction-log test1", - "$maria_exe_path/maria_chk$suffix -rs test1", - "$maria_exe_path/maria_chk$suffix -se test1", - "$maria_exe_path/maria_chk$suffix -rqs test1", - "$maria_exe_path/maria_chk$suffix -se test1", - "$maria_exe_path/maria_chk$suffix -rs --correct-checksum test1", - "$maria_exe_path/maria_chk$suffix -se test1", - "$maria_exe_path/maria_chk$suffix -rqs --correct-checksum test1", - "$maria_exe_path/maria_chk$suffix -se test1", - "$maria_exe_path/maria_chk$suffix -ros --correct-checksum test1", - "$maria_exe_path/maria_chk$suffix -se test1", - "$maria_exe_path/maria_chk$suffix -rqos --correct-checksum test1", - "$maria_exe_path/maria_chk$suffix -se test1", - "$maria_exe_path/maria_chk$suffix -sz test1", - "$maria_exe_path/maria_chk$suffix -se test1", - "$maria_exe_path/ma_test2$suffix $silent -c -d1 $row_type", - "$maria_exe_path/maria_chk$suffix -s --parallel-recover test2", - "$maria_exe_path/maria_chk$suffix -se test2", - "$maria_exe_path/maria_chk$suffix -s --parallel-recover --quick test2", - "$maria_exe_path/maria_chk$suffix -se test2", - "$maria_exe_path/ma_test2$suffix $silent -c $row_type", - "$maria_exe_path/maria_chk$suffix -se test2", - "$maria_exe_path/maria_chk$suffix -sr test2", - "$maria_exe_path/maria_chk$suffix -se test2", - "$maria_exe_path/ma_test2$suffix $silent -c -t4 -b32768 $row_type", - "$maria_exe_path/maria_chk$suffix -s --zerofill test1", - "$maria_exe_path/maria_chk$suffix -se test1" + "$maria_exe_path/ma_test1$suffix -h$tmpdir $silent --checksum $row_type", + "$maria_exe_path/maria_chk$suffix -h$tmpdir -se $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -h$tmpdir --silent -re --transaction-log $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -h$tmpdir -rs $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -rqs -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -rs --correct-checksum -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -rqs --correct-checksum -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -ros --correct-checksum -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -rqos --correct-checksum -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -sz -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test1", + "$maria_exe_path/ma_test2$suffix -h$tmpdir $silent -c -d1 $row_type", + "$maria_exe_path/maria_chk$suffix -s --parallel-recover -h$tmpdir $tmpdir/test2", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test2", + "$maria_exe_path/maria_chk$suffix -s --parallel-recover --quick -h$tmpdir $tmpdir/test2", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test2", + "$maria_exe_path/ma_test2$suffix -h$tmpdir $silent -c $row_type", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test2", + "$maria_exe_path/maria_chk$suffix -sr -h$tmpdir $tmpdir/test2", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test2", + "$maria_exe_path/ma_test2$suffix -h$tmpdir $silent -c -t4 -b32768 $row_type", + "$maria_exe_path/maria_chk$suffix -s --zerofill -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test1" ); return &count_tests(\@t) if ($count); @@ -372,49 +389,49 @@ sub run_pack_tests() my ($i); my @t= ($NEW_TEST, - "$maria_exe_path/ma_test1$suffix $silent --checksum $row_type", - "$maria_exe_path/maria_pack$suffix --force -s test1", - "$maria_exe_path/maria_chk$suffix -ess test1", - "$maria_exe_path/maria_chk$suffix -rqs test1", - "$maria_exe_path/maria_chk$suffix -es test1", - "$maria_exe_path/maria_chk$suffix -rs test1", - "$maria_exe_path/maria_chk$suffix -es test1", - "$maria_exe_path/maria_chk$suffix -rus test1", - "$maria_exe_path/maria_chk$suffix -es test1", + "$maria_exe_path/ma_test1$suffix -h$tmpdir $silent --checksum $row_type", + "$maria_exe_path/maria_pack$suffix --force -s $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -ess -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -rqs -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -es -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -rs -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -es -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -rus -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -es -h$tmpdir $tmpdir/test1", $NEW_TEST, - "$maria_exe_path/ma_test1$suffix $silent --checksum $row_type", - "$maria_exe_path/maria_pack$suffix --force -s test1", - "$maria_exe_path/maria_chk$suffix -rus --safe-recover test1", - "$maria_exe_path/maria_chk$suffix -es test1", + "$maria_exe_path/ma_test1$suffix -h$tmpdir $silent --checksum $row_type", + "$maria_exe_path/maria_pack$suffix --force -s $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -rus --safe-recover -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -es -h$tmpdir $tmpdir/test1", $NEW_TEST, - "$maria_exe_path/ma_test1$suffix $silent --checksum -S $row_type", - "$maria_exe_path/maria_chk$suffix -se test1", - "$maria_exe_path/maria_chk$suffix -ros test1", - "$maria_exe_path/maria_chk$suffix -rqs test1", - "$maria_exe_path/maria_chk$suffix -se test1", + "$maria_exe_path/ma_test1$suffix -h$tmpdir $silent --checksum -S $row_type", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -ros -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -rqs -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test1", $NEW_TEST, - "$maria_exe_path/maria_pack$suffix --force -s test1", - "$maria_exe_path/maria_chk$suffix -rqs test1", - "$maria_exe_path/maria_chk$suffix -es test1", - "$maria_exe_path/maria_chk$suffix -rus test1", - "$maria_exe_path/maria_chk$suffix -es test1", + "$maria_exe_path/maria_pack$suffix --force -s $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -rqs -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -es -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -rus -h$tmpdir $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -es -h$tmpdir $tmpdir/test1", $NEW_TEST, - "$maria_exe_path/ma_test2$suffix $silent -c -d1 $row_type", - "$maria_exe_path/maria_chk$suffix -s --parallel-recover test2", - "$maria_exe_path/maria_chk$suffix -se test2", - "$maria_exe_path/maria_chk$suffix -s --unpack --parallel-recover test2", - "$maria_exe_path/maria_chk$suffix -se test2", - "$maria_exe_path/maria_pack$suffix --force -s test1", - "$maria_exe_path/maria_chk$suffix -s --unpack --parallel-recover test2", - "$maria_exe_path/maria_chk$suffix -se test2", + "$maria_exe_path/ma_test2$suffix -h$tmpdir $silent -c -d1 $row_type", + "$maria_exe_path/maria_chk$suffix -s --parallel-recover -h$tmpdir $tmpdir/test2", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test2", + "$maria_exe_path/maria_chk$suffix -s --unpack --parallel-recover -h$tmpdir $tmpdir/test2", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test2", + "$maria_exe_path/maria_pack$suffix --force -s $tmpdir/test1", + "$maria_exe_path/maria_chk$suffix -s --unpack --parallel-recover -h$tmpdir $tmpdir/test2", + "$maria_exe_path/maria_chk$suffix -se -h$tmpdir $tmpdir/test2", $NEW_TEST, - "$maria_exe_path/ma_test1$suffix $silent -c $row_type", - "cp test1.MAD test2.MAD", - "cp test1.MAI test2.MAI", - "$maria_exe_path/maria_pack$suffix --force -s --join=test3 test1 test2", - "$maria_exe_path/maria_chk -s test3", - "$maria_exe_path/maria_chk -s --safe-recover test3", - "$maria_exe_path/maria_chk -s test3" + "$maria_exe_path/ma_test1$suffix -h$tmpdir $silent -c $row_type", + "cp $tmpdir/test1.MAD $tmpdir/test2.MAD", + "cp $tmpdir/test1.MAI $tmpdir/test2.MAI", + "$maria_exe_path/maria_pack$suffix --force -s --join=$tmpdir/test3 $tmpdir/test1 $tmpdir/test2", + "$maria_exe_path/maria_chk -s -h$tmpdir $tmpdir/test3", + "$maria_exe_path/maria_chk -s --safe-recover -h$tmpdir $tmpdir/test3", + "$maria_exe_path/maria_chk -s -h$tmpdir $tmpdir/test3" ); return &count_tests(\@t) if ($count); @@ -433,25 +450,25 @@ sub run_tests_on_warnings_and_errors return 9 if ($count); # Number of tests in this function, e.g. calls to ok() - ok("$maria_exe_path/ma_test2$suffix $silent -L -K -W -P -S -R1 -m500", + ok("$maria_exe_path/ma_test2$suffix -h$tmpdir $silent -L -K -W -P -S -R1 -m500", $verbose, 0); - ok("$maria_exe_path/maria_chk$suffix -sm test2", $verbose, 0); + ok("$maria_exe_path/maria_chk$suffix -h$tmpdir -sm $tmpdir/test2", $verbose, 0); # ma_test2$suffix $silent -L -K -R1 -m2000 ; Should give error 135\n # In the following a failure is a success and success is a failure - $com= "$maria_exe_path/ma_test2$suffix $silent -L -K -R1 -m2000 "; + $com= "$maria_exe_path/ma_test2$suffix -h$tmpdir $silent -L -K -R1 -m2000 "; $com.= ">ma_test2_message.txt 2>&1"; ok($com, $verbose, 0, 1); ok("cat ma_test2_message.txt", $verbose, 0); ok("grep \"Error: 135\" ma_test2_message.txt > /dev/null", $verbose, 0); - # maria_exe_path/maria_chk$suffix -sm test2 will warn that + # maria_exe_path/maria_chk$suffix -h$tmpdir -sm $tmpdir/test2 will warn that # Datafile is almost full - ok("$maria_exe_path/maria_chk$suffix -sm test2 >ma_test2_message.txt 2>&1", + ok("$maria_exe_path/maria_chk$suffix -h$tmpdir -sm $tmpdir/test2 >ma_test2_message.txt 2>&1", $verbose, 0); ok("cat ma_test2_message.txt", $verbose, 0); ok("grep \"warning: Datafile is almost full\" ma_test2_message.txt>/dev/null", $verbose, 0); unlink ; - ok("$maria_exe_path/maria_chk$suffix -ssm test2", $verbose, 0); + ok("$maria_exe_path/maria_chk$suffix -h$tmpdir -ssm $tmpdir/test2", $verbose, 0); return 0; } @@ -479,33 +496,33 @@ sub run_tests_on_clrs my ($i); my @t= ($NEW_TEST, - "$maria_exe_path/ma_test2$suffix -s -L -K -W -P -M -T -c -b -t2 -A1", - "cp maria_log_control tmp", - "$maria_exe_path/maria_read_log$suffix -a -s", - "$maria_exe_path/maria_chk$suffix -s -e test2", - "cp tmp/maria_log_control .", - "rm test2.MA?", - "$maria_exe_path/maria_read_log$suffix -a -s", - "$maria_exe_path/maria_chk$suffix -s -e test2", - "rm test2.MA?", + "$maria_exe_path/ma_test2$suffix -h$tmpdir -s -L -K -W -P -M -T -c -b -t2 -A1", + "cp $tmpdir/maria_log_control $tmpdir/maria_log_control.backup", + "$maria_exe_path/maria_read_log$suffix -a -s -h$tmpdir", + "$maria_exe_path/maria_chk$suffix -h$tmpdir -s -e $tmpdir/test2", + "mv $tmpdir/maria_log_control.backup $tmpdir/maria_log_control", + "rm $tmpdir/test2.MA?", + "$maria_exe_path/maria_read_log$suffix -a -s -h$tmpdir", + "$maria_exe_path/maria_chk$suffix -h$tmpdir -s -e $tmpdir/test2", + "rm $tmpdir/test2.MA?", $NEW_TEST, - "$maria_exe_path/ma_test2$suffix -s -L -K -W -P -M -T -c -b -t2 -A1", - "$maria_exe_path/maria_read_log$suffix -a -s", - "$maria_exe_path/maria_chk$suffix -s -e test2", - "rm test2.MA?", - "$maria_exe_path/maria_read_log$suffix -a -s", - "$maria_exe_path/maria_chk$suffix -e -s test2", - "rm test2.MA?", + "$maria_exe_path/ma_test2$suffix -h$tmpdir -s -L -K -W -P -M -T -c -b -t2 -A1", + "$maria_exe_path/maria_read_log$suffix -a -s -h$tmpdir ", + "$maria_exe_path/maria_chk$suffix -h$tmpdir -s -e $tmpdir/test2", + "rm $tmpdir/test2.MA?", + "$maria_exe_path/maria_read_log$suffix -a -s -h$tmpdir", + "$maria_exe_path/maria_chk$suffix -h$tmpdir -e -s $tmpdir/test2", + "rm $tmpdir/test2.MA?", $NEW_TEST, - "$maria_exe_path/ma_test2$suffix -s -L -K -W -P -M -T -c -b32768 -t4 -A1", - "$maria_exe_path/maria_read_log$suffix -a -s", - "$maria_exe_path/maria_chk$suffix -es test2", - "$maria_exe_path/maria_read_log$suffix -a -s", - "$maria_exe_path/maria_chk$suffix -es test2", - "rm test2.MA?", - "$maria_exe_path/maria_read_log$suffix -a -s", - "$maria_exe_path/maria_chk$suffix -es test2", - "rm test2.MA?" + "$maria_exe_path/ma_test2$suffix -h$tmpdir -s -L -K -W -P -M -T -c -b32768 -t4 -A1", + "$maria_exe_path/maria_read_log$suffix -a -s -h$tmpdir", + "$maria_exe_path/maria_chk$suffix -h$tmpdir -es $tmpdir/test2", + "$maria_exe_path/maria_read_log$suffix -a -s -h$tmpdir ", + "$maria_exe_path/maria_chk$suffix -h$tmpdir -es $tmpdir/test2", + "rm $tmpdir/test2.MA?", + "$maria_exe_path/maria_read_log$suffix -a -s -h$tmpdir", + "$maria_exe_path/maria_chk$suffix -h$tmpdir -es $tmpdir/test2", + "rm $tmpdir/test2.MA?" ); return &count_tests(\@t) if ($count); @@ -550,10 +567,14 @@ sub ok if ($verbose) { - print "$com "; + # Print command with out the long unittest/../ prefix + my $tmp; + $tmp= $com; + $tmp =~ s|^unittest/../||; + print "$tmp "; + $len= length($tmp); } $output= `$com 2>&1`; - $len= length($com); if ($verbose) { print " " x (62 - $len); @@ -650,6 +671,19 @@ sub count_tests return $nr_tests; } +sub unlink_log_files +{ + unlink "$full_tmpdir/maria_log_control", "$full_tmpdir/maria_log.00000001", "$full_tmpdir/maria_log.00000002"; +} + +sub unlink_all_possible_tmp_files() +{ + unlink_log_files(); + + # Unlink tmp files that may have been created when testing the test programs + unlink <$full_tmpdir/*.TMD maria_log_control maria_log.00000001 maria_log.00000002 maria_logtest1.MA? test2.MA? test3.MA?>; +} + #### #### Run a bunch of tests #### Arguments: $t: an array of the tests @@ -666,7 +700,7 @@ sub run_test_bunch { if ($clear && @$t[$i] eq $NEW_TEST) { - unlink ; + unlink_log_files(); } if (@$t[$i] ne $NEW_TEST) { diff --git a/storage/xtradb/buf/buf0buf.c b/storage/xtradb/buf/buf0buf.c index 83c16379872..452e5b0f526 100644 --- a/storage/xtradb/buf/buf0buf.c +++ b/storage/xtradb/buf/buf0buf.c @@ -1076,7 +1076,7 @@ init_again: "InnoDB: Logical offset (blocks) : %ld (%#lx)\n", (byte*)chunk->mem + shm_info->frame_offset, chunk->blocks[0].frame, frame, - phys_offset, phys_offset, + (long) phys_offset, (long) phys_offset, (long) logi_offset, (long) logi_offset, (long) blocks_offset, (long) blocks_offset); } else { diff --git a/storage/xtradb/row/row0upd.c b/storage/xtradb/row/row0upd.c index 4aa1474a25b..e1c78949603 100644 --- a/storage/xtradb/row/row0upd.c +++ b/storage/xtradb/row/row0upd.c @@ -1224,7 +1224,7 @@ row_upd_changes_ord_field_binary( const upd_field_t* upd_field; const dfield_t* dfield; dfield_t dfield_ext; - ulint dfield_len; + ulint dfield_len= 0; const byte* buf; ind_field = dict_index_get_nth_field(index, i); diff --git a/storage/xtradb/srv/srv0srv.c b/storage/xtradb/srv/srv0srv.c index 3ee85e26b28..3184308f573 100644 --- a/storage/xtradb/srv/srv0srv.c +++ b/storage/xtradb/srv/srv0srv.c @@ -2723,6 +2723,7 @@ srv_master_thread( srv_main_thread_id = os_thread_pf(os_thread_get_curr_id()); + memset(&prev_flush_info, 0, sizeof(prev_flush_info)); mutex_enter(&kernel_mutex); srv_table_reserve_slot(SRV_MASTER);