From: msvensson Date: February 20 2007 11:48am Subject: bk commit into 5.0 tree (msvensson:1.2426) BUG#20166 List-Archive: http://lists.mysql.com/commits/20165 X-Bug: 20166 Message-Id: <200702201148.l1KBmIsK031090@pilot.blaudden> 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 /mysqld + # ---------------------------------------------------------------------- + $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;