List:Commits« Previous MessageNext Message »
From:Sergey Vojtovich Date:November 1 2010 8:06am
Subject:Re: bzr commit into mysql-5.1-bugteam branch
(nirbhay.choubey:3549) Bug#54899
View as plain text  
Hi Nirbhay,

ok to push.

Regards,
Sergey

On Sun, Oct 31, 2010 at 05:08:13AM +0000, Nirbhay Choubey wrote:
> #At file:///home/nirbhay/Project/mysql/repo/wl/mysql-5.1-bugteam-54899/ based on
> revid:vasil.dimov@stripped
> 
>  3549 Nirbhay Choubey	2010-10-31
>       Bug #54899 : --one-database option cannot handle DROP/CREATE DATABASE commands
>       
>       After dropping and recreating the database specified along with --one-database
>       option at command line, mysql client keeps filtering the statements even after
>       the execution of a 'USE' command on the same database.
>       
>       --one-database option enables the filtering of statements when the current
>       database is not the one specified at the command line. However, when the same
>       database is dropped and recreated the variable (current_db) that holds the
>       inital database name gets altered. This bug exploits the fact that current_db
>       initially gets set to null value (0) when a 'use db_name' follows the
> recreation
>       of same database db_name (speficied at the command line) and hence
> skip_updates
>       gets set to 1, which inturn triggers the further filtering of statements.
>       
>       Fixed by making get_current_db() a no-op function when one_database is set,
>       and hence, under that condition current_db will not get altered.
>       Note, however the value of current_db can change when we execute 'connect'
>       command with a differnet database to reconnect to the server, in which case,
>       the behavior of --one-database will be formulated using this new database.
>      @ client/mysql.cc
>         Bug #54899 : --one-database option cannot handle DROP/CREATE DATABASE
> commands
>         
>         Added an if statement at the beginnning of get_current_db() , which makes it
>         a no-op function if one-database option is specified, and hence current_db
>         remains unchanged.
>         
>         Changed the help message for one-database option to a more approprite
> message
>         as specified in mysql documentation.
>      @ mysql-test/r/mysql.result
>         Added a test case for bug#54899 and a general test case to check
> one-database
>         option related functionality.
>      @ mysql-test/t/mysql.test
>         Added a test case for bug#54899 and a general test case to check
> one-database
>         option related functionality.
> 
>     modified:
>       client/mysql.cc
>       mysql-test/r/mysql.result
>       mysql-test/t/mysql.test
> === modified file 'client/mysql.cc'
> --- a/client/mysql.cc	2010-10-19 22:36:59 +0000
> +++ b/client/mysql.cc	2010-10-31 05:08:10 +0000
> @@ -1449,8 +1449,8 @@ static struct my_option my_long_options[
>     &opt_sigint_ignore,  &opt_sigint_ignore, 0, GET_BOOL,
>     NO_ARG, 0, 0, 0, 0, 0, 0},
>    {"one-database", 'o',
> -   "Only update the default database. This is useful for skipping updates "
> -   "to other database in the update log.",
> +   "Ignore statements except those that occur while the default "
> +   "database is the one named at the command line.",
>     0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
>  #ifdef USE_POPEN
>    {"pager", OPT_PAGER,
> @@ -2736,6 +2736,9 @@ static void get_current_db()
>  {
>    MYSQL_RES *res;
>  
> +  /* If one_database is set, current_db is not supposed to change. */
> +  if (one_database)
> +    return;
>    my_free(current_db, MYF(MY_ALLOW_ZERO_PTR));
>    current_db= NULL;
>    /* In case of error below current_db will be NULL */
> 
> === modified file 'mysql-test/r/mysql.result'
> --- a/mysql-test/r/mysql.result	2009-12-17 20:06:36 +0000
> +++ b/mysql-test/r/mysql.result	2010-10-31 05:08:10 +0000
> @@ -235,4 +235,26 @@ Bug #47147: mysql client option --skip-c
>  *************************** 1. row ***************************
>  1
>  
> +# Testing --one-database option
> +
> +CREATE DATABASE connected_db;
> +SHOW TABLES IN connected_db;
> +Tables_in_connected_db
> +t1
> +SHOW TABLES IN test;
> +Tables_in_test
> +t1
> +USE test;
> +DROP TABLE t1;
> +DROP DATABASE connected_db;
> +
> +Bug #54899: --one-database option cannot handle DROP/CREATE DATABASE commands
> +
> +CREATE DATABASE connected_db;
> +USE connected_db;
> +SHOW TABLES;
> +Tables_in_connected_db
> +t1
> +DROP DATABASE connected_db;
> +
>  End of tests
> 
> === modified file 'mysql-test/t/mysql.test'
> --- a/mysql-test/t/mysql.test	2009-12-17 20:06:36 +0000
> +++ b/mysql-test/t/mysql.test	2010-10-31 05:08:10 +0000
> @@ -413,4 +413,41 @@ drop table t1;
>  --exec $MYSQL --skip-column-names --vertical test -e "select 1 as a"
>  
>  --echo
> +--echo # Testing --one-database option
> +--echo
> +--write_file $MYSQLTEST_VARDIR/tmp/one_db.sql
> +CREATE TABLE t1 (i INT);
> +CREATE TABLE test.t1 (i INT);
> +USE test;
> +CREATE TABLE connected_db.t2 (i INT);
> +CREATE TABLE t2 (i INT);
> +EOF
> +
> +CREATE DATABASE connected_db;
> +--exec $MYSQL --one-database connected_db < $MYSQLTEST_VARDIR/tmp/one_db.sql
> +SHOW TABLES IN connected_db;
> +SHOW TABLES IN test;
> +USE test;
> +DROP TABLE t1;
> +DROP DATABASE connected_db;
> +--remove_file $MYSQLTEST_VARDIR/tmp/one_db.sql
> +
> +--echo
> +--echo Bug #54899: --one-database option cannot handle DROP/CREATE DATABASE
> commands
> +--echo
> +--write_file $MYSQLTEST_VARDIR/tmp/bug54899.sql
> +DROP DATABASE connected_db;
> +CREATE DATABASE connected_db;
> +USE connected_db;
> +CREATE TABLE t1(a INT);
> +EOF
> +
> +CREATE DATABASE connected_db;
> +--exec $MYSQL --one-database connected_db < $MYSQLTEST_VARDIR/tmp/bug54899.sql
> +USE connected_db;
> +SHOW TABLES;
> +DROP DATABASE connected_db;
> +--remove_file $MYSQLTEST_VARDIR/tmp/bug54899.sql
> +
> +--echo
>  --echo End of tests
> 


> 
> -- 
> MySQL Code Commits Mailing List
> For list archives: http://lists.mysql.com/commits
> To unsubscribe:    http://lists.mysql.com/commits?unsub=1


-- 
Sergey Vojtovich <svoj@stripped>
MySQL AB, Software Engineer
Izhevsk, Russia, www.mysql.com
Thread
bzr commit into mysql-5.1-bugteam branch (nirbhay.choubey:3549)Bug#54899Nirbhay Choubey31 Oct
  • Re: bzr commit into mysql-5.1-bugteam branch(nirbhay.choubey:3549) Bug#54899Sergey Vojtovich1 Nov