List:Commits« Previous MessageNext Message »
From:<gshchepa Date:August 25 2007 5:26pm
Subject:bk commit into 5.0 tree (gshchepa:1.2504) BUG#30126
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of uchum. When uchum 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-08-25 22:26:08+05:00, gshchepa@stripped +5 -0
  Fixed bug #30126.
  When dumping database from a 4.x server, the mysqldump client
  inserted a delimiter sign inside special commentaries of the form:
    /*!... CREATE DATABASE IF NOT EXISTS ... ;*/
  During restoration that dump file was splitten by delimiter signs on
  the client side, and the rest of some commentary strings was prepended
  to following statements.

  client/mysqldump.c@stripped, 2007-08-25 22:24:18+05:00, gshchepa@stripped +1 -1
    Fixed bug #30126.
    The init_dumping_tables function has been modified to output semicolon
    outside of commentaries.

  mysql-test/r/mysqldump-old.result@stripped, 2007-08-25 22:23:27+05:00, gshchepa@stripped +4 -0
    Added testcase for bug #30126.

  mysql-test/r/mysqldump-old.result@stripped, 2007-08-25 22:23:27+05:00, gshchepa@stripped +0 -0

  mysql-test/t/mysqldump-old.opt@stripped, 2007-08-25 22:23:27+05:00, gshchepa@stripped +1 -0
    Added testcase for bug #30126.
    The 4x_server_emul option is to emulate a parse error as an answer
    to the "SHOW CREATE DATABASE" query.
    The mysqldump client uses that negative answer to distinguish
    old server and to produce the "CREATE DATABASE" statement
    from scratch - required for testing of #30126.

  mysql-test/t/mysqldump-old.opt@stripped, 2007-08-25 22:23:27+05:00, gshchepa@stripped +0 -0

  mysql-test/t/mysqldump-old.test@stripped, 2007-08-25 22:23:27+05:00, gshchepa@stripped +13 -0
    Added testcase for bug #30126.

  mysql-test/t/mysqldump-old.test@stripped, 2007-08-25 22:23:27+05:00, gshchepa@stripped +0 -0

  sql/sql_parse.cc@stripped, 2007-08-25 22:23:33+05:00, gshchepa@stripped +2 -0
    Fixed bug #30126.
    The mysqldump client uses the "SHOW CREATE DATABASE" query to
    obtain the "CREATE DATABASE" statement from that database.
    The 4.x server doesn't recognise that query, and mysqldump
    forms the "CREATE DATABASE" statement from scratch.
    That statement was formed incorrectly.
    
    To enforce the mysqldump client to create that statement from
    scratch, debugging code has been added to the mysql_execute_command
    function: in tcase of the --loose-debug=d,4x_server_emul option,
    the server returns parse error to client to emulate old behaviour.

diff -Nrup a/client/mysqldump.c b/client/mysqldump.c
--- a/client/mysqldump.c	2007-07-31 21:00:52 +05:00
+++ b/client/mysqldump.c	2007-08-25 22:24:18 +05:00
@@ -2898,7 +2898,7 @@ int init_dumping_tables(char *qdatabase)
       /* Old server version, dump generic CREATE DATABASE */
       if (opt_drop_database)
         fprintf(md_result_file,
-                "\n/*!40000 DROP DATABASE IF EXISTS %s;*/\n",
+                "\n/*!40000 DROP DATABASE IF EXISTS %s*/;\n",
                 qdatabase);
       fprintf(md_result_file,
               "\nCREATE DATABASE /*!32312 IF NOT EXISTS*/ %s;\n",
diff -Nrup a/mysql-test/r/mysqldump-old.result b/mysql-test/r/mysqldump-old.result
--- /dev/null	Wed Dec 31 16:00:00 196900
+++ b/mysql-test/r/mysqldump-old.result	2007-08-25 22:23:27 +05:00
@@ -0,0 +1,4 @@
+CREATE DATABASE mysqldump_30126;
+USE mysqldump_30126;
+CREATE TABLE t1 (c1 int);
+DROP DATABASE mysqldump_30126;
diff -Nrup a/mysql-test/t/mysqldump-old.opt b/mysql-test/t/mysqldump-old.opt
--- /dev/null	Wed Dec 31 16:00:00 196900
+++ b/mysql-test/t/mysqldump-old.opt	2007-08-25 22:23:27 +05:00
@@ -0,0 +1 @@
+--loose-debug=d,4x_server_emul
diff -Nrup a/mysql-test/t/mysqldump-old.test b/mysql-test/t/mysqldump-old.test
--- /dev/null	Wed Dec 31 16:00:00 196900
+++ b/mysql-test/t/mysqldump-old.test	2007-08-25 22:23:27 +05:00
@@ -0,0 +1,13 @@
+# Embedded server doesn't support external clients
+--source include/not_embedded.inc
+
+#
+# Bug #30126: semicolon before closing */ in /*!... CREATE DATABASE ;*/
+#
+
+CREATE DATABASE mysqldump_30126;
+USE mysqldump_30126;
+CREATE TABLE t1 (c1 int);
+--exec $MYSQL_DUMP --add-drop-database mysqldump_30126 > $MYSQLTEST_VARDIR/tmp/bug30126.sql
+--exec $MYSQL mysqldump_30126 < $MYSQLTEST_VARDIR/tmp/bug30126.sql
+DROP DATABASE mysqldump_30126;
diff -Nrup a/sql/sql_parse.cc b/sql/sql_parse.cc
--- a/sql/sql_parse.cc	2007-08-05 08:53:13 +05:00
+++ b/sql/sql_parse.cc	2007-08-25 22:23:33 +05:00
@@ -3990,6 +3990,8 @@ end_with_restore_list:
   }
   case SQLCOM_SHOW_CREATE_DB:
   {
+    DBUG_EXECUTE_IF("4x_server_emul",
+                    my_error(ER_UNKNOWN_ERROR, MYF(0)); goto error;);
     if (!strip_sp(lex->name) || check_db_name(lex->name))
     {
       my_error(ER_WRONG_DB_NAME, MYF(0), lex->name);
Thread
bk commit into 5.0 tree (gshchepa:1.2504) BUG#30126gshchepa25 Aug
  • Re: bk commit into 5.0 tree (gshchepa:1.2504) BUG#30126Georgi Kodinov29 Aug
    • Re: bk commit into 5.0 tree (gshchepa:1.2504) BUG#30126Gleb Shchepa29 Aug