3920 Mattias Jonsson 2012-02-17 [merge]
WL#4305 - merge with updated mysql-trunk
Added mysql-trunk-wl4305.push test collection which is
a copy of default.push + partitions-big-debug from
default.weekly
removed:
mysql-test/suite/parts/t/partition_debug-master.opt
mysql-test/suite/parts/t/partition_debug_myisam-master.opt
added:
mysql-test/collections/mysql-trunk-wl4305.push
modified:
mysql-test/suite/parts/r/partition_debug_innodb.result
mysql-test/suite/parts/r/partition_debug_myisam.result
mysql-test/suite/parts/t/partition_debug_innodb-master.opt
mysql-test/suite/perfschema/r/dml_setup_instruments.result
sql/ha_partition.cc
sql/ha_partition.h
sql/handler.cc
sql/handler.h
sql/mysqld.cc
sql/mysqld.h
sql/partition_info.cc
sql/sql_base.cc
sql/sql_partition.cc
sql/sql_partition.h
sql/sql_partition_admin.cc
sql/sql_table.cc
sql/sql_tmp_table.cc
sql/table.cc
sql/table.h
storage/archive/azio.c
storage/archive/ha_archive.cc
storage/archive/ha_archive.h
storage/example/ha_example.cc
storage/example/ha_example.h
storage/innobase/handler/ha_innodb.cc
storage/innobase/handler/ha_innodb.h
storage/myisam/ha_myisam.cc
=== added file 'mysql-test/collections/mysql-trunk-wl4305.push'
--- a/mysql-test/collections/mysql-trunk-wl4305.push 1970-01-01 00:00:00 +0000
+++ b/mysql-test/collections/mysql-trunk-wl4305.push revid:mattias.jonsson@stripped
@@ -0,0 +1,7 @@
+perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --unit-tests
+perl mysql-test-run.pl --timer --force --parallel=auto --comment=main_ps_row --vardir=var-main-ps_row --suite=main --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list
+perl mysql-test-run.pl --timer --force --parallel=auto --comment=main_embedded --vardir=var-main_emebbed --suite=main --embedded --experimental=collections/default.experimental --skip-ndb
+perl mysql-test-run.pl --timer --force --parallel=auto --comment=innodb_4k_size --vardir=var-innodb-4k --experimental=collections/default.experimental --skip-ndb --suite=innodb --mysqld=--innodb-page-size=4k
+
+# From default.weekly:
+perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=60 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=partitions-debug-big --vardir=var-parts-debug-big --suite=parts
=== added file 'mysql-test/suite/binlog/r/binlog_server_start_options.result'
--- a/mysql-test/suite/binlog/r/binlog_server_start_options.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/binlog/r/binlog_server_start_options.result revid:mattias.jonsson@stripped
@@ -0,0 +1 @@
+End of test binlog.binlog_server_start_options.test
=== added file 'mysql-test/suite/binlog/t/binlog_server_start_options.test'
--- a/mysql-test/suite/binlog/t/binlog_server_start_options.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/binlog/t/binlog_server_start_options.test revid:mattias.jonsson@stripped
@@ -0,0 +1,119 @@
+############################################################
+# Tests startup options for mysql server pertaining binlog
+# This test doesnot require (as of now) to be run for all
+# the binlogging format as server startup in the cases
+# below are independent of the format. We therefore run this
+# test in only statement format.
+############################################################
+--source include/have_binlog_format_statement.inc
+
+#------------------------------------------------------------------#
+# BUG 11766817 - 60030: CRASH ON MYSQLD STARTUP WHEN USING LOG-BIN #
+#------------------------------------------------------------------#
+
+#fetch the basedir from the already started server
+--let MYSQL_BASEDIR= `select @@basedir`
+
+--perl
+ use strict;
+ my $vardir= $ENV{'MYSQLTEST_VARDIR'} or die ('MYSQLTEST_VARDIR not set! Aborting!\n');
+ my $cnf1= $vardir.'cnf_1.cnf';
+ my $basedir= $ENV{'MYSQL_BASEDIR'} or die "Basedir not set";
+
+# check if mysqld exists in basedir/sql folder or in basedir/bin
+ my $share_folder =$basedir."/sql/share/";
+ if(-e $share_folder)
+ {
+ $basedir=$basedir."/sql/";
+ }
+
+#create a new datadir if there is none else remove and create a new one.
+ unless(-e $basedir."/data")
+ {
+ mkdir($basedir."/data", 0777) or die "Can't make data directory: $!";
+ }
+ else
+ {
+# Ideally this section should not execute as this means that the default
+# datadir exists which is not possible in the current scenario.
+ use File::Path;
+ rmtree($basedir."/data");
+ use strict;
+ mkdir($basedir."/data", 0777) or die "Can't make data directory: $!";
+ }
+
+#create cnf_1 file
+ my $content= "[mysqld]\n";
+ $content.="basedir=$basedir\n";
+ $content.="socket=socket-5620.sock\n";
+ $content.="log-error=error.log\n";
+ $content.="port=5620\n";
+ $content.="user=root\n";
+ $content.="core\n";
+ $content.="log-bin\n";
+ open(FILE_CNF, ">$cnf1") or die("Unable to create $cnf1: $!\n");
+ print FILE_CNF $content;
+ close(FILE_CNF);
+
+#export the cnf path to mtr
+ open(FILE_INC, '>include/cnf_include.inc');
+ print FILE_INC '--let $CNF1'." = $cnf1\n";
+ close(FILE_INC);
+EOF
+
+--source include/cnf_include.inc
+--error 1
+--exec $MYSQLD --defaults-file=$CNF1
+
+#--------------------------------------------------------------------------------------------#
+# BUG 12929941 - SEGFAULT IN STRMAKE/CONVERT_DIRNAME WHEN USING --RELAY-LOG=SLAVE-RELAY-BIN #
+#--------------------------------------------------------------------------------------------#
+
+--perl
+ use strict;
+
+# Initialize the variables
+ my $vardir= $ENV{'MYSQLTEST_VARDIR'} or die ('MYSQLTEST_VARDIR not set! Aborting!\n');
+ my $basedir= $ENV{'MYSQL_BASEDIR'} or die "Basedir not set: $!\n";
+
+# check if mysqld exists in basedir/sql folder or in basedir/bin
+ my $share_folder =$basedir."/sql/share/\0";
+ if(-e $share_folder)
+ {
+ $basedir=$basedir."/sql/";
+ }
+
+#create cnf_2 file.
+ my $cnf2= $vardir.'cnf_2.cnf';
+ my $content= "[mysqld]\n";
+ $content.="basedir=$basedir\n";
+ $content.="port=5620\n";
+ $content.="core\n";
+ open(FILE_CNF, ">$cnf2") or die("Unable to create $cnf2: $!\n");
+ print FILE_CNF $content;
+ close(FILE_CNF);
+
+#export the cnf path and "actual basedir" to mtr
+ open(FILE_INC, '>include/cnf_include.inc');
+ print FILE_INC '--let $CNF2'." = $cnf2\n";
+ print FILE_INC '--let REAL_BASEDIR'."=$basedir\n";
+ close(FILE_INC);
+EOF
+
+--source include/cnf_include.inc
+--error 1
+--exec $MYSQLD --defaults-file=$CNF2 --relay-log=slave-relay-bin
+
+#cleanup
+--perl
+ use File::Path;
+ my $basedir= $ENV{'REAL_BASEDIR'};
+ rmtree($basedir."/data/");
+EOF
+
+--remove_file include/cnf_include.inc
+--remove_file $CNF1
+--remove_file $CNF2
+
+--echo End of test binlog.binlog_server_start_options.test
+
=== modified file 'mysys/mf_format.c'
--- a/mysys/mf_format.c revid:mattias.jonsson@stripped
+++ b/mysys/mf_format.c revid:mattias.jonsson@stripped
@@ -40,11 +40,13 @@ char * fn_format(char * to, const char *
name+=(length=dirname_part(dev, (startpos=(char *) name), &dev_length));
if (length == 0 || (flag & MY_REPLACE_DIR))
{
+ DBUG_ASSERT(dir != NULL);
/* Use given directory */
convert_dirname(dev,dir,NullS); /* Fix to this OS */
}
else if ((flag & MY_RELATIVE_PATH) && !test_if_hard_path(dev))
{
+ DBUG_ASSERT(dir != NULL);
/* Put 'dir' before the given path */
strmake(buff,dev,sizeof(buff)-1);
pos=convert_dirname(dev,dir,NullS);
=== modified file 'sql/handler.cc'
--- a/sql/handler.cc revid:mattias.jonsson@stripped
+++ b/sql/handler.cc revid:mattias.jonsson@stripped
@@ -4633,7 +4633,8 @@ handler::multi_range_read_info_const(uin
else
{
DBUG_EXECUTE_IF("crash_records_in_range", DBUG_SUICIDE(););
- DBUG_ASSERT(min_endp || max_endp);
+ // Fails - reintroduce when fixed
+ // DBUG_ASSERT(min_endp || max_endp);
if (HA_POS_ERROR == (rows= this->records_in_range(keyno, min_endp,
max_endp)))
{
=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc revid:mattias.jonsson@stripped
+++ b/sql/mysqld.cc revid:mattias.jonsson@stripped
@@ -3206,6 +3206,15 @@ rpl_make_log_name(const char *opt,
const char *base= opt ? opt : def;
unsigned int options=
MY_REPLACE_EXT | MY_UNPACK_FILENAME | MY_SAFE_PATH;
+
+ /* mysql_real_data_home_ptr may be null if no value of datadir has been
+ specified through command-line or througha cnf file. If that is the
+ case we make mysql_real_data_home_ptr point to mysql_real_data_home
+ which, in that case holds the default path for data-dir.
+ */
+ if(mysql_real_data_home_ptr == NULL)
+ mysql_real_data_home_ptr= mysql_real_data_home;
+
if (fn_format(buff, base, mysql_real_data_home_ptr, ext, options))
DBUG_RETURN(strdup(buff));
else
=== modified file 'sql/opt_range.cc'
--- a/sql/opt_range.cc revid:mattias.jonsson@stripped
+++ b/sql/opt_range.cc revid:mattias.jonsson@stripped
@@ -4825,7 +4825,8 @@ static double ror_scan_selectivity(const
rec_per_key[tuple_arg->part])) // (3)
{
DBUG_EXECUTE_IF("crash_records_in_range", DBUG_SUICIDE(););
- DBUG_ASSERT(min_range.length > 0);
+ // Fails - reintroduce when fixed
+ // DBUG_ASSERT(min_range.length > 0);
records= (table->file->
records_in_range(scan->keynr, &min_range, &max_range));
}
=== modified file 'sql/sql_binlog.cc'
--- a/sql/sql_binlog.cc revid:mattias.jonsson@stripped
+++ b/sql/sql_binlog.cc revid:mattias.jonsson@stripped
@@ -159,7 +159,13 @@ void mysql_client_binlog_statement(THD*
Relay_log_info *rli= thd->rli_fake;
if (!rli)
{
- if ((rli= Rpl_info_factory::create_rli(INFO_REPOSITORY_FILE, FALSE)))
+ /*
+ We create a Relay_log_info object with a INFO_REPOSITORY_DUMMY because
+ to process a BINLOG command a real repository is not necessary. In the
+ future, we need to improve the code around the BINLOG command as only a
+ small part of the object is required to execute it. / Alfranio
+ */
+ if ((rli= Rpl_info_factory::create_rli(INFO_REPOSITORY_DUMMY, FALSE)))
{
thd->rli_fake= rli;
rli->info_thd= thd;
@@ -306,18 +312,20 @@ void mysql_client_binlog_statement(THD*
}
}
-
DBUG_PRINT("info",("binlog base64 execution finished successfully"));
my_ok(thd);
end:
- if ((error || err) && rli->rows_query_ev)
+ if (rli)
{
- delete rli->rows_query_ev;
- rli->rows_query_ev= NULL;
+ if ((error || err) && rli->rows_query_ev)
+ {
+ delete rli->rows_query_ev;
+ rli->rows_query_ev= NULL;
+ }
+ rli->slave_close_thread_tables(thd);
}
thd->variables.option_bits= thd_options;
- rli->slave_close_thread_tables(thd);
my_free(buf);
DBUG_VOID_RETURN;
}
=== modified file 'storage/innobase/include/univ.i'
--- a/storage/innobase/include/univ.i revid:mattias.jonsson@stripped
+++ b/storage/innobase/include/univ.i revid:mattias.jonsson@stripped
@@ -455,6 +455,8 @@ typedef unsigned long long int ullint;
/** The 'undefined' value for a ulint */
#define ULINT_UNDEFINED ((ulint)(-1))
+#define ULONG_UNDEFINED ((ulong)(-1))
+
/** The 'undefined' value for a ib_uint64_t */
#define UINT64_UNDEFINED ((ib_uint64_t)(-1))
=== modified file 'storage/innobase/srv/srv0start.cc'
--- a/storage/innobase/srv/srv0start.cc revid:mattias.jonsson@stripped
+++ b/storage/innobase/srv/srv0start.cc revid:mattias.jonsson@stripped
@@ -2181,7 +2181,7 @@ innobase_start_or_create_for_mysql(void)
if (srv_available_undo_logs == ULINT_UNDEFINED) {
/* Can only happen if force recovery is set. */
ut_a(srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO);
- srv_undo_logs = ULINT_UNDEFINED;
+ srv_undo_logs = ULONG_UNDEFINED;
}
/* Create the thread which watches the timeouts for lock waits */
=== modified file 'storage/innobase/trx/trx0trx.cc'
--- a/storage/innobase/trx/trx0trx.cc revid:mattias.jonsson@stripped
+++ b/storage/innobase/trx/trx0trx.cc revid:mattias.jonsson@stripped
@@ -624,7 +624,7 @@ UNIV_INLINE
trx_rseg_t*
trx_assign_rseg(
/*============*/
- ulint max_undo_logs, /*!< in: maximum number of UNDO logs to use */
+ ulong max_undo_logs, /*!< in: maximum number of UNDO logs to use */
ulint n_tablespaces) /*!< in: number of rollback tablespaces */
{
ulint i;
@@ -632,7 +632,7 @@ trx_assign_rseg(
static ulint latest_rseg = 0;
if (srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO) {
- ut_a(max_undo_logs == ULINT_UNDEFINED);
+ ut_a(max_undo_logs == ULONG_UNDEFINED);
return(NULL);
}
No bundle (reason: useless for push emails).
| Thread |
|---|
| • bzr push into mysql-trunk branch (mattias.jonsson:3920) WL#4305 | Mattias Jonsson | 20 Feb |