summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElena Stepanova <elenst@montyprogram.com>2017-06-02 01:46:25 +0300
committerElena Stepanova <elenst@montyprogram.com>2017-06-02 01:46:25 +0300
commitab62b7538f2eab43943da56c3a6d74cd85dfa877 (patch)
treebdedd5de7af2c7f3475251eec926f898c82677db
parentc2ef0bb6cecf034b32fced19d132432b90f3c4d5 (diff)
downloadmariadb-git-bb-10.0-elenst-mdev12042.tar.gz
MDEV-12042 Re-bootstrap the server if InnoDB options are incompatiblebb-10.0-elenst-mdev12042
-rw-r--r--mysql-test/include/innodb_page_size.combinations8
-rw-r--r--mysql-test/include/innodb_page_size.inc4
-rwxr-xr-xmysql-test/mysql-test-run.pl31
3 files changed, 36 insertions, 7 deletions
diff --git a/mysql-test/include/innodb_page_size.combinations b/mysql-test/include/innodb_page_size.combinations
new file mode 100644
index 00000000000..a9b7c7ce14d
--- /dev/null
+++ b/mysql-test/include/innodb_page_size.combinations
@@ -0,0 +1,8 @@
+[16k]
+innodb-page-size=16K
+
+[8k]
+innodb-page-size=8K
+
+[4k]
+innodb-page-size=4K
diff --git a/mysql-test/include/innodb_page_size.inc b/mysql-test/include/innodb_page_size.inc
new file mode 100644
index 00000000000..754b640da86
--- /dev/null
+++ b/mysql-test/include/innodb_page_size.inc
@@ -0,0 +1,4 @@
+# The goal of including this file is to enable innodb_page_size combinations
+# (see include/innodb_page_size.combinations)
+
+--source include/have_innodb.inc
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index 6f9481c7491..47c4f6ca737 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -3217,15 +3217,26 @@ sub mysql_server_start($) {
}
my $mysqld_basedir= $mysqld->value('basedir');
+ my $extra_opts= get_extra_opts($mysqld, $tinfo);
+
if ( $basedir eq $mysqld_basedir )
{
if (! $opt_start_dirty) # If dirty, keep possibly grown system db
{
- # Copy datadir from installed system db
- my $path= ($opt_parallel == 1) ? "$opt_vardir" : "$opt_vardir/..";
- my $install_db= "$path/install.db";
- copytree($install_db, $datadir) if -d $install_db;
- mtr_error("Failed to copy system db to '$datadir'") unless -d $datadir;
+ # Some InnoDB options are incompatible with the default bootstrap.
+ # If they are used, re-bootstrap
+ if ( $extra_opts and
+ "@$extra_opts" =~ /--innodb[-_](?:page[-_]size|checksum[-_]algorithm|undo[-_]tablespaces|log[-_]group[-_]home[-_]dir|data[-_]home[-_]dir)/ )
+ {
+ mysql_install_db($mysqld, undef, $extra_opts);
+ }
+ else {
+ # Copy datadir from installed system db
+ my $path= ($opt_parallel == 1) ? "$opt_vardir" : "$opt_vardir/..";
+ my $install_db= "$path/install.db";
+ copytree($install_db, $datadir) if -d $install_db;
+ mtr_error("Failed to copy system db to '$datadir'") unless -d $datadir;
+ }
}
}
else
@@ -3264,7 +3275,6 @@ sub mysql_server_start($) {
if (!$opt_embedded_server)
{
- my $extra_opts= get_extra_opts($mysqld, $tinfo);
mysqld_start($mysqld,$extra_opts);
# Save this test case information, so next can examine it
@@ -3488,7 +3498,7 @@ sub default_mysqld {
sub mysql_install_db {
- my ($mysqld, $datadir)= @_;
+ my ($mysqld, $datadir, $extra_opts)= @_;
my $install_datadir= $datadir || $mysqld->value('datadir');
my $install_basedir= $mysqld->value('basedir');
@@ -3529,6 +3539,13 @@ sub mysql_install_db {
mtr_add_arg($args, $extra_opt);
}
}
+ # InnoDB options can come not only from the command line, but also
+ # from option files or combinations
+ foreach my $extra_opt ( @$extra_opts ) {
+ if ($extra_opt =~ /--innodb/) {
+ mtr_add_arg($args, $extra_opt);
+ }
+ }
# If DISABLE_GRANT_OPTIONS is defined when the server is compiled (e.g.,
# configure --disable-grant-options), mysqld will not recognize the