Commit e10a36b6 authored by unknown's avatar unknown

Merge neptunus.(none):/home/msvensson/mysql/bug9072

into neptunus.(none):/home/msvensson/mysql/mysql-4.1
parents 57ca6dd8 846e3ed9
...@@ -79,6 +79,9 @@ extern "C" { ...@@ -79,6 +79,9 @@ extern "C" {
/* On NetWare, stack grows towards lower address*/ /* On NetWare, stack grows towards lower address*/
#define STACK_DIRECTION -1 #define STACK_DIRECTION -1
/* On NetWare, to fix the problem with the deletion of open files */
#define CANT_DELETE_OPEN_FILES 1
/* default directory information */ /* default directory information */
#define DEFAULT_MYSQL_HOME "sys:/mysql" #define DEFAULT_MYSQL_HOME "sys:/mysql"
#define PACKAGE "mysql" #define PACKAGE "mysql"
......
...@@ -346,6 +346,12 @@ struct trx_struct{ ...@@ -346,6 +346,12 @@ struct trx_struct{
in MySQL's binlog write, we will in MySQL's binlog write, we will
flush the log to disk later in flush the log to disk later in
a separate call */ a separate call */
ibool must_flush_log_later;/* this flag is set to TRUE in
trx_commit_off_kernel() if
flush_log_later was TRUE, and there
were modifications by the transaction;
in that case we must flush the log
in trx_commit_complete_for_mysql() */
dulint commit_lsn; /* lsn at the time of the commit */ dulint commit_lsn; /* lsn at the time of the commit */
ibool dict_operation; /* TRUE if the trx is used to create ibool dict_operation; /* TRUE if the trx is used to create
a table, create an index, or drop a a table, create an index, or drop a
......
...@@ -96,6 +96,7 @@ trx_create( ...@@ -96,6 +96,7 @@ trx_create(
trx->check_unique_secondary = TRUE; trx->check_unique_secondary = TRUE;
trx->flush_log_later = FALSE; trx->flush_log_later = FALSE;
trx->must_flush_log_later = FALSE;
trx->dict_operation = FALSE; trx->dict_operation = FALSE;
...@@ -654,6 +655,8 @@ trx_commit_off_kernel( ...@@ -654,6 +655,8 @@ trx_commit_off_kernel(
ut_ad(mutex_own(&kernel_mutex)); ut_ad(mutex_own(&kernel_mutex));
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
trx->must_flush_log_later = FALSE;
rseg = trx->rseg; rseg = trx->rseg;
if (trx->insert_undo != NULL || trx->update_undo != NULL) { if (trx->insert_undo != NULL || trx->update_undo != NULL) {
...@@ -821,6 +824,7 @@ trx_commit_off_kernel( ...@@ -821,6 +824,7 @@ trx_commit_off_kernel(
if (trx->flush_log_later) { if (trx->flush_log_later) {
/* Do nothing yet */ /* Do nothing yet */
trx->must_flush_log_later = TRUE;
} else if (srv_flush_log_at_trx_commit == 0) { } else if (srv_flush_log_at_trx_commit == 0) {
/* Do nothing */ /* Do nothing */
} else if (srv_flush_log_at_trx_commit == 1) { } else if (srv_flush_log_at_trx_commit == 1) {
...@@ -1539,7 +1543,9 @@ trx_commit_complete_for_mysql( ...@@ -1539,7 +1543,9 @@ trx_commit_complete_for_mysql(
trx->op_info = "flushing log"; trx->op_info = "flushing log";
if (srv_flush_log_at_trx_commit == 0) { if (!trx->must_flush_log_later) {
/* Do nothing */
} else if (srv_flush_log_at_trx_commit == 0) {
/* Do nothing */ /* Do nothing */
} else if (srv_flush_log_at_trx_commit == 1) { } else if (srv_flush_log_at_trx_commit == 1) {
if (srv_unix_file_flush_method == SRV_UNIX_NOSYNC) { if (srv_unix_file_flush_method == SRV_UNIX_NOSYNC) {
...@@ -1560,6 +1566,8 @@ trx_commit_complete_for_mysql( ...@@ -1560,6 +1566,8 @@ trx_commit_complete_for_mysql(
} else { } else {
ut_error; ut_error;
} }
trx->must_flush_log_later = FALSE;
trx->op_info = ""; trx->op_info = "";
......
...@@ -63,21 +63,24 @@ sub collect_test_cases ($) { ...@@ -63,21 +63,24 @@ sub collect_test_cases ($) {
# To speed things up, we sort first in if the test require a restart # To speed things up, we sort first in if the test require a restart
# or not, second in alphanumeric order. # or not, second in alphanumeric order.
# @$cases = sort { if ( $::opt_reorder )
# if ( $a->{'master_restart'} and $b->{'master_restart'} or {
# ! $a->{'master_restart'} and ! $b->{'master_restart'} ) @$cases = sort {
# { if ( $a->{'master_restart'} and $b->{'master_restart'} or
# return $a->{'name'} cmp $b->{'name'}; ! $a->{'master_restart'} and ! $b->{'master_restart'} )
# } {
# if ( $a->{'master_restart'} ) return $a->{'name'} cmp $b->{'name'};
# { }
# return 1; # Is greater if ( $a->{'master_restart'} )
# } {
# else return 1; # Is greater
# { }
# return -1; # Is less else
# } {
# } @$cases; return -1; # Is less
}
} @$cases;
}
return $cases; return $cases;
} }
......
...@@ -89,12 +89,11 @@ sub mtr_report_test_passed ($) { ...@@ -89,12 +89,11 @@ sub mtr_report_test_passed ($) {
my $tinfo= shift; my $tinfo= shift;
my $timer= ""; my $timer= "";
# FIXME if ( $::opt_timer and -f "$::glob_mysql_test_dir/var/log/timer" )
# if ( $::opt_timer and -f "$::glob_mysql_test_dir/var/log/timer" ) {
# { $timer= mtr_fromfile("$::glob_mysql_test_dir/var/log/timer");
# $timer= `cat var/log/timer`; $timer= sprintf "%12s", $timer;
# $timer= sprintf "%13s", $timer; }
# }
$tinfo->{'result'}= 'MTR_RES_PASSED'; $tinfo->{'result'}= 'MTR_RES_PASSED';
print "[ pass ] $timer\n"; print "[ pass ] $timer\n";
} }
......
...@@ -214,6 +214,7 @@ our $opt_embedded_server; ...@@ -214,6 +214,7 @@ our $opt_embedded_server;
our $opt_extern; our $opt_extern;
our $opt_fast; our $opt_fast;
our $opt_force; our $opt_force;
our $opt_reorder;
our $opt_gcov; our $opt_gcov;
our $opt_gcov_err; our $opt_gcov_err;
...@@ -525,6 +526,7 @@ sub command_line_setup () { ...@@ -525,6 +526,7 @@ sub command_line_setup () {
'local-master' => \$opt_local_master, 'local-master' => \$opt_local_master,
'netware' => \$opt_netware, 'netware' => \$opt_netware,
'old-master' => \$opt_old_master, 'old-master' => \$opt_old_master,
'reorder' => \$opt_reorder,
'script-debug' => \$opt_script_debug, 'script-debug' => \$opt_script_debug,
'sleep=i' => \$opt_sleep, 'sleep=i' => \$opt_sleep,
'socket=s' => \$opt_socket, 'socket=s' => \$opt_socket,
...@@ -1368,7 +1370,10 @@ sub run_testcase ($) { ...@@ -1368,7 +1370,10 @@ sub run_testcase ($) {
mtr_report_test_name($tinfo); mtr_report_test_name($tinfo);
mtr_tofile($master->[0]->{'path_myerr'},"CURRENT_TEST: $tname\n"); mtr_tofile($master->[0]->{'path_myerr'},"CURRENT_TEST: $tname\n");
do_before_start_master($tname,$tinfo->{'master_sh'});
# FIXME test cases that depend on each other, prevent this from
# being at this location.
# do_before_start_master($tname,$tinfo->{'master_sh'});
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# If any mysqld servers running died, we have to know # If any mysqld servers running died, we have to know
...@@ -1400,6 +1405,8 @@ sub run_testcase ($) { ...@@ -1400,6 +1405,8 @@ sub run_testcase ($) {
} }
if ( ! $master->[0]->{'pid'} ) if ( ! $master->[0]->{'pid'} )
{ {
# FIXME not correct location for do_before_start_master()
do_before_start_master($tname,$tinfo->{'master_sh'});
$master->[0]->{'pid'}= $master->[0]->{'pid'}=
mysqld_start('master',0,$tinfo->{'master_opt'},[]); mysqld_start('master',0,$tinfo->{'master_opt'},[]);
if ( ! $master->[0]->{'pid'} ) if ( ! $master->[0]->{'pid'} )
...@@ -1535,9 +1542,10 @@ sub do_before_start_master ($$) { ...@@ -1535,9 +1542,10 @@ sub do_before_start_master ($$) {
$tname ne "rpl_crash_binlog_ib_3b") $tname ne "rpl_crash_binlog_ib_3b")
{ {
# FIXME we really want separate dir for binlogs # FIXME we really want separate dir for binlogs
# FIXME replace 'rm' in backticks with portable Perl function foreach my $bin ( glob("$glob_mysql_test_dir/var/log/master*-bin.*") )
`rm -f $glob_mysql_test_dir/var/log/master-bin*`; {
# unlink("$glob_mysql_test_dir/var/log/master-bin*"); unlink($bin);
}
} }
# Remove old master.info and relay-log.info files # Remove old master.info and relay-log.info files
...@@ -1571,9 +1579,10 @@ sub do_before_start_slave ($$) { ...@@ -1571,9 +1579,10 @@ sub do_before_start_slave ($$) {
$tname ne "rpl_crash_binlog_ib_3b" ) $tname ne "rpl_crash_binlog_ib_3b" )
{ {
# FIXME we really want separate dir for binlogs # FIXME we really want separate dir for binlogs
# FIXME replace 'rm' in backticks with portable Perl function foreach my $bin ( glob("$glob_mysql_test_dir/var/log/slave*-bin.*") )
`rm -fr $glob_mysql_test_dir/var/log/slave*-bin.*`; {
# unlink("$glob_mysql_test_dir/var/log/slave*-bin.*"); # FIXME idx??? unlink($bin);
}
# FIXME really master?! # FIXME really master?!
unlink("$glob_mysql_test_dir/var/slave-data/master.info"); unlink("$glob_mysql_test_dir/var/slave-data/master.info");
unlink("$glob_mysql_test_dir/var/slave-data/relay-log.info"); unlink("$glob_mysql_test_dir/var/slave-data/relay-log.info");
...@@ -1659,13 +1668,15 @@ sub mysqld_arguments ($$$$$) { ...@@ -1659,13 +1668,15 @@ sub mysqld_arguments ($$$$$) {
mtr_add_arg($args, "%s--datadir=%s", $prefix, mtr_add_arg($args, "%s--datadir=%s", $prefix,
$slave->[$idx]->{'path_myddir'}); $slave->[$idx]->{'path_myddir'});
% FIXME slave get this option twice?!
mtr_add_arg($args, "%s--exit-info=256", $prefix); mtr_add_arg($args, "%s--exit-info=256", $prefix);
mtr_add_arg($args, "%s--init-rpl-role=slave", $prefix); mtr_add_arg($args, "%s--init-rpl-role=slave", $prefix);
mtr_add_arg($args, "%s--log-bin=%s/var/log/slave%s-bin", $prefix, mtr_add_arg($args, "%s--log-bin=%s/var/log/slave%s-bin", $prefix,
$glob_mysql_test_dir, $sidx); # FIXME use own dir for binlogs $glob_mysql_test_dir, $sidx); # FIXME use own dir for binlogs
mtr_add_arg($args, "%s--log-slave-updates", $prefix); mtr_add_arg($args, "%s--log-slave-updates", $prefix);
% FIXME option duplicated for slave
mtr_add_arg($args, "%s--log=%s", $prefix, mtr_add_arg($args, "%s--log=%s", $prefix,
$slave->[$idx]->{'path_myerr'}); $slave->[$idx]->{'path_mylog'});
mtr_add_arg($args, "%s--master-retry-count=10", $prefix); mtr_add_arg($args, "%s--master-retry-count=10", $prefix);
mtr_add_arg($args, "%s--pid-file=%s", $prefix, mtr_add_arg($args, "%s--pid-file=%s", $prefix,
$slave->[$idx]->{'path_mypid'}); $slave->[$idx]->{'path_mypid'});
...@@ -2046,7 +2057,7 @@ sub run_mysqltest ($$) { ...@@ -2046,7 +2057,7 @@ sub run_mysqltest ($$) {
if ( $opt_timer ) if ( $opt_timer )
{ {
mtr_add_arg($args, "--timer-file=var/log/timer"); mtr_add_arg($args, "--timer-file=%s/var/log/timer", $glob_mysql_test_dir);
} }
if ( $opt_big_test ) if ( $opt_big_test )
...@@ -2175,6 +2186,7 @@ Misc options ...@@ -2175,6 +2186,7 @@ Misc options
timer Show test case execution time timer Show test case execution time
start-and-exit Only initiate and start the "mysqld" servers start-and-exit Only initiate and start the "mysqld" servers
fast Don't try to cleanup from earlier runs fast Don't try to cleanup from earlier runs
reorder Reorder tests to get less server restarts
help Get this help text help Get this help text
unified-diff | udiff When presenting differences, use unified diff unified-diff | udiff When presenting differences, use unified diff
......
...@@ -9149,7 +9149,7 @@ bool JOIN::rollup_make_fields(List<Item> &fields_arg, List<Item> &sel_fields, ...@@ -9149,7 +9149,7 @@ bool JOIN::rollup_make_fields(List<Item> &fields_arg, List<Item> &sel_fields,
{ {
/* Check if this is something that is part of this group by */ /* Check if this is something that is part of this group by */
ORDER *group_tmp; ORDER *group_tmp;
for (group_tmp= start_group, i-- ; for (group_tmp= start_group, i= pos ;
group_tmp ; group_tmp= group_tmp->next, i++) group_tmp ; group_tmp= group_tmp->next, i++)
{ {
if (*group_tmp->item == item) if (*group_tmp->item == item)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment