Pantek Library
Hosting Provided By
CybrHost
High Speed Hosting

bk commit into 5.1 tree (anozdrin:1.2517)

From: Alexander Nozdrin <alik(at)mysql.com>
Date: Fri Jun 29 2007 - 08:52:11 EDT


Below is the list of changes that have just been committed into a local 5.1 repository of alik. When alik 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@1.2517, 2007-06-29 16:52:05+04:00, anozdrin@ibm. +4 -0   Folow up on the CS patch:

  1. Fix ddl_i18n_koi8r, ddl_i18n_utf8: explicitly specify character-sets directory for mysqldump;
  2. Fix crash in mysqldump if collation is not found;
  3. Use proper way to compare character set names.

  client/mysqldump.c@1.284, 2007-06-29 16:52:02+04:00, anozdrin@ibm. +45 -18     Prevent crash if collation does not exist.

  mysql-test/t/ddl_i18n_koi8r.test@1.2, 2007-06-29 16:52:02+04:00, anozdrin@ibm. +13 -13     Explicitly specify character-sets-directory for mysqldump.

  mysql-test/t/ddl_i18n_utf8.test@1.2, 2007-06-29 16:52:02+04:00, anozdrin@ibm. +13 -13     Explicitly specify character-sets-directory for mysqldump.

  sql/sql_lex.cc@1.249, 2007-06-29 16:52:02+04:00, anozdrin@ibm. +1 -1     Use my_charset_same() function to check if the charset names are equal.

diff -Nrup a/client/mysqldump.c b/client/mysqldump.c
--- a/client/mysqldump.c	2007-06-28 21:34:47 +04:00
+++ b/client/mysqldump.c	2007-06-29 16:52:02 +04:00

