mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
Merge pilot.blaudden:/home/msvensson/mysql/bug20166/my50-bug20166
into pilot.blaudden:/home/msvensson/mysql/bug20166/my51-bug20166 mysql-test/mysql-test-run.pl: Auto merged sql/sql_parse.cc: Auto merged
This commit is contained in:
commit
13f628fabc
4 changed files with 71 additions and 3 deletions
|
@ -2905,8 +2905,6 @@ sub install_db ($$) {
|
|||
|
||||
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");
|
||||
|
@ -2933,6 +2931,11 @@ sub install_db ($$) {
|
|||
# --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";
|
||||
mtr_tofile($path_bootstrap_log,
|
||||
|
|
8
mysql-test/r/bootstrap.result
Normal file
8
mysql-test/r/bootstrap.result
Normal file
|
@ -0,0 +1,8 @@
|
|||
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;
|
46
mysql-test/t/bootstrap.test
Normal file
46
mysql-test/t/bootstrap.test
Normal file
|
@ -0,0 +1,46 @@
|
|||
#
|
||||
# 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;
|
||||
|
|
@ -1359,6 +1359,7 @@ pthread_handler_t handle_bootstrap(void *arg)
|
|||
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.
|
||||
|
@ -1366,16 +1367,26 @@ pthread_handler_t handle_bootstrap(void *arg)
|
|||
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);
|
||||
|
|
Loading…
Reference in a new issue