List:Commits« Previous MessageNext Message »
From:msvensson Date:February 20 2007 11:48am
Subject:bk commit into 5.0 tree (msvensson:1.2426) BUG#20166
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of msvensson. When msvensson does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-02-20 12:48:15+01:00, msvensson@stripped +4 -0
  Bug#20166 mysql-test-run.pl does not test system privilege tables creation
   - Add test of bootstrap mode
   - Make mysqld return error if bootstrap failed  

  mysql-test/mysql-test-run.pl@stripped, 2007-02-20 12:48:13+01:00, msvensson@stripped +5 -2
    Remove options --skip-grant-tables as that is always
    turned on by --bootstrap
    Remove options --console as that does not affect --bootstrap mode
    at all
    Add environment variable MYSQLD_BOOTSTRAP_CMD containing path 
    to mysqld and the arguments used for bootstrap

  mysql-test/r/bootstrap.result@stripped, 2007-02-20 12:48:14+01:00, msvensson@stripped +8 -0
    New BitKeeper file ``mysql-test/r/bootstrap.result''

  mysql-test/r/bootstrap.result@stripped, 2007-02-20 12:48:14+01:00, msvensson@stripped +0 -0

  mysql-test/t/bootstrap.test@stripped, 2007-02-20 12:48:14+01:00, msvensson@stripped +46 -0
    New BitKeeper file ``mysql-test/t/bootstrap.test''

  mysql-test/t/bootstrap.test@stripped, 2007-02-20 12:48:14+01:00, msvensson@stripped +0 -0

  sql/sql_parse.cc@stripped, 2007-02-20 12:48:14+01:00, msvensson@stripped +12 -1
    Abort bootstrap if execution fails
    Report error to stderr/log

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	msvensson
# Host:	pilot.blaudden
# Root:	/home/msvensson/mysql/bug20166/my50-bug20166

--- 1.604/sql/sql_parse.cc	2007-02-06 15:50:35 +01:00
+++ 1.605/sql/sql_parse.cc	2007-02-20 12:48:14 +01:00
@@ -1308,6 +1308,7 @@
     thd->query= thd->memdup_w_gap(buff, length+1, 
 				  thd->db_length+1+QUERY_CACHE_FLAGS_SIZE);
     thd->query[length] = '\0';
+    DBUG_PRINT("query",("%-.4096s",thd->query));
     /*
       We don't need to obtain LOCK_thread_count here because in bootstrap
       mode we have only one thread.
@@ -1315,16 +1316,26 @@
     thd->query_id=next_query_id();
     mysql_parse(thd,thd->query,length);
     close_thread_tables(thd);			// Free tables
+
     if (thd->is_fatal_error)
       break;
+
+    if (thd->net.report_error)
+    {
+      /* The query failed, send error to log and abort bootstrap */
+      net_send_error(thd);
+      thd->fatal_error();
+      break;
+    }
+
     free_root(thd->mem_root,MYF(MY_KEEP_PREALLOC));
 #ifdef USING_TRANSACTIONS
     free_root(&thd->transaction.mem_root,MYF(MY_KEEP_PREALLOC));
 #endif
   }
 
-  /* thd->fatal_error should be set in case something went wrong */
 end:
+  /* Remember the exit code of bootstrap */
   bootstrap_error= thd->is_fatal_error;
 
   net_end(&thd->net);

--- 1.198/mysql-test/mysql-test-run.pl	2007-02-16 15:23:25 +01:00
+++ 1.199/mysql-test/mysql-test-run.pl	2007-02-20 12:48:13 +01:00
@@ -2890,8 +2890,6 @@
 
   mtr_add_arg($args, "--no-defaults");
   mtr_add_arg($args, "--bootstrap");
-  mtr_add_arg($args, "--console");
-  mtr_add_arg($args, "--skip-grant-tables");
   mtr_add_arg($args, "--basedir=%s", $path_my_basedir);
   mtr_add_arg($args, "--datadir=%s", $data_dir);
   mtr_add_arg($args, "--skip-innodb");
@@ -2917,6 +2915,11 @@
   # MYSQLD_BOOTSTRAP to the full path to a mysqld which does accept
   # --bootstrap, to accommodate this.
   my $exe_mysqld_bootstrap = $ENV{'MYSQLD_BOOTSTRAP'} || $exe_mysqld;
+
+  # ----------------------------------------------------------------------
+  # export MYSQLD_BOOTSTRAP_CMD variable containing <path>/mysqld <args>
+  # ----------------------------------------------------------------------
+  $ENV{'MYSQLD_BOOTSTRAP_CMD'}= "$exe_mysqld_bootstrap " . join(" ", @$args);
 
   # Log bootstrap command
   my $path_bootstrap_log= "$opt_vardir/log/bootstrap.log";
--- New file ---
+++ mysql-test/r/bootstrap.result	07/02/20 12:48:14
drop table if exists t1;
drop table t1;
drop table t1;
ERROR 42S02: Unknown table 't1'
set @my_max_allowed_packet= @@max_allowed_packet;
set global max_allowed_packet=100*@@max_allowed_packet;
set global max_allowed_packet=@my_max_allowed_packet;
drop table t1;

--- New file ---
+++ mysql-test/t/bootstrap.test	07/02/20 12:48:14
#
# test mysqld in bootstrap mode
#
--disable_warnings
drop table if exists t1;
--enable_warnings


#
# Check that --bootstrap reads from stdin
#
--write_file $MYSQLTEST_VARDIR/tmp/bootstrap.sql
use test;
CREATE TABLE t1(a int);
EOF
--exec $MYSQLD_BOOTSTRAP_CMD < $MYSQLTEST_VARDIR/tmp/bootstrap.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
drop table t1;

#
# Check that --bootstrap of file with SQL error returns error
#
--write_file $MYSQLTEST_VARDIR/tmp/bootstrap_error.sql
use test;
CREATE TABLE t1;
EOF
--error 1
--exec $MYSQLD_BOOTSTRAP_CMD  < $MYSQLTEST_VARDIR/tmp/bootstrap_error.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
# Table t1 should not exists
--error 1051
drop table t1;

#
# Bootstrap with a query larger than 2*thd->net.max_packet
#
set @my_max_allowed_packet= @@max_allowed_packet;
set global max_allowed_packet=100*@@max_allowed_packet;
--disable_query_log
create table t1 select 2 as a, concat(repeat('MySQL', @@max_allowed_packet/10), ';') as b;
eval select * into outfile '$MYSQLTEST_VARDIR/tmp/long_query.sql' from t1;
--enable_query_log
--error 1
--exec $MYSQLD_BOOTSTRAP_CMD < $MYSQLTEST_VARDIR/tmp/long_query.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1

set global max_allowed_packet=@my_max_allowed_packet;
drop table t1;


Thread
bk commit into 5.0 tree (msvensson:1.2426) BUG#20166msvensson20 Feb