@@ -1066,12 +1066,16 @@ static int switch_db_collation(FILE *sql
const char *db_name, const char *delimiter, const char *current_db_cl_name, - const char *required_db_cl_name) + const char *required_db_cl_name, + int *db_cl_altered)
 {
   if (strcmp(current_db_cl_name, required_db_cl_name) != 0)    {
     CHARSET_INFO *db_cl= get_charset_by_name(required_db_cl_name, MYF(0));  
+    if (!db_cl)
+      return 1;
+
     fprintf(sql_file,
             "ALTER DATABASE %s CHARACTER SET %s COLLATE %s %s\n",
             (const char *) db_name,

@@ -1079,26 +1083,35 @@ static int switch_db_collation(FILE *sql
(const char *) db_cl->name, (const char *) delimiter);
  • return 1; + *db_cl_altered= 1; + + return 0; }

+ *db_cl_altered= 0;
+

   return 0;
 }    

-static void restore_db_collation(FILE *sql_file,
-                                 const char *db_name,
-                                 const char *delimiter,
-                                 const char *db_cl_name)
+static int restore_db_collation(FILE *sql_file,
+                                const char *db_name,
+                                const char *delimiter,
+                                const char *db_cl_name)
 {
   CHARSET_INFO *db_cl= get_charset_by_name(db_cl_name, MYF(0));  
+  if (!db_cl)
+    return 1;
+
   fprintf(sql_file,
           "ALTER DATABASE %s CHARACTER SET %s COLLATE %s %s\n",
           (const char *) db_name,
           (const char *) db_cl->csname,
           (const char *) db_cl->name,
           (const char *) delimiter);

+
+ return 0;
 }    
Do you need help?X

@@ -1724,11 +1737,11 @@ static uint dump_events_for_db(char *db)
 

           fprintf(sql_file, "DELIMITER %s\n", delimiter);  

  • db_cl_altered= switch_db_collation(sql_file,
  • db_name_buff,
  • delimiter,
  • db_cl_name,
  • row[6]); + if (switch_db_collation(sql_file, db_name_buff, delimiter, db_cl_name, + row[6], &db_cl_altered)) + { + DBUG_RETURN(1); + }
           switch_cs_variables(sql_file, delimiter,
                               row[4],   /* character_set_client */

@@ -1749,7 +1762,11 @@ static uint dump_events_for_db(char *db)
restore_cs_variables(sql_file, delimiter); if (db_cl_altered) - restore_db_collation(sql_file, db_name_buff, delimiter, db_cl_name); + { + if (restore_db_collation(sql_file, db_name_buff, delimiter,
Do you need more help?X
+ db_cl_name)) + DBUG_RETURN(1); + } } } /* end of event printing */ mysql_free_result(event_res);
@@ -1935,8 +1952,11 @@ static uint dump_routines_for_db(char *d
PROCEDURE/FUNCTION otherwise we may need to re-quote routine_name */ - db_cl_altered= switch_db_collation(sql_file, db_name_buff, ";", - db_cl_name, row[5]); + if (switch_db_collation(sql_file, db_name_buff, ";", + db_cl_name, row[5], &db_cl_altered)) + { + DBUG_RETURN(1); + } switch_cs_variables(sql_file, ";", row[3], /* character_set_client */
@@ -1955,7 +1975,10 @@ static uint dump_routines_for_db(char *d
restore_cs_variables(sql_file, ";"); if (db_cl_altered) - restore_db_collation(sql_file, db_name_buff, ";", db_cl_name); + { + if (restore_db_collation(sql_file, db_name_buff, ";", db_cl_name)) + DBUG_RETURN(1); + } my_free(query_str, MYF(MY_ALLOW_ZERO_PTR)); }
@@ -2581,8 +2604,9 @@ static void dump_triggers_for_table(char
} } - db_cl_altered= switch_db_collation(sql_file, db_name, ";", - db_cl_name, row[5]); + if (switch_db_collation(sql_file, db_name, ";", + db_cl_name, row[5], &db_cl_altered)) + DBUG_VOID_RETURN; switch_cs_variables(sql_file, ";", row[3], /* character_set_client */
@@ -2601,7 +2625,10 @@ static void dump_triggers_for_table(char
restore_cs_variables(sql_file, ";"); if (db_cl_altered) - restore_db_collation(sql_file, db_name, ";", db_cl_name); + { + if (restore_db_collation(sql_file, db_name, ";", db_cl_name))
Can we help you?X
+ DBUG_VOID_RETURN; + } my_free(query_str, MYF(MY_ALLOW_ZERO_PTR)); } diff -Nrup a/mysql-test/t/ddl_i18n_koi8r.test b/mysql-test/t/ddl_i18n_koi8r.test --- a/mysql-test/t/ddl_i18n_koi8r.test 2007-06-28 21:34:50 +04:00 +++ b/mysql-test/t/ddl_i18n_koi8r.test 2007-06-29 16:52:02 +04:00

@@ -139,7 +139,7 @@ set names koi8r|

 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.views.mysqltest1.sql  

---exec $MYSQL_DUMP --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.views.mysqltest1.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.views.mysqltest1.sql  

 # - Clean mysqltest1;  

@@ -393,22 +393,22 @@ set names koi8r|

 --echo
 --echo ---> Dump of mysqltest1  

---exec $MYSQL_DUMP --compact --routines --databases mysqltest1 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1  

 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.sp.mysqltest1.sql  

---exec $MYSQL_DUMP --compact --routines --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest1.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest1.sql  

Can't find what you're looking for?X

 --echo
 --echo ---> Dump of mysqltest2  

---exec $MYSQL_DUMP --compact --routines --databases mysqltest2 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2  

 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.sp.mysqltest2.sql  

---exec $MYSQL_DUMP --compact --routines --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest2.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest2.sql  

 # - Clean mysqltest1, mysqltest2;  

@@ -664,22 +664,22 @@ use mysqltest1|

 --echo
 --echo ---> Dump of mysqltest1  

---exec $MYSQL_DUMP --compact --triggers --databases mysqltest1 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1  

 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.triggers.mysqltest1.sql  

Don't know where to look next?X

---exec $MYSQL_DUMP --compact --triggers --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest1.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest1.sql  

 --echo
 --echo ---> Dump of mysqltest2  

---exec $MYSQL_DUMP --compact --triggers --databases mysqltest2 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2  

 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.triggers.mysqltest2.sql  

---exec $MYSQL_DUMP --compact --triggers --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest2.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest2.sql  

 # - Clean mysqltest1, mysqltest2;  

@@ -919,22 +919,22 @@ set names koi8r|

 --echo
 --echo ---> Dump of mysqltest1  

---exec $MYSQL_DUMP --compact --events --databases mysqltest1 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1  

Confused? Frustrated?X

 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.events.mysqltest1.sql  

---exec $MYSQL_DUMP --compact --events --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest1.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest1.sql  

 --echo
 --echo ---> Dump of mysqltest2  

---exec $MYSQL_DUMP --compact --events --databases mysqltest2 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2  

 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.events.mysqltest2.sql  

---exec $MYSQL_DUMP --compact --events --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest2.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest2.sql  

 # - Clean mysqltest1, mysqltest2;  

diff -Nrup a/mysql-test/t/ddl_i18n_utf8.test b/mysql-test/t/ddl_i18n_utf8.test

--- a/mysql-test/t/ddl_i18n_utf8.test	2007-06-28 21:34:50 +04:00
+++ b/mysql-test/t/ddl_i18n_utf8.test	2007-06-29 16:52:02 +04:00

@@ -139,7 +139,7 @@ set names utf8|

 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_utf8views.mysqltest1.sql  
Call Pantek today for Open Source Technical Support at 1-877-546-8934 - 24/7/365X

---exec $MYSQL_DUMP --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8views.mysqltest1.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8views.mysqltest1.sql  

 # - Clean mysqltest1;  

@@ -393,22 +393,22 @@ set names utf8|

 --echo
 --echo ---> Dump of mysqltest1  

---exec $MYSQL_DUMP --compact --routines --databases mysqltest1 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1  

 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_utf8sp.mysqltest1.sql  

---exec $MYSQL_DUMP --compact --routines --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest1.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest1.sql  

 --echo
 --echo ---> Dump of mysqltest2  

---exec $MYSQL_DUMP --compact --routines --databases mysqltest2 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2  

Do you need help?X

 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_utf8sp.mysqltest2.sql  

---exec $MYSQL_DUMP --compact --routines --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest2.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest2.sql  

 # - Clean mysqltest1, mysqltest2;  

@@ -664,22 +664,22 @@ use mysqltest1|

 --echo
 --echo ---> Dump of mysqltest1  

---exec $MYSQL_DUMP --compact --triggers --databases mysqltest1 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1  

 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_utf8triggers.mysqltest1.sql  

---exec $MYSQL_DUMP --compact --triggers --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest1.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest1.sql  

 --echo
 --echo ---> Dump of mysqltest2  

Do you need more help?X

---exec $MYSQL_DUMP --compact --triggers --databases mysqltest2 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2  

 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_utf8triggers.mysqltest2.sql  

---exec $MYSQL_DUMP --compact --triggers --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest2.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest2.sql  

 # - Clean mysqltest1, mysqltest2;  

@@ -919,22 +919,22 @@ set names utf8|

 --echo
 --echo ---> Dump of mysqltest1  

---exec $MYSQL_DUMP --compact --events --databases mysqltest1 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1  

 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_utf8events.mysqltest1.sql  

---exec $MYSQL_DUMP --compact --events --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest1.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest1.sql  

Can we help you?X

 --echo
 --echo ---> Dump of mysqltest2  

---exec $MYSQL_DUMP --compact --events --databases mysqltest2 +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2  

 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_utf8events.mysqltest2.sql  

---exec $MYSQL_DUMP --compact --events --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest2.sql +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest2.sql  

 # - Clean mysqltest1, mysqltest2;  

diff -Nrup a/sql/sql_lex.cc b/sql/sql_lex.cc

--- a/sql/sql_lex.cc	2007-06-28 21:34:49 +04:00
+++ b/sql/sql_lex.cc	2007-06-29 16:52:02 +04:00

@@ -249,7 +249,7 @@ void Lex_input_stream::body_utf8_append_
 

   LEX_STRING utf_txt;  

  • if (txt_cs->number != my_charset_utf8_general_ci.number) + if (my_charset_same(txt_cs, &my_charset_utf8_general_ci)) { thd->convert_string(&utf_txt, &my_charset_utf8_general_ci,
-- 
MySQL Code Commits Mailing List
For list archives: 
http://lists.mysql.com/commits
To unsubscribe:    
http://lists.mysql.com/commits?unsub=lists@pantek.com
Received on Fri Jun 29 08:53:23 2007

This archive was generated by hypermail 2.1.8 : Fri Jun 29 2007 - 09:00:02 EDT

Can't find what you're looking for?X

Contact Us  Legal Notices  Order Services Online 
Pantek Home  Privacy Policy  IT news  Site Map  Pantek Library