List:Commits« Previous MessageNext Message »
From:Leonard Zhou Date:March 24 2009 7:30am
Subject:bzr commit into mysql-5.0-bugteam branch (leonard:2768)
View as plain text  
#At file:///home/zhl/mysql/rep/5.0/bug41719/ based on revid:leonard@stripped

 2768 Leonard Zhou	2009-03-24 [merge]
      Merge

    removed:
      sql-bench/TODO
    added:
      mysql-test/r/lock_multi_bug38499.result
      mysql-test/r/lock_multi_bug38691.result
      mysql-test/t/lock_multi_bug38499.test
      mysql-test/t/lock_multi_bug38691.test
    modified:
      client/my_readline.h
      client/mysql.cc
      client/mysql_upgrade.c
      client/mysqladmin.cc
      client/mysqlbinlog.cc
      client/mysqlcheck.c
      client/mysqldump.c
      client/mysqlmanager-pwgen.c
      client/mysqltest.c
      client/readline.cc
      client/sql_string.cc
      configure.in
      extra/comp_err.c
      extra/yassl/src/buffer.cpp
      extra/yassl/src/cert_wrapper.cpp
      extra/yassl/src/ssl.cpp
      extra/yassl/src/yassl_imp.cpp
      extra/yassl/src/yassl_int.cpp
      extra/yassl/taocrypt/include/block.hpp
      extra/yassl/taocrypt/src/algebra.cpp
      extra/yassl/taocrypt/src/asn.cpp
      heap/hp_write.c
      include/my_md5.h
      include/my_sys.h
      innobase/include/pars0pars.h
      innobase/pars/pars0pars.c
      innobase/rem/rem0cmp.c
      libmysql/libmysql.c
      libmysql/manager.c
      myisam/mi_check.c
      myisam/mi_open.c
      myisam/mi_packrec.c
      myisam/mi_search.c
      myisam/rt_index.c
      mysql-test/include/ndb_backup.inc
      mysql-test/include/wait_until_count_sessions.inc
      mysql-test/r/consistent_snapshot.result
      mysql-test/r/ctype_collate.result
      mysql-test/r/dirty_close.result
      mysql-test/r/explain.result
      mysql-test/r/federated.result
      mysql-test/r/flush_block_commit.result
      mysql-test/r/flush_block_commit_notembedded.result
      mysql-test/r/flush_read_lock_kill.result
      mysql-test/r/lock_multi.result
      mysql-test/r/mysql.result
      mysql-test/r/mysqlbinlog.result
      mysql-test/r/mysqldump.result
      mysql-test/r/ndb_restore.result
      mysql-test/r/ndb_restore_print.result
      mysql-test/r/read_only.result
      mysql-test/r/show_check.result
      mysql-test/r/skip_name_resolve.result
      mysql-test/r/sp-security.result
      mysql-test/r/union.result
      mysql-test/r/view.result
      mysql-test/r/view_grant.result
      mysql-test/suite/funcs_1/r/innodb_func_view.result
      mysql-test/suite/funcs_1/r/innodb_views.result
      mysql-test/suite/funcs_1/r/myisam_views.result
      mysql-test/t/alter_table-big.test
      mysql-test/t/connect.test
      mysql-test/t/consistent_snapshot.test
      mysql-test/t/ctype_collate.test
      mysql-test/t/dirty_close.test
      mysql-test/t/explain.test
      mysql-test/t/federated.test
      mysql-test/t/flush_block_commit.test
      mysql-test/t/flush_block_commit_notembedded.test
      mysql-test/t/flush_read_lock_kill.test
      mysql-test/t/init_connect.test
      mysql-test/t/lock_multi.test
      mysql-test/t/mysql.test
      mysql-test/t/mysqlbinlog.test
      mysql-test/t/mysqldump.test
      mysql-test/t/mysqltest.test
      mysql-test/t/read_only.test
      mysql-test/t/show_check.test
      mysql-test/t/skip_name_resolve.test
      mysql-test/t/sp-security.test
      mysql-test/t/sp_notembedded.test
      mysql-test/t/ssl-big.test
      mysql-test/t/ssl.test
      mysql-test/t/ssl_compress.test
      mysql-test/t/status.test
      mysql-test/t/type_bit_innodb.test
      mysql-test/t/union.test
      mysql-test/t/user_limits.test
      mysql-test/t/view.test
      mysql-test/t/view_grant.test
      mysql-test/t/wait_timeout.test
      mysql-test/t/xa.test
      mysys/base64.c
      mysys/default.c
      mysys/errors.c
      mysys/md5.c
      mysys/mf_iocache2.c
      mysys/my_fstream.c
      mysys/my_new.cc
      mysys/my_pread.c
      mysys/my_static.c
      mysys/my_write.c
      mysys/safemalloc.c
      mysys/string.c
      server-tools/instance-manager/buffer.cc
      server-tools/instance-manager/commands.cc
      server-tools/instance-manager/instance.cc
      server-tools/instance-manager/instance_map.cc
      server-tools/instance-manager/instance_options.cc
      server-tools/instance-manager/listener.cc
      server-tools/instance-manager/mysql_connection.cc
      server-tools/instance-manager/options.cc
      server-tools/instance-manager/parse.cc
      server-tools/instance-manager/parse.h
      server-tools/instance-manager/parse_output.cc
      server-tools/instance-manager/protocol.cc
      server-tools/instance-manager/user_map.cc
      sql-common/client.c
      sql-common/my_user.c
      sql/gen_lex_hash.cc
      sql/ha_archive.cc
      sql/ha_federated.cc
      sql/ha_innodb.cc
      sql/handler.cc
      sql/item.cc
      sql/item_func.cc
      sql/item_strfunc.cc
      sql/item_strfunc.h
      sql/item_sum.cc
      sql/item_timefunc.cc
      sql/lock.cc
      sql/log.cc
      sql/log_event.cc
      sql/mysqld.cc
      sql/net_serv.cc
      sql/opt_range.cc
      sql/opt_sum.cc
      sql/parse_file.cc
      sql/protocol.cc
      sql/set_var.cc
      sql/slave.cc
      sql/sp.cc
      sql/sp_head.cc
      sql/spatial.cc
      sql/sql_acl.cc
      sql/sql_base.cc
      sql/sql_cache.cc
      sql/sql_class.cc
      sql/sql_crypt.cc
      sql/sql_db.cc
      sql/sql_derived.cc
      sql/sql_error.cc
      sql/sql_handler.cc
      sql/sql_help.cc
      sql/sql_insert.cc
      sql/sql_lex.cc
      sql/sql_load.cc
      sql/sql_parse.cc
      sql/sql_prepare.cc
      sql/sql_repl.cc
      sql/sql_select.cc
      sql/sql_show.cc
      sql/sql_string.cc
      sql/sql_table.cc
      sql/sql_trigger.cc
      sql/sql_udf.cc
      sql/sql_view.cc
      sql/table.cc
      sql/tztime.cc
      sql/udf_example.c
      sql/uniques.cc
      sql/unireg.cc
      strings/Makefile.am
      strings/ctype-mb.c
      strings/ctype-simple.c
      strings/ctype-ucs2.c
      strings/my_vsnprintf.c
      strings/xml.c
      tests/bug25714.c
      tests/mysql_client_test.c
      tools/mysqlmanager.c
      vio/viosocket.c
=== modified file 'client/my_readline.h'
--- a/client/my_readline.h	2006-12-23 19:17:15 +0000
+++ b/client/my_readline.h	2009-03-18 08:18:24 +0000
@@ -29,5 +29,5 @@ typedef struct st_line_buffer
 
 extern LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file);
 extern LINE_BUFFER *batch_readline_command(LINE_BUFFER *buffer, my_string str);
-extern char *batch_readline(LINE_BUFFER *buffer);
+extern char *batch_readline(LINE_BUFFER *buffer, bool *truncated);
 extern void batch_readline_end(LINE_BUFFER *buffer);

=== modified file 'client/mysql.cc'
--- a/client/mysql.cc	2009-02-24 13:06:28 +0000
+++ b/client/mysql.cc	2009-03-23 04:21:45 +0000
@@ -112,6 +112,8 @@ extern "C" {
 #define PROMPT_CHAR '\\'
 #define DEFAULT_DELIMITER ";"
 
+#define MAX_BATCH_BUFFER_SIZE (1024L * 1024L)
+
 typedef struct st_status
 {
   int exit_status;
@@ -1035,7 +1037,7 @@ static void fix_history(String *final_co
 
 static COMMANDS *find_command(char *name,char cmd_name);
 static bool add_line(String &buffer,char *line,char *in_string,
-                     bool *ml_comment);
+                     bool *ml_comment, bool truncated);
 static void remove_cntrl(String &buffer);
 static void print_table_data(MYSQL_RES *result);
 static void print_table_data_html(MYSQL_RES *result);
@@ -1117,7 +1119,7 @@ int main(int argc,char *argv[])
     exit(1);
   }
   if (status.batch && !status.line_buff &&
-      !(status.line_buff=batch_readline_init(opt_max_allowed_packet+512,stdin)))
+      !(status.line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, stdin)))
   {
     free_defaults(defaults_argv);
     my_end(0);
@@ -1197,7 +1199,7 @@ int main(int argc,char *argv[])
 #endif
   sprintf(buff, "%s",
 #ifndef NOT_YET
-	  "Type 'help;' or '\\h' for help. Type '\\c' to clear the buffer.\n");
+	  "Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n");
 #else
 	  "Type 'help [[%]function name[%]]' to get help on usage of function.\n");
 #endif
@@ -1226,7 +1228,7 @@ sig_handler mysql_sigint(int sig)
     goto err;
   /* kill_buffer is always big enough because max length of %lu is 15 */
   sprintf(kill_buffer, "KILL /*!50000 QUERY */ %lu", mysql_thread_id(&mysql));
-  mysql_real_query(kill_mysql, kill_buffer, strlen(kill_buffer));
+  mysql_real_query(kill_mysql, kill_buffer, (uint) strlen(kill_buffer));
   mysql_close(kill_mysql);
   tee_fprintf(stdout, "Query aborted by Ctrl+C\n");
 
@@ -1766,13 +1768,14 @@ static int read_and_execute(bool interac
   ulong line_number=0;
   bool ml_comment= 0;  
   COMMANDS *com;
+  bool truncated= 0;
   status.exit_status=1;
   
   for (;;)
   {
     if (!interactive)
     {
-      line=batch_readline(status.line_buff);
+      line=batch_readline(status.line_buff, &truncated);
       /*
         Skip UTF8 Byte Order Marker (BOM) 0xEFBBBF.
         Editors like "notepad" put this marker in
@@ -1891,7 +1894,7 @@ static int read_and_execute(bool interac
 #endif
       continue;
     }
-    if (add_line(glob_buffer,line,&in_string,&ml_comment))
+    if (add_line(glob_buffer,line,&in_string,&ml_comment, truncated))
       break;
   }
   /* if in batch mode, send last query even if it doesn't end with \g or go */
@@ -1977,7 +1980,7 @@ static COMMANDS *find_command(char *name
 
 
 static bool add_line(String &buffer,char *line,char *in_string,
-                     bool *ml_comment)
+                     bool *ml_comment, bool truncated)
 {
   uchar inchar;
   char buff[80], *pos, *out;
@@ -2224,9 +2227,10 @@ static bool add_line(String &buffer,char
   {
     uint length=(uint) (out-line);
 
-    if (length < 9 || 
-        my_strnncoll (charset_info, 
-                      (uchar *)line, 9, (const uchar *) "delimiter", 9))
+    if (!truncated &&
+        (length < 9 || 
+         my_strnncoll (charset_info, 
+                       (uchar *)line, 9, (const uchar *) "delimiter", 9)))
     {
       /* 
         Don't add a new line in case there's a DELIMITER command to be 
@@ -2639,7 +2643,7 @@ static void get_current_db()
       (res= mysql_use_result(&mysql)))
   {
     MYSQL_ROW row= mysql_fetch_row(res);
-    if (row[0])
+    if (row && row[0])
       current_db= my_strdup(row[0], MYF(MY_WME));
     mysql_free_result(res);
   }
@@ -3463,7 +3467,7 @@ static void print_warnings()
 
   /* Get the warnings */
   query= "show warnings";
-  mysql_real_query_for_lazy(query, strlen(query));
+  mysql_real_query_for_lazy(query, (uint) strlen(query));
   mysql_store_result_for_lazy(&result);
 
   /* Bail out when no warnings */
@@ -3886,7 +3890,7 @@ static int com_source(String *buffer, ch
     return put_info(buff, INFO_ERROR, 0);
   }
 
-  if (!(line_buff=batch_readline_init(opt_max_allowed_packet+512,sql_file)))
+  if (!(line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, sql_file)))
   {
     my_fclose(sql_file,MYF(0));
     return put_info("Can't initialize batch_readline", INFO_ERROR, 0);
@@ -4343,7 +4347,8 @@ server_version_string(MYSQL *con)
       MYSQL_ROW cur = mysql_fetch_row(result);
       if (cur && cur[0])
       {
-        bufp = strxnmov(bufp, sizeof buf - (bufp - buf), " ", cur[0], NullS);
+        bufp = strxnmov(bufp, (uint) (sizeof buf - (bufp - buf)), " ", cur[0],
+                        NullS);
       }
       mysql_free_result(result);
     }

=== modified file 'client/mysql_upgrade.c'
--- a/client/mysql_upgrade.c	2008-08-11 17:56:54 +0000
+++ b/client/mysql_upgrade.c	2009-02-10 22:47:54 +0000
@@ -429,7 +429,7 @@ static int run_query(const char *query, 
                             MYF(MY_WME))) < 0)
     die("Failed to create temporary file for defaults");
 
-  if (my_write(fd, query, strlen(query),
+  if (my_write(fd, query, (uint) strlen(query),
                MYF(MY_FNABP | MY_WME)))
   {
     my_close(fd, MYF(0));

=== modified file 'client/mysqladmin.cc'
--- a/client/mysqladmin.cc	2007-09-13 14:19:46 +0000
+++ b/client/mysqladmin.cc	2009-02-10 22:47:54 +0000
@@ -844,7 +844,7 @@ static int execute_commands(MYSQL *mysql
         bool old= (find_type(argv[0], &command_typelib, 2) ==
                    ADMIN_OLD_PASSWORD);
 #ifdef __WIN__
-        uint pw_len= strlen(pw);
+        uint pw_len= (uint) strlen(pw);
         if (pw_len > 1 && pw[0] == '\'' && pw[pw_len-1] == '\'')
           printf("Warning: single quotes were not trimmed from the password by"
                  " your command\nline client, as you might have expected.\n");

=== modified file 'client/mysqlbinlog.cc'
--- a/client/mysqlbinlog.cc	2008-04-03 15:32:00 +0000
+++ b/client/mysqlbinlog.cc	2009-02-10 22:47:54 +0000
@@ -105,7 +105,7 @@ static MYSQL* safe_connect();
 class Load_log_processor
 {
   char target_dir_name[FN_REFLEN];
-  int target_dir_name_len;
+  size_t target_dir_name_len;
 
   /*
     When we see first event corresponding to some LOAD DATA statement in
@@ -275,7 +275,7 @@ File Load_log_processor::prepare_new_fil
   File file;
   
   fn_format(filename, le->fname, target_dir_name, "", 1);
-  len= strlen(filename);
+  len= (uint) strlen(filename);
   tail= filename + len;
   
   if ((file= create_unique_file(filename,tail)) < 0)
@@ -284,7 +284,7 @@ File Load_log_processor::prepare_new_fil
     return -1;
   }
   
-  le->set_fname_outside_temp_buf(filename,len+strlen(tail));
+  le->set_fname_outside_temp_buf(filename,len+(uint) strlen(tail));
   
   return file;
 }
@@ -369,7 +369,7 @@ int Load_log_processor::process_first_ev
                                             uint file_id,
                                             Create_file_log_event *ce)
 {
-  uint full_len= target_dir_name_len + blen + 9 + 9 + 1;
+  size_t full_len= target_dir_name_len + blen + 9 + 9 + 1;
   int error= 0;
   char *fname, *ptr;
   File file;
@@ -403,7 +403,7 @@ int Load_log_processor::process_first_ev
   }
 
   if (ce)
-    ce->set_fname_outside_temp_buf(fname, strlen(fname));
+    ce->set_fname_outside_temp_buf(fname, (uint) strlen(fname));
 
   if (my_write(file, (byte*)block, block_len, MYF(MY_WME|MY_NABP)))
     error= -1;
@@ -416,7 +416,7 @@ int Load_log_processor::process_first_ev
 int Load_log_processor::process(Create_file_log_event *ce)
 {
   const char *bname= ce->fname + dirname_length(ce->fname);
-  uint blen= ce->fname_len - (bname-ce->fname);
+  uint blen= (uint) (ce->fname_len - (bname-ce->fname));
 
   return process_first_event(bname, blen, ce->block, ce->block_len,
                              ce->file_id, ce);
@@ -864,7 +864,7 @@ static my_time_t convert_str_to_timestam
   long dummy_my_timezone;
   my_bool dummy_in_dst_time_gap;
   /* We require a total specification (date AND time) */
-  if (str_to_datetime(str, strlen(str), &l_time, 0, &was_cut) !=
+  if (str_to_datetime(str, (uint) strlen(str), &l_time, 0, &was_cut) !=
       MYSQL_TIMESTAMP_DATETIME || was_cut)
   {
     fprintf(stderr, "Incorrect date and time argument: %s\n", str);
@@ -1109,7 +1109,7 @@ could be out of memory");
   int4store(buf, (uint32)start_position);
   int2store(buf + BIN_LOG_HEADER_SIZE, binlog_flags);
 
-  size_s tlen = strlen(logname);
+  size_t tlen= strlen(logname);
   if (tlen > UINT_MAX) 
   {
     fprintf(stderr,"Log name too long\n");

=== modified file 'client/mysqlcheck.c'
--- a/client/mysqlcheck.c	2008-11-14 07:40:46 +0000
+++ b/client/mysqlcheck.c	2009-02-10 22:47:54 +0000
@@ -328,7 +328,7 @@ static int get_options(int *argc, char *
 
   if (!what_to_do)
   {
-    int pnlen = strlen(my_progname);
+    size_t pnlen= strlen(my_progname);
 
     if (pnlen < 6) /* name too short */
       what_to_do = DO_CHECK;
@@ -414,7 +414,8 @@ static int process_selected_tables(char 
       space is for more readable output in logs and in case of error
     */	  
     char *table_names_comma_sep, *end;
-    int i, tot_length = 0;
+    size_t tot_length= 0;
+    int             i= 0;
 
     for (i = 0; i < tables; i++)
       tot_length+= fixed_name_length(*(table_names + i)) + 2;
@@ -430,7 +431,7 @@ static int process_selected_tables(char 
       *end++= ',';
     }
     *--end = 0;
-    handle_request_for_tables(table_names_comma_sep + 1, tot_length - 1);
+    handle_request_for_tables(table_names_comma_sep + 1, (uint) (tot_length - 1));
     my_free(table_names_comma_sep, MYF(0));
   }
   else
@@ -452,7 +453,7 @@ static uint fixed_name_length(const char
     else if (*p == '.')
       extra_length+= 2;
   }
-  return (p - name) + extra_length;
+  return (uint) ((p - name) + extra_length);
 }
 
 

=== modified file 'client/mysqldump.c'
--- a/client/mysqldump.c	2009-02-02 17:19:07 +0000
+++ b/client/mysqldump.c	2009-03-19 13:58:56 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 MySQL AB
+/* Copyright 2000-2008 MySQL AB, 2009 Sun Microsystems, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -662,7 +662,7 @@ static void free_table_ent(char *key)
 byte* get_table_key(const char *entry, uint *length,
                                 my_bool not_used __attribute__((unused)))
 {
-  *length= strlen(entry);
+  *length= (uint) strlen(entry);
   return (byte*) entry;
 }
 
@@ -778,7 +778,7 @@ get_one_option(int optid, const struct m
       opt_set_charset= 0;
       opt_compatible_mode_str= argument;
       opt_compatible_mode= find_set(&compatible_mode_typelib,
-                                    argument, strlen(argument),
+                                    argument, (uint) strlen(argument),
                                     &err_ptr, &err_len);
       if (err_len)
       {
@@ -791,7 +791,7 @@ get_one_option(int optid, const struct m
         uint size_for_sql_mode= 0;
         const char **ptr;
         for (ptr= compatible_mode_names; *ptr; ptr++)
-          size_for_sql_mode+= strlen(*ptr);
+          size_for_sql_mode+= (uint) strlen(*ptr);
         size_for_sql_mode+= sizeof(compatible_mode_names)-1;
         DBUG_ASSERT(sizeof(compatible_mode_normal_str)>=size_for_sql_mode);
       }
@@ -1039,7 +1039,7 @@ static int switch_character_set_results(
                             "SET SESSION character_set_results = '%s'",
                             (const char *) cs_name);
 
-  return mysql_real_query(mysql, query_buffer, query_length);
+  return mysql_real_query(mysql, query_buffer, (uint) query_length);
 }
 
 
@@ -1372,7 +1372,8 @@ static void print_xml_tag(FILE * xml_fil
     fputs(attribute_name, xml_file);    
     fputc('\"', xml_file);
     
-    print_quoted_xml(xml_file, attribute_value, strlen(attribute_value));
+    print_quoted_xml(xml_file, attribute_value, 
+                     (uint) strlen(attribute_value));
     fputc('\"', xml_file);
 
     attribute_name= va_arg(arg_list, char *);
@@ -1412,7 +1413,7 @@ static void print_xml_null_tag(FILE * xm
   fputs("<", xml_file);
   fputs(stag_atr, xml_file);
   fputs("\"", xml_file);
-  print_quoted_xml(xml_file, sval, strlen(sval));
+  print_quoted_xml(xml_file, sval, (uint) strlen(sval));
   fputs("\" xsi:nil=\"true\" />", xml_file);
   fputs(line_end, xml_file);
   check_io(xml_file);
@@ -1510,7 +1511,7 @@ static uint dump_routines_for_db(char *d
   DBUG_ENTER("dump_routines_for_db");
   DBUG_PRINT("enter", ("db: '%s'", db));
 
-  mysql_real_escape_string(mysql, db_name_buff, db, strlen(db));
+  mysql_real_escape_string(mysql, db_name_buff, db, (uint) strlen(db));
 
   /* nice comments */
   if (opt_comments)
@@ -1602,13 +1603,13 @@ static uint dump_routines_for_db(char *d
                   Allocate memory for new query string: original string
                   from SHOW statement and version-specific comments.
                 */
-                query_str= alloc_query_str(strlen(row[2]) + 23);
+                query_str= alloc_query_str((uint) strlen(row[2]) + 23);
 
                 query_str_tail= strnmov(query_str, row[2],
-                                        definer_begin - row[2]);
+                                        (uint) (definer_begin - row[2]));
                 query_str_tail= strmov(query_str_tail, "*/ /*!50020");
                 query_str_tail= strnmov(query_str_tail, definer_begin,
-                                        definer_end - definer_begin);
+                                        (uint) (definer_end - definer_begin));
                 query_str_tail= strxmov(query_str_tail, "*/ /*!50003",
                                         definer_end, NullS);
               }
@@ -2217,7 +2218,7 @@ static void dump_triggers_for_table(char
       char       host_name_str[HOSTNAME_LENGTH + 1];
       char       quoted_host_name_str[HOSTNAME_LENGTH * 2 + 3];
 
-      parse_user(row[7], strlen(row[7]), user_name_str, &user_name_len,
+      parse_user(row[7], (uint) strlen(row[7]), user_name_str, &user_name_len,
                  host_name_str, &host_name_len);
 
       fprintf(sql_file,
@@ -3055,7 +3056,7 @@ static int dump_all_tables_in_db(char *d
   while ((table= getTableName(0)))
   {
     char *end= strmov(afterdot, table);
-    if (include_table(hash_key, end - hash_key))
+    if (include_table(hash_key, (uint) (end - hash_key)))
     {
       dump_table(table,database);
       my_free(order_by, MYF(MY_ALLOW_ZERO_PTR));
@@ -3104,6 +3105,11 @@ static my_bool dump_all_views_in_db(char
   char *table;
   uint numrows;
   char table_buff[NAME_LEN*2+3];
+  char hash_key[2*NAME_LEN+2];  /* "db.tablename" */
+  char *afterdot;
+
+  afterdot= strmov(hash_key, database);
+  *afterdot++= '.';
 
   if (init_dumping(database, init_dumping_views))
     return 1;
@@ -3113,10 +3119,15 @@ static my_bool dump_all_views_in_db(char
   {
     DYNAMIC_STRING query;
     init_dynamic_string_checked(&query, "LOCK TABLES ", 256, 1024);
-    for (numrows= 0 ; (table= getTableName(1)); numrows++)
+    for (numrows= 0 ; (table= getTableName(1)); )
     {
-      dynstr_append_checked(&query, quote_name(table, table_buff, 1));
-      dynstr_append_checked(&query, " READ /*!32311 LOCAL */,");
+      char *end= strmov(afterdot, table);
+      if (include_table((uchar*) hash_key,end - hash_key))
+      {
+        numrows++;
+        dynstr_append_checked(&query, quote_name(table, table_buff, 1));
+        dynstr_append_checked(&query, " READ /*!32311 LOCAL */,");
+      }
     }
     if (numrows && mysql_real_query(mysql, query.str, query.length-1))
       DB_error(mysql, "when using LOCK TABLES");
@@ -3130,7 +3141,11 @@ static my_bool dump_all_views_in_db(char
            /* We shall continue here, if --force was given */
   }
   while ((table= getTableName(0)))
-     get_view_structure(table, database);
+  {
+    char *end= strmov(afterdot, table);
+    if (include_table((uchar*) hash_key, end - hash_key))
+      get_view_structure(table, database);
+  }
   if (opt_xml)
   {
     fputs("</database>\n", md_result_file);
@@ -3200,7 +3215,7 @@ static int dump_selected_tables(char *db
   DBUG_ENTER("dump_selected_tables");
 
   if (init_dumping(db, init_dumping_tables))
-    return 1;
+    DBUG_RETURN(1);
 
   init_alloc_root(&root, 8192, 0);
   if (!(dump_tables= pos= (char**) alloc_root(&root, tables * sizeof(char *))))
@@ -3562,7 +3577,8 @@ char check_if_ignore_table(const char *t
       If these two types, we do want to skip dumping the table
     */
     if (!opt_no_data &&
-        (!strcmp(table_type,"MRG_MyISAM") || !strcmp(table_type,"MRG_ISAM")))
+        (!strcmp(table_type,"MRG_MyISAM") || !strcmp(table_type,"MRG_ISAM") ||
+         !strcmp(table_type,"FEDERATED")))
       result= IGNORE_DATA;
   }
   mysql_free_result(res);
@@ -3623,7 +3639,7 @@ static char *primary_key_fields(const ch
     do
     {
       quoted_field= quote_name(row[4], buff, 0);
-      result_length+= strlen(quoted_field) + 1; /* + 1 for ',' or \0 */
+      result_length+= (uint) strlen(quoted_field) + 1; /* + 1 for ',' or \0 */
     } while ((row= mysql_fetch_row(res)) && atoi(row[3]) > 1);
   }
 
@@ -3683,7 +3699,8 @@ static int replace(DYNAMIC_STRING *ds_st
     return 1;
   init_dynamic_string_checked(&ds_tmp, "",
                       ds_str->length + replace_len, 256);
-  dynstr_append_mem_checked(&ds_tmp, ds_str->str, start - ds_str->str);
+  dynstr_append_mem_checked(&ds_tmp, ds_str->str, 
+                            (uint) (start - ds_str->str));
   dynstr_append_mem_checked(&ds_tmp, replace_str, replace_len);
   dynstr_append_checked(&ds_tmp, start + search_len);
   dynstr_set_checked(ds_str, ds_tmp.str);

=== modified file 'client/mysqlmanager-pwgen.c'
--- a/client/mysqlmanager-pwgen.c	2007-07-19 12:14:03 +0000
+++ b/client/mysqlmanager-pwgen.c	2009-03-09 18:57:03 +0000
@@ -134,7 +134,6 @@ void get_pass(char* pw, int len)
 int main(int argc, char** argv)
 {
   FILE* fp;
-  my_MD5_CTX context;
   uchar digest[16];
   char pw[17];
   uint i;
@@ -147,9 +146,7 @@ int main(int argc, char** argv)
   if (!(fp=fopen(outfile,"w")))
     die("Could not open '%s'(errno=%d)",outfile,errno);
   get_pass(pw,sizeof(pw)-1);
-  my_MD5Init(&context);
-  my_MD5Update(&context,(uchar*) pw,sizeof(pw)-1);
-  my_MD5Final(digest,&context);
+  MY_MD5_HASH(digest,(uchar*) pw,sizeof(pw)-1);
   fprintf(fp,"%s:",user);
   for (i=0;i<sizeof(digest);i++)
     fprintf(fp,"%02x",digest[i]);

=== modified file 'client/mysqltest.c'
--- a/client/mysqltest.c	2009-01-28 13:14:05 +0000
+++ b/client/mysqltest.c	2009-03-23 12:51:39 +0000
@@ -801,7 +801,7 @@ void check_command_args(struct st_comman
         ptr++;
       if (ptr > start)
       {
-        init_dynamic_string(arg->ds, 0, ptr-start, 32);
+        init_dynamic_string(arg->ds, 0, (uint) (ptr - start), 32);
         do_eval(arg->ds, start, ptr, FALSE);
       }
       else
@@ -1156,16 +1156,16 @@ void warning_msg(const char *fmt, ...)
       len= my_snprintf(buff, sizeof(buff), "in included file %s ",
                        cur_file->file_name);
       dynstr_append_mem(&ds_warning_messages,
-                        buff, len);
+                        buff, (uint) len);
     }
     len= my_snprintf(buff, sizeof(buff), "at line %d: ",
                      start_lineno);
     dynstr_append_mem(&ds_warning_messages,
-                      buff, len);
+                      buff, (uint) len);
   }
 
   len= my_vsnprintf(buff, sizeof(buff), fmt, args);
-  dynstr_append_mem(&ds_warning_messages, buff, len);
+  dynstr_append_mem(&ds_warning_messages, buff, (uint) len);
 
   dynstr_append(&ds_warning_messages, "\n");
   va_end(args);
@@ -1185,7 +1185,7 @@ void log_msg(const char *fmt, ...)
   len= my_vsnprintf(buff, sizeof(buff)-1, fmt, args);
   va_end(args);
 
-  dynstr_append_mem(&ds_res, buff, len);
+  dynstr_append_mem(&ds_res, buff, (uint) len);
   dynstr_append(&ds_res, "\n");
 
   DBUG_VOID_RETURN;
@@ -1222,7 +1222,7 @@ void cat_file(DYNAMIC_STRING* ds, const 
         /* Add fake newline instead of cr and output the line */
         *p= '\n';
         p++; /* Step past the "fake" newline */
-        dynstr_append_mem(ds, start, p-start);
+        dynstr_append_mem(ds, start, (uint) (p - start));
         p++; /* Step past the "fake" newline */
         start= p;
       }
@@ -1230,7 +1230,7 @@ void cat_file(DYNAMIC_STRING* ds, const 
         p++;
     }
     /* Output any chars that migh be left */
-    dynstr_append_mem(ds, start, p-start);
+    dynstr_append_mem(ds, start, (uint) (p - start));
   }
   my_close(fd, MYF(0));
 }
@@ -1770,9 +1770,9 @@ VAR *var_init(VAR *v, const char *name, 
   int val_alloc_len;
   VAR *tmp_var;
   if (!name_len && name)
-    name_len = strlen(name);
+    name_len = (uint) strlen(name);
   if (!val_len && val)
-    val_len = strlen(val) ;
+    val_len = (uint) strlen(val) ;
   val_alloc_len = val_len + 16; /* room to grow */
   if (!(tmp_var=v) && !(tmp_var = (VAR*)my_malloc(sizeof(*tmp_var)
                                                   + name_len+1, MYF(MY_WME))))
@@ -1815,7 +1815,7 @@ VAR* var_from_env(const char *name, cons
   if (!(tmp = getenv(name)))
     tmp = def_val;
 
-  v = var_init(0, name, strlen(name), tmp, strlen(tmp));
+  v = var_init(0, name, (uint) strlen(name), tmp, (uint) strlen(tmp));
   my_hash_insert(&var_hash, (byte*)v);
   return v;
 }
@@ -1864,7 +1864,7 @@ VAR* var_get(const char *var_name, const
   {
     sprintf(v->str_val, "%d", v->int_val);
     v->int_dirty = 0;
-    v->str_val_len = strlen(v->str_val);
+    v->str_val_len = (uint) strlen(v->str_val);
   }
   if (var_name_end)
     *var_name_end = var_name  ;
@@ -1927,7 +1927,7 @@ void var_set(const char *var_name, const
     {
       sprintf(v->str_val, "%d", v->int_val);
       v->int_dirty= 0;
-      v->str_val_len= strlen(v->str_val);
+      v->str_val_len= (uint) strlen(v->str_val);
     }
     my_snprintf(buf, sizeof(buf), "%.*s=%.*s",
                 v->name_len, v->name,
@@ -2006,7 +2006,7 @@ void var_query_set(VAR *var, const char 
   ++query;
 
   /* Eval the query, thus replacing all environment variables */
-  init_dynamic_string(&ds_query, 0, (end - query) + 32, 256);
+  init_dynamic_string(&ds_query, 0, (uint) ((end - query) + 32), 256);
   do_eval(&ds_query, query, end, FALSE);
 
   if (mysql_real_query(mysql, ds_query.str, ds_query.length))
@@ -2223,7 +2223,7 @@ void eval_expr(VAR *v, const char *p, co
       struct st_command command;
       memset(&command, 0, sizeof(command));
       command.query= (char*)p;
-      command.first_word_len= len;
+      command.first_word_len= (uint) len;
       command.first_argument= command.query + len;
       command.end= (char*)*p_end;
       var_set_query_get_value(&command, v);
@@ -2413,7 +2413,7 @@ static int replace(DYNAMIC_STRING *ds_st
     return 1;
   init_dynamic_string(&ds_tmp, "",
                       ds_str->length + replace_len, 256);
-  dynstr_append_mem(&ds_tmp, ds_str->str, start - ds_str->str);
+  dynstr_append_mem(&ds_tmp, ds_str->str, (uint) (start - ds_str->str));
   dynstr_append_mem(&ds_tmp, replace_str, replace_len);
   dynstr_append(&ds_tmp, start + search_len);
   dynstr_set(ds_str, ds_tmp.str);
@@ -2468,7 +2468,7 @@ void do_exec(struct st_command *command)
   if (builtin_echo[0] && strncmp(cmd, "echo", 4) == 0)
   {
     /* Replace echo with our "builtin" echo */
-    replace(&ds_cmd, "echo", 4, builtin_echo, strlen(builtin_echo));
+    replace(&ds_cmd, "echo", 4, builtin_echo, (uint) strlen(builtin_echo));
   }
 
 #ifdef __WIN__
@@ -4627,7 +4627,7 @@ void do_delimiter(struct st_command* com
     die("Can't set empty delimiter");
 
   strmake(delimiter, p, sizeof(delimiter) - 1);
-  delimiter_length= strlen(delimiter);
+  delimiter_length= (uint) strlen(delimiter);
 
   DBUG_PRINT("exit", ("delimiter: %s", delimiter));
   command->last_argument= p + delimiter_length;
@@ -4753,9 +4753,11 @@ int read_line(char *buf, int size)
       }
       else if ((c == '{' &&
                 (!my_strnncoll_simple(charset_info, (const uchar*) "while", 5,
-                                      (uchar*) buf, min(5, p - buf), 0) ||
+                                      (uchar*) buf, min(5, (uint) (p - buf)),
+                                      0) ||
                  !my_strnncoll_simple(charset_info, (const uchar*) "if", 2,
-                                      (uchar*) buf, min(2, p - buf), 0))))
+                                      (uchar*) buf, min(2, (uint) (p - buf)),
+                                      0))))
       {
         /* Only if and while commands can be terminated by { */
         *p++= c;
@@ -5117,7 +5119,7 @@ int read_command(struct st_command** com
   command->first_argument= p;
 
   command->end= strend(command->query);
-  command->query_len= (command->end - command->query);
+  command->query_len= (uint) (command->end - command->query);
   parser.read_lines++;
   DBUG_RETURN(0);
 }
@@ -6459,7 +6461,7 @@ void run_query(struct st_connection *cn,
   else
   {
     query = command->query;
-    query_len = strlen(query);
+    query_len = (uint) strlen(query);
   }
 
   /*
@@ -6520,7 +6522,7 @@ void run_query(struct st_connection *cn,
       */
       view_created= 1;
       query= (char*)"SELECT * FROM mysqltest_tmp_v";
-      query_len = strlen(query);
+      query_len = (uint) strlen(query);
 
       /*
         Collect warnings from create of the view that should otherwise
@@ -6568,7 +6570,7 @@ void run_query(struct st_connection *cn,
       sp_created= 1;
 
       query= (char*)"CALL mysqltest_tmp_sp()";
-      query_len = strlen(query);
+      query_len = (uint) strlen(query);
     }
     dynstr_free(&query_str);
   }
@@ -6661,9 +6663,9 @@ void init_re_comp(my_regex_t *re, const 
   if (err)
   {
     char erbuf[100];
-    int len= my_regerror(err, re, erbuf, sizeof(erbuf));
+    size_t len= my_regerror(err, re, erbuf, sizeof(erbuf));
     die("error %s, %d/%d `%s'\n",
-	re_eprint(err), len, (int)sizeof(erbuf), erbuf);
+	re_eprint(err), (int)len, (int)sizeof(erbuf), erbuf);
   }
 }
 
@@ -6717,9 +6719,9 @@ int match_re(my_regex_t *re, char *str)
 
   {
     char erbuf[100];
-    int len= my_regerror(err, re, erbuf, sizeof(erbuf));
+    size_t len= my_regerror(err, re, erbuf, sizeof(erbuf));
     die("error %s, %d/%d `%s'\n",
-	re_eprint(err), len, (int)sizeof(erbuf), erbuf);
+	re_eprint(err), (int)len, (int)sizeof(erbuf), erbuf);
   }
   return 0;
 }
@@ -7579,7 +7581,7 @@ void replace_strings_append(REPLACE *rep
     if (!(rep_str = ((REPLACE_STRING*) rep_pos))->replace_string)
     {
       /* No match found */
-      dynstr_append_mem(ds, start, from - start - 1);
+      dynstr_append_mem(ds, start, (uint) (from - start - 1));
       DBUG_PRINT("exit", ("Found no more string to replace, appended: %s", start));
       DBUG_VOID_RETURN;
     }
@@ -7590,11 +7592,11 @@ void replace_strings_append(REPLACE *rep
                         rep_str->from_offset, rep_str->replace_string));
 
     /* Append part of original string before replace string */
-    dynstr_append_mem(ds, start, (from - rep_str->to_offset) - start);
+    dynstr_append_mem(ds, start, (uint) ((from - rep_str->to_offset) - start));
 
     /* Append replace string */
     dynstr_append_mem(ds, rep_str->replace_string,
-                      strlen(rep_str->replace_string));
+                      (uint) strlen(rep_str->replace_string));
 
     if (!*(from-=rep_str->from_offset) && rep_pos->found != 2)
     {
@@ -7689,7 +7691,7 @@ struct st_replace_regex* init_replace_re
   char* buf,*expr_end;
   char* p;
   char* buf_p;
-  uint expr_len= strlen(expr);
+  size_t expr_len= strlen(expr);
   char last_c = 0;
   struct st_regex reg;
 
@@ -7866,7 +7868,7 @@ void free_replace_regex()
 */
 #define SECURE_REG_BUF   if (buf_len < need_buf_len)                    \
   {                                                                     \
-    int off= res_p - buf;                                               \
+    size_t off= res_p - buf;                                            \
     buf= (char*)my_realloc(buf,need_buf_len,MYF(MY_WME+MY_FAE));        \
     res_p= buf + off;                                                   \
     buf_len= need_buf_len;                                              \
@@ -7898,7 +7900,7 @@ int reg_replace(char** buf_p, int* buf_l
   char *res_p,*str_p,*str_end;
 
   buf_len= *buf_len_p;
-  len= strlen(string);
+  len= (uint) strlen(string);
   str_end= string + len;
 
   /* start with a buffer of a reasonable size that hopefully will not
@@ -7950,7 +7952,7 @@ int reg_replace(char** buf_p, int* buf_l
         we need at least what we have so far in the buffer + the part
         before this match
       */
-      need_buf_len= (res_p - buf) + (int) subs[0].rm_so;
+      need_buf_len= (uint) (res_p - buf) + (int) subs[0].rm_so;
 
       /* on this pass, calculate the memory for the result buffer */
       while (expr_p < replace_end)
@@ -8040,8 +8042,8 @@ int reg_replace(char** buf_p, int* buf_l
     }
     else /* no match this time, just copy the string as is */
     {
-      int left_in_str= str_end-str_p;
-      need_buf_len= (res_p-buf) + left_in_str;
+      size_t left_in_str= str_end-str_p;
+      need_buf_len= (uint) ((res_p-buf) + left_in_str);
       SECURE_REG_BUF
         memcpy(res_p,str_p,left_in_str);
       res_p += left_in_str;
@@ -8708,7 +8710,7 @@ void replace_dynstr_append_mem(DYNAMIC_S
     if (!multi_reg_replace(glob_replace_regex, (char*)val))
     {
       val= glob_replace_regex->buf;
-      len= strlen(val);
+      len= (uint) strlen(val);
     }
   }
 
@@ -8725,7 +8727,7 @@ void replace_dynstr_append_mem(DYNAMIC_S
 /* Append zero-terminated string to ds, with optional replace */
 void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val)
 {
-  replace_dynstr_append_mem(ds, val, strlen(val));
+  replace_dynstr_append_mem(ds, val, (uint) strlen(val));
 }
 
 /* Append uint to ds, with optional replace */
@@ -8733,7 +8735,7 @@ void replace_dynstr_append_uint(DYNAMIC_
 {
   char buff[22]; /* This should be enough for any int */
   char *end= longlong10_to_str(val, buff, 10);
-  replace_dynstr_append_mem(ds, buff, end - buff);
+  replace_dynstr_append_mem(ds, buff, (uint) (end - buff));
 }
 
 
@@ -8771,7 +8773,7 @@ void dynstr_append_sorted(DYNAMIC_STRING
   while (*start && *start != '\n')
     start++;
   start++; /* Skip past \n */
-  dynstr_append_mem(ds, ds_input->str, start - ds_input->str);
+  dynstr_append_mem(ds, ds_input->str, (uint) (start - ds_input->str));
 
   /* Insert line(s) in array */
   while (*start)

=== modified file 'client/readline.cc'
--- a/client/readline.cc	2006-12-23 19:17:15 +0000
+++ b/client/readline.cc	2009-03-18 08:18:24 +0000
@@ -24,7 +24,7 @@ static bool init_line_buffer(LINE_BUFFER
 			    ulong max_size);
 static bool init_line_buffer_from_string(LINE_BUFFER *buffer,my_string str);
 static uint fill_buffer(LINE_BUFFER *buffer);
-static char *intern_read_line(LINE_BUFFER *buffer,ulong *out_length);
+static char *intern_read_line(LINE_BUFFER *buffer, ulong *out_length, bool *truncated);
 
 
 LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
@@ -42,12 +42,13 @@ LINE_BUFFER *batch_readline_init(ulong m
 }
 
 
-char *batch_readline(LINE_BUFFER *line_buff)
+char *batch_readline(LINE_BUFFER *line_buff, bool *truncated)
 {
   char *pos;
   ulong out_length;
+  DBUG_ASSERT(truncated != NULL);
 
-  if (!(pos=intern_read_line(line_buff,&out_length)))
+  if (!(pos=intern_read_line(line_buff,&out_length, truncated)))
     return 0;
   if (out_length && pos[out_length-1] == '\n')
     if (--out_length && pos[out_length-1] == '\r')  /* Remove '\n' */
@@ -149,6 +150,14 @@ static uint fill_buffer(LINE_BUFFER *buf
     read_count=(buffer->bufread - bufbytes)/IO_SIZE;
     if ((read_count*=IO_SIZE))
       break;
+    if (buffer->bufread * 2 > buffer->max_size)
+    {
+      /*
+        So we must grow the buffer but we cannot due to the max_size limit.
+        Return 0 w/o setting buffer->eof to signal this condition.
+      */
+      return 0;
+    }
     buffer->bufread *= 2;
     if (!(buffer->buffer = (char*) my_realloc(buffer->buffer,
 					      buffer->bufread+1,
@@ -172,11 +181,15 @@ static uint fill_buffer(LINE_BUFFER *buf
 
   DBUG_PRINT("fill_buff", ("Got %d bytes", read_count));
 
-  /* Kludge to pretend every nonempty file ends with a newline. */
-  if (!read_count && bufbytes && buffer->end[-1] != '\n')
+  if (!read_count)
   {
-    buffer->eof = read_count = 1;
-    *buffer->end = '\n';
+    buffer->eof = 1;
+    /* Kludge to pretend every nonempty file ends with a newline. */
+    if (bufbytes && buffer->end[-1] != '\n')
+    {
+      read_count = 1;
+      *buffer->end = '\n';
+    }
   }
   buffer->end_of_line=(buffer->start_of_line=buffer->buffer)+bufbytes;
   buffer->end+=read_count;
@@ -186,7 +199,7 @@ static uint fill_buffer(LINE_BUFFER *buf
 
 
 
-char *intern_read_line(LINE_BUFFER *buffer,ulong *out_length)
+char *intern_read_line(LINE_BUFFER *buffer, ulong *out_length, bool *truncated)
 {
   char *pos;
   uint length;
@@ -200,14 +213,23 @@ char *intern_read_line(LINE_BUFFER *buff
       pos++;
     if (pos == buffer->end)
     {
-      if ((uint) (pos - buffer->start_of_line) < buffer->max_size)
+      /*
+        fill_buffer() can return 0 either on EOF in which case we abort
+        or when the internal buffer has hit the size limit. In the latter case
+        return what we have read so far and signal string truncation.
+      */
+      if (!(length=fill_buffer(buffer)) || length == (uint) -1)
       {
-	if (!(length=fill_buffer(buffer)) || length == (uint) -1)
-	  DBUG_RETURN(0);
-	continue;
+        if (buffer->eof)
+          DBUG_RETURN(0);
       }
+      else
+        continue;
       pos--;					/* break line here */
+      *truncated= 1;
     }
+    else
+      *truncated= 0;
     buffer->end_of_line=pos+1;
     *out_length=(ulong) (pos + 1 - buffer->eof - buffer->start_of_line);
     DBUG_RETURN(buffer->start_of_line);

=== modified file 'client/sql_string.cc'
--- a/client/sql_string.cc	2009-02-14 09:09:35 +0000
+++ b/client/sql_string.cc	2009-03-19 13:44:58 +0000
@@ -465,7 +465,7 @@ bool String::append(const char *s,uint32
 
 bool String::append(const char *s)
 {
-  return append(s, strlen(s));
+  return append(s, (uint) strlen(s));
 }
 
 

=== modified file 'configure.in'
--- a/configure.in	2009-02-23 12:28:26 +0000
+++ b/configure.in	2009-03-09 18:33:01 +0000
@@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc)
 AC_CANONICAL_SYSTEM
 # The Docs Makefile.am parses this line!
 # remember to also change ndb version below and update version.c in ndb
-AM_INIT_AUTOMAKE(mysql, 5.0.79)
+AM_INIT_AUTOMAKE(mysql, 5.0.80)
 AM_CONFIG_HEADER([include/config.h:config.h.in])
 
 PROTOCOL_VERSION=10
@@ -23,7 +23,7 @@ NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_M
 # ndb version
 NDB_VERSION_MAJOR=5
 NDB_VERSION_MINOR=0
-NDB_VERSION_BUILD=79
+NDB_VERSION_BUILD=80
 NDB_VERSION_STATUS=""
 
 # Set all version vars based on $VERSION. How do we do this more elegant ?

=== modified file 'extra/comp_err.c'
--- a/extra/comp_err.c	2007-10-05 17:55:00 +0000
+++ b/extra/comp_err.c	2009-02-10 22:47:54 +0000
@@ -660,7 +660,7 @@ static ha_checksum checksum_format_speci
       case 'u':
       case 'x':
       case 's':
-        chksum= my_checksum(chksum, start, p-start);
+        chksum= my_checksum(chksum, start, (uint) (p - start));
         start= 0; /* Not in format specifier anymore */
         break;
 

=== modified file 'extra/yassl/src/buffer.cpp'
--- a/extra/yassl/src/buffer.cpp	2007-01-29 15:54:40 +0000
+++ b/extra/yassl/src/buffer.cpp	2009-02-10 22:47:54 +0000
@@ -106,7 +106,7 @@ void input_buffer::add_size(uint i) 
 
 uint input_buffer::get_capacity()  const 
 { 
-    return end_ - buffer_; 
+    return (uint) (end_ - buffer_); 
 }
 
 
@@ -223,7 +223,7 @@ uint output_buffer::get_size() const 
 
 uint output_buffer::get_capacity() const 
 { 
-    return end_ - buffer_; 
+    return (uint) (end_ - buffer_); 
 }
 
 

=== modified file 'extra/yassl/src/cert_wrapper.cpp'
--- a/extra/yassl/src/cert_wrapper.cpp	2007-01-29 15:54:40 +0000
+++ b/extra/yassl/src/cert_wrapper.cpp	2009-02-10 22:47:54 +0000
@@ -236,7 +236,7 @@ uint CertManager::get_privateKeyLength()
 int CertManager::Validate()
 {
     CertList::reverse_iterator last = peerList_.rbegin();
-    int count = peerList_.size();
+    size_t count= peerList_.size();
 
     while ( count > 1 ) {
         TaoCrypt::Source source((*last)->get_buffer(), (*last)->get_length());
@@ -269,13 +269,13 @@ int CertManager::Validate()
         else
             peerKeyType_ = dsa_sa_algo;
 
-        int iSz = strlen(cert.GetIssuer()) + 1;
-        int sSz = strlen(cert.GetCommonName()) + 1;
-        int bSz = strlen(cert.GetBeforeDate()) + 1;
-        int aSz = strlen(cert.GetAfterDate()) + 1;
+        size_t iSz= strlen(cert.GetIssuer()) + 1;
+        size_t sSz= strlen(cert.GetCommonName()) + 1;
+        size_t bSz= strlen(cert.GetBeforeDate()) + 1;
+        size_t aSz= strlen(cert.GetAfterDate()) + 1;
         peerX509_ = NEW_YS X509(cert.GetIssuer(), iSz, cert.GetCommonName(),
-                                sSz, cert.GetBeforeDate(), bSz,
-                                cert.GetAfterDate(), aSz);
+                                sSz, cert.GetBeforeDate(), (int) bSz,
+                                cert.GetAfterDate(), (int) aSz);
     }
     return 0;
 }

=== modified file 'extra/yassl/src/ssl.cpp'
--- a/extra/yassl/src/ssl.cpp	2007-08-28 08:35:55 +0000
+++ b/extra/yassl/src/ssl.cpp	2009-02-10 22:47:54 +0000
@@ -604,13 +604,13 @@ char* X509_NAME_oneline(X509_NAME* name,
 {
     if (!name->GetName()) return buffer;
 
-    int len    = strlen(name->GetName()) + 1;
-    int copySz = min(len, sz);
+    size_t len= strlen(name->GetName()) + 1;
+    int copySz = min((int) len, sz);
 
     if (!buffer) {
         buffer = (char*)malloc(len);
         if (!buffer) return buffer;
-        copySz = len;
+        copySz = (int) len;
     }
 
     if (copySz == 0)

=== modified file 'extra/yassl/src/yassl_imp.cpp'
--- a/extra/yassl/src/yassl_imp.cpp	2008-01-11 12:20:03 +0000
+++ b/extra/yassl/src/yassl_imp.cpp	2009-02-10 22:47:54 +0000
@@ -532,7 +532,7 @@ void Parameters::SetCipherNames()
 
     for (int j = 0; j < suites; j++) {
         int index = suites_[j*2 + 1];  // every other suite is suite id
-        int len = strlen(cipher_names[index]) + 1;
+        size_t len = strlen(cipher_names[index]) + 1;
         strncpy(cipher_list_[pos++], cipher_names[index], len);
     }
     cipher_list_[pos][0] = 0;

=== modified file 'extra/yassl/src/yassl_int.cpp'
--- a/extra/yassl/src/yassl_int.cpp	2007-08-28 08:35:55 +0000
+++ b/extra/yassl/src/yassl_int.cpp	2009-02-10 22:47:54 +0000
@@ -1034,7 +1034,7 @@ void SSL::fillData(Data& data)
 {
     if (GetError()) return;
     uint dataSz   = data.get_length();        // input, data size to fill
-    uint elements = buffers_.getData().size();
+    size_t elements = buffers_.getData().size();
 
     data.set_length(0);                         // output, actual data filled
     dataSz = min(dataSz, bufferedData());
@@ -1064,7 +1064,7 @@ void SSL::PeekData(Data& data)
 {
     if (GetError()) return;
     uint dataSz   = data.get_length();        // input, data size to fill
-    uint elements = buffers_.getData().size();
+    size_t elements = buffers_.getData().size();
 
     data.set_length(0);                         // output, actual data filled
     dataSz = min(dataSz, bufferedData());
@@ -1098,7 +1098,7 @@ void SSL::flushBuffer()
                             buffers_.getHandShake().end(),
                             SumBuffer()).total_;
     output_buffer out(sz);
-    uint elements = buffers_.getHandShake().size();
+    size_t elements = buffers_.getHandShake().size();
 
     for (uint i = 0; i < elements; i++) {
         output_buffer* front = buffers_.getHandShake().front();
@@ -1906,7 +1906,7 @@ bool SSL_CTX::SetCipherList(const char* 
     int idx = 0;
 
     for(;;) {
-        int len;
+        size_t len;
         prev = haystack;
         haystack = strstr(haystack, needle);
 
@@ -2354,10 +2354,10 @@ ASN1_STRING* X509_NAME::GetEntry(int i)
     memcpy(entry_.data, &name_[i], sz_ - i);
     if (entry_.data[sz_ -i - 1]) {
         entry_.data[sz_ - i] = 0;
-        entry_.length = sz_ - i;
+        entry_.length = (int) (sz_ - i);
     }
     else
-        entry_.length = sz_ - i - 1;
+        entry_.length = (int) (sz_ - i - 1);
     entry_.type = 0;
 
     return &entry_;

=== modified file 'extra/yassl/taocrypt/include/block.hpp'
--- a/extra/yassl/taocrypt/include/block.hpp	2007-01-29 15:54:40 +0000
+++ b/extra/yassl/taocrypt/include/block.hpp	2009-02-10 22:47:54 +0000
@@ -78,7 +78,7 @@ typename A::pointer StdReallocate(A& a, 
     if (preserve) {
         A b = A();
         typename A::pointer newPointer = b.allocate(newSize, 0);
-        memcpy(newPointer, p, sizeof(T) * min(oldSize, newSize));
+        memcpy(newPointer, p, sizeof(T) * min((word32) oldSize, (word32) newSize));
         a.deallocate(p, oldSize);
         STL::swap(a, b);
         return newPointer;

=== modified file 'extra/yassl/taocrypt/src/algebra.cpp'
--- a/extra/yassl/taocrypt/src/algebra.cpp	2007-03-23 10:52:25 +0000
+++ b/extra/yassl/taocrypt/src/algebra.cpp	2009-02-10 22:47:54 +0000
@@ -288,7 +288,7 @@ void AbstractGroup::SimultaneousMultiply
         r = buckets[i][buckets[i].size()-1];
         if (buckets[i].size() > 1)
         {
-            for (int j = buckets[i].size()-2; j >= 1; j--)
+            for (int j= (unsigned int) (buckets[i].size()) - 2; j >= 1; j--)
             {
                 Accumulate(buckets[i][j], buckets[i][j+1]);
                 Accumulate(r, buckets[i][j]);

=== modified file 'extra/yassl/taocrypt/src/asn.cpp'
--- a/extra/yassl/taocrypt/src/asn.cpp	2007-03-23 10:52:25 +0000
+++ b/extra/yassl/taocrypt/src/asn.cpp	2009-02-10 22:47:54 +0000
@@ -213,7 +213,7 @@ void PublicKey::AddToEnd(const byte* dat
 Signer::Signer(const byte* k, word32 kSz, const char* n, const byte* h)
     : key_(k, kSz)
 {
-        int sz = strlen(n);
+        size_t sz = strlen(n);
         memcpy(name_, n, sz);
         name_[sz] = 0;
 

=== modified file 'heap/hp_write.c'
--- a/heap/hp_write.c	2007-04-13 06:14:47 +0000
+++ b/heap/hp_write.c	2009-02-10 22:47:54 +0000
@@ -69,7 +69,7 @@ int heap_write(HP_INFO *info, const byte
 err:
   if (my_errno == HA_ERR_FOUND_DUPP_KEY)
     DBUG_PRINT("info",("Duplicate key: %d", (int) (keydef - share->keydef)));
-  info->errkey= keydef - share->keydef;
+  info->errkey= (int) (keydef - share->keydef);
   /*
     We don't need to delete non-inserted key from rb-tree.  Also, if
     we got ENOMEM, the key wasn't inserted, so don't try to delete it

=== modified file 'include/my_md5.h'
--- a/include/my_md5.h	2007-07-19 12:14:03 +0000
+++ b/include/my_md5.h	2009-03-09 18:57:03 +0000
@@ -13,80 +13,42 @@
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
 
+/* See md5.c for explanation and copyright information.  */
 
-/* MD5.H - header file for MD5C.C
+/*
+ * $FreeBSD: src/contrib/cvs/lib/md5.h,v 1.2 1999/12/11 15:10:02 peter Exp $
  */
 
-/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
+/* Unlike previous versions of this code, uint32 need not be exactly
+   32 bits, merely 32 bits or more.  Choosing a data type which is 32
+   bits instead of 64 is not important; speed is considerably more
+   important.  ANSI guarantees that "unsigned long" will be big enough,
+   and always using it seems to have few disadvantages.  */
+typedef uint32 cvs_uint32;
 
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
- */
-
-/* GLOBAL.H - RSAREF types and constants
- */
-
-/* PROTOTYPES should be set to one if and only if the compiler supports
-  function argument prototyping.
-The following makes PROTOTYPES default to 0 if it has not already
-  been defined with C compiler flags.
- */
-
-/* egcs 1.1.2 under linux didn't defined it.... :( */
-
-#ifndef PROTOTYPES
-#define PROTOTYPES 1				/* Assume prototypes */
-#endif
-
-/* POINTER defines a generic pointer type */
-typedef unsigned char *POINTER;
-
-/* UINT2 defines a two byte word */
-typedef uint16 UINT2;				/* Fix for MySQL / Alpha */
-
-/* UINT4 defines a four byte word */
-typedef uint32 UINT4;				/* Fix for MySQL / Alpha */
-
-/* PROTO_LIST is defined depending on how PROTOTYPES is defined above.
-If using PROTOTYPES, then PROTO_LIST returns the list, otherwise it
-  returns an empty list.
- */
-#if PROTOTYPES
-#define PROTO_LIST(list) list
-#else
-#define PROTO_LIST(list) ()
-#endif
-/* MD5 context. */
 typedef struct {
-  UINT4 state[4];                                   /* state (ABCD) */
-  UINT4 count[2];        /* number of bits, modulo 2^64 (lsb first) */
-  unsigned char buffer[64];                         /* input buffer */
-} my_MD5_CTX;
+  cvs_uint32 buf[4];
+  cvs_uint32 bits[2];
+  unsigned char in[64];
+} my_MD5Context;
 
 #ifdef __cplusplus
 extern "C" {
 #endif
-       void my_MD5Init PROTO_LIST ((my_MD5_CTX *));
-       void my_MD5Update PROTO_LIST
-         ((my_MD5_CTX *, unsigned char *, unsigned int));
-       void my_MD5Final PROTO_LIST ((unsigned char [16], my_MD5_CTX *));
+void my_MD5Init (my_MD5Context *context);
+void my_MD5Update (my_MD5Context *context,
+                   unsigned char const *buf, unsigned len);
+void my_MD5Final (unsigned char digest[16],
+                  my_MD5Context *context);
 
 #ifdef __cplusplus
 }
 #endif
+
+#define MY_MD5_HASH(digest,buf,len) \
+do { \
+  my_MD5Context ctx; \
+  my_MD5Init (&ctx); \
+  my_MD5Update (&ctx, buf, len); \
+  my_MD5Final (digest, &ctx); \
+} while (0)

=== modified file 'include/my_sys.h'
--- a/include/my_sys.h	2009-01-15 10:48:31 +0000
+++ b/include/my_sys.h	2009-03-19 13:44:58 +0000
@@ -250,7 +250,7 @@ extern int NEAR my_umask,		/* Default cr
 	   NEAR my_safe_to_handle_signal, /* Set when allowed to SIGTSTP */
 	   NEAR my_dont_interrupt;	/* call remember_intr when set */
 extern my_bool NEAR mysys_uses_curses, my_use_symdir;
-extern ulong sf_malloc_cur_memory, sf_malloc_max_memory;
+extern size_t sf_malloc_cur_memory, sf_malloc_max_memory;
 
 extern ulong	my_default_record_cache_size;
 extern my_bool NEAR my_disable_locking,NEAR my_disable_async_io,
@@ -636,6 +636,7 @@ extern int nt_share_delete(const char *n
 extern void TERMINATE(FILE *file);
 #endif
 extern void init_glob_errs(void);
+extern void wait_for_free_space(const char *filename, int errors);
 extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
 extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags);
 extern int my_fclose(FILE *fd,myf MyFlags);

=== modified file 'innobase/include/pars0pars.h'
--- a/innobase/include/pars0pars.h	2005-03-07 10:03:33 +0000
+++ b/innobase/include/pars0pars.h	2009-02-10 22:47:54 +0000
@@ -484,7 +484,7 @@ struct for_node_struct{
 					definition */
 	que_node_t*	loop_start_limit;/* initial value of loop variable */
 	que_node_t*	loop_end_limit;	/* end value of loop variable */
-	int		loop_end_value;	/* evaluated value for the end value:
+	lint		loop_end_value;	/* evaluated value for the end value:
 					it is calculated only when the loop
 					is entered, and will not change within
 					the loop */

=== modified file 'innobase/pars/pars0pars.c'
--- a/innobase/pars/pars0pars.c	2004-12-02 17:45:07 +0000
+++ b/innobase/pars/pars0pars.c	2009-02-10 22:47:54 +0000
@@ -1679,8 +1679,8 @@ pars_get_lex_chars(
 {
 	int	len;
 	
-	len = pars_sym_tab_global->string_len
-				- pars_sym_tab_global->next_char_pos;
+	len= (uint) (pars_sym_tab_global->string_len
+				- pars_sym_tab_global->next_char_pos);
 	if (len == 0) {
 #ifdef YYDEBUG
 		/* fputs("SQL string ends\n", stderr); */

=== modified file 'innobase/rem/rem0cmp.c'
--- a/innobase/rem/rem0cmp.c	2005-12-13 13:12:56 +0000
+++ b/innobase/rem/rem0cmp.c	2009-02-10 22:47:54 +0000
@@ -587,7 +587,7 @@ cmp_dtuple_rec_with_match(
 				dtuple_byte = cmp_collate(dtuple_byte);
 			}
 
-			ret = dtuple_byte - rec_byte;
+			ret = (uint) (dtuple_byte - rec_byte);
 			if (UNIV_UNLIKELY(ret)) {
 				if (ret < 0) {
 					ret = -1;

=== modified file 'libmysql/libmysql.c'
--- a/libmysql/libmysql.c	2009-01-28 17:59:08 +0000
+++ b/libmysql/libmysql.c	2009-03-19 13:44:58 +0000
@@ -3552,7 +3552,7 @@ static void fetch_string_with_conversion
     */
     char *start= value + param->offset;
     char *end= value + length;
-    ulong copy_length;
+    size_t copy_length;
     if (start < end)
     {
       copy_length= end - start;
@@ -3807,11 +3807,11 @@ static void fetch_float_with_conversion(
       if (field->flags & ZEROFILL_FLAG && length < field->length &&
           field->length < MAX_DOUBLE_STRING_REP_LENGTH - 1)
       {
-        bmove_upp((char*) buff + field->length, buff + length, length);
+        bmove_upp((char*) buff + field->length, buff + length, (uint) length);
         bfill((char*) buff, field->length - length, '0');
         length= field->length;
       }
-      fetch_string_with_conversion(param, buff, length);
+      fetch_string_with_conversion(param, buff, (uint) length);
     }
 
     break;

=== modified file 'libmysql/manager.c'
--- a/libmysql/manager.c	2004-10-18 07:43:52 +0000
+++ b/libmysql/manager.c	2009-02-10 22:47:54 +0000
@@ -159,7 +159,7 @@ MYSQL_MANAGER*  STDCALL mysql_manager_co
     goto err;
   }
   sprintf(msg_buf,"%-.16s %-.16s\n",user,passwd);
-  msg_len=strlen(msg_buf);
+  msg_len= (uint) strlen(msg_buf);
   if (my_net_write(&con->net,msg_buf,msg_len) || net_flush(&con->net))
   {
     con->last_errno=con->net.last_errno;
@@ -219,7 +219,7 @@ int STDCALL mysql_manager_command(MYSQL_
 				  int cmd_len)
 {
   if (!cmd_len)
-    cmd_len=strlen(cmd);
+    cmd_len= (uint) strlen(cmd);
   if (my_net_write(&con->net,(char*)cmd,cmd_len) || net_flush(&con->net))
   {
     con->last_errno=errno;

=== modified file 'myisam/mi_check.c'
--- a/myisam/mi_check.c	2009-01-15 10:48:31 +0000
+++ b/myisam/mi_check.c	2009-02-10 22:47:54 +0000
@@ -659,7 +659,7 @@ void mi_collect_stats_nonulls_first(HA_K
                                     uchar *key)
 {
   uint first_null, kp;
-  first_null= ha_find_null(keyseg, key) - keyseg;
+  first_null= (uint) (ha_find_null(keyseg, key) - keyseg);
   /*
     All prefix tuples that don't include keypart_{first_null} are not-null
     tuples (and all others aren't), increment counters for them.
@@ -715,7 +715,7 @@ int mi_collect_stats_nonulls_next(HA_KEY
   seg= keyseg + diffs[0] - 1;
 
   /* Find first NULL in last_key */
-  first_null_seg= ha_find_null(seg, last_key + diffs[1]) - keyseg;
+  first_null_seg= (uint) (ha_find_null(seg, last_key + diffs[1]) - keyseg);
   for (kp= 0; kp < first_null_seg; kp++)
     notnull[kp]++;
 
@@ -3913,7 +3913,7 @@ static int sort_ft_key_write(MI_SORT_PAR
       key_block++;
     sort_info->key_block=key_block;
     sort_param->keyinfo=& sort_info->info->s->ft2_keyinfo;
-    ft_buf->count=(ft_buf->buf - p)/val_len;
+    ft_buf->count=(uint) (ft_buf->buf - p)/val_len;
 
     /* flushing buffer to second-level tree */
     for (error=0; !error && p < ft_buf->buf; p+= val_len)

=== modified file 'myisam/mi_open.c'
--- a/myisam/mi_open.c	2009-01-15 10:48:31 +0000
+++ b/myisam/mi_open.c	2009-02-10 22:47:54 +0000
@@ -112,7 +112,8 @@ MI_INFO *mi_open(const char *name, int m
     share_buff.state.rec_per_key_part=rec_per_key_part;
     share_buff.state.key_root=key_root;
     share_buff.state.key_del=key_del;
-    share_buff.key_cache= multi_key_cache_search(name_buff, strlen(name_buff));
+    share_buff.key_cache= multi_key_cache_search(name_buff, 
+                                                 (uint) strlen(name_buff));
 
     DBUG_EXECUTE_IF("myisam_pretend_crashed_table_on_open",
                     if (strstr(name, "/t1"))
@@ -314,7 +315,7 @@ MI_INFO *mi_open(const char *name, int m
 	   (char*) key_del, (sizeof(my_off_t) *
 			     share->state.header.max_block_size));
     strmov(share->unique_file_name, name_buff);
-    share->unique_name_length= strlen(name_buff);
+    share->unique_name_length= (uint) strlen(name_buff);
     strmov(share->index_file_name,  index_name);
     strmov(share->data_file_name,   data_name);
 

=== modified file 'myisam/mi_packrec.c'
--- a/myisam/mi_packrec.c	2008-03-29 07:52:16 +0000
+++ b/myisam/mi_packrec.c	2009-02-10 22:47:54 +0000
@@ -254,7 +254,7 @@ my_bool _mi_read_pack_info(MI_INFO *info
 	       MYF(MY_HOLD_ON_ERROR));
   /* Fix the table addresses in the tree heads. */
   {
-    long diff=PTR_BYTE_DIFF(decode_table,share->decode_tables);
+    my_ptrdiff_t diff=PTR_BYTE_DIFF(decode_table,share->decode_tables);
     share->decode_tables=decode_table;
     for (i=0 ; i < trees ; i++)
       share->decode_trees[i].table=ADD_TO_PTR(share->decode_trees[i].table,

=== modified file 'myisam/mi_search.c'
--- a/myisam/mi_search.c	2008-03-29 07:52:16 +0000
+++ b/myisam/mi_search.c	2009-02-10 22:47:54 +0000
@@ -408,7 +408,7 @@ int _mi_prefix_search(MI_INFO *info, reg
       }
       from+=keyseg->length;
       page=from+nod_flag;
-      length=from-vseg;
+      length= (uint) (from - vseg);
     }
 
     if (page > end)

=== modified file 'myisam/rt_index.c'
--- a/myisam/rt_index.c	2008-08-26 13:51:06 +0000
+++ b/myisam/rt_index.c	2009-02-10 22:47:54 +0000
@@ -95,7 +95,7 @@ static int rtree_find_req(MI_INFO *info,
                                       _mi_kpos(nod_flag, k), level + 1)))
         {
           case 0: /* found - exit from recursion */
-            *saved_key = k - page_buf;
+            *saved_key = (uint) (k - page_buf);
             goto ok;
           case 1: /* not found - continue searching */
             info->rtree_recursion_depth = level;
@@ -117,7 +117,7 @@ static int rtree_find_req(MI_INFO *info,
         info->lastkey_length = k_len + info->s->base.rec_reflength;
         memcpy(info->lastkey, k, info->lastkey_length);
         info->rtree_recursion_depth = level;
-        *saved_key = last - page_buf;
+        *saved_key = (uint) (last - page_buf);
 
         if (after_key < last)
         {
@@ -314,7 +314,7 @@ static int rtree_get_req(MI_INFO *info, 
                                   _mi_kpos(nod_flag, k), level + 1)))
       {
         case 0: /* found - exit from recursion */
-          *saved_key = k - page_buf;
+          *saved_key = (uint) (k - page_buf);
           goto ok;
         case 1: /* not found - continue searching */
           info->rtree_recursion_depth = level;
@@ -333,7 +333,7 @@ static int rtree_get_req(MI_INFO *info, 
       memcpy(info->lastkey, k, info->lastkey_length);
 
       info->rtree_recursion_depth = level;
-      *saved_key = k - page_buf;
+      *saved_key = (uint) (k - page_buf);
 
       if (after_key < last)
       {
@@ -420,7 +420,7 @@ int rtree_get_next(MI_INFO *info, uint k
     info->lastkey_length = k_len + info->s->base.rec_reflength;
     memcpy(info->lastkey, key, k_len + info->s->base.rec_reflength);
 
-    *(int*)info->int_keypos = key - info->buff;
+    *(uint*)info->int_keypos = (uint) (key - info->buff);
     if (after_key >= info->int_maxpos)
     {
       info->buff_used = 1;

=== modified file 'mysql-test/include/ndb_backup.inc'
--- a/mysql-test/include/ndb_backup.inc	2009-02-19 20:37:40 +0000
+++ b/mysql-test/include/ndb_backup.inc	2009-03-15 16:25:14 +0000
@@ -3,29 +3,49 @@
 # in test cases and can be reused.                   #
 ######################################################
 
-# Bug#41307: Tests using include/ndb_backup.inc won't work on Windows due to
-#            'grep' call
-# This test is disabled on Windows via the next line until the above bug is
-# resolved
---source include/not_windows.inc
-
 --exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "start backup" >> $NDB_TOOLS_OUTPUT
 
-# there is no neat way to find the backupid, this is a hack to find it...
-
---exec $NDB_TOOLS_DIR/ndb_select_all --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -d sys --delimiter=',' SYSTAB_0 | grep 520093696 > $MYSQLTEST_VARDIR/tmp.dat
+# To find the backupid, we must dump this data to a table, and SELECT
+# what we want into an outfile.  This could be accomplished with grep, but
+# grep isn't Windows-portable
+
+--disable_query_log
+# create a table to help us out
+--disable_warnings # leave this on until done with the entire process
+# cleanup
+DROP TABLE IF EXISTS helper1;
+CREATE TABLE helper1(c1 VARCHAR(20));
+# dump raw data to file
+let $ndb_backup_file1= $MYSQLTEST_VARDIR/ndb_backup_tmp.dat;
+let $ndb_backup_file2= $MYSQLTEST_VARDIR/tmp.dat;
+--error 0,1
+--remove_file $ndb_backup_file1
+--exec $NDB_TOOLS_DIR/ndb_select_all --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -d sys --delimiter=',' SYSTAB_0 > $ndb_backup_file1
+# load the table from the raw data file
+eval LOAD DATA INFILE '$ndb_backup_file1' INTO TABLE helper1;
+--remove_file $ndb_backup_file1
+# output what we need
+eval SELECT * FROM helper1 WHERE c1 LIKE '%520093696%'
+INTO OUTFILE '$ndb_backup_file2';
+# cleanup
+DROP TABLE helper1;
+--enable_warnings
+--enable_query_log
 
-CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
+CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
+(id INT, backup_id INT) ENGINE = MEMORY;
 
 DELETE FROM test.backup_info;
 
-LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
+--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
+eval LOAD DATA INFILE '$ndb_backup_file2'
+INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
+--remove_file $ndb_backup_file2
 
 --replace_column 1 <the_backup_id>
 
 SELECT @the_backup_id:=backup_id FROM test.backup_info;
-
-let the_backup_id=`select @the_backup_id`;
+let $the_backup_id=`SELECT @the_backup_id`;
 
 DROP TABLE test.backup_info;
 

=== modified file 'mysql-test/include/wait_until_count_sessions.inc'
--- a/mysql-test/include/wait_until_count_sessions.inc	2009-02-09 20:52:40 +0000
+++ b/mysql-test/include/wait_until_count_sessions.inc	2009-03-05 13:35:03 +0000
@@ -2,14 +2,23 @@
 #
 # SUMMARY
 #
-#    Waits until the passed number ($count_sessions) of concurrent sessions was
-#    observed via
+#    Waits until the passed number ($count_sessions) of concurrent sessions or
+#    a smaller number was observed via
 #       SHOW STATUS LIKE 'Threads_connected'
 #    or the operation times out.
-#    Note: Starting with 5.1 we could also use
-#          SELECT COUNT(*) FROM information_schema.processlist
-#          I stay with "SHOW STATUS LIKE 'Threads_connected'" because this
-#          runs in all versions 5.0+
+#    Note:
+#    1. We wait for $current_sessions <= $count_sessions because in the use case
+#       with count_sessions.inc before and wait_until_count_sessions.inc after
+#       the core of the test it could happen that the disconnects of sessions
+#       belonging to the preceeding test are not finished.
+#       sessions at test begin($count_sessions) =  m + n
+#       sessions of the previous test which will be soon disconnected = n (n >= 0)
+#       sessions at test end ($current sessions, assuming the test disconnects
+#          all additional sessions) = m
+#    2. Starting with 5.1 we could also use
+#       SELECT COUNT(*) FROM information_schema.processlist
+#       I stay with "SHOW STATUS LIKE 'Threads_connected'" because this
+#       runs in all versions 5.0+
 #
 #
 # USAGE
@@ -19,7 +28,7 @@
 #
 #    OR typical example of a test which uses more than one session
 #       Such a test could harm successing tests if there is no server shutdown
-#       and start between.cw
+#       and start between.
 #
 #       If the testing box is slow than the disconnect of sessions belonging to
 #       the current test might happen when the successing test gets executed.
@@ -79,7 +88,11 @@
 #    backup.test, grant3.test
 #
 #
-# Created: 2009-01-14 mleich
+# Created:
+#    2009-01-14 mleich
+# Modified:
+#    2009-02-24 mleich Fix Bug#43114 wait_until_count_sessions too restrictive,
+#                                    random PB failures
 #
 
 let $wait_counter= 100;
@@ -93,7 +106,7 @@ let $wait_timeout= 0;
 while ($wait_counter)
 {
    let $current_sessions= query_get_value(SHOW STATUS LIKE 'Threads_connected', Value, 1);
-   let $success= `SELECT $current_sessions = $count_sessions`;
+   let $success= `SELECT $current_sessions <= $count_sessions`;
    if ($success)
    {
       let $wait_counter= 0;
@@ -107,7 +120,7 @@ while ($wait_counter)
 if (!$success)
 {
    --echo # Timeout in wait_until_count_sessions.inc
-   --echo # Number of sessions   expected: $count_sessions   found: $current_sessions
+   --echo # Number of sessions   expected: <= $count_sessions   found: $current_sessions
    SHOW PROCESSLIST;
 }
 

=== modified file 'mysql-test/r/consistent_snapshot.result'
--- a/mysql-test/r/consistent_snapshot.result	2004-11-10 16:56:45 +0000
+++ b/mysql-test/r/consistent_snapshot.result	2009-03-03 20:34:18 +0000
@@ -1,15 +1,23 @@
-drop table if exists t1;
-create table t1 (a int) engine=innodb;
-start transaction with consistent snapshot;
-insert into t1 values(1);
-select * from t1;
+DROP TABLE IF EXISTS t1;
+# Establish connection con1 (user=root)
+# Establish connection con2 (user=root)
+# Switch to connection con1
+CREATE TABLE t1 (a INT) ENGINE=innodb;
+START TRANSACTION WITH CONSISTENT SNAPSHOT;
+# Switch to connection con2
+INSERT INTO t1 VALUES(1);
+# Switch to connection con1
+SELECT * FROM t1;
 a
-commit;
-delete from t1;
-start transaction;
-insert into t1 values(1);
-select * from t1;
+COMMIT;
+DELETE FROM t1;
+START TRANSACTION;
+# Switch to connection con2
+INSERT INTO t1 VALUES(1);
+# Switch to connection con1
+SELECT * FROM t1;
 a
 1
-commit;
-drop table t1;
+COMMIT;
+# Switch to connection default + close connections con1 and con2
+DROP TABLE t1;

=== modified file 'mysql-test/r/ctype_collate.result'
--- a/mysql-test/r/ctype_collate.result	2007-09-20 08:54:46 +0000
+++ b/mysql-test/r/ctype_collate.result	2009-03-19 08:20:28 +0000
@@ -611,3 +611,22 @@ check table t1 extended;
 Table	Op	Msg_type	Msg_text
 test.t1	check	status	OK
 drop table t1;
+select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);
+least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci)
+a
+create table t1
+select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci) as f1;
+show create table t1;
+Table	Create Table
+t1	CREATE TABLE `t1` (
+  `f1` varchar(1) character set latin5 NOT NULL default ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+drop table t1;
+select case _latin1'a' when _latin2'b' then 1 when _latin5'c' collate
+latin5_turkish_ci then 2 else 3 end;
+case _latin1'a' when _latin2'b' then 1 when _latin5'c' collate
+latin5_turkish_ci then 2 else 3 end
+3
+select concat(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);
+concat(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci)
+abc

=== modified file 'mysql-test/r/dirty_close.result'
--- a/mysql-test/r/dirty_close.result	2002-02-13 20:37:19 +0000
+++ b/mysql-test/r/dirty_close.result	2009-03-03 20:34:18 +0000
@@ -1,9 +1,9 @@
-drop table if exists t1;
-create table t1 (n int);
-insert into t1 values (1),(2),(3);
-select * from t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (n INT);
+INSERT INTO t1 VALUES (1),(2),(3);
+SELECT * FROM t1;
 n
 1
 2
 3
-drop table t1;
+DROP TABLE t1;

=== modified file 'mysql-test/r/explain.result'
--- a/mysql-test/r/explain.result	2008-12-09 18:35:02 +0000
+++ b/mysql-test/r/explain.result	2009-03-11 12:10:44 +0000
@@ -155,3 +155,7 @@ id	select_type	table	type	possible_keys	
 Warnings:
 Note	1003	select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1`
 DROP TABLE t1,t2;
+CREATE TABLE t1 (a INT PRIMARY KEY);
+EXPLAIN EXTENDED SELECT COUNT(a) FROM t1 USE KEY(a);
+ERROR HY000: Key 'a' doesn't exist in table 't1'
+DROP TABLE t1;

=== modified file 'mysql-test/r/federated.result'
--- a/mysql-test/r/federated.result	2008-11-14 07:42:29 +0000
+++ b/mysql-test/r/federated.result	2009-03-19 06:06:37 +0000
@@ -2094,6 +2094,26 @@ SELECT t1.a FROM t1, t1 as t2 WHERE t2.b
 a
 DROP TABLE t1;
 DROP TABLE t1;
+#
+# BUG#21360 - mysqldump error on federated tables
+#
+#Switch to Connection Slave
+CREATE TABLE t1(id VARCHAR(20) NOT NULL, PRIMARY KEY(id));
+INSERT INTO  t1 VALUES ('text1'),('text2'),('text3'),('text4');
+#Switch to Connection Master
+CREATE TABLE t1(id VARCHAR(20) NOT NULL, PRIMARY KEY(id)) ENGINE=FEDERATED 
+CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/test/t1';
+# Dump table t1 using mysqldump tool
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `t1` (
+  `id` varchar(20) NOT NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION='mysql://root@stripped:SLAVE_PORT/test/t1';
+/*!40101 SET character_set_client = @saved_cs_client */;
+DROP TABLE t1;
+#Switch to Connection Slave
+DROP TABLE t1;
 End of 5.0 tests
 SET @@GLOBAL.CONCURRENT_INSERT= @OLD_MASTER_CONCURRENT_INSERT;
 SET @@GLOBAL.CONCURRENT_INSERT= @OLD_SLAVE_CONCURRENT_INSERT;

=== modified file 'mysql-test/r/flush_block_commit.result'
--- a/mysql-test/r/flush_block_commit.result	2006-12-08 11:22:46 +0000
+++ b/mysql-test/r/flush_block_commit.result	2009-03-03 20:34:18 +0000
@@ -1,39 +1,57 @@
-drop table if exists t1;
-create table t1 (a int) engine=innodb;
-begin;
-insert into t1 values(1);
-flush tables with read lock;
-select * from t1;
+# Establish connection con1 (user=root)
+# Establish connection con2 (user=root)
+# Establish connection con3 (user=root)
+# Switch to connection con1
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (a INT) ENGINE=innodb;
+BEGIN;
+INSERT INTO t1 VALUES(1);
+# Switch to connection con2
+FLUSH TABLES WITH READ LOCK;
+SELECT * FROM t1;
 a
-commit;
-select * from t1;
+# Switch to connection con1
+COMMIT;
+# Switch to connection con2
+SELECT * FROM t1;
 a
-unlock tables;
-begin;
-select * from t1 for update;
+UNLOCK TABLES;
+# Switch to connection con1
+# Switch to connection con1
+BEGIN;
+SELECT * FROM t1 FOR UPDATE;
 a
 1
-begin;
-select * from t1 for update;
-flush tables with read lock;
-commit;
+# Switch to connection con2
+BEGIN;
+SELECT * FROM t1 FOR UPDATE;
+# Switch to connection con3
+FLUSH TABLES WITH READ LOCK;
+# Switch to connection con1
+COMMIT;
+# Switch to connection con2
 a
 1
-unlock tables;
-commit;
-begin;
-insert into t1 values(10);
-flush tables with read lock;
-commit;
-unlock tables;
-flush tables with read lock;
-unlock tables;
-begin;
-select * from t1;
+# Switch to connection con3
+UNLOCK TABLES;
+# Switch to connection con2
+COMMIT;
+# Switch to connection con1
+BEGIN;
+INSERT INTO t1 VALUES(10);
+FLUSH TABLES WITH READ LOCK;
+COMMIT;
+UNLOCK TABLES;
+# Switch to connection con2
+FLUSH TABLES WITH READ LOCK;
+UNLOCK TABLES;
+BEGIN;
+SELECT * FROM t1;
 a
 1
 10
-show create database test;
+SHOW CREATE DATABASE test;
 Database	Create Database
 test	CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */
-drop table t1;
+DROP TABLE t1;
+# Switch to connection default and close connections con1, con2, con3

=== modified file 'mysql-test/r/flush_block_commit_notembedded.result'
--- a/mysql-test/r/flush_block_commit_notembedded.result	2007-01-02 23:35:57 +0000
+++ b/mysql-test/r/flush_block_commit_notembedded.result	2009-03-03 20:34:18 +0000
@@ -1,15 +1,23 @@
-create table t1 (a int) engine=innodb;
-reset master;
-set autocommit=0;
-insert t1 values (1);
-flush tables with read lock;
-show master status;
+# Establish connection con1 (user=root)
+# Establish connection con2 (user=root)
+# Switch to connection con1
+CREATE TABLE t1 (a INT) ENGINE=innodb;
+RESET MASTER;
+SET AUTOCOMMIT=0;
+INSERT t1 VALUES (1);
+# Switch to connection con2
+FLUSH TABLES WITH READ LOCK;
+SHOW MASTER STATUS;
 File	Position	Binlog_Do_DB	Binlog_Ignore_DB
 master-bin.000001	98		
-commit;
-show master status;
+# Switch to connection con1
+COMMIT;
+# Switch to connection con2
+SHOW MASTER STATUS;
 File	Position	Binlog_Do_DB	Binlog_Ignore_DB
 master-bin.000001	98		
-unlock tables;
-drop table t1;
-set autocommit=1;
+UNLOCK TABLES;
+# Switch to connection con1
+DROP TABLE t1;
+SET AUTOCOMMIT=1;
+# Switch to connection default and close connections con1 and con2

=== modified file 'mysql-test/r/flush_read_lock_kill.result'
--- a/mysql-test/r/flush_read_lock_kill.result	2006-10-04 11:09:37 +0000
+++ b/mysql-test/r/flush_read_lock_kill.result	2009-03-03 20:34:18 +0000
@@ -1,9 +1,12 @@
-drop table if exists t1;
-create table t1 (kill_id int);
-insert into t1 values(connection_id());
-flush tables with read lock;
-select ((@id := kill_id) - kill_id) from t1;
+SET @old_concurrent_insert= @@global.concurrent_insert;
+SET @@global.concurrent_insert= 0;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (kill_id INT);
+INSERT INTO t1 VALUES(connection_id());
+FLUSH TABLES WITH READ LOCK;
+SELECT ((@id := kill_id) - kill_id) FROM t1;
 ((@id := kill_id) - kill_id)
 0
-kill connection @id;
-drop table t1;
+KILL CONNECTION @id;
+DROP TABLE t1;
+SET @@global.concurrent_insert= @old_concurrent_insert;

=== modified file 'mysql-test/r/lock_multi.result'
--- a/mysql-test/r/lock_multi.result	2008-10-09 15:24:31 +0000
+++ b/mysql-test/r/lock_multi.result	2009-03-23 20:19:41 +0000
@@ -51,10 +51,10 @@ ERROR HY000: Can't execute the query bec
 UNLOCK TABLES;
 DROP DATABASE mysqltest_1;
 ERROR HY000: Can't drop database 'mysqltest_1'; database doesn't exist
-use mysql;
+USE mysql;
 LOCK TABLES columns_priv WRITE, db WRITE, host WRITE, user WRITE;
 FLUSH TABLES;
-use mysql;
+USE mysql;
 SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1;
 OPTIMIZE TABLES columns_priv, db, host, user;
 Table	Op	Msg_type	Msg_text
@@ -65,7 +65,7 @@ mysql.user	optimize	status	OK
 UNLOCK TABLES;
 Select_priv
 N
-use test;
+USE test;
 use test;
 CREATE TABLE t1 (c1 int);
 LOCK TABLE t1 WRITE;
@@ -93,7 +93,7 @@ create table t1 (a int);
 connection: locker
 lock tables t1 read;
 connection: writer
-create table t2 like t1;;
+create table t2 like t1;
 connection: default
 kill query
 ERROR 70100: Query execution was interrupted

=== added file 'mysql-test/r/lock_multi_bug38499.result'
--- a/mysql-test/r/lock_multi_bug38499.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/lock_multi_bug38499.result	2009-03-23 14:22:31 +0000
@@ -0,0 +1,19 @@
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1( a INT, b INT );
+INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4);
+# 1. test regular tables
+# 1.1. test altering of columns that multiupdate doesn't use
+# 1.1.1. normal mode
+# 1.1.2. PS mode
+# 1.2. test altering of columns that multiupdate uses
+# 1.2.1. normal mode
+# 1.2.2. PS mode
+ALTER TABLE t1 ADD COLUMN a INT;
+# 2. test UNIONs
+# 2.1. test altering of columns that multiupdate doesn't use
+# 2.1.1. normal mode
+# 2.1.2. PS mode
+# 2.2. test altering of columns that multiupdate uses
+# 2.2.1. normal mode
+# 2.2.2. PS mode
+DROP TABLE t1;

=== added file 'mysql-test/r/lock_multi_bug38691.result'
--- a/mysql-test/r/lock_multi_bug38691.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/lock_multi_bug38691.result	2009-03-23 14:22:31 +0000
@@ -0,0 +1,17 @@
+DROP TABLE IF EXISTS t1,t2,t3;
+CREATE TABLE t1 (
+a int(11) unsigned default NULL,
+b varchar(255) default NULL,
+UNIQUE KEY a (a),
+KEY b (b)
+);
+INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
+CREATE TABLE t2 SELECT * FROM t1;
+CREATE TABLE t3 SELECT * FROM t1;
+# test altering of columns that multiupdate doesn't use
+# normal mode
+# PS mode
+# test altering of columns that multiupdate uses
+# normal mode
+# PS mode
+DROP TABLE t1, t2, t3;

=== modified file 'mysql-test/r/mysql.result'
--- a/mysql-test/r/mysql.result	2009-02-24 13:06:28 +0000
+++ b/mysql-test/r/mysql.result	2009-03-19 10:02:23 +0000
@@ -192,4 +192,13 @@ delimiter
 1
 1
 1
+set @old_max_allowed_packet = @@global.max_allowed_packet;
+set @@global.max_allowed_packet = 2 * 1024 * 1024 + 1024;
+CREATE TABLE t1(data LONGBLOB);
+INSERT INTO t1 SELECT REPEAT('1', 2*1024*1024);
+SELECT LENGTH(data) FROM t1;
+LENGTH(data)
+2097152
+DROP TABLE t1;
+set @@global.max_allowed_packet = @old_max_allowed_packet;
 End of 5.0 tests

=== modified file 'mysql-test/r/mysqlbinlog.result'
--- a/mysql-test/r/mysqlbinlog.result	2009-02-24 14:35:45 +0000
+++ b/mysql-test/r/mysqlbinlog.result	2009-03-05 13:35:03 +0000
@@ -349,9 +349,9 @@ DELIMITER ;
 ROLLBACK /* added by mysqlbinlog */;
 /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
 CREATE TABLE t1 (c1 CHAR(10));
-flush logs;
+FLUSH LOGS;
 INSERT INTO t1 VALUES ('0123456789');
-flush logs;
+FLUSH LOGS;
 DROP TABLE t1;
 We expect this value to be 1
 The bug being tested was that 'Query' lines were not preceded by '#'
@@ -361,23 +361,23 @@ SELECT COUNT(*) AS `BUG#28293_expect_1` 
 BUG#28293_expect_1
 1
 DROP TABLE patch;
-flush logs;
-create table t1(a int);
-insert into t1 values(connection_id());
-flush logs;
-drop table t1;
+FLUSH LOGS;
+CREATE TABLE t1(a INT);
+INSERT INTO t1 VALUES(connection_id());
+FLUSH LOGS;
+DROP TABLE t1;
 1
-drop table t1;
+DROP TABLE t1;
 shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql
-set @@global.server_id= 4294967295;
-reset master;
-flush logs;
-select
-(@a:=load_file("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog"))
-is not null;
-(@a:=load_file("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog"))
-is not null
+SET @@global.server_id= 4294967295;
+RESET MASTER;
+FLUSH LOGS;
+SELECT
+(@a:=LOAD_FILE("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog"))
+IS NOT NULL;
+(@a:=LOAD_FILE("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog"))
+IS NOT NULL
 1
 *** Unsigned server_id 4294967295 is found: 1 ***
-set @@global.server_id= 1;
+SET @@global.server_id= 1;
 End of 5.0 tests

=== modified file 'mysql-test/r/mysqldump.result'
--- a/mysql-test/r/mysqldump.result	2009-02-25 11:44:50 +0000
+++ b/mysql-test/r/mysqldump.result	2009-03-10 16:53:43 +0000
@@ -3559,6 +3559,60 @@ DROP TABLE t1,t2;
 -- Dump completed on DATE
 SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
 #
+# Bug #42635: mysqldump includes views that were excluded using 
+#   the --ignore-table option
+#
+create database db42635;
+use db42635;
+create table t1 (id int);
+create view db42635.v1 (c) as select * from db42635.t1;
+create view db42635.v2 (c) as select * from db42635.t1;
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+DROP TABLE IF EXISTS `t1`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `t1` (
+  `id` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+LOCK TABLES `t1` WRITE;
+/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
+/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
+UNLOCK TABLES;
+DROP TABLE IF EXISTS `v2`;
+/*!50001 DROP VIEW IF EXISTS `v2`*/;
+/*!50001 CREATE TABLE `v2` (
+  `c` int(11)
+) ENGINE=MyISAM */;
+/*!50001 DROP TABLE `v2`*/;
+/*!50001 DROP VIEW IF EXISTS `v2`*/;
+/*!50001 CREATE ALGORITHM=UNDEFINED */
+/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
+/*!50001 VIEW `v2` AS select `t1`.`id` AS `c` from `t1` */;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+use test;
+drop database db42635;
+#
 # Bug#33550 mysqldump 4.0 compatibility broken
 #
 SET NAMES utf8;

=== modified file 'mysql-test/r/ndb_restore.result'
--- a/mysql-test/r/ndb_restore.result	2008-01-22 13:18:47 +0000
+++ b/mysql-test/r/ndb_restore.result	2009-03-15 16:25:14 +0000
@@ -129,9 +129,11 @@ create table t7 engine=myisam as select 
 create table t8 engine=myisam as select * from t8_c;
 create table t9 engine=myisam as select * from t9_c;
 create table t10 engine=myisam as select * from t10_c;
-CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
+CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
+(id INT, backup_id INT) ENGINE = MEMORY;
 DELETE FROM test.backup_info;
-LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat'
+INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
 SELECT @the_backup_id:=backup_id FROM test.backup_info;
 @the_backup_id:=backup_id
 <the_backup_id>

=== modified file 'mysql-test/r/ndb_restore_print.result'
--- a/mysql-test/r/ndb_restore_print.result	2007-03-08 08:37:53 +0000
+++ b/mysql-test/r/ndb_restore_print.result	2009-03-15 16:25:14 +0000
@@ -227,9 +227,11 @@ hex(h3)	NULL
 hex(i1)	NULL
 hex(i2)	NULL
 hex(i3)	NULL
-CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
+CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
+(id INT, backup_id INT) ENGINE = MEMORY;
 DELETE FROM test.backup_info;
-LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat'
+INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
 SELECT @the_backup_id:=backup_id FROM test.backup_info;
 @the_backup_id:=backup_id
 <the_backup_id>
@@ -261,9 +263,11 @@ create table t4 (pk int key, a int) engi
 insert into t2 values (1,11),(2,12),(3,13),(4,14),(5,15);
 insert into t3 values (1,21),(2,22),(3,23),(4,24),(5,25);
 insert into t4 values (1,31),(2,32),(3,33),(4,34),(5,35);
-CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
+CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
+(id INT, backup_id INT) ENGINE = MEMORY;
 DELETE FROM test.backup_info;
-LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat'
+INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
 SELECT @the_backup_id:=backup_id FROM test.backup_info;
 @the_backup_id:=backup_id
 <the_backup_id>
@@ -305,9 +309,11 @@ create table t1
 insert into t1 values(1, 8388607, 16777215);
 insert into t1 values(2, -8388608, 0);
 insert into t1 values(3, -1, 1);
-CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
+CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
+(id INT, backup_id INT) ENGINE = MEMORY;
 DELETE FROM test.backup_info;
-LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat'
+INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
 SELECT @the_backup_id:=backup_id FROM test.backup_info;
 @the_backup_id:=backup_id
 <the_backup_id>

=== modified file 'mysql-test/r/read_only.result'
--- a/mysql-test/r/read_only.result	2007-12-10 15:16:21 +0000
+++ b/mysql-test/r/read_only.result	2009-03-03 20:34:18 +0000
@@ -47,7 +47,7 @@ Note	1051	Unknown table 'ttt'
 drop table t1,t2;
 drop user test@localhost;
 #
-# Bug #27440 read_only allows create and drop database
+# Bug#27440 read_only allows create and drop database
 #
 drop database if exists mysqltest_db1;
 drop database if exists mysqltest_db2;

=== modified file 'mysql-test/r/show_check.result'
--- a/mysql-test/r/show_check.result	2009-03-02 10:03:13 +0000
+++ b/mysql-test/r/show_check.result	2009-03-05 13:35:03 +0000
@@ -507,9 +507,9 @@ ERROR 42000: Access denied for user 'mys
 drop table mysqltest.t1;
 drop database mysqltest;
 set names binary;
-delete from mysql.user 
+delete from mysql.user
 where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
-delete from mysql.db   
+delete from mysql.db
 where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
 flush privileges;
 CREATE TABLE t1 (i int, KEY (i)) ENGINE=MEMORY;
@@ -916,7 +916,7 @@ def			TRIGGERS	DEFINER	Definer	252	58981
 Trigger	Event	Table	Statement	Timing	Created	sql_mode	Definer
 t1_bi	INSERT	t1	SET @a = 1	BEFORE	NULL		root@localhost
 ----------------------------------------------------------------
-SELECT 
+SELECT
 TRIGGER_CATALOG,
 TRIGGER_SCHEMA,
 TRIGGER_NAME,

=== modified file 'mysql-test/r/skip_name_resolve.result'
--- a/mysql-test/r/skip_name_resolve.result	2005-12-14 12:18:24 +0000
+++ b/mysql-test/r/skip_name_resolve.result	2009-03-03 20:34:18 +0000
@@ -5,10 +5,10 @@ GRANT USAGE ON *.* TO 'mysqltest_1'@'127
 GRANT ALL PRIVILEGES ON `test`.* TO 'mysqltest_1'@'127.0.0.1/255.255.255.255'
 REVOKE ALL ON test.* FROM mysqltest_1@'127.0.0.1/255.255.255.255';
 DROP USER mysqltest_1@'127.0.0.1/255.255.255.255';
-select user();
-user()
+SELECT USER();
+USER()
 #
-show processlist;
+SHOW PROCESSLIST;
 Id	User	Host	db	Command	Time	State	Info
 <id>	root	<host>	test	<command>	<time>	<state>	<info>

> <id>	root	<host>	test	<command>	<time>	<state>	<info>

=== modified file 'mysql-test/r/sp-security.result'
--- a/mysql-test/r/sp-security.result	2007-03-23 11:12:11 +0000
+++ b/mysql-test/r/sp-security.result	2009-03-03 20:34:18 +0000
@@ -332,7 +332,7 @@ ERROR 42000: SELECT command denied to us
 drop user user_bug14533@localhost;
 drop database db_bug14533;
 CREATE DATABASE db_bug7787;
-use db_bug7787;
+USE db_bug7787;
 CREATE PROCEDURE p1()
 SHOW INNODB STATUS;
 Warnings:
@@ -352,12 +352,12 @@ GRANT SUPER ON *.* TO mysqltest_2@localh
 GRANT ALL PRIVILEGES ON mysqltest.* TO mysqltest_2@localhost;
 
 ---> connection: mysqltest_2_con
-use mysqltest;
+USE mysqltest;
 CREATE PROCEDURE wl2897_p1() SELECT 1;
 CREATE FUNCTION wl2897_f1() RETURNS INT RETURN 1;
 
 ---> connection: mysqltest_1_con
-use mysqltest;
+USE mysqltest;
 CREATE DEFINER=root@localhost PROCEDURE wl2897_p2() SELECT 2;
 ERROR 42000: Access denied; you need the SUPER privilege for this operation
 CREATE DEFINER=root@localhost FUNCTION wl2897_f2() RETURNS INT RETURN 2;
@@ -373,7 +373,7 @@ Warnings:
 Note	1449	There is no 'a @ b @ c'@'localhost' registered
 
 ---> connection: con1root
-use mysqltest;
+USE mysqltest;
 SHOW CREATE PROCEDURE wl2897_p1;
 Procedure	sql_mode	Create Procedure
 wl2897_p1		CREATE DEFINER=`mysqltest_2`@`localhost` PROCEDURE `wl2897_p1`()
@@ -403,7 +403,7 @@ CREATE USER mysqltest_2@localhost;
 GRANT ALL PRIVILEGES ON mysqltest.* TO mysqltest_2@localhost;
 
 ---> connection: mysqltest_1_con
-use mysqltest;
+USE mysqltest;
 CREATE PROCEDURE bug13198_p1()
 SELECT 1;
 CREATE FUNCTION bug13198_f1() RETURNS INT
@@ -416,7 +416,7 @@ bug13198_f1()
 1
 
 ---> connection: mysqltest_2_con
-use mysqltest;
+USE mysqltest;
 CALL bug13198_p1();
 1
 1
@@ -428,7 +428,7 @@ bug13198_f1()
 DROP USER mysqltest_1@localhost;
 
 ---> connection: mysqltest_2_con
-use mysqltest;
+USE mysqltest;
 CALL bug13198_p1();
 ERROR HY000: There is no 'mysqltest_1'@'localhost' registered
 SELECT bug13198_f1();
@@ -445,7 +445,7 @@ Host	User	Password
 localhost	user19857	*82DC221D557298F6CE9961037DB1C90604792F5C
 
 ---> connection: mysqltest_2_con
-use test;
+USE test;
 CREATE PROCEDURE sp19857() DETERMINISTIC
 BEGIN
 DECLARE a INT;

=== modified file 'mysql-test/r/union.result'
--- a/mysql-test/r/union.result	2007-12-19 14:59:05 +0000
+++ b/mysql-test/r/union.result	2009-03-18 14:07:13 +0000
@@ -1447,12 +1447,12 @@ SELECT a FROM t1
 UNION
 SELECT a FROM t1
 ) alias;
-SELECT a INTO OUTFILE 'union.out.file' FROM (
+SELECT a INTO OUTFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM (
 SELECT a FROM t1
 UNION
 SELECT a FROM t1 WHERE 0
 ) alias;
-SELECT a INTO DUMPFILE 'union.out.file2' FROM (
+SELECT a INTO DUMPFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM (
 SELECT a FROM t1
 UNION
 SELECT a FROM t1 WHERE 0
@@ -1465,21 +1465,21 @@ SELECT a INTO @v FROM t1
 SELECT a FROM (
 SELECT a FROM t1
 UNION
-SELECT a INTO OUTFILE 'union.out.file3' FROM t1
+SELECT a INTO OUTFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1
 ) alias;
 SELECT a FROM (
 SELECT a FROM t1
 UNION
-SELECT a INTO DUMPFILE 'union.out.file4' FROM t1
+SELECT a INTO DUMPFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1
 ) alias;
 SELECT a FROM t1 UNION SELECT a INTO @v FROM t1;
-SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file5' FROM t1;
-SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file6' FROM t1;
+SELECT a FROM t1 UNION SELECT a INTO OUTFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1;
+SELECT a FROM t1 UNION SELECT a INTO DUMPFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1;
 SELECT a INTO @v FROM t1 UNION SELECT a FROM t1;
 ERROR HY000: Incorrect usage of UNION and INTO
-SELECT a INTO OUTFILE 'union.out.file7' FROM t1 UNION SELECT a FROM t1;
+SELECT a INTO OUTFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1 UNION SELECT a FROM t1;
 ERROR HY000: Incorrect usage of UNION and INTO
-SELECT a INTO DUMPFILE 'union.out.file8' FROM t1 UNION SELECT a FROM t1;
+SELECT a INTO DUMPFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1 UNION SELECT a FROM t1;
 ERROR HY000: Incorrect usage of UNION and INTO
 DROP TABLE t1;
 CREATE TABLE t1 (a INT);

=== modified file 'mysql-test/r/view.result'
--- a/mysql-test/r/view.result	2008-11-28 16:13:12 +0000
+++ b/mysql-test/r/view.result	2009-03-03 20:34:18 +0000
@@ -1667,9 +1667,9 @@ INSERT INTO t2 VALUES (4,3,'n');
 INSERT INTO t2 VALUES (6,1,'n');
 INSERT INTO t2 VALUES (8,1,'y');
 CREATE VIEW v1 AS SELECT * FROM t1;
-SELECT a.col1,a.col2,b.col2,b.col3 
+SELECT a.col1,a.col2,b.col2,b.col3
 FROM t1 a LEFT JOIN t2 b ON a.col1=b.col1
-WHERE b.col2 IS NULL OR 
+WHERE b.col2 IS NULL OR
 b.col2=(SELECT MAX(col2) FROM t2 b WHERE b.col1=a.col1);
 col1	col2	col2	col3
 1	trudy	2	y
@@ -1681,9 +1681,9 @@ col1	col2	col2	col3
 7	carsten	NULL	NULL
 8	ranger	1	y
 10	matt	NULL	NULL
-SELECT a.col1,a.col2,b.col2,b.col3 
+SELECT a.col1,a.col2,b.col2,b.col3
 FROM v1 a LEFT JOIN t2 b ON a.col1=b.col1
-WHERE b.col2 IS NULL OR 
+WHERE b.col2 IS NULL OR
 b.col2=(SELECT MAX(col2) FROM t2 b WHERE b.col1=a.col1);
 col1	col2	col2	col3
 1	trudy	2	y
@@ -1737,7 +1737,7 @@ A	A
 2	2
 3	3
 create table t3 as select a a,a b from t2;
-create view v2 as select * from t3 where 
+create view v2 as select * from t3 where
 a in (select * from t1) or b in (select * from t2);
 select * from v2 A, v2 B where A.a = B.b;
 a	b	a	b
@@ -1993,7 +1993,7 @@ dkjhgd
 drop view v1;
 create table t1 (f59 int, f60 int, f61 int);
 insert into t1 values (19,41,32);
-create view v1 as select f59, f60 from t1 where f59 in  
+create view v1 as select f59, f60 from t1 where f59 in
 (select f59 from t1);
 update v1 set f60=2345;
 ERROR HY000: The target table v1 of the UPDATE is not updatable
@@ -2120,7 +2120,7 @@ pid int NOT NULL
 INSERT INTO t1 VALUES(1,'a','b'), (2,'c','d');
 INSERT INTO t2 values (1,1), (2,1), (2,2);
 CREATE VIEW v1 AS SELECT t1.*,t2.pid FROM t1,t2 WHERE t1.aid = t2.aid;
-SELECT pid,GROUP_CONCAT(CONCAT(fn,' ',ln) ORDER BY 1) FROM t1,t2 
+SELECT pid,GROUP_CONCAT(CONCAT(fn,' ',ln) ORDER BY 1) FROM t1,t2
 WHERE t1.aid = t2.aid GROUP BY pid;
 pid	GROUP_CONCAT(CONCAT(fn,' ',ln) ORDER BY 1)
 1	a b,c d
@@ -2222,7 +2222,7 @@ group_name varchar(32) NOT NULL
 ) engine = InnoDB;
 create table t2 (
 r_object_id char(16) NOT NULL,
-i_position int(11) NOT NULL, 
+i_position int(11) NOT NULL,
 users_names varchar(32) default NULL
 ) Engine = InnoDB;
 create view v1 as select r_object_id, group_name from t1;
@@ -2235,7 +2235,7 @@ insert into t1 values('120001a080000542'
 insert into t2 values('120001a080000542',-1, 'guser01');
 insert into t2 values('120001a080000542',-2, 'guser02');
 select v1.r_object_id, v2.users_names from v1, v2
-where (v1.group_name='tstgroup1') and v2.r_object_id=v1.r_object_id 
+where (v1.group_name='tstgroup1') and v2.r_object_id=v1.r_object_id
 order by users_names;
 r_object_id	users_names
 120001a080000542	guser01
@@ -2385,8 +2385,8 @@ create table t4 (x int, y int, z int);
 create view v1 as
 select t1.x
 from (
-(t1 join t2 on ((t1.y = t2.y))) 
-join 
+(t1 join t2 on ((t1.y = t2.y)))
+join
 (t3 left join t4 on (t3.y = t4.y) and (t3.z = t4.z))
 );
 prepare stmt1 from "select count(*) from v1 where x = ?";
@@ -2562,12 +2562,12 @@ Warnings:
 Warning	1052	Column 'x' in group statement is ambiguous
 DROP VIEW v1;
 DROP TABLE t1;
-drop table if exists t1; 
-drop view if exists v1; 
-create table t1 (id int); 
-create view v1 as select * from t1; 
-drop table t1; 
-show create view v1; 
+drop table if exists t1;
+drop view if exists v1;
+create table t1 (id int);
+create view v1 as select * from t1;
+drop table t1;
+show create view v1;
 drop view v1;
 //
 View	Create View
@@ -2614,7 +2614,7 @@ DROP VIEW v2;
 DROP TABLE t1, t2;
 CREATE TABLE t1 (id int NOT NULL PRIMARY KEY,
 td date DEFAULT NULL, KEY idx(td));
-INSERT INTO t1 VALUES 
+INSERT INTO t1 VALUES
 (1, '2005-01-01'), (2, '2005-01-02'), (3, '2005-01-02'),
 (4, '2005-01-03'), (5, '2005-01-04'), (6, '2005-01-05'),
 (7, '2005-01-05'), (8, '2005-01-05'), (9, '2005-01-06');
@@ -2978,10 +2978,10 @@ drop view v1;
 drop table t1;
 CREATE TABLE t1(pk int PRIMARY KEY);
 CREATE TABLE t2(pk int PRIMARY KEY, fk int, ver int, org int);
-CREATE ALGORITHM=MERGE VIEW v1 AS 
+CREATE ALGORITHM=MERGE VIEW v1 AS
 SELECT t1.*
-FROM t1 JOIN t2 
-ON t2.fk = t1.pk AND 
+FROM t1 JOIN t2
+ON t2.fk = t1.pk AND
 t2.ver = (SELECT MAX(t.ver) FROM t2 t WHERE t.org = t2.org);
 SHOW WARNINGS;
 Level	Code	Message
@@ -3311,7 +3311,7 @@ name char(10) NOT NULL
 INSERT INTO t1 (lid, name) VALUES
 (1, 'YES'), (2, 'NO');
 CREATE TABLE t2 (
-id int NOT NULL PRIMARY KEY, 
+id int NOT NULL PRIMARY KEY,
 gid int NOT NULL,
 lid int NOT NULL,
 dt date
@@ -3410,8 +3410,8 @@ CREATE TABLE t1 (id int);
 CREATE TABLE t2 (id int, c int DEFAULT 0);
 INSERT INTO t1 (id) VALUES (1);
 INSERT INTO t2 (id) VALUES (1);
-CREATE VIEW v1 AS 
-SELECT t2.c FROM t1, t2 
+CREATE VIEW v1 AS
+SELECT t2.c FROM t1, t2
 WHERE t1.id=t2.id AND 1 IN (SELECT id FROM t1) WITH CHECK OPTION;
 UPDATE v1 SET c=1;
 DROP VIEW v1;
@@ -3519,7 +3519,7 @@ role_name varchar(100) default NULL,
 app_name varchar(40) NOT NULL,
 INDEX idx_app_name(app_name)
 );
-CREATE VIEW v1 AS 
+CREATE VIEW v1 AS
 SELECT profile.person_id AS person_id
 FROM t1 profile, t2 userrole, t3 role
 WHERE userrole.person_id = profile.person_id AND
@@ -3531,7 +3531,7 @@ INSERT INTO  t1 VALUES
 (-717462680,'ENTS Ta','0'), (-904346964,'ndard SQL\n','0');
 INSERT INTO t2 VALUES
 (1,3,6),(2,4,7),(3,5,8),(4,6,9),(5,1,6),(6,1,7),(7,1,8),(8,1,9),(9,1,10);
-INSERT INTO t3 VALUES 
+INSERT INTO t3 VALUES
 (1,'NUCANS_APP_USER','NUCANSAPP'),(2,'NUCANS_TRGAPP_USER','NUCANSAPP'),
 (3,'IA_INTAKE_COORDINATOR','IACANS'),(4,'IA_SCREENER','IACANS'),
 (5,'IA_SUPERVISOR','IACANS'),(6,'IA_READONLY','IACANS'),
@@ -3557,7 +3557,7 @@ i
 2
 3
 4
-select table_name, is_updatable from information_schema.views 
+select table_name, is_updatable from information_schema.views
 where table_name = 'v1';
 table_name	is_updatable
 v1	NO
@@ -3603,8 +3603,8 @@ DROP VIEW v2;
 DROP VIEW v3;
 DROP TABLE t1;
 #
-# Bug#29477: Not all fields of the target table were checked to have
-#            a default value when inserting into a view.
+# Bug#29477 Not all fields of the target table were checked to have
+#           a default value when inserting into a view.
 #
 create table t1(f1 int, f2 int not null);
 create view v1 as select f1 from t1;
@@ -3621,7 +3621,7 @@ drop table t1;
 create table t1 (a int, key(a));
 create table t2 (c int);
 create view v1 as select a b from t1;
-create view v2 as select 1 a from t2, v1 where c in 
+create view v2 as select 1 a from t2, v1 where c in
 (select 1 from t1 where b = a);
 insert into t1 values (1), (1);
 insert into t2 values (1), (1);
@@ -3643,7 +3643,7 @@ MAX(a)	COUNT(DISTINCT a)
 DROP VIEW v1;
 DROP TABLE t1;
 # -----------------------------------------------------------------
-# -- Bug#34337: Server crash when Altering a view using a table name.
+# -- Bug#34337 Server crash when Altering a view using a table name.
 # -----------------------------------------------------------------
 
 DROP TABLE IF EXISTS t1;
@@ -3660,8 +3660,8 @@ DROP TABLE t1;
 # -- End of test case for Bug#34337.
 
 # -----------------------------------------------------------------
-# -- Bug#35193: VIEW query is rewritten without "FROM DUAL",
-# --            causing syntax error
+# -- Bug#35193 VIEW query is rewritten without "FROM DUAL",
+# --           causing syntax error
 # -----------------------------------------------------------------
 
 CREATE VIEW v1 AS SELECT 1 FROM DUAL WHERE 1;

=== modified file 'mysql-test/r/view_grant.result'
--- a/mysql-test/r/view_grant.result	2009-02-26 17:00:44 +0000
+++ b/mysql-test/r/view_grant.result	2009-03-05 13:35:03 +0000
@@ -644,7 +644,7 @@ CREATE DATABASE test2;
 CREATE TABLE test1.t0 (a VARCHAR(20));
 CREATE TABLE test2.t1 (a VARCHAR(20));
 CREATE VIEW  test2.t3 AS SELECT * FROM test1.t0;
-CREATE OR REPLACE VIEW test.v1 AS 
+CREATE OR REPLACE VIEW test.v1 AS
 SELECT ta.a AS col1, tb.a AS col2 FROM test2.t3 ta, test2.t1 tb;
 DROP VIEW test.v1;
 DROP VIEW test2.t3;
@@ -788,7 +788,7 @@ v3	CREATE ALGORITHM=UNDEFINED DEFINER=`r
 DROP USER u26813@localhost;
 DROP DATABASE db26813;
 #
-# Bug#29908: A user can gain additional access through the ALTER VIEW.
+# Bug#29908 A user can gain additional access through the ALTER VIEW.
 #
 CREATE DATABASE mysqltest_29908;
 USE mysqltest_29908;

=== modified file 'mysql-test/suite/funcs_1/r/innodb_func_view.result'
--- a/mysql-test/suite/funcs_1/r/innodb_func_view.result	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/r/innodb_func_view.result	2009-03-09 15:32:07 +0000
@@ -5245,7 +5245,7 @@ WHERE select_id = 1 OR select_id IS NULL
 sqrt(my_bigint)	my_bigint	id
 NULL	NULL	1
 NULL	-9223372036854775808	2
-3037000499.976	9223372036854775807	3
+3037000499.97605	9223372036854775807	3
 0	0	4
 NULL	-1	5
 2	4	6
@@ -5259,7 +5259,7 @@ WHERE select_id = 1 OR select_id IS NULL
 sqrt(my_bigint)	my_bigint	id
 NULL	NULL	1
 NULL	-9223372036854775808	2
-3037000499.976	9223372036854775807	3
+3037000499.97605	9223372036854775807	3
 0	0	4
 NULL	-1	5
 2	4	6

=== modified file 'mysql-test/suite/funcs_1/r/innodb_views.result'
--- a/mysql-test/suite/funcs_1/r/innodb_views.result	2009-02-27 14:11:15 +0000
+++ b/mysql-test/suite/funcs_1/r/innodb_views.result	2009-03-09 15:32:07 +0000
@@ -22824,7 +22824,7 @@ f1	f2
 ABC	3
 SELECT * FROM v1 order by 2;
 f1	my_sqrt
-ABC	1.7320508075689
+ABC	1.73205080756888
 ALTER TABLE t1 CHANGE COLUMN f2 f2 VARCHAR(30);
 INSERT INTO t1   SET f1 = 'ABC', f2 = 'DEF';
 DESCRIBE t1;
@@ -22842,7 +22842,7 @@ ABC	DEF
 SELECT * FROM v1 order by 2;
 f1	my_sqrt
 ABC	0
-ABC	1.7320508075689
+ABC	1.73205080756888
 SELECT SQRT('DEF');
 SQRT('DEF')
 0
@@ -22862,7 +22862,7 @@ my_sqrt	double	YES		NULL	
 SELECT * FROM v2 order by 2;
 f1	my_sqrt
 ABC	0
-ABC	1.7320508075689
+ABC	1.73205080756888
 CREATE TABLE t2 AS SELECT f1, SQRT(f2) my_sqrt FROM t1;
 SELECT * FROM t2 order by 2;
 f1	ABC

=== modified file 'mysql-test/suite/funcs_1/r/myisam_views.result'
--- a/mysql-test/suite/funcs_1/r/myisam_views.result	2009-02-14 15:58:07 +0000
+++ b/mysql-test/suite/funcs_1/r/myisam_views.result	2009-03-09 15:32:07 +0000
@@ -23043,7 +23043,7 @@ ERROR 42S02: Table 'test.v1' doesn't exi
 CHECK TABLE v1;
 Table	Op	Msg_type	Msg_text
 test.v1	check	Error	Table 'test.v1' doesn't exist
-test.v1	check	error	Corrupt
+test.v1	check	status	Operation failed
 DESCRIBE v1;
 ERROR 42S02: Table 'test.v1' doesn't exist
 EXPLAIN SELECT * FROM v1;

=== modified file 'mysql-test/t/alter_table-big.test'
--- a/mysql-test/t/alter_table-big.test	2007-01-19 20:15:59 +0000
+++ b/mysql-test/t/alter_table-big.test	2009-03-03 20:34:18 +0000
@@ -1,4 +1,4 @@
-# In order to be more or less robust test for bug#25044 has to take
+# In order to be more or less robust test for Bug#25044 has to take
 # significant time (e.g. about 9 seconds on my (Dmitri's) computer)
 # so we probably want execute it only in --big-test mode.
 # Also in 5.1 this test will require statement-based binlog.
@@ -6,8 +6,8 @@
 
 
 #
-# Test for bug #25044 "ALTER TABLE ... ENABLE KEYS acquires global
-# 'opening tables' lock".
+# Test for Bug#25044 ALTER TABLE ... ENABLE KEYS acquires global
+#                    'opening tables' lock
 #
 # ALTER TABLE ... ENABLE KEYS should not acquire LOCK_open mutex for
 # the whole its duration as it prevents other queries from execution.
@@ -57,6 +57,7 @@ show binlog events in 'master-bin.000001
 
 # Clean up
 drop tables t1, t2;
+disconnect addconroot;
 
 
 --echo End of 5.0 tests

=== modified file 'mysql-test/t/connect.test'
--- a/mysql-test/t/connect.test	2006-10-03 14:14:23 +0000
+++ b/mysql-test/t/connect.test	2009-03-05 13:35:03 +0000
@@ -18,12 +18,16 @@ connect (con2,localhost,root,,test);
 show tables;
 
 --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
---error 1045
+--error ER_ACCESS_DENIED_ERROR
 connect (fail_con,localhost,root,z,test2);
 --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
---error 1045
+--error ER_ACCESS_DENIED_ERROR
 connect (fail_con,localhost,root,z,);
 
+connection default;
+disconnect con1;
+disconnect con2;
+
 grant ALL on *.* to test@localhost identified by "gambling";
 grant ALL on *.* to test@stripped identified by "gambling";
 
@@ -35,20 +39,23 @@ show tables;
 connect (con4,localhost,test,gambling,test);
 show tables;
 
+connection default;
+disconnect con3;
+disconnect con4;
+
 --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
---error 1045
+--error ER_ACCESS_DENIED_ERROR
 connect (fail_con,localhost,test,,test2);
 --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
---error 1045
+--error ER_ACCESS_DENIED_ERROR
 connect (fail_con,localhost,test,,"");
 --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
---error 1045
+--error ER_ACCESS_DENIED_ERROR
 connect (fail_con,localhost,test,zorro,test2);
 --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
---error 1045
+--error ER_ACCESS_DENIED_ERROR
 connect (fail_con,localhost,test,zorro,);
 
-
 # check if old password version also works
 update mysql.user set password=old_password("gambling2") where user=_binary"test";
 flush privileges;
@@ -57,30 +64,34 @@ connect (con10,localhost,test,gambling2,
 connect (con5,localhost,test,gambling2,mysql);
 connection con5;
 set password="";
---error 1372
+--error ER_PASSWD_LENGTH
 set password='gambling3';
 set password=old_password('gambling3');
 show tables;
 connect (con6,localhost,test,gambling3,test);
 show tables;
 
+connection default;
+disconnect con10;
+disconnect con5;
+disconnect con6;
+
 --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
---error 1045
+--error ER_ACCESS_DENIED_ERROR
 connect (fail_con,localhost,test,,test2);
 --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
---error 1045
+--error ER_ACCESS_DENIED_ERROR
 connect (fail_con,localhost,test,,);
 --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
---error 1045
+--error ER_ACCESS_DENIED_ERROR
 connect (fail_con,localhost,test,zorro,test2);
 --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
---error 1045
+--error ER_ACCESS_DENIED_ERROR
 connect (fail_con,localhost,test,zorro,);
 
 
 # remove user 'test' so that other tests which may use 'test'
 # do not depend on this test.
-
 delete from mysql.user where user=_binary"test";
 flush privileges;
 
@@ -98,4 +109,5 @@ disconnect con7;
 connection default;
 drop table t1;
 
+
 # End of 4.1 tests

=== modified file 'mysql-test/t/consistent_snapshot.test'
--- a/mysql-test/t/consistent_snapshot.test	2005-07-28 00:22:47 +0000
+++ b/mysql-test/t/consistent_snapshot.test	2009-03-03 20:34:18 +0000
@@ -1,43 +1,61 @@
--- source include/have_innodb.inc
+--source include/have_innodb.inc
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
 
 --disable_warnings
-drop table if exists t1;
+DROP TABLE IF EXISTS t1;
 --enable_warnings
 
+--echo # Establish connection con1 (user=root)
 connect (con1,localhost,root,,);
+--echo # Establish connection con2 (user=root)
 connect (con2,localhost,root,,);
 
 ### Test 1:
 ### - While a consistent snapshot transaction is executed,
 ###   no external inserts should be visible to the transaction.
 
+--echo # Switch to connection con1
 connection con1;
-create table t1 (a int) engine=innodb;
-start transaction with consistent snapshot;
+CREATE TABLE t1 (a INT) ENGINE=innodb;
+START TRANSACTION WITH CONSISTENT SNAPSHOT;
 
+--echo # Switch to connection con2
 connection con2;
-insert into t1 values(1);
+INSERT INTO t1 VALUES(1);
 
+--echo # Switch to connection con1
 connection con1;
-select * from t1; # if consistent snapshot was set as expected, we
+SELECT * FROM t1; # if consistent snapshot was set as expected, we
 # should see nothing.
-commit;
+COMMIT;
 
 ### Test 2:
 ### - For any non-consistent snapshot transaction, external
 ###   committed inserts should be visible to the transaction.
 
-delete from t1;
-start transaction; # Now we omit WITH CONSISTENT SNAPSHOT
+DELETE FROM t1;
+START TRANSACTION; # Now we omit WITH CONSISTENT SNAPSHOT
 
+--echo # Switch to connection con2
 connection con2;
-insert into t1 values(1);
+INSERT INTO t1 VALUES(1);
 
+--echo # Switch to connection con1
 connection con1;
-select * from t1; # if consistent snapshot was not set, as expected, we
+SELECT * FROM t1; # if consistent snapshot was not set, as expected, we
 # should see 1.
-commit;
+COMMIT;
 
-drop table t1;
+--echo # Switch to connection default + close connections con1 and con2
+connection default;
+disconnect con1;
+disconnect con2;
+DROP TABLE t1;
 
 # End of 4.1 tests
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/ctype_collate.test'
--- a/mysql-test/t/ctype_collate.test	2007-07-08 21:23:33 +0000
+++ b/mysql-test/t/ctype_collate.test	2009-03-19 08:20:28 +0000
@@ -229,3 +229,17 @@ insert into t1 set a=0x6c;
 insert into t1 set a=0x4c98;
 check table t1 extended;
 drop table t1;
+
+#
+# Bug#41627 Illegal mix of collations in LEAST / GREATEST / CASE
+#
+select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);
+create table t1
+select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci) as f1;
+show create table t1;
+drop table t1;
+
+select case _latin1'a' when _latin2'b' then 1 when _latin5'c' collate
+latin5_turkish_ci then 2 else 3 end;
+
+select concat(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);

=== modified file 'mysql-test/t/dirty_close.test'
--- a/mysql-test/t/dirty_close.test	2005-07-28 00:22:47 +0000
+++ b/mysql-test/t/dirty_close.test	2009-03-03 20:34:18 +0000
@@ -1,3 +1,7 @@
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 connect (con1,localhost,root,,);
 connect (con2,localhost,root,,);
 connection con1;
@@ -5,12 +9,19 @@ dirty_close con1;
 connection con2;
 
 --disable_warnings
-drop table if exists t1;
+DROP TABLE IF EXISTS t1;
 --enable_warnings
 
-create table t1 (n int);
-insert into t1 values (1),(2),(3);
-select * from t1;
-drop table t1;
+CREATE TABLE t1 (n INT);
+INSERT INTO t1 VALUES (1),(2),(3);
+SELECT * FROM t1;
+DROP TABLE t1;
+
+connection default;
+disconnect con2;
 
 # End of 4.1 tests
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/explain.test'
--- a/mysql-test/t/explain.test	2008-12-09 18:35:02 +0000
+++ b/mysql-test/t/explain.test	2009-03-11 12:10:44 +0000
@@ -123,4 +123,17 @@ execute s1;
 
 DROP TABLE t1,t2;
 
+
+#
+# Bug #43354: Use key hint can crash server in explain extended query
+#
+
+CREATE TABLE t1 (a INT PRIMARY KEY);
+
+--error ER_KEY_DOES_NOT_EXITS
+EXPLAIN EXTENDED SELECT COUNT(a) FROM t1 USE KEY(a);
+
+DROP TABLE t1;
+
+
 # End of 5.0 tests.

=== modified file 'mysql-test/t/federated.test'
--- a/mysql-test/t/federated.test	2008-11-14 07:42:29 +0000
+++ b/mysql-test/t/federated.test	2009-03-19 06:06:37 +0000
@@ -1843,6 +1843,28 @@ DROP TABLE t1;
 connection master;
 DROP TABLE t1;
 
+--echo #
+--echo # BUG#21360 - mysqldump error on federated tables
+--echo #
+connection slave;
+--echo #Switch to Connection Slave
+CREATE TABLE t1(id VARCHAR(20) NOT NULL, PRIMARY KEY(id));
+INSERT INTO  t1 VALUES ('text1'),('text2'),('text3'),('text4');
+
+connection master;
+--echo #Switch to Connection Master
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+eval CREATE TABLE t1(id VARCHAR(20) NOT NULL, PRIMARY KEY(id)) ENGINE=FEDERATED 
+  CONNECTION='mysql://root@stripped:$SLAVE_MYPORT/test/t1';
+--echo # Dump table t1 using mysqldump tool
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+--exec $MYSQL_DUMP --compact test t1
+DROP TABLE t1;
+
+connection slave;
+--echo #Switch to Connection Slave
+DROP TABLE t1;
+
 connection default;
 
 --echo End of 5.0 tests

=== modified file 'mysql-test/t/flush_block_commit.test'
--- a/mysql-test/t/flush_block_commit.test	2006-12-08 11:22:46 +0000
+++ b/mysql-test/t/flush_block_commit.test	2009-03-03 20:34:18 +0000
@@ -4,74 +4,106 @@
 # This is intended to mimick how mysqldump and innobackup work.
 
 # And it requires InnoDB
--- source include/have_innodb.inc
+--source include/have_innodb.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+--echo # Establish connection con1 (user=root)
 connect (con1,localhost,root,,);
+--echo # Establish connection con2 (user=root)
 connect (con2,localhost,root,,);
+--echo # Establish connection con3 (user=root)
 connect (con3,localhost,root,,);
+--echo # Switch to connection con1
 connection con1;
 
 --disable_warnings
-drop table if exists t1;
+DROP TABLE IF EXISTS t1;
 --enable_warnings
-create table t1 (a int) engine=innodb;
+CREATE TABLE t1 (a INT) ENGINE=innodb;
 
 # blocks COMMIT ?
 
-begin;
-insert into t1 values(1);
-connection con2;
-flush tables with read lock;
-select * from t1;
+BEGIN;
+INSERT INTO t1 VALUES(1);
+--echo # Switch to connection con2
+connection con2;
+FLUSH TABLES WITH READ LOCK;
+SELECT * FROM t1;
+--echo # Switch to connection con1
 connection con1;
-send commit; # blocked by con2
+send COMMIT; # blocked by con2
 sleep 1;
+--echo # Switch to connection con2
 connection con2;
-select * from t1; # verify con1 was blocked and data did not move
-unlock tables;
+SELECT * FROM t1; # verify con1 was blocked and data did not move
+UNLOCK TABLES;
+--echo # Switch to connection con1
 connection con1;
 reap;
 
 # No deadlock ?
 
+--echo # Switch to connection con1
 connection con1;
-begin;
-select * from t1 for update;
+BEGIN;
+SELECT * FROM t1 FOR UPDATE;
+--echo # Switch to connection con2
 connection con2;
-begin;
-send select * from t1 for update; # blocked by con1
+BEGIN;
+send SELECT * FROM t1 FOR UPDATE; # blocked by con1
 sleep 1;
+--echo # Switch to connection con3
 connection con3;
-send flush tables with read lock; # blocked by con2
+send FLUSH TABLES WITH READ LOCK; # blocked by con2
+--echo # Switch to connection con1
 connection con1;
-commit; # should not be blocked by con3
+COMMIT; # should not be blocked by con3
+--echo # Switch to connection con2
 connection con2;
 reap;
+--echo # Switch to connection con3
 connection con3;
 reap;
-unlock tables;
+UNLOCK TABLES;
 
-# BUG#6732 FLUSH TABLES WITH READ LOCK + COMMIT hangs later FLUSH TABLES
-# WITH READ LOCK
+# Bug#6732 FLUSH TABLES WITH READ LOCK + COMMIT hangs later FLUSH TABLES
+#          WITH READ LOCK
 
+--echo # Switch to connection con2
 connection con2;
-commit; # unlock InnoDB row locks to allow insertions
+COMMIT; # unlock InnoDB row locks to allow insertions
+--echo # Switch to connection con1
 connection con1;
-begin;
-insert into t1 values(10);
-flush tables with read lock;
-commit;
-unlock tables;
+BEGIN;
+INSERT INTO t1 VALUES(10);
+FLUSH TABLES WITH READ LOCK;
+COMMIT;
+UNLOCK TABLES;
+--echo # Switch to connection con2
 connection con2;
-flush tables with read lock; # bug caused hang here
-unlock tables;
+FLUSH TABLES WITH READ LOCK; # bug caused hang here
+UNLOCK TABLES;
+
+# Bug#7358 SHOW CREATE DATABASE fails if open transaction
 
-# BUG#7358 SHOW CREATE DATABASE fails if open transaction
+BEGIN;
+SELECT * FROM t1;
+SHOW CREATE DATABASE test;
 
-begin;
-select * from t1;
-show create database test;
+DROP TABLE t1;
 
-drop table t1;
+
+# Cleanup
+--echo # Switch to connection default and close connections con1, con2, con3
+connection default;
+disconnect con1;
+disconnect con2;
+disconnect con3;
 
 # End of 4.1 tests
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/flush_block_commit_notembedded.test'
--- a/mysql-test/t/flush_block_commit_notembedded.test	2007-06-14 21:23:30 +0000
+++ b/mysql-test/t/flush_block_commit_notembedded.test	2009-03-03 20:34:18 +0000
@@ -3,32 +3,51 @@
 # We verify that we did not introduce a deadlock.
 # This is intended to mimick how mysqldump and innobackup work.
 
--- source include/have_log_bin.inc
+--source include/have_log_bin.inc
 
 # And it requires InnoDB
--- source include/have_log_bin.inc
--- source include/have_innodb.inc
+--source include/have_log_bin.inc
+--source include/have_innodb.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+
+--echo # Establish connection con1 (user=root)
 connect (con1,localhost,root,,);
+--echo # Establish connection con2 (user=root)
 connect (con2,localhost,root,,);
 
 # FLUSH TABLES WITH READ LOCK should block writes to binlog too
+--echo # Switch to connection con1
 connection con1;
-create table t1 (a int) engine=innodb;
-reset master;
-set autocommit=0;
-insert t1 values (1);
+CREATE TABLE t1 (a INT) ENGINE=innodb;
+RESET MASTER;
+SET AUTOCOMMIT=0;
+INSERT t1 VALUES (1);
+--echo # Switch to connection con2
 connection con2;
-flush tables with read lock;
-show master status;
+FLUSH TABLES WITH READ LOCK;
+SHOW MASTER STATUS;
+--echo # Switch to connection con1
 connection con1;
-send commit;
+send COMMIT;
+--echo # Switch to connection con2
 connection con2;
 sleep 1;
-show master status;
-unlock tables;
+SHOW MASTER STATUS;
+UNLOCK TABLES;
+--echo # Switch to connection con1
 connection con1;
 reap;
-drop table t1;
-set autocommit=1;
+DROP TABLE t1;
+SET AUTOCOMMIT=1;
+
+--echo # Switch to connection default and close connections con1 and con2
+connection default;
+disconnect con1;
+disconnect con2;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
 

=== modified file 'mysql-test/t/flush_read_lock_kill.test'
--- a/mysql-test/t/flush_read_lock_kill.test	2005-12-14 17:42:08 +0000
+++ b/mysql-test/t/flush_read_lock_kill.test	2009-03-03 20:34:18 +0000
@@ -8,19 +8,27 @@
 # won't test anything interesting).
 
 # This also won't work with the embedded server test
--- source include/not_embedded.inc
+--source include/not_embedded.inc
 
--- source include/have_debug.inc
+--source include/have_debug.inc
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+# Disable concurrent inserts to avoid test failures when reading the
+# connection id which was inserted into a table by another thread.
+SET @old_concurrent_insert= @@global.concurrent_insert;
+SET @@global.concurrent_insert= 0;
 
 connect (con1,localhost,root,,);
 connect (con2,localhost,root,,);
 connection con1;
 
 --disable_warnings
-drop table if exists t1;
+DROP TABLE IF EXISTS t1;
 --enable_warnings
-create table t1 (kill_id int);
-insert into t1 values(connection_id());
+CREATE TABLE t1 (kill_id INT);
+INSERT INTO t1 VALUES(connection_id());
 
 # Thanks to the parameter we passed to --debug, this FLUSH will
 # block on a debug build running with our --debug=make_global... It
@@ -28,14 +36,14 @@ insert into t1 values(connection_id());
 # --debug) it will succeed immediately
 
 connection con1;
-send flush tables with read lock;
+send FLUSH TABLES WITH READ LOCK;
 
 # kill con1
 connection con2;
-select ((@id := kill_id) - kill_id) from t1; 
+SELECT ((@id := kill_id) - kill_id) FROM t1;
 
 --sleep 2 # leave time for FLUSH to block
-kill connection @id;
+KILL CONNECTION @id;
 
 connection con1;
 # On debug builds it will be error 1053 (killed); on non-debug, or
@@ -46,4 +54,13 @@ connection con1;
 reap;
 
 connection con2;
-drop table t1;
+DROP TABLE t1;
+connection default;
+disconnect con2;
+
+# Restore global concurrent_insert value
+SET @@global.concurrent_insert= @old_concurrent_insert;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/init_connect.test'
--- a/mysql-test/t/init_connect.test	2007-03-20 13:53:55 +0000
+++ b/mysql-test/t/init_connect.test	2009-03-03 20:34:18 +0000
@@ -5,6 +5,9 @@
 # should work with embedded server after mysqltest is fixed
 --source include/not_embedded.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 --source include/add_anonymous_users.inc
 
 connect (con0,localhost,root,,);
@@ -233,7 +236,8 @@ connect (con1,localhost,mysqltest1,,);
 connection con1;
 select * from t1;
 
-connection con0;
+connection default;
+disconnect con0;
 disconnect con1;
 
 drop trigger trg1;
@@ -244,3 +248,7 @@ set global init_connect="set @a='a\\0c'"
 revoke all privileges, grant option from mysqltest1@localhost;
 drop user mysqltest1@localhost;
 drop table t1, t2;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/lock_multi.test'
--- a/mysql-test/t/lock_multi.test	2008-10-09 15:24:31 +0000
+++ b/mysql-test/t/lock_multi.test	2009-03-23 20:19:41 +0000
@@ -1,4 +1,8 @@
 -- source include/not_embedded.inc
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 --disable_warnings
 drop table if exists t1,t2;
 --enable_warnings
@@ -14,12 +18,23 @@ create table t1(n int);
 insert into t1 values (1);
 lock tables t1 write;
 connection writer;
-send update low_priority t1 set n = 4;
+send
+update low_priority t1 set n = 4;
 connection reader;
---sleep 2
-send select n from t1;
-connection locker;
---sleep 2
+# Sleep a bit till the update of connection writer is in work and hangs
+let $wait_timeout= 5;
+let $show_statement= SHOW PROCESSLIST;
+let $field= State;
+let $condition= = 'Locked';
+--source include/wait_show_condition.inc
+send
+select n from t1;
+connection locker;
+# Sleep a bit till the select of connection reader is in work and hangs
+# Here we cannot use include/wait_show_condition.inc because this routine
+# cannot count the number of 'Locked' sessions or access two columns within
+# the same query_get_value call.
+--sleep 3
 unlock tables;
 connection writer;
 reap;
@@ -32,12 +47,23 @@ create table t1(n int);
 insert into t1 values (1);
 lock tables t1 read;
 connection writer;
-send update low_priority t1 set n = 4;
+send
+update low_priority t1 set n = 4;
 connection reader;
---sleep 2
-send select n from t1;
-connection locker;
---sleep 2
+# Sleep a bit till the update of connection writer is in work and hangs
+let $wait_timeout= 5;
+let $show_statement= SHOW PROCESSLIST;
+let $field= State;
+let $condition= = 'Locked';
+--source include/wait_show_condition.inc
+#
+send
+select n from t1;
+connection locker;
+# Sleep a bit till the select of connection reader is in work and hangs
+# Here we cannot use include/wait_show_condition.inc.
+--sleep 3
+#
 unlock tables;
 connection writer;
 reap;
@@ -58,10 +84,13 @@ insert into t1 values(2,2);
 insert into t2 values(1,2);
 lock table t1 read;
 connection writer;
---sleep 2
-send update t1,t2 set c=a where b=d;
+send
+update t1,t2 set c=a where b=d;
 connection reader;
---sleep 2
+# Sleep a bit till the update of connection writer is finished
+# Here we cannot use include/wait_show_condition.inc.
+--sleep 3
+#
 select c from t2;
 connection writer;
 reap;
@@ -70,7 +99,7 @@ drop table t1;
 drop table t2;
 
 #
-# Test problem when using locks on many tables and droping a table that
+# Test problem when using locks on many tables and dropping a table that
 # is to-be-locked by another thread
 #
 
@@ -79,11 +108,18 @@ create table t1 (a int);
 create table t2 (a int);
 lock table t1 write, t2 write;
 connection reader;
-send insert t1 select * from t2;
+send
+insert t1 select * from t2;
 connection locker;
+# Sleep a bit till the insert of connection reader is in work and hangs
+let $wait_timeout= 5;
+let $show_statement= SHOW PROCESSLIST;
+let $field= State;
+let $condition= = 'Locked';
+--source include/wait_show_condition.inc
 drop table t2;
 connection reader;
---error 1146
+--error ER_NO_SUCH_TABLE
 reap;
 connection locker;
 drop table t1;
@@ -91,7 +127,7 @@ drop table t1;
 # End of 4.1 tests
 
 #
-# BUG#9998 - MySQL client hangs on USE "database"
+# Bug#9998 MySQL client hangs on USE "database"
 #
 create table t1(a int);
 lock tables t1 write;
@@ -102,7 +138,7 @@ unlock tables;
 drop table t1;
 
 #
-# Bug#19815 - CREATE/RENAME/DROP DATABASE can deadlock on a global read lock
+# Bug#19815 CREATE/RENAME/DROP DATABASE can deadlock on a global read lock
 #
 connect (con1,localhost,root,,);
 connect (con2,localhost,root,,);
@@ -114,12 +150,18 @@ FLUSH TABLES WITH READ LOCK;
 # With bug in place: acquire LOCK_mysql_create_table and
 # wait in wait_if_global_read_lock().
 connection con2;
-send DROP DATABASE mysqltest_1;
---sleep 1
+send
+DROP DATABASE mysqltest_1;
 #
 # With bug in place: try to acquire LOCK_mysql_create_table...
 # When fixed: Reject dropping db because of the read lock.
 connection con1;
+# Wait a bit so that the session con2 is in state "Waiting for release of readlock"
+let $wait_timeout= 5;
+let $show_statement= SHOW PROCESSLIST;
+let $field= State;
+let $condition= = 'Waiting for release of readlock';
+--source include/wait_show_condition.inc
 --error ER_CANT_UPDATE_WITH_READLOCK
 DROP DATABASE mysqltest_1;
 UNLOCK TABLES;
@@ -135,26 +177,33 @@ disconnect con2;
 --error ER_DB_DROP_EXISTS
 DROP DATABASE mysqltest_1;
 
+
 #
-# Bug#16986 - Deadlock condition with MyISAM tables
+# Bug#16986 Deadlock condition with MyISAM tables
 #
 
 # Need a matching user in mysql.user for multi-table select
 --source include/add_anonymous_users.inc
 
 connection locker;
-use mysql;
+USE mysql;
 LOCK TABLES columns_priv WRITE, db WRITE, host WRITE, user WRITE;
 FLUSH TABLES;
---sleep 1
-#
+
+
 connection reader;
-use mysql;
-#NOTE:  This must be a multi-table select, otherwise the deadlock will not occur
-send SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1;
---sleep 1
+USE mysql;
+# Note:  This must be a multi-table select, otherwise the deadlock will not occur
+send
+SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1;
 #
 connection locker;
+# Sleep a bit till the select of connection reader is in work and hangs
+let $wait_timeout= 5;
+let $show_statement= SHOW PROCESSLIST;
+let $field= State;
+let $condition= = 'Locked';
+--source include/wait_show_condition.inc
 # Make test case independent from earlier grants.
 --replace_result "Table is already up to date" "OK"
 OPTIMIZE TABLES columns_priv, db, host, user;
@@ -162,7 +211,7 @@ UNLOCK TABLES;
 #
 connection reader;
 reap;
-use test;
+USE test;
 #
 connection locker;
 use test;
@@ -177,11 +226,17 @@ LOCK TABLE t1 WRITE;
 #
 # This waits until t1 is unlocked.
 connection locker;
-send FLUSH TABLES WITH READ LOCK;
---sleep 1
+send
+FLUSH TABLES WITH READ LOCK;
 #
 # This must not block.
 connection writer;
+# Sleep a bit till the flush of connection locker is in work and hangs
+let $wait_timeout= 5;
+let $show_statement= SHOW PROCESSLIST;
+let $field= State;
+let $condition= = 'Flushing tables';
+--source include/wait_show_condition.inc
 CREATE TABLE t2 (c1 int);
 UNLOCK TABLES;
 #
@@ -201,12 +256,18 @@ LOCK TABLE t1 WRITE;
 #
 # This waits until t1 is unlocked.
 connection locker;
-send FLUSH TABLES WITH READ LOCK;
---sleep 1
+send
+FLUSH TABLES WITH READ LOCK;
 #
 # This must not block.
 connection writer;
---error 1100
+# Sleep a bit till the flush of connection locker is in work and hangs
+let $wait_timeout= 5;
+let $show_statement= SHOW PROCESSLIST;
+let $field= State;
+let $condition= = 'Flushing tables';
+--source include/wait_show_condition.inc
+--error ER_TABLE_NOT_LOCKED
 CREATE TABLE t2 AS SELECT * FROM t1;
 UNLOCK TABLES;
 #
@@ -220,8 +281,9 @@ DROP TABLE t1;
 
 --source include/delete_anonymous_users.inc
 
+
 #
-# Bug #17264: MySQL Server freeze
+# Bug#17264 MySQL Server freeze
 #
 connection locker;
 # Disable warnings to allow test to run also without InnoDB
@@ -230,17 +292,29 @@ create table t1 (f1 int(12) unsigned not
 --enable_warnings
 lock tables t1 write;
 connection writer;
---sleep 2
+# mleich: I have doubts if the next sleep is really necessary
+#         Therefore I set it to comment but don't remove it
+#         in case it hat to be enabled again.
+# --sleep 2
 delimiter //;
-send alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
+send
+alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
 delimiter ;//
 connection reader;
---sleep 2
+# Wait till connection writer is blocked
+let $wait_timeout= 5;
+let $show_statement= SHOW PROCESSLIST;
+let $field= State;
+let $condition= = 'Locked';
+--source include/wait_show_condition.inc
 delimiter //;
-send alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
+send
+alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
 delimiter ;//
 connection locker;
---sleep 2
+# Wait till connection reader is blocked
+# Here we cannot use include/wait_show_condition.inc.
+--sleep 3
 unlock tables;
 connection writer;
 reap;
@@ -263,7 +337,7 @@ lock tables t1 read;
 --echo connection: writer
 connection writer;
 let $ID= `select connection_id()`;
---send create table t2 like t1;
+send create table t2 like t1;
 --echo connection: default
 connection default;
 let $show_type= open tables where in_use=2 and name_locked=1;
@@ -282,8 +356,8 @@ connection default;
 drop table t1;
 
 #
-# Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
-#             ``FLUSH TABLES WITH READ LOCK''
+# Bug#38691 segfault/abort in ``UPDATE ...JOIN'' while
+#           ``FLUSH TABLES WITH READ LOCK''
 #
 
 --connection default
@@ -354,7 +428,7 @@ while ($i) {
   dec $i;
 
 --connection locker
---error 0,1060
+--error 0,ER_DUP_FIELDNAME
   ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
   UPDATE t2 SET a=b;
 
@@ -362,11 +436,11 @@ while ($i) {
 --send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b
 
 --connection locker
---error 0,1091
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
   ALTER TABLE t2 DROP COLUMN a;
 
 --connection writer
---error 0,1054
+--error 0,ER_BAD_FIELD_ERROR
 --reap
 }
 --enable_query_log
@@ -379,7 +453,7 @@ while ($i) {
   dec $i;
 
 --connection locker
---error 0,1060
+--error 0,ER_DUP_FIELDNAME
   ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
   UPDATE t2 SET a=b;
 
@@ -388,11 +462,11 @@ while ($i) {
 --send EXECUTE stmt
 
 --connection locker
---error 0,1091
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
   ALTER TABLE t2 DROP COLUMN a;
 
 --connection writer
---error 0,1054
+--error 0,ER_BAD_FIELD_ERROR
 --reap
 
 }
@@ -400,8 +474,9 @@ while ($i) {
 --connection default
 DROP TABLE t1, t2, t3;
 
+
 #
-# Bug#38499: flush tables and multitable table update with derived table cause 
+# Bug#38499: flush tables and multitable table update with derived table cause
 #            crash
 #
 
@@ -460,7 +535,7 @@ while ($i) {
   dec $i;
 
 --connection locker
---error 0,1060
+--error 0,ER_DUP_FIELDNAME
   ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
   UPDATE t1 SET a=b;
 
@@ -468,11 +543,11 @@ while ($i) {
 --send UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0;
 
 --connection locker
---error 0,1091
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
   ALTER TABLE t1 DROP COLUMN a;
 
 --connection writer
---error 0,1054 # unknown column error
+--error 0,ER_BAD_FIELD_ERROR # unknown column error
 --reap
 }
 --enable_query_log
@@ -485,7 +560,7 @@ while ($i) {
   dec $i;
 
 --connection locker
---error 0,1060
+--error 0,ER_DUP_FIELDNAME
   ALTER TABLE t1 ADD COLUMN a INT;
   UPDATE t1 SET a=b;
 
@@ -494,11 +569,11 @@ while ($i) {
 --send EXECUTE stmt
 
 --connection locker
---error 0,1091
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
   ALTER TABLE t1 DROP COLUMN a;
 
 --connection writer
---error 0,1054 # Unknown column 'a' in 'field list'
+--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
 --reap
 }
 --enable_query_log
@@ -557,7 +632,7 @@ while ($i) {
   dec $i;
 
 --connection locker
---error 0,1060
+--error 0,ER_DUP_FIELDNAME
   ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
   UPDATE t1 SET a=b;
 
@@ -565,11 +640,11 @@ while ($i) {
 --send UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0;
 
 --connection locker
---error 0,1091
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
   ALTER TABLE t1 DROP COLUMN a;
 
 --connection writer
---error 0,1054 # Unknown column 'a' in 'field list'
+--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
 --reap
 }
 --enable_query_log
@@ -582,7 +657,7 @@ while ($i) {
   dec $i;
 
 --connection locker
---error 0,1060
+--error 0,ER_DUP_FIELDNAME
   ALTER TABLE t1 ADD COLUMN a INT;
   UPDATE t1 SET a=b;
 
@@ -591,15 +666,25 @@ while ($i) {
 --send EXECUTE stmt
 
 --connection locker
---error 0,1091
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
   ALTER TABLE t1 DROP COLUMN a;
 
 --connection writer
---error 0,1054 # Unknown column 'a' in 'field list'
+--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
 --reap
 }
 --enable_query_log
 --connection default
 DROP TABLE t1;
 
+
+# Close connections used in many subtests
+--disconnect reader
+--disconnect locker
+--disconnect writer
+
 # End of 5.0 tests
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== added file 'mysql-test/t/lock_multi_bug38499.test'
--- a/mysql-test/t/lock_multi_bug38499.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/lock_multi_bug38499.test	2009-03-23 14:22:31 +0000
@@ -0,0 +1,221 @@
+# Bug38499 flush tables and multitable table update with derived table cause crash
+# MySQL >= 5.0
+#
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+connect (locker,localhost,root,,);
+connect (writer,localhost,root,,);
+
+--connection default
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+CREATE TABLE t1( a INT, b INT );
+INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4);
+
+--echo # 1. test regular tables
+--echo # 1.1. test altering of columns that multiupdate doesn't use
+--echo # 1.1.1. normal mode
+
+--disable_query_log
+let $i = 100;
+while ($i) {
+--dec $i
+
+--connection writer
+  send UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0;
+
+--connection locker
+  ALTER TABLE t1 ADD COLUMN (c INT);
+  ALTER TABLE t1 DROP COLUMN c;
+
+--connection writer
+--reap
+}
+
+--echo # 1.1.2. PS mode
+
+--connection writer
+PREPARE stmt FROM 'UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0';
+
+let $i = 100;
+while ($i) {
+--dec $i
+
+--connection writer
+--send EXECUTE stmt
+
+--connection locker
+  ALTER TABLE t1 ADD COLUMN (c INT);
+  ALTER TABLE t1 DROP COLUMN c;
+
+--connection writer
+--reap
+}
+--enable_query_log
+
+--echo # 1.2. test altering of columns that multiupdate uses
+--echo # 1.2.1. normal mode
+
+--connection default
+
+--disable_query_log
+let $i = 100;
+while ($i) {
+  dec $i;
+
+--connection locker
+--error 0,ER_DUP_FIELDNAME
+  ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
+  UPDATE t1 SET a=b;
+
+--connection writer
+--send UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0;
+
+--connection locker
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
+  ALTER TABLE t1 DROP COLUMN a;
+
+--connection writer
+--error 0,ER_BAD_FIELD_ERROR # unknown column error
+--reap
+}
+--enable_query_log
+
+--echo # 1.2.2. PS mode
+
+--disable_query_log
+let $i = 100;
+while ($i) {
+  dec $i;
+
+--connection locker
+--error 0,ER_DUP_FIELDNAME
+  ALTER TABLE t1 ADD COLUMN a INT;
+  UPDATE t1 SET a=b;
+
+--connection writer
+  PREPARE stmt FROM 'UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0';
+--send EXECUTE stmt
+
+--connection locker
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
+  ALTER TABLE t1 DROP COLUMN a;
+
+--connection writer
+--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
+--reap
+}
+--enable_query_log
+--connection default
+ALTER TABLE t1 ADD COLUMN a INT;
+
+--echo # 2. test UNIONs
+--echo # 2.1. test altering of columns that multiupdate doesn't use
+--echo # 2.1.1. normal mode
+
+--disable_query_log
+let $i = 100;
+while ($i) {
+--dec $i
+
+--connection writer
+  send UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0;
+
+--connection locker
+  ALTER TABLE t1 ADD COLUMN (c INT);
+  ALTER TABLE t1 DROP COLUMN c;
+
+--connection writer
+--reap
+}
+
+--echo # 2.1.2. PS mode
+
+--connection writer
+PREPARE stmt FROM 'UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0';
+
+let $i = 100;
+while ($i) {
+--dec $i
+
+--connection writer
+--send EXECUTE stmt
+
+--connection locker
+  ALTER TABLE t1 ADD COLUMN (c INT);
+  ALTER TABLE t1 DROP COLUMN c;
+
+--connection writer
+--reap
+}
+--enable_query_log
+
+--echo # 2.2. test altering of columns that multiupdate uses
+--echo # 2.2.1. normal mode
+
+--connection default
+
+--disable_query_log
+let $i = 100;
+while ($i) {
+  dec $i;
+
+--connection locker
+--error 0,ER_DUP_FIELDNAME
+  ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
+  UPDATE t1 SET a=b;
+
+--connection writer
+--send UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0;
+
+--connection locker
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
+  ALTER TABLE t1 DROP COLUMN a;
+
+--connection writer
+--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
+--reap
+}
+--enable_query_log
+
+--echo # 2.2.2. PS mode
+
+--disable_query_log
+let $i = 100;
+while ($i) {
+  dec $i;
+
+--connection locker
+--error 0,ER_DUP_FIELDNAME
+  ALTER TABLE t1 ADD COLUMN a INT;
+  UPDATE t1 SET a=b;
+
+--connection writer
+  PREPARE stmt FROM 'UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0';
+--send EXECUTE stmt
+
+--connection locker
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
+  ALTER TABLE t1 DROP COLUMN a;
+
+--connection writer
+--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
+--reap
+}
+--enable_query_log
+--connection default
+DROP TABLE t1;
+
+
+# Close connections
+--disconnect locker
+--disconnect writer
+
+# End of 5.0 tests
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== added file 'mysql-test/t/lock_multi_bug38691.test'
--- a/mysql-test/t/lock_multi_bug38691.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/lock_multi_bug38691.test	2009-03-23 14:22:31 +0000
@@ -0,0 +1,141 @@
+#
+# Bug#38691 segfault/abort in ``UPDATE ...JOIN'' while
+#           ``FLUSH TABLES WITH READ LOCK''
+# MySQL >= 5.0
+#
+
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+# Test to see if select will get the lock ahead of low priority update
+
+connect (locker,localhost,root,,);
+connect (writer,localhost,root,,);
+
+--connection default
+--disable_warnings
+DROP TABLE IF EXISTS t1,t2,t3;
+--enable_warnings
+
+CREATE TABLE t1 (
+  a int(11) unsigned default NULL,
+  b varchar(255) default NULL,
+  UNIQUE KEY a (a),
+  KEY b (b)
+);
+
+INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
+CREATE TABLE t2 SELECT * FROM t1;
+CREATE TABLE t3 SELECT * FROM t1;
+
+--echo # test altering of columns that multiupdate doesn't use
+
+--echo # normal mode
+
+--disable_query_log
+let $i = 100;
+while ($i) {
+--dec $i
+
+--connection writer
+  send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a)
+         SET a = NULL WHERE t1.b <> t2.b;
+
+--connection locker
+  ALTER TABLE t2 ADD COLUMN (c INT);
+  ALTER TABLE t2 DROP COLUMN c;
+
+--connection writer
+--reap
+}
+
+--echo # PS mode
+
+--connection writer
+PREPARE stmt FROM 'UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a)
+                     SET a = NULL WHERE t1.b <> t2.b';
+
+let $i = 100;
+while ($i) {
+--dec $i
+
+--connection writer
+--send EXECUTE stmt
+
+--connection locker
+  ALTER TABLE t2 ADD COLUMN (c INT);
+  ALTER TABLE t2 DROP COLUMN c;
+
+--connection writer
+--reap
+}
+--enable_query_log
+
+
+--echo # test altering of columns that multiupdate uses
+
+--echo # normal mode
+
+--connection default
+
+--disable_query_log
+let $i = 100;
+while ($i) {
+  dec $i;
+
+--connection locker
+--error 0,ER_DUP_FIELDNAME
+  ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
+  UPDATE t2 SET a=b;
+
+--connection writer
+--send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b
+
+--connection locker
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
+  ALTER TABLE t2 DROP COLUMN a;
+
+--connection writer
+--error 0,ER_BAD_FIELD_ERROR
+--reap
+}
+--enable_query_log
+
+--echo # PS mode
+
+--disable_query_log
+let $i = 100;
+while ($i) {
+  dec $i;
+
+--connection locker
+--error 0,ER_DUP_FIELDNAME
+  ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
+  UPDATE t2 SET a=b;
+
+--connection writer
+  PREPARE stmt FROM 'UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b';
+--send EXECUTE stmt
+
+--connection locker
+--error 0,ER_CANT_DROP_FIELD_OR_KEY
+  ALTER TABLE t2 DROP COLUMN a;
+
+--connection writer
+--error 0,ER_BAD_FIELD_ERROR
+--reap
+
+}
+--enable_query_log
+--connection default
+DROP TABLE t1, t2, t3;
+
+
+# Close connections
+--disconnect locker
+--disconnect writer
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/mysql.test'
--- a/mysql-test/t/mysql.test	2009-03-02 10:03:13 +0000
+++ b/mysql-test/t/mysql.test	2009-03-19 10:07:30 +0000
@@ -341,4 +341,37 @@ EOF
 
 remove_file $MYSQLTEST_VARDIR/tmp/bug31060.sql;
 
+#  
+# Bug #41486: extra character appears in BLOB for every ~40Mb after   
+#             mysqldump/import   
+#  
+  
+# Have to change the global variable as the session variable is 
+# read-only.
+set @old_max_allowed_packet = @@global.max_allowed_packet; 
+# 2 MB blob length + some space for the rest of INSERT query
+set @@global.max_allowed_packet = 2 * 1024 * 1024 + 1024; 
+
+# Create a new connection since the global max_allowed_packet
+# has no effect for the current connection
+connect (con1, localhost, root,,);
+connection con1; 
+
+CREATE TABLE t1(data LONGBLOB);  
+INSERT INTO t1 SELECT REPEAT('1', 2*1024*1024);  
+  
+--exec $MYSQL_DUMP test t1 >$MYSQLTEST_VARDIR/tmp/bug41486.sql  
+# Check that the mysql client does not insert extra newlines when loading  
+# strings longer than client's max_allowed_packet  
+--exec $MYSQL --max_allowed_packet=1M test < $MYSQLTEST_VARDIR/tmp/bug41486.sql 2>&1  
+SELECT LENGTH(data) FROM t1;  
+  
+remove_file $MYSQLTEST_VARDIR/tmp/bug41486.sql; 
+DROP TABLE t1;  
+
+connection default;
+disconnect con1;
+
+set @@global.max_allowed_packet = @old_max_allowed_packet; 
+ 
 --echo End of 5.0 tests

=== modified file 'mysql-test/t/mysqlbinlog.test'
--- a/mysql-test/t/mysqlbinlog.test	2009-02-24 14:35:45 +0000
+++ b/mysql-test/t/mysqlbinlog.test	2009-03-05 13:35:03 +0000
@@ -18,7 +18,7 @@ insert into t2 values ();
 # set @a:=1
 # insert into t2 values (@a);
 
-# test for load data and load data distributed among the several 
+# test for load data and load data distributed among the several
 # files (we need to fill up first binlog)
 load data infile '../std_data_ln/words.dat' into table t1;
 load data infile '../std_data_ln/words.dat' into table t1;
@@ -103,7 +103,7 @@ select "--- --position --" as "";
 --replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/
 --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --position=231 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002
 
-# Bug#7853 (mysqlbinlog does not accept input from stdin)
+# Bug#7853 mysqlbinlog does not accept input from stdin
 --disable_query_log
 select "--- reading stdin --" as "";
 --enable_query_log
@@ -117,7 +117,7 @@ select "--- reading stdin --" as "";
 drop table t1,t2;
 
 #
-#BUG#14157: utf8 encoding in binlog without set character_set_client
+# Bug#14157 utf8 encoding in binlog without set character_set_client
 #
 flush logs;
 --write_file $MYSQLTEST_VARDIR/tmp/bug14157.sql
@@ -130,8 +130,8 @@ EOF
 --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug14157.sql
 --remove_file $MYSQLTEST_VARDIR/tmp/bug14157.sql
 
-# resulted binlog, parly consisting of multi-byte utf8 chars, 
-# must be digestable for both client and server. In 4.1 the client 
+# resulted binlog, parly consisting of multi-byte utf8 chars,
+# must be digestable for both client and server. In 4.1 the client
 # should use default-character-set same as the server.
 --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000004 | $MYSQL
 select * from t5  /* must be (1),(1) */;
@@ -157,7 +157,7 @@ select * from t5 order by c1;
 drop table t5;
 
 #
-# Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails 
+# Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails
 #
 --disable_warnings
 drop procedure if exists p1;
@@ -174,7 +174,6 @@ flush logs;
 call p1();
 drop procedure p1;
 --error ER_SP_DOES_NOT_EXIST
-
 call p1();
 --replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/
 --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007
@@ -217,14 +216,14 @@ flush logs;
 
 #
 # Bug#28293 missed '#' sign in the hex dump when the dump length
-# is divisible by 16.
+#           is divisible by 16.
 #
 
 CREATE TABLE t1 (c1 CHAR(10));
 # we need this for getting fixed timestamps inside of this test
-flush logs;
+FLUSH LOGS;
 INSERT INTO t1 VALUES ('0123456789');
-flush logs;
+FLUSH LOGS;
 DROP TABLE t1;
 
 # We create a table, patch, and load the output into it
@@ -232,11 +231,11 @@ DROP TABLE t1;
 # We can easily see if a 'Query' line is missing the '#' character
 # as described in the original bug
 
---disable_query_log 
-CREATE TABLE patch (a blob);
+--disable_query_log
+CREATE TABLE patch (a BLOB);
 --exec $MYSQL_BINLOG --hexdump --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLTEST_VARDIR/log/master-bin.000011 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat
 eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat'
-     INTO TABLE patch FIELDS TERMINATED by '' LINES STARTING BY '#';
+     INTO TABLE patch FIELDS TERMINATED BY '' LINES STARTING BY '#';
 --remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat
 --enable_query_log
 
@@ -248,49 +247,51 @@ SELECT COUNT(*) AS `BUG#28293_expect_1` 
 DROP TABLE patch;
 
 #
-# Bug #29928: incorrect connection_id() restoring from mysqlbinlog out
+# Bug#29928 incorrect connection_id() restoring from mysqlbinlog out
 #
-flush logs;
-create table t1(a int);
-insert into t1 values(connection_id()); 
-let $a= `select a from t1`;
-flush logs;
+FLUSH LOGS;
+CREATE TABLE t1(a INT);
+INSERT INTO t1 VALUES(connection_id());
+let $a= `SELECT a FROM t1`;
+FLUSH LOGS;
 --exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/log/master-bin.000013 > $MYSQLTEST_VARDIR/tmp/bug29928.sql
-drop table t1;
-connect (con1, localhost, root, , test);                                            
+DROP TABLE t1;
+connect (con1, localhost, root, , test);
 connection con1;
 --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug29928.sql
 --remove_file $MYSQLTEST_VARDIR/tmp/bug29928.sql
-let $b= `select a from t1`;
+let $b= `SELECT a FROM t1`;
 disconnect con1;
 connection default;
-let $c= `select $a=$b`;
+let $c= `SELECT $a=$b`;
 --echo $c
-drop table t1;
+DROP TABLE t1;
 
 echo shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql;
 error 1;
 exec $MYSQL_BINLOG $MYSQL_TEST_DIR/std_data/corrupt-relay-bin.000624 > $MYSQLTEST_VARDIR/tmp/bug31793.sql;
+remove_file $MYSQLTEST_VARDIR/tmp/bug31793.sql;
 
 #
-# Bug #37313  	BINLOG Contains Incorrect server id
+# Bug#37313 BINLOG Contains Incorrect server id
 #
 
-let $save_server_id= `select @@global.server_id`;
-let $s_id_max=`select (1 << 32) - 1`;
-eval set @@global.server_id= $s_id_max;
+let $binlog_file=  $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog;
+let $save_server_id= `SELECT @@global.server_id`;
+let $s_id_max= `SELECT (1 << 32) - 1`;
+eval SET @@global.server_id= $s_id_max;
 
-reset master;
-flush logs;
---exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog
+RESET MASTER;
+FLUSH LOGS;
+--exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/log/master-bin.000001 > $binlog_file
 --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
-eval select
-(@a:=load_file("$MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog"))
-is not null;
-let $s_id_unsigned= `select @a like "%server id $s_id_max%" /* must return 1 */`;
+eval SELECT
+(@a:=LOAD_FILE("$binlog_file"))
+IS NOT NULL;
+let $s_id_unsigned= `SELECT @a LIKE "%server id $s_id_max%" /* must return 1 */`;
 echo *** Unsigned server_id $s_id_max is found: $s_id_unsigned ***;
 
-eval set @@global.server_id= $save_server_id;
---remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog
+eval SET @@global.server_id= $save_server_id;
+--remove_file $binlog_file
 
 --echo End of 5.0 tests

=== modified file 'mysql-test/t/mysqldump.test'
--- a/mysql-test/t/mysqldump.test	2009-02-19 16:33:28 +0000
+++ b/mysql-test/t/mysqldump.test	2009-03-10 16:53:43 +0000
@@ -1649,6 +1649,20 @@ DROP TABLE t1,t2;
 # We reset concurrent_inserts value to whatever it was at the start of the test
 SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
 
+--echo #
+--echo # Bug #42635: mysqldump includes views that were excluded using 
+--echo #   the --ignore-table option
+--echo #
+
+create database db42635;
+use db42635;
+create table t1 (id int);
+create view db42635.v1 (c) as select * from db42635.t1;
+create view db42635.v2 (c) as select * from db42635.t1;
+--exec $MYSQL_DUMP --skip-comments --ignore-table=db42635.v1 db42635
+use test;
+drop database db42635;
+
 
 --echo #
 --echo # Bug#33550 mysqldump 4.0 compatibility broken

=== modified file 'mysql-test/t/mysqltest.test'
--- a/mysql-test/t/mysqltest.test	2009-03-02 10:03:13 +0000
+++ b/mysql-test/t/mysqltest.test	2009-03-05 13:35:03 +0000
@@ -6,6 +6,9 @@
 # This test uses chmod, can't be run with root permissions
 -- source include/not_as_root.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 # ============================================================================
 #
 # Test of mysqltest itself
@@ -50,7 +53,7 @@ select otto from (select 1 as otto) as t
 
 # ----------------------------------------------------------------------------
 # Negative case(statement):
-# The derived table t1 does not contain a column named 'friedrich' . 
+# The derived table t1 does not contain a column named 'friedrich' .
 # --> ERROR 42S22: Unknown column 'friedrich' in 'field list and
 # --> 1054: Unknown column 'friedrich' in 'field list'
 # ----------------------------------------------------------------------------
@@ -117,7 +120,7 @@ select friedrich from (select 1 as otto)
 # $mysql_errno is a builtin variable of mysqltest and contains the return code
 # of the last command sent to the server.
 #
-#      The following test cases often initialize $mysql_errno to 1064 by 
+#      The following test cases often initialize $mysql_errno to 1064 by
 #      a command with wrong syntax.
 #      Example: --error 1064      To prevent the abort after the error.
 #               garbage ;
@@ -481,7 +484,7 @@ remove_file $MYSQLTEST_VARDIR/tmp/mysqlt
 
 # Allow trailing # comment
 --sleep 1 # Wait for insert delayed to be executed.
---sleep 1 	 # Wait for insert delayed to be executed.
+--sleep 1        # Wait for insert delayed to be executed.
 
 # ----------------------------------------------------------------------------
 # Test error
@@ -1382,7 +1385,7 @@ connection default;
 
 
 # ----------------------------------------------------------------------------
-# TODO Test queries, especially their errormessages... so it's easy to debug 
+# TODO Test queries, especially their errormessages... so it's easy to debug
 # new scripts and diagnose errors
 # ----------------------------------------------------------------------------
 
@@ -1424,7 +1427,7 @@ let $message= `SELECT USER()`;
 
 # The message contains more then 80 characters on multiple lines
 # and is kept between double quotes.
-let $message= 
+let $message=
 "Here comes a very very long message that
     - is longer then 80 characters    and
     - consists of several lines";
@@ -1534,7 +1537,7 @@ remove_file $MYSQLTEST_VARDIR/log/bug117
 remove_file $MYSQLTEST_VARDIR/tmp/bug11731.sql;
 
 #
-# Bug#19890  	mysqltest: "query" command is broken
+# Bug#19890 mysqltest: "query" command is broken
 #
 
 # It should be possible to use the command "query" to force mysqltest to
@@ -1560,7 +1563,7 @@ select "at" as col1, "c" as col2;
 select "at" as col1, "AT" as col2, "c" as col3;
 
 --replace_regex /a/b/ /ct/d/
-select "a" as col1, "ct" as col2; 
+select "a" as col1, "ct" as col2;
 
 --replace_regex /(strawberry)/raspberry and \1/ /blueberry/blackberry/ /potato/tomato/;
 select "strawberry","blueberry","potato";
@@ -1578,7 +1581,7 @@ select "strawberry","blueberry","potato"
 --error 1
 --exec echo "--replace_regex /a b c" | $MYSQL_TEST 2>&1
 --error 1
---exec echo "replace_regex /a /b c ;" | $MYSQL_TEST 2>&1 
+--exec echo "replace_regex /a /b c ;" | $MYSQL_TEST 2>&1
 
 # REQUIREMENT
 #   replace_regex should replace substitutions from left to right in output
@@ -1948,7 +1951,7 @@ SELECT '2' as "my_col1",2 as "my_col2"
 UNION
 SELECT '1',1 from t2;
 
-# 9. Ensure that several result formatting options including "sorted_result" 
+# 9. Ensure that several result formatting options including "sorted_result"
 #    - have all an effect
 #    - "--sorted_result" does not need to be direct before the statement
 #    - Row sorting is applied after modification of the column content
@@ -2154,3 +2157,5 @@ rmdir $MYSQLTEST_VARDIR/tmp/testdir;
 
 --echo End of tests
 
+# Wait till we reached the initial number of concurrent sessions
+--source include/wait_until_count_sessions.inc

=== modified file 'mysql-test/t/read_only.test'
--- a/mysql-test/t/read_only.test	2007-12-10 15:16:21 +0000
+++ b/mysql-test/t/read_only.test	2009-03-03 20:34:18 +0000
@@ -4,6 +4,9 @@
 # should work with embedded server after mysqltest is fixed
 -- source include/not_embedded.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 --disable_warnings
 DROP TABLE IF EXISTS t1,t2,t3;
 --enable_warnings
@@ -40,24 +43,24 @@ connection con1;
 
 select @@global.read_only;
 
---error 1290
+--error ER_OPTION_PREVENTS_STATEMENT
 create table t3 (a int);
 
---error 1290
+--error ER_OPTION_PREVENTS_STATEMENT
 insert into t1 values(1);
 
 # if a statement, after parse stage, looks like it will update a
 # non-temp table, it will be rejected, even if at execution it would
 # have turned out that 0 rows would be updated
---error 1290
+--error ER_OPTION_PREVENTS_STATEMENT
 update t1 set a=1 where 1=0;
 
 # multi-update is special (see sql_parse.cc) so we test it
---error 1290
+--error ER_OPTION_PREVENTS_STATEMENT
 update t1,t2 set t1.a=t2.a+1 where t1.a=t2.a;
 
 # check multi-delete to be sure
---error 1290
+--error ER_OPTION_PREVENTS_STATEMENT
 delete t1,t2 from t1,t2 where t1.a=t2.a;
 
 # With temp tables updates should be accepted:
@@ -71,7 +74,7 @@ insert into t3 values(1);
 insert into t4 select * from t3;
 
 # a non-temp table updated:
---error 1290
+--error ER_OPTION_PREVENTS_STATEMENT
 update t1,t3 set t1.a=t3.a+1 where t1.a=t3.a;
 
 # no non-temp table updated (just swapped):
@@ -79,7 +82,7 @@ update t1,t3 set t3.a=t1.a+1 where t1.a=
 
 update t4,t3 set t4.a=t3.a+1 where t4.a=t3.a;
 
---error 1290
+--error ER_OPTION_PREVENTS_STATEMENT
 delete t1 from t1,t3 where t1.a=t3.a;
 
 delete t3 from t1,t3 where t1.a=t3.a;
@@ -98,11 +101,11 @@ delete t1 from t1,t3 where t1.a=t3.a;
 
 drop table t1;
 
---error 1290
+--error ER_OPTION_PREVENTS_STATEMENT
 insert into t1 values(1);
 
 #
-# BUG #22077 "DROP TEMPORARY TABLE fails with wrong error if read_only is set"
+# Bug#22077 DROP TEMPORARY TABLE fails with wrong error if read_only is set
 #
 # check if DROP TEMPORARY on a non-existing temporary table returns the right
 # error
@@ -114,11 +117,12 @@ drop temporary table ttt;
 drop temporary table if exists ttt;
 
 connection default;
+disconnect con1;
 drop table t1,t2;
 drop user test@localhost;
 
 --echo #
---echo # Bug #27440 read_only allows create and drop database
+--echo # Bug#27440 read_only allows create and drop database
 --echo #
 --disable_warnings
 drop database if exists mysqltest_db1;
@@ -151,3 +155,7 @@ delete from mysql.columns_priv where Use
 flush privileges;
 drop database mysqltest_db1;
 set global read_only=0;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/show_check.test'
--- a/mysql-test/t/show_check.test	2009-03-02 10:03:13 +0000
+++ b/mysql-test/t/show_check.test	2009-03-05 13:35:03 +0000
@@ -1,6 +1,9 @@
 # Uses GRANT commands that usually disabled in embedded server
 -- source include/not_embedded.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 #
 # Test of some show commands
 #
@@ -33,7 +36,7 @@ check table t1 medium;
 check table t1 extended;
 show index from t1;
 --disable_metadata
---error 1062
+--error ER_DUP_ENTRY
 insert into t1 values (5,5,5);
 
 --echo -- Here we enable metadata just to check that the collation of the
@@ -191,14 +194,14 @@ show columns from t1;
 drop table t1;
 
 #
-# Test for Bug #2593 "SHOW CREATE TABLE doesn't properly double quotes"
+# Test for Bug#2593 SHOW CREATE TABLE doesn't properly double quotes
 #
 
 SET @old_sql_mode= @@sql_mode, sql_mode= '';
 SET @old_sql_quote_show_create= @@sql_quote_show_create, sql_quote_show_create= OFF;
 
 ######### hook for WL#1324 #
---error 1103
+--error ER_WRONG_TABLE_NAME
 CREATE TABLE `a/b` (i INT);
 # the above test should WORK when WL#1324 is done,
 # it should be removed and
@@ -224,7 +227,7 @@ CREATE TABLE `a/b` (i INT);
 #SHOW CREATE TABLE """a";
 #DROP TABLE """a";
 #
-#Bug #4374 SHOW TABLE STATUS FROM ignores collation_connection
+#Bug#4374 SHOW TABLE STATUS FROM ignores collation_connection
 #set names latin1;
 #create database `�
 #create table `�`�(a int) engine=heap;
@@ -252,7 +255,7 @@ SET sql_quote_show_create= @old_sql_quot
 SET sql_mode= @old_sql_mode;
 
 #
-# Test for bug #2719 "Heap tables status shows wrong or missing data."
+# Test for Bug#2719 Heap tables status shows wrong or missing data.
 #
 
 select @@max_heap_table_size;
@@ -313,7 +316,7 @@ show table status;
 drop table t1, t2, t3;
 
 #
-# Test for bug #3342 SHOW CREATE DATABASE seems to require DROP privilege
+# Test for Bug#3342 SHOW CREATE DATABASE seems to require DROP privilege
 #
 
 create database mysqltest;
@@ -328,36 +331,39 @@ connect (con1,localhost,mysqltest_1,,mys
 connection con1;
 select * from t1;
 show create database mysqltest;
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 drop table t1;
---error 1044
+--error ER_DBACCESS_DENIED_ERROR
 drop database mysqltest;
+disconnect con1;
 
 connect (con2,localhost,mysqltest_2,,test);
 connection con2;
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 select * from mysqltest.t1;
---error 1044
+--error ER_DBACCESS_DENIED_ERROR
 show create database mysqltest;
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 drop table mysqltest.t1;
---error 1044
+--error ER_DBACCESS_DENIED_ERROR
 drop database mysqltest;
+disconnect con2;
 
 connect (con3,localhost,mysqltest_3,,test);
 connection con3;
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 select * from mysqltest.t1;
---error 1044
+--error ER_DBACCESS_DENIED_ERROR
 show create database mysqltest;
 drop table mysqltest.t1;
 drop database mysqltest;
+disconnect con3;
 
 connection default;
 set names binary;
-delete from mysql.user 
+delete from mysql.user
 where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
-delete from mysql.db   
+delete from mysql.db
 where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
 flush privileges;
 
@@ -371,7 +377,7 @@ flush privileges;
 #drop database `�
 
 # Test that USING <keytype> is always shown in SHOW CREATE TABLE when it was
-# specified during table creation, but not otherwise. (Bug #7235)
+# specified during table creation, but not otherwise. (Bug#7235)
 CREATE TABLE t1 (i int, KEY (i)) ENGINE=MEMORY;
 SHOW CREATE TABLE t1;
 DROP TABLE t1;
@@ -402,7 +408,7 @@ ALTER TABLE t1 ENGINE=MEMORY;
 SHOW CREATE TABLE t1;
 DROP TABLE t1;
 
-# Test for BUG#9439 "Reporting wrong datatype for sub_part on show index"
+# Test for Bug#9439 Reporting wrong datatype for sub_part on show index
 CREATE TABLE t1(
   field1 text NOT NULL,
   PRIMARY KEY(field1(1000))
@@ -412,7 +418,7 @@ show index from t1;
 --disable_metadata
 drop table t1;
 
-# Test for BUG#11635: mysqldump exports TYPE instead of USING for HASH
+# Test for Bug#11635 mysqldump exports TYPE instead of USING for HASH
 create table t1 (
   c1 int NOT NULL,
   c2 int NOT NULL,
@@ -422,7 +428,7 @@ create table t1 (
 SHOW CREATE TABLE t1;
 DROP TABLE t1;
 
-# Test for BUG#93: 4.1 protocl crash on corupted frm and SHOW TABLE STATUS
+# Test for Bug#93 4.1 protocl crash on corupted frm and SHOW TABLE STATUS
 
 flush tables;
 
@@ -430,7 +436,7 @@ flush tables;
 system echo "this is a junk file for test" >> $MYSQLTEST_VARDIR/master-data/test/t1.frm ;
 --replace_column 6 # 7 # 8 # 9 #
 SHOW TABLE STATUS like 't1';
---error 1033
+--error ER_NOT_FORM_FILE
 show create table t1;
 drop table t1;
 
@@ -438,7 +444,7 @@ drop table t1;
 --echo End of 4.1 tests
 
 #
-# BUG 12183 -  SHOW OPEN TABLES behavior doesn't match grammar
+# Bug#12183 SHOW OPEN TABLES behavior doesn't match grammar
 # First we close all open tables with FLUSH tables and then we open some.
 CREATE TABLE txt1(a int);
 CREATE TABLE tyt2(a int);
@@ -456,14 +462,14 @@ DROP TABLE txt1;
 DROP TABLE tyt2;
 DROP TABLE urkunde;
 #
-# BUG #12591 (SHOW TABLES FROM dbname produces wrong error message)
+# Bug#12591 SHOW TABLES FROM dbname produces wrong error message
 #
---error 1049
+--error ER_BAD_DB_ERROR
 SHOW TABLES FROM non_existing_database;
 
 
 #
-# Bug#17203: "sql_no_cache sql_cache" in views created from prepared
+# Bug#17203 "sql_no_cache sql_cache" in views created from prepared
 # statement
 #
 # The problem was that initial user setting was forgotten, and current
@@ -543,7 +549,7 @@ SHOW COLUMNS FROM no_such_table;
 
 
 #
-# Bug #19764: SHOW commands end up in the slow log as table scans
+# Bug#19764 SHOW commands end up in the slow log as table scans
 #
 flush status;
 show status like 'slow_queries';
@@ -555,8 +561,8 @@ select 1 from information_schema.tables 
 show status like 'slow_queries';
 
 #
-# BUG#10491: Server returns data as charset binary SHOW CREATE TABLE or SELECT
-# FROM I_S.
+# BUG#10491 Server returns data as charset binary SHOW CREATE TABLE or SELECT
+#           FROM I_S.
 #
 
 #
@@ -671,7 +677,7 @@ SHOW TRIGGERS LIKE 't1';
 
 --echo ----------------------------------------------------------------
 
-SELECT 
+SELECT
   TRIGGER_CATALOG,
   TRIGGER_SCHEMA,
   TRIGGER_NAME,
@@ -827,7 +833,7 @@ DROP DATABASE mysqltest1;
 use test;
 
 #
-# Bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
+# Bug#28808 log_queries_not_using_indexes variable dynamic change is ignored
 #
 flush status;
 show variables like "log_queries_not_using_indexes";
@@ -843,7 +849,7 @@ select 1 from information_schema.tables 
 show status like 'slow_queries';
 
 #
-# Bug #30088: Can't disable myisam-recover by a value of ""
+# Bug#30088 Can't disable myisam-recover by a value of ""
 #
 show variables like 'myisam_recover_options';
 
@@ -868,3 +874,7 @@ show create table t1;
 drop table t1;
 
 --echo End of 5.0 tests
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/skip_name_resolve.test'
--- a/mysql-test/t/skip_name_resolve.test	2005-12-14 12:18:24 +0000
+++ b/mysql-test/t/skip_name_resolve.test	2009-03-05 13:35:03 +0000
@@ -1,7 +1,10 @@
 # Can't be tested with embedded server
--- source include/not_embedded.inc
+--source include/not_embedded.inc
 
-# Bug #8471: IP address with mask fail when skip-name-resolve is on
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+# Bug#8471 IP address with mask fail when skip-name-resolve is on
 GRANT ALL ON test.* TO mysqltest_1@'127.0.0.1/255.255.255.255';
 SHOW GRANTS FOR mysqltest_1@'127.0.0.1/255.255.255.255';
 REVOKE ALL ON test.* FROM mysqltest_1@'127.0.0.1/255.255.255.255';
@@ -9,12 +12,17 @@ DROP USER mysqltest_1@'127.0.0.1/255.255
 
 # End of 4.1 tests
 
-# Bug #13407 "Remote connecting crashes server".
+# Bug#13407 Remote connecting crashes server
 # Server crashed when one used USER() function in connection for which
 # was impossible to obtain peer hostname.
 connect (con1, 127.0.0.1, root, , test, $MASTER_MYPORT, );
 --replace_column 1 #
-select user();
+SELECT USER();
 --replace_column 1 <id> 3 <host> 5 <command> 6 <time> 7 <state> 8 <info>
-show processlist;
+SHOW PROCESSLIST;
 connection default;
+disconnect con1;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/sp-security.test'
--- a/mysql-test/t/sp-security.test	2007-03-23 11:12:11 +0000
+++ b/mysql-test/t/sp-security.test	2009-03-05 13:35:03 +0000
@@ -5,6 +5,9 @@
 # Can't test with embedded server that doesn't support grants
 -- source include/not_embedded.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 connect (con1root,localhost,root,,);
 
 connection con1root;
@@ -156,7 +159,7 @@ call db1_secret.stamp(6);
 select db1_secret.db();
 
 #
-# BUG#2777
+# Bug#2777 Stored procedure doesn't observe definer's rights
 #
 
 connection con1root;
@@ -215,7 +218,7 @@ call q();
 select * from t2;
 
 #
-# BUG#6030: Stored procedure has no appropriate DROP privilege
+# Bug#6030 Stored procedure has no appropriate DROP privilege
 # (or ALTER for that matter)
 
 # still connection con2user1 in db2
@@ -330,7 +333,7 @@ flush privileges;
 drop table t1;
 
 #
-# BUG#9503: reseting correct parameters of thread after error in SP function
+# Bug#9503 reseting correct parameters of thread after error in SP function
 #
 connect (root,localhost,root,,test);
 connection root;
@@ -366,10 +369,12 @@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM
 drop function bug_9503;
 use test;
 drop database mysqltest;
+connection default;
+disconnect root;
 
 #
 # correct value from current_user() in function run from "security definer"
-# (BUG#7291)
+# (Bug#7291 Stored procedures: wrong CURRENT_USER value)
 #
 connection con1root;
 use test;
@@ -398,10 +403,10 @@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM
 drop user user1@localhost;
 
 #
-# Bug #12318: Wrong error message when accessing an inaccessible stored
+# Bug#12318 Wrong error message when accessing an inaccessible stored
 # procedure in another database when the current database is
 # information_schema.
-# 
+#
 
 --disable_warnings
 drop database if exists mysqltest_1;
@@ -438,7 +443,7 @@ revoke usage on *.* from mysqltest_1@loc
 drop user mysqltest_1@localhost;
 
 #
-# BUG#12812 create view calling a function works without execute right
+# Bug#12812 create view calling a function works without execute right
 #           on function
 delimiter |;
 --disable_warnings
@@ -464,7 +469,7 @@ delimiter ;|
 
 
 #
-# BUG#14834: Server denies to execute Stored Procedure
+# Bug#14834 Server denies to execute Stored Procedure
 #
 # The problem here was with '_' in the database name.
 #
@@ -507,7 +512,7 @@ drop database db_bug14834;
 
 
 #
-# BUG#14533: 'desc tbl' in stored procedure causes error
+# Bug#14533 'desc tbl' in stored procedure causes error
 # ER_TABLEACCESS_DENIED_ERROR
 #
 create database db_bug14533;
@@ -546,20 +551,20 @@ drop database db_bug14533;
 
 
 #
-# BUG#7787: Stored procedures: improper warning for "grant execute" statement
+# Bug#7787 Stored procedures: improper warning for "grant execute" statement
 #
 
 # Prepare.
 
 CREATE DATABASE db_bug7787;
-use db_bug7787;
+USE db_bug7787;
 
 # Test.
 
 CREATE PROCEDURE p1()
-  SHOW INNODB STATUS; 
+  SHOW INNODB STATUS;
 
-GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost; 
+GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost;
 
 # Cleanup.
 
@@ -569,7 +574,7 @@ use test;
 
 
 #
-# WL#2897: Complete definer support in the stored routines.
+# WL#2897 Complete definer support in the stored routines.
 #
 # The following cases are tested:
 #   1. check that if DEFINER-clause is not explicitly specified, stored routines
@@ -614,7 +619,7 @@ GRANT ALL PRIVILEGES ON mysqltest.* TO m
 --echo ---> connection: mysqltest_2_con
 --connection mysqltest_2_con
 
-use mysqltest;
+USE mysqltest;
 
 CREATE PROCEDURE wl2897_p1() SELECT 1;
 
@@ -626,7 +631,7 @@ CREATE FUNCTION wl2897_f1() RETURNS INT 
 --echo ---> connection: mysqltest_1_con
 --connection mysqltest_1_con
 
-use mysqltest;
+USE mysqltest;
 
 --error ER_SPECIFIC_ACCESS_DENIED_ERROR
 CREATE DEFINER=root@localhost PROCEDURE wl2897_p2() SELECT 2;
@@ -652,7 +657,7 @@ CREATE DEFINER='a @ b @ c'@localhost FUN
 --echo ---> connection: con1root
 --connection con1root
 
-use mysqltest;
+USE mysqltest;
 
 SHOW CREATE PROCEDURE wl2897_p1;
 SHOW CREATE PROCEDURE wl2897_p3;
@@ -672,7 +677,7 @@ DROP DATABASE mysqltest;
 
 
 #
-# BUG#13198: SP executes if definer does not exist
+# Bug#13198 SP executes if definer does not exist
 #
 
 # Prepare environment.
@@ -702,7 +707,7 @@ GRANT ALL PRIVILEGES ON mysqltest.* TO m
 --echo ---> connection: mysqltest_1_con
 --connection mysqltest_1_con
 
-use mysqltest;
+USE mysqltest;
 
 CREATE PROCEDURE bug13198_p1()
   SELECT 1;
@@ -720,7 +725,7 @@ SELECT bug13198_f1();
 --echo ---> connection: mysqltest_2_con
 --connection mysqltest_2_con
 
-use mysqltest;
+USE mysqltest;
 
 CALL bug13198_p1();
 
@@ -742,7 +747,7 @@ DROP USER mysqltest_1@localhost;
 --echo ---> connection: mysqltest_2_con
 --connection mysqltest_2_con
 
-use mysqltest;
+USE mysqltest;
 
 --error ER_NO_SUCH_USER
 CALL bug13198_p1();
@@ -764,8 +769,8 @@ DROP DATABASE mysqltest;
 
 
 #
-# Bug#19857 - When a user with CREATE ROUTINE priv creates a routine,
-#             it results in NULL p/w
+# Bug#19857 When a user with CREATE ROUTINE priv creates a routine,
+#           it results in NULL p/w
 #
 
 # Can't test with embedded server that doesn't support grants
@@ -780,7 +785,7 @@ SELECT Host,User,Password FROM mysql.use
 --echo ---> connection: mysqltest_2_con
 --connection mysqltest_2_con
 
-use test;
+USE test;
 
 DELIMITER //;
   CREATE PROCEDURE sp19857() DETERMINISTIC
@@ -814,8 +819,7 @@ DROP USER user19857@localhost;
 
 
 #
-# BUG#18630: Arguments of suid routine calculated in wrong security
-# context
+# Bug#18630 Arguments of suid routine calculated in wrong security context
 #
 # Arguments of suid routines were calculated in definer's security
 # context instead of caller's context thus creating security hole.
@@ -886,3 +890,7 @@ DROP FUNCTION f_suid;
 DROP TABLE t1;
 
 --echo End of 5.0 tests.
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/sp_notembedded.test'
--- a/mysql-test/t/sp_notembedded.test	2006-10-04 11:09:37 +0000
+++ b/mysql-test/t/sp_notembedded.test	2009-03-03 20:34:18 +0000
@@ -1,14 +1,17 @@
 # Can't test with embedded server
 -- source include/not_embedded.inc
 
---sleep 2
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 --disable_warnings
 drop table if exists t1,t3;
 --enable_warnings
 delimiter |;
 
+
 #
-# BUG#4902: Stored procedure with SHOW WARNINGS leads to packet error
+# Bug#4902: Stored procedure with SHOW WARNINGS leads to packet error
 #
 # Added tests for show grants command
 --disable_warnings
@@ -47,7 +50,7 @@ drop procedure bug4902_2|
 
 
 #
-# BUG#5278: Stored procedure packets out of order if SET PASSWORD.
+# Bug#5278: Stored procedure packets out of order if SET PASSWORD.
 #
 --disable_warnings
 drop function if exists bug5278|
@@ -58,13 +61,16 @@ begin
   return 'okay';
 end|
 
---error 1133
+--error ER_PASSWORD_NO_MATCH
 select bug5278()|
---error 1133
+--error ER_PASSWORD_NO_MATCH
 select bug5278()|
 drop function bug5278|
 
 
+#
+# Bug#3583: query cache doesn't work for stored procedures
+#
 --disable_warnings
 drop table if exists t1|
 --enable_warnings
@@ -72,9 +78,6 @@ create table t1 (
 	id   char(16) not null default '',
         data int not null
 )|
-#
-# BUG#3583: query cache doesn't work for stored procedures
-#
 --disable_warnings
 drop procedure if exists bug3583|
 --enable_warnings
@@ -110,8 +113,9 @@ delete from t1|
 drop procedure bug3583|
 drop table t1|
 
+
 #
-# BUG#6807: Stored procedure crash if CREATE PROCEDURE ... KILL QUERY
+# Bug#6807: Stored procedure crash if CREATE PROCEDURE ... KILL QUERY
 #
 --disable_warnings
 drop procedure if exists bug6807|
@@ -125,16 +129,16 @@ begin
   select 'Not reached';
 end|
 
---error 1317
+--error ER_QUERY_INTERRUPTED
 call bug6807()|
---error 1317
+--error ER_QUERY_INTERRUPTED
 call bug6807()|
 
 drop procedure bug6807|
 
 
 #
-# BUG#10100: function (and stored procedure?) recursivity problem
+# Bug#10100: function (and stored procedure?) recursivity problem
 #
 --disable_warnings
 drop function if exists bug10100f|
@@ -233,11 +237,11 @@ begin
   close c;
 end|
 
-#end of the stack checking
+# end of the stack checking
 set @@max_sp_recursion_depth=255|
 set @var=1|
-#disable log because error about stack overrun contains numbers which
-#depend on a system
+# disable log because error about stack overrun contains numbers which
+# depend on a system
 -- disable_result_log
 -- error ER_STACK_OVERRUN_NEED_MORE
 call bug10100p(255, @var)|
@@ -266,6 +270,7 @@ drop table t3|
 
 delimiter ;|
 
+
 #
 # Bug#15298 SHOW GRANTS FOR CURRENT_USER: Incorrect output in DEFINER context
 #
@@ -282,6 +287,11 @@ call 15298_1();
 call 15298_2();
 
 connection default;
+disconnect con1;
 drop user mysqltest_1@localhost;
 drop procedure 15298_1;
 drop procedure 15298_2;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/ssl-big.test'
--- a/mysql-test/t/ssl-big.test	2007-07-13 02:06:33 +0000
+++ b/mysql-test/t/ssl-big.test	2009-03-03 20:34:18 +0000
@@ -4,12 +4,15 @@
 -- source include/have_ssl.inc
 -- source include/big_test.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 --disable_warnings
 DROP TABLE IF EXISTS t1, t2;
 --enable_warnings
 
 #
-# Bug #29579 Clients using SSL can hang the server
+# Bug#29579 Clients using SSL can hang the server
 #
 
 connect (ssl_con,localhost,root,,,,,SSL);
@@ -18,7 +21,7 @@ create table t1 (a int);
 
 disconnect ssl_con;
 
-  
+
 --disable_query_log
 --disable_result_log
 
@@ -26,31 +29,36 @@ let $count= 2000;
 while ($count)
 {
   connect (ssl_con,localhost,root,,,,,SSL);
-  
+
   eval insert into t1 values ($count);
   dec $count;
-  
-  # This select causes the net buffer to fill as the server sends the results 
+
+  # This select causes the net buffer to fill as the server sends the results
   # but the client doesn't reap the results. The results are larger each time
   # through the loop, so that eventually the buffer is completely full
   # at the exact moment the server attempts to the close the connection with
   # the lock held.
   send select * from t1;
-  
+
   # now send the quit the command so the server will initiate the shutdown.
-  send_quit ssl_con; 
-  
+  send_quit ssl_con;
+
   # if the server is hung, this will hang too:
   connect (ssl_con2,localhost,root,,,,,SSL);
-  
+
   # no hang if we get here, close and retry
   disconnect ssl_con2;
   disconnect ssl_con;
-}  
+}
 --enable_query_log
 --enable_result_log
 
 connect (ssl_con,localhost,root,,,,,SSL);
 
 drop table t1;
+connection default;
+disconnect ssl_con;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
 

=== modified file 'mysql-test/t/ssl.test'
--- a/mysql-test/t/ssl.test	2007-03-05 09:03:42 +0000
+++ b/mysql-test/t/ssl.test	2009-03-03 20:34:18 +0000
@@ -3,6 +3,9 @@
 
 -- source include/have_ssl.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 connect (ssl_con,localhost,root,,,,,SSL);
 
 # Check ssl turned on
@@ -14,4 +17,9 @@ SHOW STATUS LIKE 'Ssl_cipher';
 # Check ssl turned on
 SHOW STATUS LIKE 'Ssl_cipher';
 
+connection default;
+disconnect ssl_con;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
 

=== modified file 'mysql-test/t/ssl_compress.test'
--- a/mysql-test/t/ssl_compress.test	2007-03-05 09:03:42 +0000
+++ b/mysql-test/t/ssl_compress.test	2009-03-03 20:34:18 +0000
@@ -4,6 +4,9 @@
 -- source include/have_ssl.inc
 -- source include/have_compress.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 connect (ssl_compress_con,localhost,root,,,,,SSL COMPRESS);
 
 # Check ssl turned on
@@ -20,3 +23,10 @@ SHOW STATUS LIKE 'Ssl_cipher';
 
 # Check compression turned on
 SHOW STATUS LIKE 'Compression';
+
+connection default;
+disconnect ssl_compress_con;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/status.test'
--- a/mysql-test/t/status.test	2008-12-29 12:06:53 +0000
+++ b/mysql-test/t/status.test	2009-03-03 20:34:18 +0000
@@ -1,6 +1,9 @@
 # embedded server causes different stat
 -- source include/not_embedded.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 # PS causes different statistics
 --disable_ps_protocol
 
@@ -208,3 +211,7 @@ DROP PROCEDURE p1;
 DROP FUNCTION f1;
 
 # End of 5.0 tests
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/type_bit_innodb.test'
--- a/mysql-test/t/type_bit_innodb.test	2006-04-05 00:54:58 +0000
+++ b/mysql-test/t/type_bit_innodb.test	2009-03-11 20:54:57 +0000
@@ -40,7 +40,9 @@ drop table t1;
 create table t1 (a bit) engine=innodb;
 insert into t1 values (b'0'), (b'1'), (b'000'), (b'100'), (b'001');
 select hex(a) from t1;
---error 1062
+# It is not deterministic which duplicate will be seen first
+--replace_regex /(.*Duplicate entry )'.*'( for key.*)/\1''\2/
+--error ER_DUP_ENTRY
 alter table t1 add unique (a);
 drop table t1;
 

=== modified file 'mysql-test/t/union.test'
--- a/mysql-test/t/union.test	2007-12-19 14:59:05 +0000
+++ b/mysql-test/t/union.test	2009-03-18 14:07:13 +0000
@@ -933,17 +933,25 @@ SELECT a INTO @v FROM (
   SELECT a FROM t1
 ) alias;
 
-SELECT a INTO OUTFILE 'union.out.file' FROM (
+--let $outfile = $MYSQLTEST_VARDIR/tmp/union.out.file
+--error 0,1
+--remove_file $outfile
+
+--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
+eval SELECT a INTO OUTFILE '$outfile' FROM (
   SELECT a FROM t1
   UNION
   SELECT a FROM t1 WHERE 0
 ) alias;
+--remove_file $outfile
 
-SELECT a INTO DUMPFILE 'union.out.file2' FROM (
+--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
+eval SELECT a INTO DUMPFILE '$outfile' FROM (
   SELECT a FROM t1
   UNION
   SELECT a FROM t1 WHERE 0
 ) alias;
+--remove_file $outfile
 
 #
 # INTO will not be allowed in subqueries in version 5.1 and above.
@@ -954,27 +962,42 @@ SELECT a FROM (
   SELECT a INTO @v FROM t1
 ) alias;
 
-SELECT a FROM (
+--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
+eval SELECT a FROM (
   SELECT a FROM t1
   UNION
-  SELECT a INTO OUTFILE 'union.out.file3' FROM t1
+  SELECT a INTO OUTFILE '$outfile' FROM t1
 ) alias;
+--remove_file $outfile
 
-SELECT a FROM (
+--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
+eval SELECT a FROM (
   SELECT a FROM t1
   UNION
-  SELECT a INTO DUMPFILE 'union.out.file4' FROM t1
+  SELECT a INTO DUMPFILE '$outfile' FROM t1
 ) alias;
+--remove_file $outfile
 
 SELECT a FROM t1 UNION SELECT a INTO @v FROM t1;
-SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file5' FROM t1;
-SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file6' FROM t1;
+
+--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
+eval SELECT a FROM t1 UNION SELECT a INTO OUTFILE '$outfile' FROM t1;
+--remove_file $outfile
+
+--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
+eval SELECT a FROM t1 UNION SELECT a INTO DUMPFILE '$outfile' FROM t1;
+--remove_file $outfile
+
 --error ER_WRONG_USAGE
 SELECT a INTO @v FROM t1 UNION SELECT a FROM t1;
+
+--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
 --error ER_WRONG_USAGE
-SELECT a INTO OUTFILE 'union.out.file7' FROM t1 UNION SELECT a FROM t1;
+eval SELECT a INTO OUTFILE '$outfile' FROM t1 UNION SELECT a FROM t1;
+
+--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
 --error ER_WRONG_USAGE
-SELECT a INTO DUMPFILE 'union.out.file8' FROM t1 UNION SELECT a FROM t1;
+eval SELECT a INTO DUMPFILE '$outfile' FROM t1 UNION SELECT a FROM t1;
 
 DROP TABLE t1;
 

=== modified file 'mysql-test/t/user_limits.test'
--- a/mysql-test/t/user_limits.test	2005-04-04 19:43:58 +0000
+++ b/mysql-test/t/user_limits.test	2009-03-03 20:34:18 +0000
@@ -3,9 +3,12 @@
 #
 
 # Requires privileges to be enabled
--- source include/not_embedded.inc
+--source include/not_embedded.inc
 
-# Prepare play-ground 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+# Prepare play-ground
 --disable_warnings
 drop table if exists t1;
 --enable_warnings
@@ -28,11 +31,11 @@ connect (mqph, localhost, mysqltest_1,,)
 connection mqph;
 select * from t1;
 select * from t1;
---error 1226
+--error ER_USER_LIMIT_REACHED
 select * from t1;
 connect (mqph2, localhost, mysqltest_1,,);
 connection mqph2;
---error 1226
+--error ER_USER_LIMIT_REACHED
 select * from t1;
 # cleanup
 connection default;
@@ -50,12 +53,12 @@ select * from t1;
 select * from t1;
 delete from t1;
 delete from t1;
---error 1226
+--error ER_USER_LIMIT_REACHED
 delete from t1;
 select * from t1;
 connect (muph2, localhost, mysqltest_1,,);
 connection muph2;
---error 1226
+--error ER_USER_LIMIT_REACHED
 delete from t1;
 select * from t1;
 # Cleanup
@@ -74,7 +77,7 @@ connect (mcph2, localhost, mysqltest_1,,
 connection mcph2;
 select * from t1;
 --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
---error 1226
+--error ER_USER_LIMIT_REACHED
 connect (mcph3, localhost, mysqltest_1,,);
 # Old connection is still ok
 select * from t1;
@@ -83,7 +86,7 @@ select * from t1;
 disconnect mcph1;
 disconnect mcph2;
 --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
---error 1226
+--error ER_USER_LIMIT_REACHED
 connect (mcph3, localhost, mysqltest_1,,);
 # Cleanup
 connection default;
@@ -101,13 +104,13 @@ connect (muc2, localhost, mysqltest_1,,)
 connection muc2;
 select * from t1;
 --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
---error 1226
+--error ER_USER_LIMIT_REACHED
 connect (muc3, localhost, mysqltest_1,,);
 # Closing of one of connections should help
 disconnect muc1;
 connect (muc3, localhost, mysqltest_1,,);
 select * from t1;
-# Changing of limit should also help (and immediately) 
+# Changing of limit should also help (and immediately)
 connection default;
 grant usage on *.* to mysqltest_1@localhost with max_user_connections 3;
 flush user_resources;
@@ -115,7 +118,7 @@ connect (muc4, localhost, mysqltest_1,,)
 connection muc4;
 select * from t1;
 --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
---error 1226
+--error ER_USER_LIMIT_REACHED
 connect (muc5, localhost, mysqltest_1,,);
 # Clean up
 connection default;
@@ -129,10 +132,10 @@ drop user mysqltest_1@localhost;
 select @@session.max_user_connections, @@global.max_user_connections;
 # Local max_user_connections variable can't be set directly
 # since this limit is per-account
---error 1229
-set session max_user_connections= 2; 
+--error ER_GLOBAL_VARIABLE
+set session max_user_connections= 2;
 # But it is ok to set global max_user_connections
-set global max_user_connections= 2; 
+set global max_user_connections= 2;
 select @@session.max_user_connections, @@global.max_user_connections;
 # Let us check that global limit works
 grant usage on *.* to mysqltest_1@localhost;
@@ -144,7 +147,7 @@ connect (muca2, localhost, mysqltest_1,,
 connection muca2;
 select * from t1;
 --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
---error 1203
+--error ER_TOO_MANY_USER_CONNECTIONS
 connect (muca3, localhost, mysqltest_1,,);
 # Now we are testing that per-account limit prevails over gloabl limit
 connection default;
@@ -154,16 +157,20 @@ connect (muca3, localhost, mysqltest_1,,
 connection muca3;
 select @@session.max_user_connections, @@global.max_user_connections;
 --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
---error 1226
+--error ER_USER_LIMIT_REACHED
 connect (muca4, localhost, mysqltest_1,,);
 # Cleanup
 connection default;
 disconnect muca1;
 disconnect muca2;
 disconnect muca3;
-set global max_user_connections= 0; 
+set global max_user_connections= 0;
 drop user mysqltest_1@localhost;
 --enable_ps_protocol
 
 # Final cleanup
 drop table t1;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysql-test/t/view.test'
--- a/mysql-test/t/view.test	2008-11-28 16:13:12 +0000
+++ b/mysql-test/t/view.test	2009-03-03 20:34:18 +0000
@@ -10,12 +10,12 @@ use test;
 #
 
 # create view on nonexistent table
--- error 1146
+-- error ER_NO_SUCH_TABLE
 create view v1 (c,d) as select a,b from t1;
 
 create temporary table t1 (a int, b int);
 # view on temporary table
--- error 1352
+-- error ER_VIEW_SELECT_TMPTABLE
 create view v1 (c) as select b+1 from t1;
 drop table t1;
 
@@ -42,18 +42,18 @@ select * from t1;
 select c from v1;
 show create table v1;
 show create view v1;
--- error 1347
+-- error ER_WRONG_OBJECT
 show create view t1;
 drop table t1;
 
 # try to use fields from underlying table
--- error 1054
+-- error ER_BAD_FIELD_ERROR
 select a from v1;
--- error 1054
+-- error ER_BAD_FIELD_ERROR
 select v1.a from v1;
--- error 1054
+-- error ER_BAD_FIELD_ERROR
 select b from v1;
--- error 1054
+-- error ER_BAD_FIELD_ERROR
 select v1.b from v1;
 
 # view with different algorithms (explain output differs)
@@ -64,9 +64,9 @@ select c from v2;
 explain extended select c from v2;
 
 # try to use underlying table fields in VIEW creation process
--- error 1054
+-- error ER_BAD_FIELD_ERROR
 create view v3 (c) as select a+1 from v1;
--- error 1054
+-- error ER_BAD_FIELD_ERROR
 create view v3 (c) as select b+1 from v1;
 
 
@@ -104,7 +104,7 @@ select * from v1;
 select * from v2;
 
 # try to create VIEW with name of existing VIEW
--- error 1050
+-- error ER_TABLE_EXISTS_ERROR
 create view v1 (c,d,e,f) as select a,b, a in (select a+2 from t1), a = all (select a from t1) from t1;
 
 # 'or replace' should work in this case
@@ -112,7 +112,7 @@ create or replace view v1 (c,d,e,f) as s
 
 # try to ALTER unexisting VIEW
 drop view v2;
--- error 1146
+-- error ER_NO_SUCH_TABLE
 alter view v2 as select c, d from v1;
 
 # 'or replace' on unexisting view
@@ -126,15 +126,15 @@ select * from v1;
 select * from v2;
 
 # try to drop nonexistent VIEW
--- error 1051
+-- error ER_BAD_TABLE_ERROR
 drop view v100;
 
 # try to drop table with DROP VIEW
--- error 1347
+-- error ER_WRONG_OBJECT
 drop view t1;
 
 # try to drop VIEW with DROP TABLE
--- error 1051
+-- error ER_BAD_TABLE_ERROR
 drop table v1;
 
 # try to drop table with DROP VIEW
@@ -175,7 +175,7 @@ drop table t1;
 # syntax compatibility
 #
 create table t1 (a int);
--- error 1368
+-- error ER_VIEW_NONUPD_CHECK
 create view v1 as select distinct a from t1 WITH CHECK OPTION;
 create view v1 as select a from t1 WITH CHECK OPTION;
 create view v2 as select a from t1 WITH CASCADED CHECK OPTION;
@@ -232,10 +232,10 @@ create algorithm=temptable view v2 (a,c)
 select is_updatable from information_schema.views where table_name='v2';
 select is_updatable from information_schema.views where table_name='v1';
 # try to update expression
--- error 1348
+-- error ER_NONUPDATEABLE_COLUMN
 update v1 set c=a+c;
 # try to update VIEW with forced TEMPORARY TABLE algorithm
--- error 1288
+-- error ER_NON_UPDATABLE_TABLE
 update v2 set a=a+c;
 # updatable field of updateable view
 update v1 set a=a+c;
@@ -254,10 +254,10 @@ insert into t2 values (10), (20);
 create view v1 (a,c) as select a, b+1 from t1;
 create algorithm=temptable view v2 (a,c) as select a, b+1 from t1;
 # try to update expression
--- error 1348
+-- error ER_NONUPDATEABLE_COLUMN
 update t2,v1 set v1.c=v1.a+v1.c where t2.x=v1.a;
 # try to update VIEW with forced TEMPORARY TABLE algorithm
--- error 1288
+-- error ER_NON_UPDATABLE_TABLE
 update t2,v2 set v2.a=v2.v2.a+c where t2.x=v2.a;
 # updatable field of updateable view
 update t2,v1 set v1.a=v1.a+v1.c where t2.x=v1.a;
@@ -292,7 +292,7 @@ insert into t1 values (1,2), (2,3), (3,4
 create view v1 (a,c) as select a, b+1 from t1;
 create algorithm=temptable view v2 (a,c) as select a, b+1 from t1;
 # try to update VIEW with forced TEMPORARY TABLE algorithm
--- error 1288
+-- error ER_NON_UPDATABLE_TABLE
 delete from v2 where c < 4;
 # updatable field of updateable view
 delete from v1 where c < 4;
@@ -311,7 +311,7 @@ insert into t2 values (1), (2), (3), (4)
 create view v1 (a,c) as select a, b+1 from t1;
 create algorithm=temptable view v2 (a,c) as select a, b+1 from t1;
 # try to update VIEW with forced TEMPORARY TABLE algorithm
--- error 1288
+-- error ER_NON_UPDATABLE_TABLE
 delete v2 from t2,v2 where t2.x=v2.a;
 # updatable field of updateable view
 delete v1 from t2,v1 where t2.x=v1.a;
@@ -331,7 +331,7 @@ set updatable_views_with_limit=NO;
 update v1 set x=x+1;
 update v2 set x=x+1;
 update v1 set x=x+1 limit 1;
--- error 1288
+-- error ER_NON_UPDATABLE_TABLE
 update v2 set x=x+1 limit 1;
 set updatable_views_with_limit=YES;
 update v1 set x=x+1 limit 1;
@@ -353,13 +353,13 @@ create view v3 (x,y,z) as select b, a, b
 create view v4 (x,y,z) as select c+1, b, a from t1;
 create algorithm=temptable view v5 (x,y,z) as select c, b, a from t1;
 # try insert to VIEW with fields duplicate
--- error 1471
+-- error ER_NON_INSERTABLE_TABLE
 insert into v3 values (-60,4,30);
 # try insert to VIEW with expression in SELECT list
--- error 1471
+-- error ER_NON_INSERTABLE_TABLE
 insert into v4 values (-60,4,30);
 # try insert to VIEW using temporary table algorithm
--- error 1471
+-- error ER_NON_INSERTABLE_TABLE
 insert into v5 values (-60,4,30);
 insert into v1 values (-60,4,30);
 insert into v1 (z,y,x) values (50,6,-100);
@@ -381,13 +381,13 @@ create view v3 (x,y,z) as select b, a, b
 create view v4 (x,y,z) as select c+1, b, a from t1;
 create algorithm=temptable view v5 (x,y,z) as select c, b, a from t1;
 # try insert to VIEW with fields duplicate
--- error 1471
+-- error ER_NON_INSERTABLE_TABLE
 insert into v3 select c, b, a from t2;
 # try insert to VIEW with expression in SELECT list
--- error 1471
+-- error ER_NON_INSERTABLE_TABLE
 insert into v4 select c, b, a from t2;
 # try insert to VIEW using temporary table algorithm
--- error 1471
+-- error ER_NON_INSERTABLE_TABLE
 insert into v5 select c, b, a from t2;
 insert into v1 select c, b, a from t2;
 insert into v1 (z,y,x) select a+20,b+2,-100 from t2;
@@ -424,7 +424,7 @@ create table t1 (a int, primary key(a));
 insert into t1 values (1), (2), (3), (200);
 create ALGORITHM=TEMPTABLE view v1 (x) as select a from t1;
 create view v2 (y) as select x from v1;
--- error 1288
+-- error ER_NON_UPDATABLE_TABLE
 update v2 set y=10 where y=2;
 drop table t1;
 drop view v1,v2;
@@ -479,17 +479,17 @@ create table t1 (col1 char(5),col2 char(
 create view v1 as select * from t1;
 drop table t1;
 create table t1 (col1 char(5),newcol2 char(5));
--- error 1356
+-- error ER_VIEW_INVALID
 insert into v1 values('a','aa');
 drop table t1;
--- error 1356
+-- error ER_VIEW_INVALID
 select * from v1;
 drop view v1;
 
 #
 # check of duplication of column names
 #
--- error 1060
+-- error ER_DUP_FIELDNAME
 create view v1 (a,a) as select 'a','a';
 
 #
@@ -559,7 +559,7 @@ drop table t1;
 #
 # error on preparation
 #
--- error 1096
+-- error ER_NO_TABLES_USED
 CREATE VIEW v02 AS SELECT * FROM DUAL;
 SHOW TABLES;
 
@@ -575,7 +575,7 @@ drop view v1;
 #
 create table t1 (col1 int,col2 char(22));
 create view v1 as select * from t1;
--- error 1347
+-- error ER_WRONG_OBJECT
 create index i1 on v1 (col1);
 drop view v1;
 drop table t1;
@@ -735,7 +735,7 @@ create function x1 () returns int return
 create table t1 (s1 int);
 create view v1 as select x1() from t1;
 drop function x1;
--- error 1356
+-- error ER_VIEW_INVALID
 select * from v1;
 --replace_column 8 # 12 # 13 #
 show table status;
@@ -786,10 +786,10 @@ create table t1 (a int);
 create view v1 as select a from t1;
 create view v3 as select a from t1;
 create database mysqltest;
--- error 1450
+-- error ER_FORBID_SCHEMA_CHANGE
 rename table v1 to mysqltest.v1;
 rename table v1 to v2;
---error 1050
+--error ER_TABLE_EXISTS_ERROR
 rename table v3 to v1, v2 to t1;
 drop table t1;
 drop view v2,v3;
@@ -802,19 +802,19 @@ create view v1 as select 'a',1;
 create view v2 as select * from v1 union all select * from v1;
 create view v3 as select * from v2 where 1 = (select `1` from v2);
 create view v4 as select * from v3;
--- error 1242
+-- error ER_SUBQUERY_NO_1_ROW
 select * from v4;
 drop view v4, v3, v2, v1;
 
 #
 # VIEW over SELECT with prohibited clauses
 #
--- error 1350
+-- error ER_VIEW_SELECT_CLAUSE
 create view v1 as select 5 into @w;
--- error 1350
+-- error ER_VIEW_SELECT_CLAUSE
 create view v1 as select 5 into outfile 'ttt';
 create table t1 (a int);
--- error 1350
+-- error ER_VIEW_SELECT_CLAUSE
 create view v1 as select a from t1 procedure analyse();
 -- error ER_VIEW_SELECT_DERIVED
 create view v1 as select 1 from (select 1) as d1;
@@ -839,109 +839,109 @@ create table t2 (col1 int);
 create view v1 as select * from t1;
 create view v2 as select * from v1;
 create view v3 as select v2.col1 from v2,t2 where v2.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update v2 set col1 = (select max(col1) from v1);
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update v2 set col1 = (select max(col1) from t1);
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 update v2 set col1 = (select max(col1) from v2);
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update v2,t2 set v2.col1 = (select max(col1) from v1) where v2.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update t1,t2 set t1.col1 = (select max(col1) from v1) where t1.col1 = t2.col1;
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 update v1,t2 set v1.col1 = (select max(col1) from v1) where v1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update t2,v2 set v2.col1 = (select max(col1) from v1) where v2.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update t2,t1 set t1.col1 = (select max(col1) from v1) where t1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update t2,v1 set v1.col1 = (select max(col1) from v1) where v1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update v2,t2 set v2.col1 = (select max(col1) from t1) where v2.col1 = t2.col1;
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 update t1,t2 set t1.col1 = (select max(col1) from t1) where t1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update v1,t2 set v1.col1 = (select max(col1) from t1) where v1.col1 = t2.col1;
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 update t2,v2 set v2.col1 = (select max(col1) from t1) where v2.col1 = t2.col1;
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 update t2,t1 set t1.col1 = (select max(col1) from t1) where t1.col1 = t2.col1;
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 update t2,v1 set v1.col1 = (select max(col1) from t1) where v1.col1 = t2.col1;
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 update v2,t2 set v2.col1 = (select max(col1) from v2) where v2.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update t1,t2 set t1.col1 = (select max(col1) from v2) where t1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update v1,t2 set v1.col1 = (select max(col1) from v2) where v1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update t2,v2 set v2.col1 = (select max(col1) from v2) where v2.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update t2,t1 set t1.col1 = (select max(col1) from v2) where t1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update t2,v1 set v1.col1 = (select max(col1) from v2) where v1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update v3 set v3.col1 = (select max(col1) from v1);
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update v3 set v3.col1 = (select max(col1) from t1);
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update v3 set v3.col1 = (select max(col1) from v2);
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 update v3 set v3.col1 = (select max(col1) from v3);
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 delete from v2 where col1 = (select max(col1) from v1);
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 delete from v2 where col1 = (select max(col1) from t1);
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 delete from v2 where col1 = (select max(col1) from v2);
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 delete v2 from v2,t2 where (select max(col1) from v1) > 0 and v2.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 delete t1 from t1,t2 where (select max(col1) from v1) > 0 and t1.col1 = t2.col1;
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 delete v1 from v1,t2 where (select max(col1) from v1) > 0 and v1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 delete v2 from v2,t2 where (select max(col1) from t1) > 0 and v2.col1 = t2.col1;
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 delete t1 from t1,t2 where (select max(col1) from t1) > 0 and t1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 delete v1 from v1,t2 where (select max(col1) from t1) > 0 and v1.col1 = t2.col1;
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 delete v2 from v2,t2 where (select max(col1) from v2) > 0 and v2.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 delete t1 from t1,t2 where (select max(col1) from v2) > 0 and t1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 delete v1 from v1,t2 where (select max(col1) from v2) > 0 and v1.col1 = t2.col1;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 insert into v2 values ((select max(col1) from v1));
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 insert into t1 values ((select max(col1) from v1));
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 insert into v2 values ((select max(col1) from v1));
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 insert into v2 values ((select max(col1) from t1));
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 insert into t1 values ((select max(col1) from t1));
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 insert into v2 values ((select max(col1) from t1));
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 insert into v2 values ((select max(col1) from v2));
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 insert into t1 values ((select max(col1) from v2));
--- error 1093
+-- error ER_UPDATE_TABLE_USED
 insert into v2 values ((select max(col1) from v2));
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 insert into v3 (col1) values ((select max(col1) from v1));
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 insert into v3 (col1) values ((select max(col1) from t1));
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 insert into v3 (col1) values ((select max(col1) from v2));
-#check with TZ tables in list
--- error 1443
+# check with TZ tables in list
+-- error ER_VIEW_PREVENT_UPDATE
 insert into v3 (col1) values ((select CONVERT_TZ('20050101000000','UTC','MET') from v2));
 insert into v3 (col1) values ((select CONVERT_TZ('20050101000000','UTC','MET') from t2));
--- error 1048
+-- error ER_BAD_NULL_ERROR
 insert into mysql.time_zone values ('', (select CONVERT_TZ('20050101000000','UTC','MET') from t2));
 # temporary table algorithm view should be equal to subquery in the from clause
 create algorithm=temptable view v4 as select * from t1;
@@ -957,7 +957,7 @@ drop table t1,t2;
 #
 create table t1 (s1 int);
 create view v1 as select * from t1;
--- error 1347
+-- error ER_WRONG_OBJECT
 handler v1 open as xx;
 drop view v1;
 drop table t1;
@@ -1005,7 +1005,7 @@ create table t2 (a int);
 create view v1 as select * from t1;
 lock tables t1 read, v1 read;
 select * from v1;
--- error 1100
+-- error ER_TABLE_NOT_LOCKED
 select * from t2;
 drop view v1;
 drop table t1, t2;
@@ -1017,7 +1017,7 @@ create table t1 (a int);
 create view v1 as select * from t1 where a < 2 with check option;
 # simple insert
 insert into v1 values(1);
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 insert into v1 values(3);
 # simple insert with ignore
 insert ignore into v1 values (2),(3),(0);
@@ -1026,7 +1026,7 @@ select * from t1;
 delete from t1;
 # INSERT SELECT test
 insert into v1 SELECT 1;
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 insert into v1 SELECT 3;
 # prepare data for next check
 create table t2 (a int);
@@ -1034,9 +1034,9 @@ insert into t2 values (2),(3),(0);
 # INSERT SELECT with ignore test
 insert ignore into v1 SELECT a from t2;
 select * from t1;
-#simple UPDATE test
+# simple UPDATE test
 update v1 set a=-1 where a=0;
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 update v1 set a=2 where a=1;
 select * from t1;
 # prepare data for next check
@@ -1063,12 +1063,12 @@ create view v2 as select * from v1 where
 create view v3 as select * from v1 where a > 0 with cascaded check option;
 insert into v2 values (1);
 insert into v3 values (1);
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 insert into v2 values (0);
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 insert into v3 values (0);
 insert into v2 values (2);
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 insert into v3 values (2);
 select * from t1;
 drop view v3,v2,v1;
@@ -1080,7 +1080,7 @@ drop table t1;
 create table t1 (a int, primary key (a));
 create view v1 as select * from t1 where a < 2 with check option;
 insert into v1 values (1) on duplicate key update a=2;
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 insert into v1 values (1) on duplicate key update a=2;
 insert ignore into v1 values (1) on duplicate key update a=2;
 select * from t1;
@@ -1093,13 +1093,13 @@ drop table t1;
 create table t1 (s1 int);
 create view v1 as select * from t1;
 create view v2 as select * from v1;
--- error 1146
+-- error ER_NO_SUCH_TABLE
 alter view v1 as select * from v2;
--- error 1146
+-- error ER_NO_SUCH_TABLE
 alter view v1 as select * from v1;
--- error 1146
+-- error ER_NO_SUCH_TABLE
 create or replace view v1 as select * from v2;
--- error 1146
+-- error ER_NO_SUCH_TABLE
 create or replace view v1 as select * from v1;
 drop view v2,v1;
 drop table t1;
@@ -1134,7 +1134,7 @@ select * from t2;
 # check it with check option
 alter view v2 as select * from t2 where s1 in (select s1 from t1) with check option;
 insert into v2 values (5);
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 update v2 set s1 = 1;
 insert into t1 values (1);
 update v2 set s1 = 1;
@@ -1166,7 +1166,7 @@ drop table t1;
 create table t1 (s1 tinyint);
 create view v1 as select * from t1 where s1 <> 0 with local check option;
 create view v2 as select * from v1 with cascaded check option;
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 insert into v2 values (0);
 drop view v2, v1;
 drop table t1;
@@ -1177,7 +1177,7 @@ drop table t1;
 create table t1 (s1 int);
 create view v1 as select * from t1 where s1 < 5 with check option;
 #single value
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 insert ignore into v1 values (6);
 #several values
 insert ignore into v1 values (6),(3);
@@ -1191,7 +1191,7 @@ drop table t1;
 create table t1 (s1 tinyint);
 create trigger t1_bi before insert on t1 for each row set new.s1 = 500;
 create view v1 as select * from t1 where s1 <> 127 with check option;
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 insert into v1 values (0);
 select * from v1;
 select * from t1;
@@ -1205,7 +1205,7 @@ drop table t1;
 create table t1 (s1 tinyint);
 create view v1 as select * from t1 where s1 <> 0;
 create view v2 as select * from v1 where s1 <> 1 with cascaded check option;
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 insert into v2 values (0);
 select * from v2;
 select * from t1;
@@ -1218,7 +1218,7 @@ drop table t1;
 # fixed length fields
 create table t1 (a int, b char(10));
 create view v1 as select * from t1 where a != 0 with check option;
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 load data infile '../std_data_ln/loaddata3.dat' into table v1 fields terminated by '' enclosed by '' ignore 1 lines;
 select * from t1;
 select * from v1;
@@ -1231,7 +1231,7 @@ drop table t1;
 # variable length fields
 create table t1 (a text, b text);
 create view v1 as select * from t1 where a <> 'Field A' with check option;
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 load data infile '../std_data_ln/loaddata2.dat' into table v1 fields terminated by ',' enclosed by '''';
 select concat('|',a,'|'), concat('|',b,'|') from t1;
 select concat('|',a,'|'), concat('|',b,'|') from v1;
@@ -1247,14 +1247,14 @@ drop table t1;
 #
 create table t1 (s1 smallint);
 create view v1 as select * from t1 where 20 < (select (s1) from t1);
--- error 1471
+-- error ER_NON_INSERTABLE_TABLE
 insert into v1 values (30);
 create view v2 as select * from t1;
 create view v3 as select * from t1 where 20 < (select (s1) from v2);
--- error 1471
+-- error ER_NON_INSERTABLE_TABLE
 insert into v3 values (30);
 create view v4 as select * from v2 where 20 < (select (s1) from t1);
--- error 1471
+-- error ER_NON_INSERTABLE_TABLE
 insert into v4 values (30);
 drop view v4, v3, v2, v1;
 drop table t1;
@@ -1312,7 +1312,7 @@ select * from t2;
 # view without primary key
 create view v2 (a,b) as select t1.b as a, t2.a as b from t1, t2;
 set updatable_views_with_limit=NO;
--- error 1288
+-- error ER_NON_UPDATABLE_TABLE
 update v2 set a= 10 where a=200 limit 1;
 set updatable_views_with_limit=DEFAULT;
 # just view selects
@@ -1340,14 +1340,14 @@ create table t2 (a int, primary key (a),
 insert into t2 values (1000, 2000);
 create view v3 (a,b) as select t1.a as a, t2.a as b from t1, t2;
 # inserting into join view without field list
--- error 1394
+-- error ER_VIEW_NO_INSERT_FIELD_LIST
 insert into v3 values (1,2);
--- error 1394
+-- error ER_VIEW_NO_INSERT_FIELD_LIST
 insert into v3 select * from t2;
 # inserting in several tables of join view
--- error 1393
+-- error ER_VIEW_MULTIUPDATE
 insert into v3(a,b) values (1,2);
--- error 1393
+-- error ER_VIEW_MULTIUPDATE
 insert into v3(a,b) select * from t2;
 # correct inserts into join view
 insert into v3(a) values (1);
@@ -1358,11 +1358,11 @@ insert into v3(a) values (1) on duplicat
 select * from t1;
 select * from t2;
 # try delete from join view
--- error 1395
+-- error ER_VIEW_DELETE_MERGE_VIEW
 delete from v3;
--- error 1395
+-- error ER_VIEW_DELETE_MERGE_VIEW
 delete v3,t1 from v3,t1;
--- error 1395
+-- error ER_VIEW_DELETE_MERGE_VIEW
 delete t1,v3 from t1,v3;
 # delete from t1 just to reduce result set size
 delete from t1;
@@ -1385,7 +1385,7 @@ drop view v3;
 drop tables t1,t2;
 
 #
-# View field names should be case insensitive 
+# View field names should be case insensitive
 #
 create table t1(f1 int);
 create view v1 as select f1 from t1;
@@ -1394,7 +1394,7 @@ drop view v1;
 drop table t1;
 
 #
-# Resolving view fields in subqueries in VIEW (Bug #6394)
+# Resolving view fields in subqueries in VIEW (Bug#6394)
 #
 create table t1(c1 int);
 create table t2(c2 int);
@@ -1411,7 +1411,7 @@ drop view v2, v1;
 drop table t1, t2;
 
 #
-# view over other view setup (BUG#7433)
+# view over other view setup (Bug#7433)
 #
 CREATE TABLE t1 (C1 INT, C2 INT);
 CREATE TABLE t2 (C2 INT);
@@ -1422,10 +1422,10 @@ drop view v2, v1;
 drop table t1, t2;
 
 #
-# view and group_concat() (BUG#7116)
+# view and group_concat() (Bug#7116)
 #
-create table t1 (col1 char(5),col2 int,col3 int); 
-insert into t1 values ('one',10,25), ('two',10,50), ('two',10,50), ('one',20,25), ('one',30,25); 
+create table t1 (col1 char(5),col2 int,col3 int);
+insert into t1 values ('one',10,25), ('two',10,50), ('two',10,50), ('one',20,25), ('one',30,25);
 create view v1 as select * from t1;
 select col1,group_concat(col2,col3) from t1 group by col1;
 select col1,group_concat(col2,col3) from v1 group by col1;
@@ -1433,18 +1433,18 @@ drop view v1;
 drop table t1;
 
 #
-# Item_ref resolved as view field (BUG#6894)
+# Item_ref resolved as view field (Bug#6894)
 #
 create table t1 (s1 int, s2 char);
 create view v1 as select s1, s2 from t1;
--- error 1054
+-- error ER_BAD_FIELD_ERROR
 select s2 from v1 vq1 where 2 = (select count(*) from v1 vq2 having vq1.s2 = vq2.s2);
 select s2 from v1 vq1 where 2 = (select count(*) aa from v1 vq2 having vq1.s2 = aa);
 drop view v1;
 drop table t1;
 
 #
-# Test case for bug #9398 CREATE TABLE with SELECT from a multi-table view
+# Test case for Bug#9398 CREATE TABLE with SELECT from a multi-table view
 #
 CREATE TABLE t1 (a1 int);
 CREATE TABLE t2 (a2 int);
@@ -1460,7 +1460,7 @@ DROP VIEW v1;
 DROP TABLE t1,t2,t3;
 
 #
-# Test for BUG#8703 "insert into table select from view crashes"
+# Test for Bug#8703 insert into table select from view crashes
 #
 create table t1 (a int);
 create table t2 like t1;
@@ -1472,84 +1472,84 @@ drop view v1;
 drop table t1,t2,t3;
 
 #
-# Test for BUG #6106: query over a view using subquery for the underlying table
+# Test for Bug#6106 query over a view using subquery for the underlying table
 #
 
-CREATE TABLE t1 (col1 int PRIMARY KEY, col2 varchar(10)); 
-INSERT INTO t1 VALUES(1,'trudy'); 
-INSERT INTO t1 VALUES(2,'peter'); 
-INSERT INTO t1 VALUES(3,'sanja'); 
-INSERT INTO t1 VALUES(4,'monty'); 
-INSERT INTO t1 VALUES(5,'david'); 
-INSERT INTO t1 VALUES(6,'kent'); 
-INSERT INTO t1 VALUES(7,'carsten'); 
-INSERT INTO t1 VALUES(8,'ranger'); 
-INSERT INTO t1 VALUES(10,'matt'); 
-CREATE TABLE t2 (col1 int, col2 int, col3 char(1)); 
-INSERT INTO t2 VALUES (1,1,'y'); 
-INSERT INTO t2 VALUES (1,2,'y'); 
-INSERT INTO t2 VALUES (2,1,'n'); 
-INSERT INTO t2 VALUES (3,1,'n'); 
-INSERT INTO t2 VALUES (4,1,'y'); 
-INSERT INTO t2 VALUES (4,2,'n'); 
-INSERT INTO t2 VALUES (4,3,'n'); 
-INSERT INTO t2 VALUES (6,1,'n'); 
+CREATE TABLE t1 (col1 int PRIMARY KEY, col2 varchar(10));
+INSERT INTO t1 VALUES(1,'trudy');
+INSERT INTO t1 VALUES(2,'peter');
+INSERT INTO t1 VALUES(3,'sanja');
+INSERT INTO t1 VALUES(4,'monty');
+INSERT INTO t1 VALUES(5,'david');
+INSERT INTO t1 VALUES(6,'kent');
+INSERT INTO t1 VALUES(7,'carsten');
+INSERT INTO t1 VALUES(8,'ranger');
+INSERT INTO t1 VALUES(10,'matt');
+CREATE TABLE t2 (col1 int, col2 int, col3 char(1));
+INSERT INTO t2 VALUES (1,1,'y');
+INSERT INTO t2 VALUES (1,2,'y');
+INSERT INTO t2 VALUES (2,1,'n');
+INSERT INTO t2 VALUES (3,1,'n');
+INSERT INTO t2 VALUES (4,1,'y');
+INSERT INTO t2 VALUES (4,2,'n');
+INSERT INTO t2 VALUES (4,3,'n');
+INSERT INTO t2 VALUES (6,1,'n');
 INSERT INTO t2 VALUES (8,1,'y');
- 
-CREATE VIEW v1 AS SELECT * FROM t1; 
 
-SELECT a.col1,a.col2,b.col2,b.col3 
+CREATE VIEW v1 AS SELECT * FROM t1;
+
+SELECT a.col1,a.col2,b.col2,b.col3
   FROM t1 a LEFT JOIN t2 b ON a.col1=b.col1
-    WHERE b.col2 IS NULL OR 
+    WHERE b.col2 IS NULL OR
           b.col2=(SELECT MAX(col2) FROM t2 b WHERE b.col1=a.col1);
 
-SELECT a.col1,a.col2,b.col2,b.col3 
+SELECT a.col1,a.col2,b.col2,b.col3
   FROM v1 a LEFT JOIN t2 b ON a.col1=b.col1
-    WHERE b.col2 IS NULL OR 
+    WHERE b.col2 IS NULL OR
           b.col2=(SELECT MAX(col2) FROM t2 b WHERE b.col1=a.col1);
 
-CREATE VIEW v2 AS SELECT * FROM t2; 
+CREATE VIEW v2 AS SELECT * FROM t2;
 
 SELECT a.col1,a.col2,b.col2,b.col3
   FROM v2 b RIGHT JOIN v1 a ON a.col1=b.col1
     WHERE b.col2 IS NULL OR
-          b.col2=(SELECT MAX(col2) FROM v2 b WHERE b.col1=a.col1); 
+          b.col2=(SELECT MAX(col2) FROM v2 b WHERE b.col1=a.col1);
 
-# Tests from the report for bug #6107
+# Tests from the report for Bug#6107
 
 SELECT a.col1,a.col2,b.col2,b.col3
   FROM v2 b RIGHT JOIN v1 a ON a.col1=b.col1
     WHERE a.col1 IN (1,5,9) AND
          (b.col2 IS NULL OR
-          b.col2=(SELECT MAX(col2) FROM v2 b WHERE b.col1=a.col1)); 
+          b.col2=(SELECT MAX(col2) FROM v2 b WHERE b.col1=a.col1));
 
 CREATE VIEW v3 AS SELECT * FROM t1 WHERE col1 IN (1,5,9);
 
 SELECT a.col1,a.col2,b.col2,b.col3
   FROM v2 b RIGHT JOIN v3 a ON a.col1=b.col1
     WHERE b.col2 IS NULL OR
-          b.col2=(SELECT MAX(col2) FROM v2 b WHERE b.col1=a.col1); 
- 
+          b.col2=(SELECT MAX(col2) FROM v2 b WHERE b.col1=a.col1);
+
 DROP VIEW v1,v2,v3;
 DROP TABLE t1,t2;
 
 #
-# BUG#8490 Select from views containing subqueries causes server to hang 
-# forever.
+# Bug#8490 Select from views containing subqueries causes server to hang
+#          forever.
 #
 create table t1 as select 1 A union select 2 union select 3;
 create table t2 as select * from t1;
 create view v1 as select * from t1 where a in (select * from t2);
 select * from v1 A, v1 B where A.a = B.a;
 create table t3 as select a a,a b from t2;
-create view v2 as select * from t3 where 
+create view v2 as select * from t3 where
   a in (select * from t1) or b in (select * from t2);
 select * from v2 A, v2 B where A.a = B.b;
 drop view v1, v2;
 drop table t1, t2, t3;
 
 #
-# Test case for bug #8528: select from view over multi-table view
+# Test case for Bug#8528 select from view over multi-table view
 #
 CREATE TABLE t1 (a int);
 CREATE TABLE t2 (b int);
@@ -1565,7 +1565,7 @@ DROP VIEW v2,v1;
 
 DROP TABLE t1, t2;
 #
-# Correct restoring view name in SP table locking BUG#9758
+# Correct restoring view name in SP table locking Bug#9758
 #
 create table t1 (a int);
 create view v1 as select sum(a) from t1 group by a;
@@ -1594,7 +1594,7 @@ SELECT d, c FROM v1 ORDER BY d,c;
 DROP VIEW v1;
 DROP TABLE t1, t2;
 #
-# using sum(distinct ) & avg(distinct ) in views (BUG#7015)
+# using sum(distinct ) & avg(distinct ) in views (Bug#7015)
 #
 create table t1 (s1 int);
 create view  v1 as select sum(distinct s1) from t1;
@@ -1606,14 +1606,14 @@ drop view v1;
 drop table t1;
 
 #
-# using cast(... as decimal) in views (BUG#11387);
+# using cast(... as decimal) in views (Bug#11387);
 #
 create view v1 as select cast(1 as decimal);
 select * from v1;
 drop view v1;
 
 #
-# Bug#11298 insert into select from VIEW produces incorrect result when 
+# Bug#11298 insert into select from VIEW produces incorrect result when
 #           using ORDER BY
 create table t1(f1 int);
 create table t2(f2 int);
@@ -1627,7 +1627,7 @@ drop view v1;
 drop table t1,t2,t3;
 
 #
-# Generation unique names for columns, and correct names check (BUG#7448)
+# Generation unique names for columns, and correct names check (Bug#7448)
 #
 # names with ' and \
 create view v1 as select '\\','\\shazam';
@@ -1670,24 +1670,24 @@ create view v1 as select 's1', 's1', s1 
 select * from v1;
 drop view v1;
 # underlying field name conflict with set name
--- error 1060
+-- error ER_DUP_FIELDNAME
 create view v1 as select 1 as s1, 's1', s1 from t1;
--- error 1060
+-- error ER_DUP_FIELDNAME
 create view v1 as select 's1', s1, 1 as s1 from t1;
 drop table t1;
 # set names differ by case only
--- error 1060
+-- error ER_DUP_FIELDNAME
 create view v1(k, K) as select 1,2;
 
 #
-# using time_format in view (BUG#7521)
+# using time_format in view (Bug#7521)
 #
 create view v1 as SELECT TIME_FORMAT(SEC_TO_TIME(3600),'%H:%i') as t;
 select * from v1;
 drop view v1;
 
 #
-# evaluation constant functions in WHERE (BUG#4663)
+# evaluation constant functions in WHERE (Bug#4663)
 #
 create table t1 (a timestamp default now());
 create table t2 (b timestamp default now());
@@ -1708,7 +1708,7 @@ DROP VIEW v1;
 DROP TABLE t1;
 
 #
-# checking views after some view with error (BUG#11337)
+# checking views after some view with error (Bug#11337)
 #
 CREATE TABLE t1 (col1 time);
 CREATE TABLE t2 (col1 time);
@@ -1749,7 +1749,7 @@ drop view v1, v2, v3, v4, v5, v6;
 drop table t2,t3;
 
 #
-# bug #11325 Wrong date comparison in views
+# Bug#11325 Wrong date comparison in views
 #
 create table t1 (f1 date);
 insert into t1 values ('2005-01-01'),('2005-02-02');
@@ -1760,7 +1760,7 @@ drop view v1;
 drop table t1;
 
 #
-# using encrypt & substring_index in view (BUG#7024)
+# using encrypt & substring_index in view (Bug#7024)
 #
 CREATE VIEW v1 AS SELECT ENCRYPT("dhgdhgd");
 disable_result_log;
@@ -1772,21 +1772,21 @@ SELECT * FROM v1;
 drop view v1;
 
 #
-# hide underlying tables names in case of imposibility to update (BUG#10773)
+# hide underlying tables names in case of imposibility to update (Bug#10773)
 #
 create table t1 (f59 int, f60 int, f61 int);
 insert into t1 values (19,41,32);
-create view v1 as select f59, f60 from t1 where f59 in  
+create view v1 as select f59, f60 from t1 where f59 in
          (select f59 from t1);
--- error 1288
+-- error ER_NON_UPDATABLE_TABLE
 update v1 set f60=2345;
--- error 1443
+-- error ER_VIEW_PREVENT_UPDATE
 update t1 set f60=(select max(f60) from v1);
 drop view v1;
 drop table t1;
 
 #
-# Using var_samp with view (BUG#10651)
+# Using var_samp with view (Bug#10651)
 #
 create table t1 (s1 int);
 create view v1 as select var_samp(s1) from t1;
@@ -1794,24 +1794,26 @@ show create view v1;
 drop view v1;
 drop table t1;
 
+
 #
 # Correct inserting data check (absence of default value) for view
-# underlying tables (BUG#6443)
+# underlying tables (Bug#6443)
 #
 set sql_mode='strict_all_tables';
 CREATE TABLE t1 (col1 INT NOT NULL, col2 INT NOT NULL);
 CREATE VIEW v1 (vcol1) AS SELECT col1 FROM t1;
 CREATE VIEW v2 (vcol1) AS SELECT col1 FROM t1 WHERE col2 > 2;
--- error 1364
+-- error ER_NO_DEFAULT_FOR_FIELD
 INSERT INTO t1 (col1) VALUES(12);
--- error 1423
+-- error ER_NO_DEFAULT_FOR_VIEW_FIELD
 INSERT INTO v1 (vcol1) VALUES(12);
--- error 1423
+-- error ER_NO_DEFAULT_FOR_VIEW_FIELD
 INSERT INTO v2 (vcol1) VALUES(12);
 set sql_mode=default;
 drop view v2,v1;
 drop table t1;
 
+
 #
 # Bug#11399 Use an alias in a select statement on a view
 #
@@ -1822,8 +1824,9 @@ select f1 as alias from v1;
 drop view v1;
 drop table t1;
 
+
 #
-# Test for bug #6120: SP cache to be invalidated when altering a view
+# Test for Bug#6120 SP cache to be invalidated when altering a view
 #
 
 CREATE TABLE t1 (s1 int, s2 int);
@@ -1842,8 +1845,9 @@ DROP PROCEDURE p1;
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Test for bug #11709 View was ordered by wrong column
+# Test for Bug#11709 View was ordered by wrong column
 #
 create table t1 (f1 int, f2 int);
 create view v1 as select f1 as f3, f2 as f1 from t1;
@@ -1852,8 +1856,9 @@ select * from v1 order by f1;
 drop view v1;
 drop table t1;
 
+
 #
-# Test for bug #11771: wrong query_id in SELECT * FROM <view>
+# Test for Bug#11771 wrong query_id in SELECT * FROM <view>
 #
 CREATE TABLE t1 (f1 char);
 INSERT INTO t1 VALUES ('A');
@@ -1866,8 +1871,9 @@ SELECT * FROM t1;
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# opening table in correct locking mode (BUG#9597)
+# opening table in correct locking mode (Bug#9597)
 #
 CREATE TABLE t1 ( bug_table_seq   INTEGER NOT NULL);
 CREATE OR REPLACE VIEW v1 AS SELECT * from t1;
@@ -1884,8 +1890,9 @@ DROP PROCEDURE p1;
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug #11335 View redefines column types
+# Bug#11335 View redefines column types
 #
 create table t1 (f1 tinyint(1), f2 char(1), f3 varchar(1), f4 geometry, f5 datetime);
 create view v1 as select * from t1;
@@ -1893,8 +1900,9 @@ desc v1;
 drop view v1;
 drop table t1;
 
+
 #
-# Bug #11760 Typo in Item_func_add_time::print() results in NULLs returned
+# Bug#11760 Typo in Item_func_add_time::print() results in NULLs returned
 #             subtime() in view
 create table t1(f1 datetime);
 insert into t1 values('2005.01.01 12:0:0');
@@ -1903,8 +1911,9 @@ select * from v1;
 drop view v1;
 drop table t1;
 
+
 #
-# Test for bug #11412: query over a multitable view with GROUP_CONCAT
+# Test for Bug#11412 query over a multitable view with GROUP_CONCAT
 #
 CREATE TABLE t1 (
   aid int PRIMARY KEY,
@@ -1920,15 +1929,16 @@ INSERT INTO t2 values (1,1), (2,1), (2,2
 
 CREATE VIEW v1 AS SELECT t1.*,t2.pid FROM t1,t2 WHERE t1.aid = t2.aid;
 
-SELECT pid,GROUP_CONCAT(CONCAT(fn,' ',ln) ORDER BY 1) FROM t1,t2 
+SELECT pid,GROUP_CONCAT(CONCAT(fn,' ',ln) ORDER BY 1) FROM t1,t2
   WHERE t1.aid = t2.aid GROUP BY pid;
 SELECT pid,GROUP_CONCAT(CONCAT(fn,' ',ln) ORDER BY 1) FROM v1 GROUP BY pid;
 
 DROP VIEW v1;
 DROP TABLE t1,t2;
 
+
 #
-# Test for bug #12382: SELECT * FROM view after INSERT command
+# Test for Bug#12382 SELECT * FROM view after INSERT command
 #
 
 CREATE TABLE t1 (id int PRIMARY KEY, f varchar(255));
@@ -1942,9 +1952,10 @@ SELECT * FROM v1;
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Test for bug #12470: crash for a simple select from a view defined
-#                      as a join over 5 tables
+# Test for Bug#12470 crash for a simple select from a view defined
+#                    as a join over 5 tables
 
 CREATE TABLE t1 (pk int PRIMARY KEY, b int);
 CREATE TABLE t2 (pk int PRIMARY KEY, fk int, INDEX idx(fk));
@@ -1961,27 +1972,29 @@ SELECT a FROM v1;
 DROP VIEW v1;
 DROP TABLE t1,t2,t3,t4,t5;
 
+
 #
-# Bug #12298 Typo in  function name results in erroneous view being created.
+# Bug#12298 Typo in function name results in erroneous view being created.
 #
 create view v1 as select timestampdiff(day,'1997-01-01 00:00:00','1997-01-02 00:00:00') as f1;
 select * from v1;
 drop view v1;
 
 #
-# repeatable CREATE VIEW statement BUG#12468
+# repeatable CREATE VIEW statement Bug#12468
 #
 create table t1(a int);
 create procedure p1() create view v1 as select * from t1;
 drop table t1;
--- error 1146
+-- error ER_NO_SUCH_TABLE
 call p1();
--- error 1146
+-- error ER_NO_SUCH_TABLE
 call p1();
 drop procedure p1;
 
+
 #
-# Bug #10624 Views with multiple UNION and UNION ALL produce incorrect results
+# Bug#10624 Views with multiple UNION and UNION ALL produce incorrect results
 #
 create table t1 (f1 int);
 create table t2 (f1 int);
@@ -1991,20 +2004,23 @@ create view v1 as select * from t1 union
 select * from v1;
 drop view v1;
 drop table t1,t2;
+
+
+#
+# Test for Bug#10970 view referring a temporary table indirectly
 #
-# Test for bug #10970: view referring a temporary table indirectly
-#                     
 
 CREATE TEMPORARY TABLE t1 (a int);
 CREATE FUNCTION f1 () RETURNS int RETURN (SELECT COUNT(*) FROM t1);
--- error 1352
+-- error ER_VIEW_SELECT_TMPTABLE
 CREATE VIEW v1 AS SELECT f1();
 
 DROP FUNCTION f1;
 DROP TABLE t1;
 
+
 #
-# BUG #12533 (crash on DESCRIBE <view> after renaming base table column)
+# Bug#12533 (crash on DESCRIBE <view> after renaming base table column)
 #
 --disable_warnings
 DROP TABLE IF EXISTS t1;
@@ -2016,13 +2032,14 @@ CREATE VIEW v1 AS SELECT * FROM t1;
 DESCRIBE v1;
 
 ALTER TABLE t1 CHANGE COLUMN f4 f4x CHAR(5);
---error 1356
+--error ER_VIEW_INVALID
 DESCRIBE v1;
 DROP TABLE t1;
 DROP VIEW v1;
 
-# 
-# Bug #12489 wrongly printed strcmp() function results in creation of broken
+
+#
+# Bug#12489 wrongly printed strcmp() function results in creation of broken
 #            view
 create table t1 (f1 char);
 create view v1 as select strcmp(f1,'a') from t1;
@@ -2030,8 +2047,9 @@ select * from v1;
 drop view v1;
 drop table t1;
 
+
 #
-# Bug #12922 if(sum(),...) with group from view returns wrong results 
+# Bug#12922 if(sum(),...) with group from view returns wrong results
 #
 create table t1 (f1 int, f2 int,f3 int);
 insert into t1 values (1,10,20),(2,0,0);
@@ -2039,7 +2057,9 @@ create view v1 as select * from t1;
 select if(sum(f1)>1,f2,f3) from v1 group by f1;
 drop view v1;
 drop table t1;
-# BUG#12941
+
+
+# Bug#12941
 #
 --disable_warnings
 create table t1 (
@@ -2049,7 +2069,7 @@ create table t1 (
 
 create table t2 (
   r_object_id char(16) NOT NULL,
-  i_position int(11) NOT NULL, 
+  i_position int(11) NOT NULL,
   users_names varchar(32) default NULL
 ) Engine = InnoDB;
 --enable_warnings
@@ -2067,22 +2087,24 @@ insert into t2 values('120001a080000542'
 insert into t2 values('120001a080000542',-2, 'guser02');
 
 select v1.r_object_id, v2.users_names from v1, v2
-where (v1.group_name='tstgroup1') and v2.r_object_id=v1.r_object_id 
+where (v1.group_name='tstgroup1') and v2.r_object_id=v1.r_object_id
 order by users_names;
 
 drop view v1, v2;
 drop table t1, t2;
 
-# Bug #6808 - Views: CREATE VIEW v ... FROM t AS v fails
+
+# Bug#6808 Views: CREATE VIEW v ... FROM t AS v fails
 #
 
-create table t1 (s1 int); 
+create table t1 (s1 int);
 create view abc as select * from t1 as abc;
 drop table t1;
 drop view abc;
 
+
 #
-# Bug #12993 View column rename broken in subselect
+# Bug#12993 View column rename broken in subselect
 #
 create table t1(f1 char(1));
 create view v1 as select * from t1;
@@ -2090,15 +2112,17 @@ select * from (select f1 as f2 from v1) 
 drop view v1;
 drop table t1;
 
+
 #
-# Bug #11416 Server crash if using a view that uses function convert_tz
+# Bug#11416 Server crash if using a view that uses function convert_tz
 #
 create view v1 as SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
 select * from v1;
 drop view v1;
 
+
 #
-# Bugs #12963, #13000: wrong creation of VIEW with DAYNAME, DAYOFWEEK, and WEEKDAY
+# Bugs#12963, #13000 wrong creation of VIEW with DAYNAME, DAYOFWEEK, and WEEKDAY
 #
 
 CREATE TABLE t1 (date DATE NOT NULL);
@@ -2128,8 +2152,9 @@ SELECT * FROM v3;
 DROP TABLE t1;
 DROP VIEW  v1, v2, v3;
 
+
 #
-# Bug #13411: crash when using non-qualified view column in HAVING clause 
+# Bug#13411 crash when using non-qualified view column in HAVING clause
 #
 
 CREATE TABLE t1 ( a int, b int );
@@ -2141,8 +2166,9 @@ SELECT v1.a FROM v1 GROUP BY v1.a HAVING
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug #13410: failed name resolution for qualified view column in HAVING 
+# Bug#13410 failed name resolution for qualified view column in HAVING
 #
 
 CREATE TABLE t1 ( a int, b int );
@@ -2156,8 +2182,9 @@ SELECT v_1.a FROM v1 AS v_1 GROUP BY v_1
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug #13327 view wasn't using index for const condition
+# Bug#13327 view wasn't using index for const condition
 #
 
 CREATE TABLE t1 (a INT, b INT, INDEX(a,b));
@@ -2174,8 +2201,9 @@ EXPLAIN SELECT * FROM v2 WHERE a=1;
 DROP VIEW v1,v2;
 DROP TABLE t1,t2,t3;
 
+
 #
-# Bug #13622 Wrong view .frm created if some field's alias contain \n
+# Bug#13622 Wrong view .frm created if some field's alias contain \n
 #
 create table t1 (f1 int);
 create view v1 as select t1.f1 as '123
@@ -2184,7 +2212,8 @@ select * from v1;
 drop view v1;
 drop table t1;
 
-# Bug #14466 lost sort order in GROUP_CONCAT() in a view
+
+# Bug#14466 lost sort order in GROUP_CONCAT() in a view
 #
 create table t1 (f1 int, f2 int);
 insert into t1 values(1,1),(1,2),(1,3);
@@ -2195,8 +2224,9 @@ select * from v2;
 drop view v1,v2;
 drop table t1;
 
+
 #
-# BUG#14026 Crash on second PS execution when using views
+# Bug#14026 Crash on second PS execution when using views
 #
 create table t1 (x int, y int);
 create table t2 (x int, y int, z int);
@@ -2206,8 +2236,8 @@ create table t4 (x int, y int, z int);
 create view v1 as
 select t1.x
 from (
-  (t1 join t2 on ((t1.y = t2.y))) 
-  join 
+  (t1 join t2 on ((t1.y = t2.y)))
+  join
   (t3 left join t4 on (t3.y = t4.y) and (t3.z = t4.z))
 );
 
@@ -2219,8 +2249,9 @@ execute stmt1 using @parm1;
 drop view v1;
 drop table t1,t2,t3,t4;
 
+
 #
-# Bug #14540: OPTIMIZE, ANALYZE, REPAIR applied to not a view
+# Bug#14540 OPTIMIZE, ANALYZE, REPAIR applied to not a view
 #
 
 CREATE TABLE t1(id INT);
@@ -2239,7 +2270,7 @@ DROP VIEW v1;
 
 
 #
-# BUG#14719: Views DEFINER grammar is incorrect
+# Bug#14719 Views DEFINER grammar is incorrect
 #
 
 create definer = current_user() sql security invoker view v1 as select 1;
@@ -2250,8 +2281,9 @@ create definer = current_user sql securi
 show create view v1;
 drop view v1;
 
+
 #
-# Bug #14816 test_if_order_by_key() expected only Item_fields.
+# Bug#14816 test_if_order_by_key() expected only Item_fields.
 #
 create table t1 (id INT, primary key(id));
 insert into t1 values (1),(2);
@@ -2260,8 +2292,9 @@ explain select id from v1 order by id;
 drop view v1;
 drop table t1;
 
+
 #
-# Bug #14850 Item_ref's values wasn't updated
+# Bug#14850 Item_ref's values wasn't updated
 #
 create table t1(f1 int, f2 int);
 insert into t1 values (null, 10), (null,2);
@@ -2271,8 +2304,9 @@ select f1, sum(f2) from v1 group by f1;
 drop view v1;
 drop table t1;
 
+
 #
-# BUG#14885: incorrect SOURCE in view created in a procedure
+# Bug#14885 incorrect SOURCE in view created in a procedure
 # TODO: here SOURCE string must be shown when it will be possible
 #
 --disable_warnings
@@ -2290,8 +2324,9 @@ show create view v1;
 drop view v1;
 drop procedure p1;
 
+
 #
-# BUG#15096: using function with view for view creation
+# Bug#15096 using function with view for view creation
 #
 CREATE VIEW v1 AS SELECT 42 AS Meaning;
 --disable_warnings
@@ -2311,8 +2346,9 @@ select * from v2;
 drop view v2,v1;
 drop function f1;
 
+
 #
-# Bug#14861: aliased column names are not preserved.
+# Bug#14861 aliased column names are not preserved.
 #
 create table t1 (id numeric, warehouse_id numeric);
 create view v1 as select id from t1;
@@ -2330,8 +2366,9 @@ order by v2.receipt_id;
 drop view v2, v1;
 drop table t1;
 
+
 #
-# Bug#16016: MIN/MAX optimization for views
+# Bug#16016 MIN/MAX optimization for views
 #
 
 CREATE TABLE t1 (a int PRIMARY KEY, b int);
@@ -2354,9 +2391,10 @@ EXPLAIN SELECT MIN(a) FROM v1;
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug#16382: grouping name is resolved against a view column name
-#            which coincides with a select column name
+# Bug#16382 grouping name is resolved against a view column name
+#           which coincides with a select column name
 
 CREATE TABLE t1 (x varchar(10));
 INSERT INTO t1 VALUES (null), ('foo'), ('bar'), (null);
@@ -2371,21 +2409,23 @@ SELECT IF(x IS NULL, 'blank', 'not blank
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# BUG#15943: mysql_next_result hangs on invalid SHOW CREATE VIEW
+# Bug#15943 mysql_next_result hangs on invalid SHOW CREATE VIEW
 #
 
 delimiter //;
-drop table if exists t1; 
-drop view if exists v1; 
-create table t1 (id int); 
-create view v1 as select * from t1; 
-drop table t1; 
-show create view v1; 
+drop table if exists t1;
+drop view if exists v1;
+create table t1 (id int);
+create view v1 as select * from t1;
+drop table t1;
+show create view v1;
 drop view v1;
 //
 delimiter ;//
 
+
 #
 # Bug#17726 Not checked empty list caused endless loop
 #
@@ -2400,9 +2440,10 @@ select * from v2;
 drop view v2, v1;
 drop table t1;
 
+
 #
-# Bug #18386: select from view over a table with ORDER BY view_col clause 
-#             given view_col is not an image of any column from the base table
+# Bug#18386 select from view over a table with ORDER BY view_col clause
+#           given view_col is not an image of any column from the base table
 
 CREATE TABLE t1 (a int);
 INSERT INTO t1 VALUES (1), (2);
@@ -2414,9 +2455,10 @@ SELECT my_sqrt FROM v1 ORDER BY my_sqrt;
 DROP VIEW v1;
 DROP TABLE t1;
 
+
+#
+# Bug#18237 invalid count optimization applied to an outer join with a view
 #
-# Bug #18237: invalid count optimization applied to an outer join with a view 
-#             
 
 CREATE TABLE t1 (id int PRIMARY KEY);
 CREATE TABLE t2 (id int PRIMARY KEY);
@@ -2435,14 +2477,15 @@ DROP VIEW v2;
 
 DROP TABLE t1, t2;
 
+
 #
-# Bug #16069: VIEW does return the same results as underlying SELECT
-#             with WHERE condition containing BETWEEN over dates 
+# Bug#16069 VIEW does return the same results as underlying SELECT
+#           with WHERE condition containing BETWEEN over dates
 
 CREATE TABLE t1 (id int NOT NULL PRIMARY KEY,
                  td date DEFAULT NULL, KEY idx(td));
 
-INSERT INTO t1 VALUES 
+INSERT INTO t1 VALUES
  (1, '2005-01-01'), (2, '2005-01-02'), (3, '2005-01-02'),
  (4, '2005-01-03'), (5, '2005-01-04'), (6, '2005-01-05'),
  (7, '2005-01-05'), (8, '2005-01-05'), (9, '2005-01-06');
@@ -2455,8 +2498,9 @@ SELECT * FROM v1 WHERE td BETWEEN CAST('
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# BUG#14308: Recursive view definitions
+# Bug#14308 Recursive view definitions
 #
 # using view only
 create table t1 (a int);
@@ -2486,8 +2530,9 @@ select * from v1;
 drop function f1;
 drop view t1, v1;
 
+
 #
-# Bug #15153: CONVERT_TZ() is not allowed in all places in VIEWs
+# Bug#15153 CONVERT_TZ() is not allowed in all places in VIEWs
 #
 # Error was reported when one tried to use CONVERT_TZ() function
 # select list of view which was processed using MERGE algorithm.
@@ -2498,7 +2543,7 @@ insert into t1 values (20040101000000), 
 create view v1 as select convert_tz(dt, 'UTC', 'Europe/Moscow') as ldt from t1;
 select * from v1;
 drop view v1;
-# And in its where part 
+# And in its where part
 create view v1 as select * from t1 where convert_tz(dt, 'UTC', 'Europe/Moscow') >= 20050101000000;
 select * from v1;
 # Other interesting case - a view which uses convert_tz() function
@@ -2513,9 +2558,10 @@ select * from v2;
 drop view v1, v2;
 drop table t1;
 
+
 #
-# Bug #19490: usage of view specified by a query with GROUP BY
-#             an expression containing non-constant interval
+# Bug#19490 usage of view specified by a query with GROUP BY
+#           an expression containing non-constant interval
 
 CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, d datetime);
 
@@ -2529,8 +2575,9 @@ SELECT * FROM v1;
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug#19077: A nested materialized view is used before being populated.
+# Bug#19077 A nested materialized view is used before being populated.
 #
 CREATE TABLE t1 (i INT, j BIGINT);
 INSERT INTO t1 VALUES (1, 2), (2, 2), (3, 2);
@@ -2540,9 +2587,10 @@ SELECT * FROM v2;
 DROP VIEW v2, v1;
 DROP TABLE t1;
 
+
+#
+# Bug#19573 VIEW with HAVING that refers an alias name
 #
-# Bug #19573: VIEW with HAVING that refers an alias name
-# 
 
 CREATE TABLE t1(
   fName varchar(25) NOT NULL,
@@ -2550,7 +2598,7 @@ CREATE TABLE t1(
   DOB date NOT NULL,
   test_date date NOT NULL,
   uID int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY);
- 
+
 INSERT INTO t1(fName, lName, DOB, test_date) VALUES
   ('Hank', 'Hill', '1964-09-29', '2007-01-01'),
   ('Tom', 'Adams', '1908-02-14', '2007-01-01'),
@@ -2558,8 +2606,8 @@ INSERT INTO t1(fName, lName, DOB, test_d
 
 CREATE VIEW v1 AS
   SELECT (year(test_date)-year(DOB)) AS Age
-    FROM t1 HAVING Age < 75; 
-SHOW CREATE VIEW v1;           
+    FROM t1 HAVING Age < 75;
+SHOW CREATE VIEW v1;
 
 SELECT (year(test_date)-year(DOB)) AS Age FROM t1 HAVING Age < 75;
 SELECT * FROM v1;
@@ -2567,8 +2615,9 @@ SELECT * FROM v1;
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug #19089: wrong inherited dafault values in temp table views
+# Bug#19089 wrong inherited dafault values in temp table views
 #
 
 CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, a char(6) DEFAULT 'xxx');
@@ -2600,7 +2649,7 @@ DROP TABLE t1,t2;
 
 
 #
-# Bug#16110: insert permitted into view col w/o default value
+# Bug#16110 insert permitted into view col w/o default value
 #
 CREATE TABLE t1 (a INT NOT NULL, b INT NULL DEFAULT NULL);
 CREATE VIEW v1 AS SELECT a, b FROM t1;
@@ -2608,7 +2657,7 @@ CREATE VIEW v1 AS SELECT a, b FROM t1;
 INSERT INTO v1 (b) VALUES (2);
 
 SET SQL_MODE = STRICT_ALL_TABLES;
---error 1423
+--error ER_NO_DEFAULT_FOR_VIEW_FIELD
 INSERT INTO v1 (b) VALUES (4);
 SET SQL_MODE = '';
 
@@ -2617,8 +2666,9 @@ SELECT * FROM t1;
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug #18243: expression over a view column that with the REVERSE function
+# Bug#18243 expression over a view column that with the REVERSE function
 #
 
 CREATE TABLE t1 (firstname text, surname text);
@@ -2633,21 +2683,23 @@ SELECT CONCAT(LEFT(name,LENGTH(name)-INS
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug #19714: wrong type of a view column specified by an expressions over ints
+# Bug#19714 wrong type of a view column specified by an expressions over ints
 #
 
 CREATE TABLE t1 (i int, j int);
 CREATE VIEW v1 AS SELECT COALESCE(i,j) FROM t1;
 DESCRIBE v1;
-CREATE TABLE t2 SELECT COALESCE(i,j) FROM t1;  
+CREATE TABLE t2 SELECT COALESCE(i,j) FROM t1;
 DESCRIBE t2;
 
 DROP VIEW v1;
 DROP TABLE t1,t2;
 
+
 #
-# Bug #17526: views with TRIM functions
+# Bug#17526 views with TRIM functions
 #
 
 CREATE TABLE t1 (s varchar(10));
@@ -2658,20 +2710,21 @@ CREATE VIEW v1 AS SELECT TRIM(BOTH 'y' F
 SELECT * FROM v1;
 DROP VIEW v1;
 
-SELECT TRIM(LEADING 'y' FROM s) FROM t1; 
+SELECT TRIM(LEADING 'y' FROM s) FROM t1;
 CREATE VIEW v1 AS SELECT TRIM(LEADING 'y' FROM s) FROM t1;
 SELECT * FROM v1;
 DROP VIEW v1;
 
-SELECT TRIM(TRAILING 'y' FROM s) FROM t1; 
+SELECT TRIM(TRAILING 'y' FROM s) FROM t1;
 CREATE VIEW v1 AS SELECT TRIM(TRAILING 'y' FROM s) FROM t1;
 SELECT * FROM v1;
 DROP VIEW v1;
 
 DROP TABLE t1;
 
+
 #
-#Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
+# Bug#21080 ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
 #
 CREATE TABLE t1 (x INT, y INT);
 CREATE ALGORITHM=TEMPTABLE SQL SECURITY INVOKER VIEW v1 AS SELECT x FROM t1;
@@ -2682,8 +2735,10 @@ SHOW CREATE VIEW v1;
 
 DROP VIEW v1;
 DROP TABLE t1;
-# Bug #21086: server crashes when VIEW defined with a SELECT with COLLATE 
-# clause is called
+
+
+# Bug#21086 server crashes when VIEW defined with a SELECT with COLLATE
+#           clause is called
 #
 CREATE TABLE t1 (s1 char);
 INSERT INTO t1 VALUES ('Z');
@@ -2700,19 +2755,20 @@ SELECT s1 FROM t1;
 DROP VIEW v1, v2;
 DROP TABLE t1;
 
+
 #
-# Bug #11551: Asymmetric + undocumented behaviour of DROP VIEW and DROP TABLE
+# Bug#11551 Asymmetric + undocumented behaviour of DROP VIEW and DROP TABLE
 #
 CREATE TABLE t1 (id INT);
 CREATE VIEW v1 AS SELECT id FROM t1;
 SHOW TABLES;
 
---error 1051
+--error ER_BAD_TABLE_ERROR
 DROP VIEW v2,v1;
 SHOW TABLES;
 
 CREATE VIEW v1 AS SELECT id FROM t1;
---error 1347
+--error ER_WRONG_OBJECT
 DROP VIEW t1,v1;
 SHOW TABLES;
 
@@ -2721,13 +2777,14 @@ DROP TABLE t1;
 DROP VIEW IF EXISTS v1;
 --enable_warnings
 
+
 #
-# Bug #21261: Wrong access rights was required for an insert to a view
+# Bug#21261 Wrong access rights was required for an insert to a view
 #
 CREATE DATABASE bug21261DB;
 USE bug21261DB;
-CONNECT (root,localhost,root,,bug21261DB);
-CONNECTION root;
+connect (root,localhost,root,,bug21261DB);
+connection root;
 
 CREATE TABLE t1 (x INT);
 CREATE SQL SECURITY INVOKER VIEW v1 AS SELECT x FROM t1;
@@ -2736,34 +2793,41 @@ GRANT INSERT, UPDATE ON t1 TO 'user21261
 CREATE TABLE t2 (y INT);
 GRANT SELECT ON t2 TO 'user21261'@'localhost';
 
-CONNECT (user21261, localhost, user21261,, bug21261DB);
-CONNECTION user21261;
+connect (user21261, localhost, user21261,, bug21261DB);
+connection user21261;
 INSERT INTO v1 (x) VALUES (5);
 UPDATE v1 SET x=1;
-CONNECTION root;
+connection root;
 GRANT SELECT ON v1 TO 'user21261'@'localhost';
 GRANT SELECT ON t1 TO 'user21261'@'localhost';
-CONNECTION user21261;
+connection user21261;
 UPDATE v1,t2 SET x=1 WHERE x=y;
-CONNECTION root;
+connection root;
 SELECT * FROM t1;
 REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user21261'@'localhost';
 DROP USER 'user21261'@'localhost';
 DROP VIEW v1;
 DROP TABLE t1;
 DROP DATABASE bug21261DB;
+
+connection default;
 USE test;
+disconnect root;
+disconnect user21261;
+
 
 #
-# Bug #15950: NOW() optimized away in VIEWs
+# Bug#15950 NOW() optimized away in VIEWs
 #
 create table t1 (f1 datetime);
 create view v1 as select * from t1 where f1 between now() and now() + interval 1 minute;
 show create view v1;
 drop view v1;
 drop table t1;
+
+
 #
-# Test for BUG#16899: Possible buffer overflow in handling of DEFINER-clause.
+# Test for Bug#16899 Possible buffer overflow in handling of DEFINER-clause.
 #
 
 # Prepare.
@@ -2790,8 +2854,7 @@ DROP TABLE t1;
 
 
 #
-# BUG#17591: Updatable view not possible with trigger or stored
-# function 
+# Bug#17591 Updatable view not possible with trigger or stored function
 #
 # During prelocking phase we didn't update lock type of view tables,
 # hence READ lock was always requested.
@@ -2835,11 +2898,12 @@ DROP FUNCTION f2;
 DROP VIEW v1, v2;
 DROP TABLE t1;
 
+
 #
-# Bug #5500: wrong select_type in EXPLAIN output for queries over views
+# Bug#5500 wrong select_type in EXPLAIN output for queries over views
 #
 
-CREATE TABLE t1 (s1 int); 
+CREATE TABLE t1 (s1 int);
 CREATE VIEW v1 AS SELECT * FROM t1;
 
 EXPLAIN SELECT * FROM t1;
@@ -2847,34 +2911,36 @@ EXPLAIN SELECT * FROM v1;
 
 INSERT INTO t1 VALUES (1), (3), (2);
 
-EXPLAIN SELECT * FROM t1 t WHERE t.s1+1 < (SELECT MAX(t1.s1) FROM t1); 
-EXPLAIN SELECT * FROM v1 t WHERE t.s1+1 < (SELECT MAX(t1.s1) FROM t1); 
+EXPLAIN SELECT * FROM t1 t WHERE t.s1+1 < (SELECT MAX(t1.s1) FROM t1);
+EXPLAIN SELECT * FROM v1 t WHERE t.s1+1 < (SELECT MAX(t1.s1) FROM t1);
 
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug #5505: Wrong error message on INSERT into a view
+# Bug#5505 Wrong error message on INSERT into a view
 #
 create table t1 (s1 int);
 create view v1 as select s1 as a, s1 as b from t1;
---error 1471
-insert into v1 values (1,1); 
+--error ER_NON_INSERTABLE_TABLE
+insert into v1 values (1,1);
 update v1 set a = 5;
 drop view v1;
 drop table t1;
 
+
 #
-# Bug #21646: view qith a subquery in ON expression 
+# Bug#21646 view qith a subquery in ON expression
 #
 
-CREATE TABLE t1(pk int PRIMARY KEY); 
+CREATE TABLE t1(pk int PRIMARY KEY);
 CREATE TABLE t2(pk int PRIMARY KEY, fk int, ver int, org int);
 
-CREATE ALGORITHM=MERGE VIEW v1 AS 
+CREATE ALGORITHM=MERGE VIEW v1 AS
 SELECT t1.*
-  FROM t1 JOIN t2 
-       ON t2.fk = t1.pk AND 
+  FROM t1 JOIN t2
+       ON t2.fk = t1.pk AND
           t2.ver = (SELECT MAX(t.ver) FROM t2 t WHERE t.org = t2.org);
 SHOW WARNINGS;
 SHOW CREATE VIEW v1;
@@ -2884,8 +2950,7 @@ DROP TABLE t1, t2;
 
 
 #
-# Bug#19111: TRIGGERs selecting from a VIEW on the firing base table
-# fail
+# Bug#19111 TRIGGERs selecting from a VIEW on the firing base table fail
 #
 # Allow to select from a view on a table being modified in a trigger
 # and stored function, since plain select is allowed there.
@@ -2916,23 +2981,24 @@ DROP FUNCTION f1;
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug #16813 (WITH CHECK OPTION doesn't work with UPDATE)
+# Bug#16813 (WITH CHECK OPTION doesn't work with UPDATE)
 #
 CREATE TABLE t1(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, val INT UNSIGNED NOT NULL);
 CREATE VIEW v1 AS SELECT id, val FROM t1 WHERE val >= 1 AND val <= 5 WITH CHECK OPTION;
 INSERT INTO v1 (val) VALUES (2);
 INSERT INTO v1 (val) VALUES (4);
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 INSERT INTO v1 (val) VALUES (6);
--- error 1369
+-- error ER_VIEW_CHECK_FAILED
 UPDATE v1 SET val=6 WHERE id=2;
 DROP VIEW v1;
 DROP TABLE t1;
 
 
 #
-# BUG#22584: last_insert_id not updated after inserting a record
+# Bug#22584 last_insert_id not updated after inserting a record
 # through a updatable view
 #
 # We still do not update LAST_INSERT_ID if AUTO_INCREMENT column is
@@ -2968,8 +3034,9 @@ SELECT * FROM t1;
 DROP VIEW v1, v2;
 DROP TABLE t1;
 
+
 #
-# Bug #25580: !0 as an operand in a select expression of a view
+# Bug#25580 !0 as an operand in a select expression of a view
 #
 
 CREATE VIEW v AS SELECT !0 * 5 AS x FROM DUAL;
@@ -2980,8 +3047,9 @@ SELECT * FROM v;
 
 DROP VIEW v;
 
+
 #
-# BUG#24293: '\Z' token is not handled correctly in views
+# Bug#24293 '\Z' token is not handled correctly in views
 #
 
 --disable_warnings
@@ -2995,8 +3063,9 @@ SHOW CREATE VIEW v1;
 
 DROP VIEW v1;
 
+
 #
-# Bug #26124: BETWEEN over a view column of the DATETIME type
+# Bug#26124 BETWEEN over a view column of the DATETIME type
 #
 
 CREATE TABLE t1 (mydate DATETIME);
@@ -3011,8 +3080,9 @@ SELECT * FROM v1 WHERE mydate BETWEEN '2
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug #25931: update of a multi-table view with check option
+# Bug#25931 update of a multi-table view with check option
 #
 
 CREATE TABLE t1 (a int);
@@ -3024,7 +3094,7 @@ CREATE VIEW v1 AS
   SELECT t2.b FROM t1,t2 WHERE t1.a = t2.b WITH CHECK OPTION;
 
 SELECT * FROM v1;
---error 1369
+--error ER_VIEW_CHECK_FAILED
 UPDATE v1 SET b=3;
 SELECT * FROM v1;
 SELECT * FROM t1;
@@ -3033,8 +3103,9 @@ SELECT * FROM t2;
 DROP VIEW v1;
 DROP TABLE t1,t2;
 
+
 #
-# Bug#12122: Views with ORDER BY can't be resolved using MERGE algorithm.
+# Bug#12122 Views with ORDER BY can't be resolved using MERGE algorithm.
 #
 create table t1(f1 int, f2 int);
 insert into t1 values(1,2),(1,3),(1,1),(2,3),(2,1),(2,2);
@@ -3048,7 +3119,7 @@ drop view v1;
 drop table t1;
 
 #
-# Bug#26209: queries with GROUP BY and ORDER BY using views
+# Bug#26209 queries with GROUP BY and ORDER BY using views
 #
 
 CREATE TABLE t1 (
@@ -3067,9 +3138,9 @@ SELECT code, COUNT(DISTINCT country) FRO
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# BUG#25897: Some queries are no longer possible after a CREATE VIEW
-# fails 
+# Bug#25897 Some queries are no longer possible after a CREATE VIEW fails
 #
 --disable_warnings
 DROP VIEW IF EXISTS v1;
@@ -3083,9 +3154,9 @@ eval CREATE VIEW v1 AS $query;
 --echo # Previously the following would fail.
 eval $query;
 
+
 #
-# Bug#24532: The return data type of IS TRUE is different from similar
-# operations
+# Bug#24532 The return data type of IS TRUE is different from similar operations
 #
 
 --disable_warnings
@@ -3170,8 +3241,9 @@ drop view view_24532_a;
 drop view view_24532_b;
 drop table table_24532;
 
+
 #
-# Bug#26560: view using subquery with a reference to an outer alias 
+# Bug#26560 view using subquery with a reference to an outer alias
 #
 
 CREATE TABLE t1 (
@@ -3182,7 +3254,7 @@ INSERT INTO t1 (lid, name) VALUES
   (1, 'YES'), (2, 'NO');
 
 CREATE TABLE t2 (
-  id int NOT NULL PRIMARY KEY, 
+  id int NOT NULL PRIMARY KEY,
   gid int NOT NULL,
   lid int NOT NULL,
   dt date
@@ -3210,8 +3282,9 @@ SELECT * FROM v1;
 DROP VIEW v1;
 DROP table t1,t2;
 
+
 #
-# Bug#27786: Inconsistent Operation Performing UNION On View With ORDER BY 
+# Bug#27786 Inconsistent Operation Performing UNION On View With ORDER BY
 #
 CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (1),(2),(3);
 CREATE VIEW v1 AS SELECT a FROM t1 ORDER BY a;
@@ -3226,8 +3299,9 @@ EXPLAIN SELECT * FROM t1 UNION SELECT * 
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug #27921 View ignores precision for CAST()
+# Bug#27921 View ignores precision for CAST()
 #
 CREATE VIEW v1 AS SELECT CAST( 1.23456789 AS DECIMAL( 7,5 ) ) AS col;
 SELECT * FROM v1;
@@ -3238,9 +3312,10 @@ CREATE VIEW v1 AS SELECT CAST(1.23456789
 SHOW CREATE VIEW v1;
 DROP VIEW v1;
 
+
 #
-# Bug #28716: CHECK OPTION expression is evaluated over expired record buffers
-# when VIEW is updated via temporary tables
+# Bug#28716 CHECK OPTION expression is evaluated over expired record buffers
+#           when VIEW is updated via temporary tables
 #
 CREATE TABLE t1 (a INT);
 CREATE TABLE t2 (b INT, c INT DEFAULT 0);
@@ -3254,9 +3329,10 @@ SELECT * FROM v1;
 DROP VIEW v1;
 DROP TABLE t1,t2;
 
+
 #
-# Bug #28561: update on multi-table view with CHECK OPTION and
-#             a subquery in WHERE condition
+# Bug#28561 update on multi-table view with CHECK OPTION and a subquery
+#           in WHERE condition
 #
 
 CREATE TABLE t1 (id int);
@@ -3264,8 +3340,8 @@ CREATE TABLE t2 (id int, c int DEFAULT 0
 INSERT INTO t1 (id) VALUES (1);
 INSERT INTO t2 (id) VALUES (1);
 
-CREATE VIEW v1 AS 
-  SELECT t2.c FROM t1, t2 
+CREATE VIEW v1 AS
+  SELECT t2.c FROM t1, t2
     WHERE t1.id=t2.id AND 1 IN (SELECT id FROM t1) WITH CHECK OPTION;
 
 UPDATE v1 SET c=1;
@@ -3273,9 +3349,10 @@ UPDATE v1 SET c=1;
 DROP VIEW v1;
 DROP TABLE t1,t2;
 
+
 #
-# Bug #27827: CHECK OPTION ignores ON conditions when updating
-#             a multi-table view with CHECK OPTION.
+# Bug#27827 CHECK OPTION ignores ON conditions when updating
+#           a multi-table view with CHECK OPTION.
 #
 
 CREATE TABLE t1 (a1 INT, c INT DEFAULT 0);
@@ -3291,14 +3368,14 @@ CREATE VIEW v1 AS
   SELECT t1.a1, t1.c FROM t1 JOIN t2 ON t1.a1=t2.a2 AND t1.c < 3
     WITH CHECK OPTION;
 SELECT * FROM v1;
---error 1369
+--error ER_VIEW_CHECK_FAILED
 UPDATE v1 SET c=3;
 PREPARE t FROM 'UPDATE v1 SET c=3';
---error 1369
+--error ER_VIEW_CHECK_FAILED
 EXECUTE t;
---error 1369
+--error ER_VIEW_CHECK_FAILED
 EXECUTE t;
---error 1369
+--error ER_VIEW_CHECK_FAILED
 INSERT INTO v1(a1, c) VALUES (3, 3);
 UPDATE v1 SET c=1 WHERE a1=1;
 SELECT * FROM v1;
@@ -3309,14 +3386,14 @@ CREATE VIEW v2 AS SELECT t1.a1, t1.c
   JOIN (t3 JOIN t4 ON t3.a3=t4.a4)
     ON t2.a2=t3.a3 WITH CHECK OPTION;
 SELECT * FROM v2;
---error 1369
+--error ER_VIEW_CHECK_FAILED
 UPDATE v2 SET c=3;
 PREPARE t FROM 'UPDATE v2 SET c=3';
---error 1369
+--error ER_VIEW_CHECK_FAILED
 EXECUTE t;
---error 1369
+--error ER_VIEW_CHECK_FAILED
 EXECUTE t;
---error 1369
+--error ER_VIEW_CHECK_FAILED
 INSERT INTO v2(a1, c) VALUES (3, 3);
 UPDATE v2 SET c=2 WHERE a1=1;
 SELECT * FROM v2;
@@ -3325,10 +3402,11 @@ SELECT * FROM t1;
 DROP VIEW v1,v2;
 DROP TABLE t1,t2,t3,t4;
 
+
 #
-# Bug #29104: assertion abort for a query with a view column reference
-#             in the GROUP BY list and a condition requiring the value  
-#             of another view column to be equal to a constant
+# Bug#29104 assertion abort for a query with a view column reference
+#           in the GROUP BY list and a condition requiring the value
+#           of another view column to be equal to a constant
 #
 
 CREATE TABLE t1 (a int, b int);
@@ -3349,9 +3427,10 @@ EXPLAIN SELECT a, SUM(b) FROM v1 WHERE a
 DROP VIEW v1;
 DROP TABLE t1;
 
+
 #
-# Bug #29392: SELECT over a multi-table view with ORDER BY  
-#             selecting the same view column with two different aliases  
+# Bug#29392 SELECT over a multi-table view with ORDER BY
+#           selecting the same view column with two different aliases
 #
 
 CREATE TABLE t1 (
@@ -3375,7 +3454,7 @@ CREATE TABLE t3 (
   INDEX idx_app_name(app_name)
 );
 
-CREATE VIEW v1 AS 
+CREATE VIEW v1 AS
 SELECT profile.person_id AS person_id
   FROM t1 profile, t2 userrole, t3 role
     WHERE userrole.person_id = profile.person_id AND
@@ -3390,35 +3469,37 @@ INSERT INTO  t1 VALUES
 INSERT INTO t2 VALUES
   (1,3,6),(2,4,7),(3,5,8),(4,6,9),(5,1,6),(6,1,7),(7,1,8),(8,1,9),(9,1,10);
 
-INSERT INTO t3 VALUES 
+INSERT INTO t3 VALUES
   (1,'NUCANS_APP_USER','NUCANSAPP'),(2,'NUCANS_TRGAPP_USER','NUCANSAPP'),
   (3,'IA_INTAKE_COORDINATOR','IACANS'),(4,'IA_SCREENER','IACANS'),
   (5,'IA_SUPERVISOR','IACANS'),(6,'IA_READONLY','IACANS'),
   (7,'SOC_USER','SOCCANS'),(8,'CAYIT_USER','CAYITCANS'),
   (9,'RTOS_DCFSPOS_SUPERVISOR','RTOS');
- 
+
 EXPLAIN SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6;
 SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6;
 
 DROP VIEW v1;
 DROP TABLE t1,t2,t3;
 
+
 #
-# Bug#30020: Insufficient check led to a wrong info provided by the
-#            information schema table.
+# Bug#30020 Insufficient check led to a wrong info provided by the
+#           information schema table.
 #
 create table t1 (i int);
 insert into t1 values (1), (2), (1), (3), (2), (4);
 create view v1 as select distinct i from t1;
 select * from v1;
-select table_name, is_updatable from information_schema.views 
+select table_name, is_updatable from information_schema.views
    where table_name = 'v1';
 drop view v1;
 drop table t1;
 
+
 #
-# Bug #28701: SELECTs from VIEWs completely ignore USE/FORCE KEY, allowing
-# invalid statements
+# Bug#28701 SELECTs from VIEWs completely ignore USE/FORCE KEY, allowing
+#           invalid statements
 #
 
 CREATE TABLE t1 (a INT);
@@ -3436,7 +3517,7 @@ DROP TABLE t1;
 
 
 #
-# Bug #28702: VIEWs defined with USE/FORCE KEY ignore that request
+# Bug#28702 VIEWs defined with USE/FORCE KEY ignore that request
 #
 CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT, b INT NOT NULL DEFAULT 0,
                  PRIMARY KEY(a), KEY (b));
@@ -3456,9 +3537,10 @@ DROP VIEW v2;
 DROP VIEW v3;
 DROP TABLE t1;
 
+
 --echo #
---echo # Bug#29477: Not all fields of the target table were checked to have
---echo #            a default value when inserting into a view.
+--echo # Bug#29477 Not all fields of the target table were checked to have
+--echo #           a default value when inserting into a view.
 --echo #
 create table t1(f1 int, f2 int not null);
 create view v1 as select f1 from t1;
@@ -3471,29 +3553,31 @@ set @@sql_mode=@old_mode;
 drop view v1;
 drop table t1;
 
+
 #
-# Bug #33389: Selecting from a view into a table from within SP or trigger 
-#             crashes server
+# Bug#33389 Selecting from a view into a table from within SP or trigger
+#           crashes server
 #
 
 create table t1 (a int, key(a));
 create table t2 (c int);
-                   
+
 create view v1 as select a b from t1;
-create view v2 as select 1 a from t2, v1 where c in 
+create view v2 as select 1 a from t2, v1 where c in
                   (select 1 from t1 where b = a);
-                   
+
 insert into t1 values (1), (1);
 insert into t2 values (1), (1);
-                   
+
 prepare stmt from "select * from v2 where a = 1";
-execute stmt; 
+execute stmt;
 
 drop view v1, v2;
 drop table t1, t2;
 
+
 #
-# Bug #33049: Assert while running test-as3ap test(mysql-bench suite)
+# Bug#33049 Assert while running test-as3ap test(mysql-bench suite)
 #
 
 CREATE TABLE t1 (a INT);
@@ -3508,7 +3592,7 @@ DROP TABLE t1;
 ###########################################################################
 
 --echo # -----------------------------------------------------------------
---echo # -- Bug#34337: Server crash when Altering a view using a table name.
+--echo # -- Bug#34337 Server crash when Altering a view using a table name.
 --echo # -----------------------------------------------------------------
 --echo
 
@@ -3538,8 +3622,8 @@ DROP TABLE t1;
 ###########################################################################
 
 --echo # -----------------------------------------------------------------
---echo # -- Bug#35193: VIEW query is rewritten without "FROM DUAL",
---echo # --            causing syntax error
+--echo # -- Bug#35193 VIEW query is rewritten without "FROM DUAL",
+--echo # --           causing syntax error
 --echo # -----------------------------------------------------------------
 --echo
 
@@ -3561,15 +3645,16 @@ DROP VIEW v1;
 ###########################################################################
 
 #
-# Bug#39040: valgrind errors/crash when creating views with binlog logging 
-# enabled
+# Bug#39040 valgrind errors/crash when creating views with binlog logging
+#           enabled
 #
 # Bug is visible only when running in valgrind with binary logging.
 CREATE VIEW v1 AS SELECT 1;
 DROP VIEW v1;
 
+
 #
-# Bug #33461: SELECT ... FROM <view> USE INDEX (...) throws an error
+# Bug#33461 SELECT ... FROM <view> USE INDEX (...) throws an error
 #
 
 CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT, INDEX (c2));

=== modified file 'mysql-test/t/view_grant.test'
--- a/mysql-test/t/view_grant.test	2009-02-26 17:00:44 +0000
+++ b/mysql-test/t/view_grant.test	2009-03-05 13:35:03 +0000
@@ -1,6 +1,9 @@
 # Can't test with embedded server
 -- source include/not_embedded.inc
 
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 # simple test of grants
 grant create view on test.* to test@localhost;
 show grants for test@localhost;
@@ -26,19 +29,19 @@ grant create view,select on test.* to my
 connect (user1,localhost,mysqltest_1,,test);
 connection user1;
 
--- error ER_SPECIFIC_ACCESS_DENIED_ERROR
+--error ER_SPECIFIC_ACCESS_DENIED_ERROR
 create definer=root@localhost view v1 as select * from mysqltest.t1;
 create view v1 as select * from mysqltest.t1;
 # try to modify view without DROP privilege on it
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 alter view v1 as select * from mysqltest.t1;
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 create or replace view v1 as select * from mysqltest.t1;
 # no CRETE VIEW privilege
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 create view mysqltest.v2  as select * from mysqltest.t1;
 # no SELECT privilege
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 create view v2 as select * from mysqltest.t2;
 
 connection root;
@@ -48,7 +51,7 @@ show create view v1;
 grant create view,drop,select on test.* to mysqltest_1@localhost;
 
 connection user1;
-# following 'use' command is workaround of bug #9582 and should be removed
+# following 'use' command is workaround of Bug#9582 and should be removed
 # when that bug will be fixed
 use test;
 alter view v1 as select * from mysqltest.t1;
@@ -76,7 +79,7 @@ grant select (c) on mysqltest.v1 to mysq
 connection user1;
 select c from mysqltest.v1;
 # there are no privileges on column 'd'
--- error 1143
+--error ER_COLUMNACCESS_DENIED_ERROR
 select d from mysqltest.v1;
 
 connection root;
@@ -96,7 +99,7 @@ grant select (c) on mysqltest.v1 to mysq
 connection user1;
 select c from mysqltest.v1;
 # there are no privileges on column 'd'
--- error 1143
+--error ER_COLUMNACCESS_DENIED_ERROR
 select d from mysqltest.v1;
 
 connection root;
@@ -111,7 +114,7 @@ connection root;
 --disable_warnings
 create database mysqltest;
 --enable_warnings
-#prepare views and tables
+# prepare views and tables
 create table mysqltest.t1 (a int, b int);
 create table mysqltest.t2 (a int, b int);
 create view mysqltest.v1 (c,d) as select a+1,b+1 from mysqltest.t1;
@@ -133,21 +136,21 @@ select c from mysqltest.v4;
 show columns from mysqltest.v1;
 show columns from mysqltest.v2;
 # but explain/show do not
--- error 1345
+--error ER_VIEW_NO_EXPLAIN
 explain select c from mysqltest.v1;
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 show create view mysqltest.v1;
--- error 1345
+--error ER_VIEW_NO_EXPLAIN
 explain select c from mysqltest.v2;
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 show create view mysqltest.v2;
--- error 1345
+--error ER_VIEW_NO_EXPLAIN
 explain select c from mysqltest.v3;
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 show create view mysqltest.v3;
--- error 1345
+--error ER_VIEW_NO_EXPLAIN
 explain select c from mysqltest.v4;
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 show create view mysqltest.v4;
 
 # allow to see one of underlying table
@@ -156,19 +159,19 @@ grant select on mysqltest.t1 to mysqltes
 connection user1;
 # EXPLAIN of view on above table works
 explain select c from mysqltest.v1;
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 show create view mysqltest.v1;
 explain select c from mysqltest.v2;
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 show create view mysqltest.v2;
 # but other EXPLAINs do not
--- error 1345
+--error ER_VIEW_NO_EXPLAIN
 explain select c from mysqltest.v3;
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 show create view mysqltest.v3;
--- error 1345
+--error ER_VIEW_NO_EXPLAIN
 explain select c from mysqltest.v4;
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 show create view mysqltest.v4;
 
 # allow to see any view in mysqltest database
@@ -222,14 +225,14 @@ select * from t1;
 update v2 set a=a+c;
 select * from t1;
 # no rights on column
--- error 1143
+--error ER_COLUMNACCESS_DENIED_ERROR
 update t2,v2 set v2.c=v2.a+v2.c where t2.x=v2.c;
--- error 1143
+--error ER_COLUMNACCESS_DENIED_ERROR
 update v2 set c=a+c;
 # no rights for view
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 update t2,v3 set v3.a=v3.a+v3.c where t2.x=v3.c;
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 update v3 set a=a+c;
 
 use test;
@@ -263,9 +266,9 @@ select * from t1;
 delete v1 from t2,v1 where t2.x=v1.c;
 select * from t1;
 # no rights for view
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 delete v2 from t2,v2 where t2.x=v2.c;
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 delete from v2 where c < 4;
 
 use test;
@@ -299,9 +302,9 @@ select * from t1;
 insert into v1 select x,y from t2;
 select * from t1;
 # no rights for view
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 insert into v2 values (5,6);
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 insert into v2 select x,y from t2;
 
 use test;
@@ -329,10 +332,10 @@ connection user1;
 create view v1 as select * from mysqltest.t1;
 create view v2 as select b from mysqltest.t2;
 # There are not rights on mysqltest.v1
--- error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 create view mysqltest.v1 as select * from mysqltest.t1;
 # There are not any rights on mysqltest.t2.a
--- error 1143
+--error ER_COLUMNACCESS_DENIED_ERROR
 create view v3 as select a from mysqltest.t2;
 
 # give CREATE VIEW privileges (without any privileges for result column)
@@ -352,13 +355,13 @@ create view mysqltest.v3 as select b fro
 
 
 # Expression need select privileges
--- error 1143
+--error ER_COLUMNACCESS_DENIED_ERROR
 create view v4 as select b+1 from mysqltest.t2;
 
 connection root;
 grant create view,update,select on test.* to mysqltest_1@localhost;
 connection user1;
--- error 1143
+--error ER_COLUMNACCESS_DENIED_ERROR
 create view v4 as select b+1 from mysqltest.t2;
 
 connection root;
@@ -411,7 +414,7 @@ connection root;
 # check view definer information
 show create view v1;
 revoke select on mysqltest.t1 from mysqltest_1@localhost;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v1;
 grant select on mysqltest.t1 to mysqltest_1@localhost;
 select * from v1;
@@ -420,7 +423,7 @@ drop view v1;
 drop database mysqltest;
 
 #
-# rights on execution of view underlying functiond (BUG#9505)
+# rights on execution of view underlying functiond (Bug#9505)
 #
 connection root;
 --disable_warnings
@@ -453,11 +456,11 @@ connection user1;
 use mysqltest;
 select * from v1;
 select * from v2;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v3;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v4;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v5;
 use test;
 
@@ -505,13 +508,13 @@ use test;
 connection root;
 create view v5 as select * from v1;
 revoke execute on function f2 from mysqltest_1@localhost;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v1;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v2;
 select * from v3;
 select * from v4;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v5;
 
 drop view v1, v2, v3, v4, v5;
@@ -549,13 +552,13 @@ use test;
 
 connection root;
 revoke select on t1 from mysqltest_1@localhost;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v1;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v2;
 select * from v3;
 select * from v4;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v5;
 
 #drop view v1, v2, v3, v4, v5;
@@ -588,11 +591,11 @@ connection user1;
 use mysqltest;
 select * from v1;
 select * from v2;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v3;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v4;
--- error ER_VIEW_INVALID
+--error ER_VIEW_INVALID
 select * from v5;
 use test;
 
@@ -604,7 +607,7 @@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM
 drop database mysqltest;
 
 #
-# BUG#14256: definer in view definition is not fully qualified
+# Bug#14256 definer in view definition is not fully qualified
 #
 --disable_warnings
 drop view if exists v1;
@@ -641,6 +644,7 @@ drop view v1;
 select @v1def1, @v1def2, @v1def1=@v1def2;
 
 connection root;
+disconnect test14256;
 drop user test14256;
 
 # Restore the anonymous users.
@@ -650,8 +654,8 @@ flush privileges;
 drop table t1;
 
 #
-# BUG#14726: freeing stack variable in case of an error of opening
-# a view when we have locked tables with LOCK TABLES statement.
+# Bug#14726 freeing stack variable in case of an error of opening a view when
+#           we have locked tables with LOCK TABLES statement.
 #
 connection root;
 --disable_warnings
@@ -668,7 +672,7 @@ connection user1;
 
 use mysqltest;
 LOCK TABLES v1 READ;
--- error ER_TABLEACCESS_DENIED_ERROR
+--error ER_TABLEACCESS_DENIED_ERROR
 SHOW CREATE TABLE v1;
 UNLOCK TABLES;
 use test;
@@ -679,7 +683,7 @@ drop user mysqltest_1@localhost;
 drop database mysqltest;
 
 #
-# switch to default connaction
+# switch to default connection
 #
 disconnect user1;
 disconnect root;
@@ -696,7 +700,7 @@ drop view v1;
 drop view v2;
 
 #
-# Bug#18681: View privileges are broken
+# Bug#18681 View privileges are broken
 #
 CREATE DATABASE mysqltest1;
 CREATE USER readonly@localhost;
@@ -717,54 +721,55 @@ GRANT UPDATE,SELECT ON mysqltest1.v_tus 
 GRANT DELETE ON mysqltest1.v_td TO readonly@localhost;
 GRANT DELETE,SELECT ON mysqltest1.v_tds TO readonly@localhost;
 
-CONNECT (n1,localhost,readonly,,);
-CONNECTION n1;
+connect (n1,localhost,readonly,,);
+connection n1;
 
---error 1356
+--error ER_VIEW_INVALID
 SELECT * FROM mysqltest1.v_t1;
---error 1356
+--error ER_VIEW_INVALID
 INSERT INTO mysqltest1.v_t1 VALUES(4);
---error 1356
+--error ER_VIEW_INVALID
 DELETE FROM mysqltest1.v_t1 WHERE x = 1;
---error 1356
+--error ER_VIEW_INVALID
 UPDATE mysqltest1.v_t1 SET x = 3 WHERE x = 2;
---error 1356
+--error ER_VIEW_INVALID
 UPDATE mysqltest1.v_t1 SET x = 3;
---error 1356
+--error ER_VIEW_INVALID
 DELETE FROM mysqltest1.v_t1;
---error 1356
+--error ER_VIEW_INVALID
 SELECT 1 FROM mysqltest1.v_t1;
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 SELECT * FROM mysqltest1.t1;
 
 SELECT * FROM mysqltest1.v_ts;
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 SELECT * FROM mysqltest1.v_ts, mysqltest1.t1 WHERE mysqltest1.t1.x = mysqltest1.v_ts.x;
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 SELECT * FROM mysqltest1.v_ti;
 
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 INSERT INTO mysqltest1.v_ts VALUES (100);
 INSERT INTO mysqltest1.v_ti VALUES (100);
 
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 UPDATE mysqltest1.v_ts SET x= 200 WHERE x = 100;
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 UPDATE mysqltest1.v_ts SET x= 200;
 UPDATE mysqltest1.v_tu SET x= 200 WHERE x = 100;
 UPDATE mysqltest1.v_tus SET x= 200 WHERE x = 100;
 UPDATE mysqltest1.v_tu SET x= 200;
 
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 DELETE FROM mysqltest1.v_ts WHERE x= 200;
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 DELETE FROM mysqltest1.v_ts;
---error 1143
+--error ER_COLUMNACCESS_DENIED_ERROR
 DELETE FROM mysqltest1.v_td WHERE x= 200;
 DELETE FROM mysqltest1.v_tds WHERE x= 200;
 DELETE FROM mysqltest1.v_td;
 
-CONNECTION default;
+connection default;
+disconnect n1;
 DROP VIEW mysqltest1.v_tds;
 DROP VIEW mysqltest1.v_td;
 DROP VIEW mysqltest1.v_tus;
@@ -777,21 +782,21 @@ DROP USER readonly@localhost;
 DROP DATABASE mysqltest1;
 
 #
-# BUG#14875: Bad view DEFINER makes SHOW CREATE VIEW fail
+# Bug#14875 Bad view DEFINER makes SHOW CREATE VIEW fail
 #
 CREATE TABLE t1 (a INT PRIMARY KEY);
 INSERT INTO t1 VALUES (1), (2), (3);
 CREATE DEFINER = 'no-such-user'@localhost VIEW v AS SELECT a from t1;
-#--warning 1448
+#--warning ER_VIEW_OTHER_USER
 SHOW CREATE VIEW v;
---error 1449
+--error ER_NO_SUCH_USER
 SELECT * FROM v;
 DROP VIEW v;
 DROP TABLE t1;
 USE test;
 
 #
-# Bug#20363: Create view on just created view is now denied
+# Bug#20363 Create view on just created view is now denied
 #
 eval CREATE USER mysqltest_db1@localhost identified by 'PWD';
 eval GRANT ALL ON mysqltest_db1.* TO mysqltest_db1@localhost WITH GRANT OPTION;
@@ -822,6 +827,7 @@ SELECT * FROM view2;
 SELECT * from view3;
 
 connection default;
+disconnect session1;
 DROP VIEW mysqltest_db1.view3;
 DROP VIEW mysqltest_db1.view2;
 DROP VIEW mysqltest_db1.view1;
@@ -829,8 +835,8 @@ DROP TABLE mysqltest_db1.t1;
 DROP SCHEMA mysqltest_db1;
 DROP USER mysqltest_db1@localhost;
 #
-# BUG#20482: failure on Create join view with sources views/tables 
-#             in different schemas
+# Bug#20482 failure on Create join view with sources views/tables
+#           in different schemas
 #
 --disable_warnings
 CREATE DATABASE test1;
@@ -840,7 +846,7 @@ CREATE DATABASE test2;
 CREATE TABLE test1.t0 (a VARCHAR(20));
 CREATE TABLE test2.t1 (a VARCHAR(20));
 CREATE VIEW  test2.t3 AS SELECT * FROM test1.t0;
-CREATE OR REPLACE VIEW test.v1 AS 
+CREATE OR REPLACE VIEW test.v1 AS
   SELECT ta.a AS col1, tb.a AS col2 FROM test2.t3 ta, test2.t1 tb;
 
 DROP VIEW test.v1;
@@ -851,8 +857,8 @@ DROP DATABASE test1;
 
 
 #
-# BUG#20570: CURRENT_USER() in a VIEW with SQL SECURITY DEFINER
-# returns invoker name
+# Bug#20570 CURRENT_USER() in a VIEW with SQL SECURITY DEFINER returns
+#           invoker name
 #
 --disable_warnings
 DROP VIEW IF EXISTS v1;
@@ -911,7 +917,7 @@ DROP USER mysqltest_u1@localhost;
 
 
 #
-# Bug#17254: Error for DEFINER security on VIEW provides too much info
+# Bug#17254 Error for DEFINER security on VIEW provides too much info
 #
 connect (root,localhost,root,,);
 connection root;
@@ -935,12 +941,12 @@ DROP USER def_17254@localhost;
 connect (inv,localhost,inv_17254,,db17254);
 connection inv;
 --echo for a user
---error 1142
+--error ER_TABLEACCESS_DENIED_ERROR
 SELECT * FROM v1;
 
 connection root;
 --echo for a superuser
---error 1449
+--error ER_NO_SUCH_USER
 SELECT * FROM v1;
 DROP USER inv_17254@localhost;
 DROP DATABASE db17254;
@@ -949,7 +955,7 @@ disconnect inv;
 
 
 #
-# BUG#24404: strange bug with view+permission+prepared statement
+# Bug#24404 strange bug with view+permission+prepared statement
 #
 --disable_warnings
 DROP DATABASE IF EXISTS mysqltest_db1;
@@ -1017,8 +1023,8 @@ DROP USER mysqltest_u1@localhost;
 DROP USER mysqltest_u2@localhost;
 
 #
-# Bug#26813: The SUPER privilege is wrongly required to alter a view created
-#            by another user.
+# Bug#26813 The SUPER privilege is wrongly required to alter a view created
+#           by another user.
 #
 connection root;
 CREATE DATABASE db26813;
@@ -1050,7 +1056,7 @@ DROP DATABASE db26813;
 disconnect u1;
 
 --echo #
---echo # Bug#29908: A user can gain additional access through the ALTER VIEW.
+--echo # Bug#29908 A user can gain additional access through the ALTER VIEW.
 --echo #
 connection root;
 CREATE DATABASE mysqltest_29908;
@@ -1095,7 +1101,7 @@ disconnect u2;
 --echo #######################################################################
 
 #
-# BUG#24040: Create View don't succed with "all privileges" on a database.
+# Bug#24040 Create View don't succed with "all privileges" on a database.
 #
 
 # Prepare.
@@ -1179,7 +1185,7 @@ SELECT * FROM mysqltest1.t4;
 
 # Cleanup.
 
--- disconnect bug24040_con
+disconnect bug24040_con;
 
 DROP DATABASE mysqltest1;
 DROP DATABASE mysqltest2;
@@ -1187,8 +1193,8 @@ DROP USER mysqltest_u1@localhost;
 
 
 #
-# Bug #41354: Access control is bypassed when all columns of a view are 
-# selected by * wildcard
+# Bug#41354 Access control is bypassed when all columns of a view are
+#           selected by * wildcard
 
 CREATE DATABASE db1;
 USE db1;
@@ -1202,7 +1208,6 @@ connect (addconfoo, localhost, foo,,);
 connection addconfoo;
 USE db1;
 
-
 SELECT f1 FROM t1;
 --error ER_COLUMNACCESS_DENIED_ERROR
 SELECT f2 FROM t1;
@@ -1216,8 +1221,9 @@ SELECT f2 FROM v1;
 SELECT * FROM v1;
 
 connection default;
-USE test;
+disconnect root;
 disconnect addconfoo;
+USE test;
 REVOKE SELECT (f1) ON db1.t1 FROM foo;
 REVOKE SELECT (f1) ON db1.v1 FROM foo;
 DROP USER foo;
@@ -1225,4 +1231,8 @@ DROP VIEW db1.v1;
 DROP TABLE db1.t1;
 DROP DATABASE db1;
 
+connection default;
 --echo End of 5.0 tests.
+
+# Wait till we reached the initial number of concurrent sessions
+--source include/wait_until_count_sessions.inc

=== modified file 'mysql-test/t/wait_timeout.test'
--- a/mysql-test/t/wait_timeout.test	2007-01-10 14:55:53 +0000
+++ b/mysql-test/t/wait_timeout.test	2009-03-03 20:34:18 +0000
@@ -2,7 +2,7 @@
 -- source include/not_embedded.inc
 
 #
-# Bug #8731: wait_timeout does not work on Mac OS X
+# Bug#8731 wait_timeout does not work on Mac OS X
 #
 
 
@@ -87,6 +87,7 @@ while (!`select @aborted_clients`)
   }
 }
 --enable_query_log
+disconnect wait_con;
 
 connection con1;
 # When the connection is closed in this way, the error code should
@@ -97,3 +98,5 @@ select 2;
 --enable_reconnect
 select 3;
 disconnect con1;
+# The last connect is to keep tools checking the current test happy.
+connect (default,localhost,root,,test,,);

=== modified file 'mysql-test/t/xa.test'
--- a/mysql-test/t/xa.test	2008-10-23 20:56:03 +0000
+++ b/mysql-test/t/xa.test	2009-03-03 20:34:18 +0000
@@ -2,6 +2,10 @@
 # WL#1756
 #
 -- source include/have_innodb.inc
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
 --disable_warnings
 drop table if exists t1, t2;
 --enable_warnings
@@ -14,10 +18,10 @@ xa rollback 'test1';
 select * from t1;
 
 xa start 'test2';
---error 1399
+--error ER_XAER_RMFAIL
 xa start 'test-bad';
 insert t1 values (20);
---error 1399
+--error ER_XAER_RMFAIL
 xa prepare 'test2';
 xa end 'test2';
 xa prepare 'test2';
@@ -27,22 +31,22 @@ select * from t1;
 xa start 'testa','testb';
 insert t1 values (30);
 
---error 1399
+--error ER_XAER_RMFAIL
 commit;
 
 xa end 'testa','testb';
 
---error 1399
+--error ER_XAER_RMFAIL
 begin;
---error 1399
+--error ER_XAER_RMFAIL
 create table t2 (a int);
 
 connect (con1,localhost,root,,);
 connection con1;
 
---error 1440
+--error ER_XAER_DUPID
 xa start 'testa','testb';
---error 1440
+--error ER_XAER_DUPID
 xa start 'testa','testb', 123;
 
 #        gtrid [ , bqual [ , formatID ] ]
@@ -51,7 +55,7 @@ insert t1 values (40);
 xa end 'testb',' 0@P`',11;
 xa prepare 'testb',0x2030405060,11;
 
---error 1399
+--error ER_XAER_RMFAIL
 start transaction;
 
 xa recover;
@@ -64,11 +68,11 @@ xa prepare 'testa','testb';
 
 xa recover;
 
---error 1397
+--error ER_XAER_NOTA
 xa commit 'testb',0x2030405060,11;
 xa rollback 'testa','testb';
 
---error 1064
+--error ER_PARSE_ERROR
 xa start 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';
 
 select * from t1;
@@ -119,3 +123,7 @@ xa start 'a','c';
 drop table t1;
 
 --echo End of 5.0 tests
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+

=== modified file 'mysys/base64.c'
--- a/mysys/base64.c	2007-02-22 14:59:57 +0000
+++ b/mysys/base64.c	2009-02-10 22:47:54 +0000
@@ -193,7 +193,7 @@ base64_decode(const char *src, size_t si
   {
     return -1;
   }
-  return d - dst_base;
+  return (int) (d - dst_base);
 }
 
 

=== modified file 'mysys/default.c'
--- a/mysys/default.c	2008-07-22 10:55:15 +0000
+++ b/mysys/default.c	2009-03-19 20:20:15 +0000
@@ -182,7 +182,7 @@ int my_search_option_files(const char *c
     /* Handle --defaults-group-suffix= */
     uint i;
     const char **extra_groups;
-    const uint instance_len= strlen(my_defaults_group_suffix); 
+    const size_t instance_len= strlen(my_defaults_group_suffix); 
     struct handle_option_ctx *ctx= (struct handle_option_ctx*) func_ctx;
     char *ptr;
     TYPELIB *group= ctx->group;
@@ -194,11 +194,11 @@ int my_search_option_files(const char *c
     
     for (i= 0; i < group->count; i++)
     {
-      uint len;
+      size_t len;
       extra_groups[i]= group->type_names[i]; /** copy group */
       
       len= strlen(extra_groups[i]);
-      if (!(ptr= alloc_root(ctx->alloc, len+instance_len+1)))
+      if (!(ptr= alloc_root(ctx->alloc, (uint) (len+instance_len+1))))
 	goto err;
       
       extra_groups[i+group->count]= ptr;
@@ -1083,7 +1083,7 @@ static const char **init_default_directo
   if ((env= getenv("ETC")))
     errors += add_directory(alloc, env, dirs);
 #elif defined(DEFAULT_SYSCONFDIR)
-  if (DEFAULT_SYSCONFDIR != "")
+  if (DEFAULT_SYSCONFDIR[0])
     errors += add_directory(alloc, DEFAULT_SYSCONFDIR, dirs);
 #endif /* __EMX__ || __OS2__ */
 

=== modified file 'mysys/errors.c'
--- a/mysys/errors.c	2008-06-16 08:05:00 +0000
+++ b/mysys/errors.c	2009-03-06 09:32:00 +0000
@@ -39,7 +39,7 @@ const char * NEAR globerrs[GLOBERRS]=
   "Can't change dir to '%s' (Errcode: %d)",
   "Warning: '%s' had %d links",
   "%d files and %d streams is left open\n",
-  "Disk is full writing '%s' (Errcode: %d). Waiting for someone to free space... Retry in %d secs",
+  "Disk is full writing '%s' (Errcode: %d). Waiting for someone to free space... (Expect up to %d secs delay for server to continue after freeing disk space)",
   "Can't create directory '%s' (Errcode: %d)",
   "Character set '%s' is not a compiled character set and is not specified in the '%s' file",
   "Out of resources when opening file '%s' (Errcode: %d)",
@@ -90,3 +90,17 @@ void init_glob_errs()
   EE(EE_FILENOTFOUND)	= "File '%s' not found (Errcode: %d)";
 }
 #endif
+
+void wait_for_free_space(const char *filename, int errors)
+{
+  if (errors == 0)
+    my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
+             filename,my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
+  if (!(errors % MY_WAIT_GIVE_USER_A_MESSAGE))
+    my_printf_error(EE_DISK_FULL,
+                    "Retry in %d secs. Message reprinted in %d secs",
+                    MYF(ME_BELL | ME_NOREFRESH),
+                    MY_WAIT_FOR_USER_TO_FIX_PANIC,
+                    MY_WAIT_GIVE_USER_A_MESSAGE * MY_WAIT_FOR_USER_TO_FIX_PANIC );
+  VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
+}

=== modified file 'mysys/md5.c'
--- a/mysys/md5.c	2007-07-19 12:14:03 +0000
+++ b/mysys/md5.c	2009-03-09 18:57:03 +0000
@@ -13,356 +13,313 @@
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
 
-/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
- */
-
-/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
-
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
-*/
-
 /*
-  Changes by Monty:
-   Replace of MD5_memset and MD5_memcpy with memset & memcpy
-*/
+ * This code implements the MD5 message-digest algorithm.
+ * The algorithm is due to Ron Rivest.  This code was
+ * written by Colin Plumb in 1993, no copyright is claimed.
+ * This code is in the public domain; do with it what you wish.
+ *
+ * Equivalent code is available from RSA Data Security, Inc.
+ * This code has been tested against that, and is equivalent,
+ * except that you don't need to include two pages of legalese
+ * with every copy.
+ *
+ * To compute the message digest of a chunk of bytes, declare an
+ * MD5Context structure, pass it to MD5Init, call MD5Update as
+ * needed on buffers full of bytes, and then call MD5Final, which
+ * will fill a supplied 16-byte array with the digest.
+ */
+
+/* This code was modified in 1997 by Jim Kingdon of Cyclic Software to
+   not require an integer type which is exactly 32 bits.  This work
+   draws on the changes for the same purpose by Tatu Ylonen
+   <ylo@stripped.fi> as part of SSH, but since I didn't actually use
+   that code, there is no copyright issue.  I hereby disclaim
+   copyright in any changes I have made; this code remains in the
+   public domain.  */
 
 #include <my_global.h>
 #include <m_string.h>
 #include "my_md5.h"
 
-/* Constants for MD5Transform routine. */
+#include <string.h>	/* for memcpy() and memset() */
 
-#define S11 7
-#define S12 12
-#define S13 17
-#define S14 22
-#define S21 5
-#define S22 9
-#define S23 14
-#define S24 20
-#define S31 4
-#define S32 11
-#define S33 16
-#define S34 23
-#define S41 6
-#define S42 10
-#define S43 15
-#define S44 21
-
-
-static void MD5Transform PROTO_LIST ((UINT4 [4], unsigned char [64]));
-static void Encode PROTO_LIST
-  ((unsigned char *, UINT4 *, unsigned int));
-static void Decode PROTO_LIST
-  ((UINT4 *, unsigned char *, unsigned int));
-#ifdef OLD_CODE
-static void MD5_memcpy PROTO_LIST ((POINTER, POINTER, unsigned int));
-static void MD5_memset PROTO_LIST ((POINTER, int, unsigned int));
-#else
-#define MD5_memcpy(A,B,C) memcpy((char*) (A),(char*) (B), (C))
-#define MD5_memset(A,B,C) memset((char*) (A),(B), (C))
-#endif
 
-static unsigned char PADDING[64] = {
-  0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
+static void 
+my_MD5Transform (cvs_uint32 buf[4], const unsigned char in[64]);
 
-/* F, G, H and I are basic MD5 functions.
- */
-#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
-#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define I(x, y, z) ((y) ^ ((x) | (~z)))
-
-/* ROTATE_LEFT rotates x left n bits.
- */
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
-
-/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
-Rotation is separate from addition to prevent recomputation.
- */
-#define FF(a, b, c, d, x, s, ac) { \
- (a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
-  }
-#define GG(a, b, c, d, x, s, ac) { \
- (a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
-  }
-#define HH(a, b, c, d, x, s, ac) { \
- (a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
-  }
-#define II(a, b, c, d, x, s, ac) { \
- (a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
-  }
+/* Little-endian byte-swapping routines.  Note that these do not
+   depend on the size of datatypes such as uint32, nor do they require
+   us to detect the endianness of the machine we are running on.  It
+   is possible they should be macros for speed, but I would be
+   surprised if they were a performance bottleneck for MD5.  */
 
-/* MD5 initialization. Begins an MD5 operation, writing a new context.
- */
-void my_MD5Init (my_MD5_CTX *context)      /* context */
+static uint32 getu32 (const unsigned char *addr)
 {
-  context->count[0] = context->count[1] = 0;
-  /* Load magic initialization constants.
-*/
-  context->state[0] = 0x67452301;
-  context->state[1] = 0xefcdab89;
-  context->state[2] = 0x98badcfe;
-  context->state[3] = 0x10325476;
+  return (((((unsigned long)addr[3] << 8) | addr[2]) << 8)
+          | addr[1]) << 8 | addr[0];
 }
 
-/* MD5 block update operation. Continues an MD5 message-digest
-  operation, processing another message block, and updating the
-  context.
- */
-
-void my_MD5Update (
-my_MD5_CTX *context,                                        /* context */
-unsigned char *input,                                /* input block */
-unsigned int inputLen)                     /* length of input block */
+static void
+putu32 (uint32 data, unsigned char *addr)
 {
-  unsigned int i, idx, partLen;
-
-  /* Compute number of bytes mod 64 */
-  idx = (unsigned int)((context->count[0] >> 3) & 0x3F);
-
-
-  /* Update number of bits */
-  if ((context->count[0] += ((UINT4)inputLen << 3))
-   < ((UINT4)inputLen << 3))
- context->count[1]++;
-  context->count[1] += ((UINT4)inputLen >> 29);
-
-  partLen = 64 - idx;
-
-  /* Transform as many times as possible.
-*/
-  if (inputLen >= partLen) {
- MD5_memcpy((POINTER)&context->buffer[idx], (POINTER)input, partLen);
- MD5Transform(context->state, context->buffer);
-
- for (i = partLen; i + 63 < inputLen; i += 64)
-   MD5Transform (context->state, &input[i]);
-
- idx = 0;
-  }
-  else
- i = 0;
-
-  /* Buffer remaining input */
-  MD5_memcpy((POINTER)&context->buffer[idx], (POINTER)&input[i],
-	     inputLen-i);
+  addr[0] = (unsigned char)data;
+  addr[1] = (unsigned char)(data >> 8);
+  addr[2] = (unsigned char)(data >> 16);
+  addr[3] = (unsigned char)(data >> 24);
 }
 
-/* MD5 finalization. Ends an MD5 message-digest operation, writing the
-  the message digest and zeroizing the context.
- */
-
-void my_MD5Final (
-unsigned char digest[16],                         /* message digest */
-my_MD5_CTX *context)                              /* context */
+/*
+  Start MD5 accumulation.  Set bit count to 0 and buffer to mysterious
+  initialization constants.
+*/
+void
+my_MD5Init (my_MD5Context *ctx)
 {
-  unsigned char bits[8];
-  unsigned int idx, padLen;
+  ctx->buf[0] = 0x67452301;
+  ctx->buf[1] = 0xefcdab89;
+  ctx->buf[2] = 0x98badcfe;
+  ctx->buf[3] = 0x10325476;
 
-  /* Save number of bits */
-  Encode (bits, context->count, 8);
+  ctx->bits[0] = 0;
+  ctx->bits[1] = 0;
+}
 
-  /* Pad out to 56 mod 64.
+/*
+  Update context to reflect the concatenation of another buffer full
+  of bytes.
 */
-  idx = (unsigned int)((context->count[0] >> 3) & 0x3f);
-  padLen = (idx < 56) ? (56 - idx) : (120 - idx);
-  my_MD5Update (context, PADDING, padLen);
-
-  /* Append length (before padding) */
-  my_MD5Update (context, bits, 8);
+void 
+my_MD5Update (my_MD5Context *ctx, unsigned char const *buf, unsigned len)
+{
+  uint32 t;
 
-  /* Store state in digest */
-  Encode (digest, context->state, 16);
+  /* Update bitcount */
 
-  /* Zeroize sensitive information.
-*/
-  MD5_memset ((POINTER)context, 0, sizeof (*context));
-}
+  t = ctx->bits[0];
+  if ((ctx->bits[0] = (t + ((uint32)len << 3)) & 0xffffffff) < t)
+    ctx->bits[1]++;	/* Carry from low to high */
+  ctx->bits[1] += len >> 29;
+
+  t = (t >> 3) & 0x3f;	/* Bytes already in shsInfo->data */
+
+  /* Handle any leading odd-sized chunks */
+
+  if ( t ) {
+    unsigned char *p = ctx->in + t;
+
+    t = 64-t;
+    if (len < t) {
+      memcpy(p, buf, len);
+      return;
+    }
+    memcpy(p, buf, t);
+    my_MD5Transform (ctx->buf, ctx->in);
+    buf += t;
+    len -= t;
+  }
 
-/* MD5 basic transformation. Transforms state based on block.
- */
-static void MD5Transform (
-UINT4 state[4],
-unsigned char block[64])
-{
-  UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
+  /* Process data in 64-byte chunks */
 
-  Decode (x, block, 64);
+  while (len >= 64) {
+    memcpy(ctx->in, buf, 64);
+    my_MD5Transform (ctx->buf, ctx->in);
+    buf += 64;
+    len -= 64;
+  }
 
-  /* Round 1 */
-  FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
-  FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
-  FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
-  FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
-  FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
-  FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
-  FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
-  FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
-  FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
-  FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
-  FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
-  FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
-  FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
-  FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
-  FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
-  FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
-
- /* Round 2 */
-  GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
-  GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
-  GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
-  GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
-  GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
-  GG (d, a, b, c, x[10], S22,  0x2441453); /* 22 */
-  GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
-  GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
-  GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
-  GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
-  GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
-  GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
-  GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
-  GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
-  GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
-  GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
-
-  /* Round 3 */
-  HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
-  HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
-  HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
-  HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
-  HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
-  HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
-  HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
-  HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
-  HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
-  HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
-  HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
-  HH (b, c, d, a, x[ 6], S34,  0x4881d05); /* 44 */
-  HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
-  HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
-  HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
-  HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
-
-  /* Round 4 */
-  II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
-  II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
-  II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
-  II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
-  II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
-  II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
-  II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
-  II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
-  II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
-  II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
-  II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
-  II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
-  II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
-  II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
-  II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
-  II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
-
-
-  state[0] += a;
-  state[1] += b;
-  state[2] += c;
-  state[3] += d;
+  /* Handle any remaining bytes of data. */
 
-  /* Zeroize sensitive information.
-*/
-  MD5_memset ((POINTER)x, 0, sizeof (x));
+  memcpy(ctx->in, buf, len);
 }
 
-/* Encodes input (UINT4) into output (unsigned char). Assumes len is
-  a multiple of 4.
- */
-static void Encode (
-unsigned char *output,
-UINT4 *input,
-unsigned int len)
+/*
+  Final wrapup - pad to 64-byte boundary with the bit pattern 
+  1 0* (64-bit count of bits processed, MSB-first)
+*/
+void
+my_MD5Final (unsigned char digest[16], my_MD5Context *ctx) 
 {
-  unsigned int i, j;
+  unsigned count;
+  unsigned char *p;
+
+  /* Compute number of bytes mod 64 */
+  count = (ctx->bits[0] >> 3) & 0x3F;
 
-  for (i = 0, j = 0; j < len; i++, j += 4) {
- output[j] = (unsigned char)(input[i] & 0xff);
- output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
- output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
- output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
+  /* Set the first char of padding to 0x80.  This is safe since there is
+    always at least one byte free */
+  p = ctx->in + count;
+  *p++ = 0x80;
+
+  /* Bytes of padding needed to make 64 bytes */
+  count = 64 - 1 - count;
+
+  /* Pad out to 56 mod 64 */
+  if (count < 8) {
+    /* Two lots of padding:  Pad the first block to 64 bytes */
+    memset(p, 0, count);
+    my_MD5Transform (ctx->buf, ctx->in);
+
+    /* Now fill the next block with 56 bytes */
+    memset(ctx->in, 0, 56);
+  } else {
+    /* Pad block to 56 bytes */
+    memset(p, 0, count-8);
   }
+
+  /* Append length in bits and transform */
+  putu32(ctx->bits[0], ctx->in + 56);
+  putu32(ctx->bits[1], ctx->in + 60);
+
+  my_MD5Transform (ctx->buf, ctx->in);
+  putu32(ctx->buf[0], digest);
+  putu32(ctx->buf[1], digest + 4);
+  putu32(ctx->buf[2], digest + 8);
+  putu32(ctx->buf[3], digest + 12);
+  memset(ctx, 0, sizeof(ctx));	/* In case it's sensitive */
 }
 
+#ifndef ASM_MD5
 
-/* Decodes input (unsigned char) into output (UINT4). Assumes len is
-  a multiple of 4.
- */
-static void Decode (
-UINT4 *output,
-unsigned char *input,
-unsigned int len)
-{
-  unsigned int i, j;
+/* The four core functions - F1 is optimized somewhat */
 
-  for (i = 0, j = 0; j < len; i++, j += 4)
- output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
-   (((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
-}
+/* #define F1(x, y, z) (x & y | ~x & z) */
+#define F1(x, y, z) (z ^ (x & (y ^ z)))
+#define F2(x, y, z) F1(z, x, y)
+#define F3(x, y, z) (x ^ y ^ z)
+#define F4(x, y, z) (y ^ (x | ~z))
+
+/* This is the central step in the MD5 algorithm. */
+#define MD5STEP(f, w, x, y, z, data, s) \
+	( w += f(x, y, z) + data, w &= 0xffffffff, w = w<<s | w>>(32-s), w += x )
 
-/* Note: Replace "for loop" with standard memcpy if possible.
+/*
+ * The core of the MD5 algorithm, this alters an existing MD5 hash to
+ * reflect the addition of 16 longwords of new data.  MD5Update blocks
+ * the data and converts bytes into longwords for this routine.
  */
-
-#ifndef MD5_memcpy
-static void MD5_memcpy (output, input, len)
-POINTER output;
-POINTER input;
-unsigned int len;
+static void
+my_MD5Transform (uint32 buf[4], const unsigned char inraw[64])
 {
-  unsigned int i;
-
-  for (i = 0; i < len; i++)
- output[i] = input[i];
+  register uint32 a, b, c, d;
+  uint32 in[16];
+  int i;
+
+  for (i = 0; i < 16; ++i)
+    in[i] = getu32 (inraw + 4 * i);
+
+  a = buf[0];
+  b = buf[1];
+  c = buf[2];
+  d = buf[3];
+
+  MD5STEP(F1, a, b, c, d, in[ 0]+0xd76aa478,  7);
+  MD5STEP(F1, d, a, b, c, in[ 1]+0xe8c7b756, 12);
+  MD5STEP(F1, c, d, a, b, in[ 2]+0x242070db, 17);
+  MD5STEP(F1, b, c, d, a, in[ 3]+0xc1bdceee, 22);
+  MD5STEP(F1, a, b, c, d, in[ 4]+0xf57c0faf,  7);
+  MD5STEP(F1, d, a, b, c, in[ 5]+0x4787c62a, 12);
+  MD5STEP(F1, c, d, a, b, in[ 6]+0xa8304613, 17);
+  MD5STEP(F1, b, c, d, a, in[ 7]+0xfd469501, 22);
+  MD5STEP(F1, a, b, c, d, in[ 8]+0x698098d8,  7);
+  MD5STEP(F1, d, a, b, c, in[ 9]+0x8b44f7af, 12);
+  MD5STEP(F1, c, d, a, b, in[10]+0xffff5bb1, 17);
+  MD5STEP(F1, b, c, d, a, in[11]+0x895cd7be, 22);
+  MD5STEP(F1, a, b, c, d, in[12]+0x6b901122,  7);
+  MD5STEP(F1, d, a, b, c, in[13]+0xfd987193, 12);
+  MD5STEP(F1, c, d, a, b, in[14]+0xa679438e, 17);
+  MD5STEP(F1, b, c, d, a, in[15]+0x49b40821, 22);
+
+  MD5STEP(F2, a, b, c, d, in[ 1]+0xf61e2562,  5);
+  MD5STEP(F2, d, a, b, c, in[ 6]+0xc040b340,  9);
+  MD5STEP(F2, c, d, a, b, in[11]+0x265e5a51, 14);
+  MD5STEP(F2, b, c, d, a, in[ 0]+0xe9b6c7aa, 20);
+  MD5STEP(F2, a, b, c, d, in[ 5]+0xd62f105d,  5);
+  MD5STEP(F2, d, a, b, c, in[10]+0x02441453,  9);
+  MD5STEP(F2, c, d, a, b, in[15]+0xd8a1e681, 14);
+  MD5STEP(F2, b, c, d, a, in[ 4]+0xe7d3fbc8, 20);
+  MD5STEP(F2, a, b, c, d, in[ 9]+0x21e1cde6,  5);
+  MD5STEP(F2, d, a, b, c, in[14]+0xc33707d6,  9);
+  MD5STEP(F2, c, d, a, b, in[ 3]+0xf4d50d87, 14);
+  MD5STEP(F2, b, c, d, a, in[ 8]+0x455a14ed, 20);
+  MD5STEP(F2, a, b, c, d, in[13]+0xa9e3e905,  5);
+  MD5STEP(F2, d, a, b, c, in[ 2]+0xfcefa3f8,  9);
+  MD5STEP(F2, c, d, a, b, in[ 7]+0x676f02d9, 14);
+  MD5STEP(F2, b, c, d, a, in[12]+0x8d2a4c8a, 20);
+
+  MD5STEP(F3, a, b, c, d, in[ 5]+0xfffa3942,  4);
+  MD5STEP(F3, d, a, b, c, in[ 8]+0x8771f681, 11);
+  MD5STEP(F3, c, d, a, b, in[11]+0x6d9d6122, 16);
+  MD5STEP(F3, b, c, d, a, in[14]+0xfde5380c, 23);
+  MD5STEP(F3, a, b, c, d, in[ 1]+0xa4beea44,  4);
+  MD5STEP(F3, d, a, b, c, in[ 4]+0x4bdecfa9, 11);
+  MD5STEP(F3, c, d, a, b, in[ 7]+0xf6bb4b60, 16);
+  MD5STEP(F3, b, c, d, a, in[10]+0xbebfbc70, 23);
+  MD5STEP(F3, a, b, c, d, in[13]+0x289b7ec6,  4);
+  MD5STEP(F3, d, a, b, c, in[ 0]+0xeaa127fa, 11);
+  MD5STEP(F3, c, d, a, b, in[ 3]+0xd4ef3085, 16);
+  MD5STEP(F3, b, c, d, a, in[ 6]+0x04881d05, 23);
+  MD5STEP(F3, a, b, c, d, in[ 9]+0xd9d4d039,  4);
+  MD5STEP(F3, d, a, b, c, in[12]+0xe6db99e5, 11);
+  MD5STEP(F3, c, d, a, b, in[15]+0x1fa27cf8, 16);
+  MD5STEP(F3, b, c, d, a, in[ 2]+0xc4ac5665, 23);
+
+  MD5STEP(F4, a, b, c, d, in[ 0]+0xf4292244,  6);
+  MD5STEP(F4, d, a, b, c, in[ 7]+0x432aff97, 10);
+  MD5STEP(F4, c, d, a, b, in[14]+0xab9423a7, 15);
+  MD5STEP(F4, b, c, d, a, in[ 5]+0xfc93a039, 21);
+  MD5STEP(F4, a, b, c, d, in[12]+0x655b59c3,  6);
+  MD5STEP(F4, d, a, b, c, in[ 3]+0x8f0ccc92, 10);
+  MD5STEP(F4, c, d, a, b, in[10]+0xffeff47d, 15);
+  MD5STEP(F4, b, c, d, a, in[ 1]+0x85845dd1, 21);
+  MD5STEP(F4, a, b, c, d, in[ 8]+0x6fa87e4f,  6);
+  MD5STEP(F4, d, a, b, c, in[15]+0xfe2ce6e0, 10);
+  MD5STEP(F4, c, d, a, b, in[ 6]+0xa3014314, 15);
+  MD5STEP(F4, b, c, d, a, in[13]+0x4e0811a1, 21);
+  MD5STEP(F4, a, b, c, d, in[ 4]+0xf7537e82,  6);
+  MD5STEP(F4, d, a, b, c, in[11]+0xbd3af235, 10);
+  MD5STEP(F4, c, d, a, b, in[ 2]+0x2ad7d2bb, 15);
+  MD5STEP(F4, b, c, d, a, in[ 9]+0xeb86d391, 21);
+
+  buf[0] += a;
+  buf[1] += b;
+  buf[2] += c;
+  buf[3] += d;
 }
 #endif
 
-/* Note: Replace "for loop" with standard memset if possible.
- */
+#ifdef TEST
+/* 
+  Simple test program.  Can use it to manually run the tests from
+  RFC1321 for example.  
+*/
+#include <stdio.h>
 
-#ifndef MD5_memset
-static void MD5_memset (output, value, len)
-POINTER output;
-int value;
-unsigned int len;
+int
+main (int argc, char **argv)
 {
-  unsigned int i;
-
-  for (i = 0; i < len; i++)
- ((char *)output)[i] = (char)value;
+  my_MD5Context context;
+  unsigned char checksum[16];
+  int i;
+  int j;
+
+  if (argc < 2)
+  {
+    fprintf (stderr, "usage: %s string-to-hash\n", argv[0]);
+    exit (1);
+  }
+  for (j = 1; j < argc; ++j)
+  {
+    printf ("MD5 (\"%s\") = ", argv[j]);
+    my_MD5Init (&context);
+    my_MD5Update (&context, argv[j], strlen (argv[j]));
+    my_MD5Final (checksum, &context);
+    for (i = 0; i < 16; i++)
+    {
+      printf ("%02x", (unsigned int) checksum[i]);
+    }
+    printf ("\n");
+  }
+  return 0;
 }
-#endif
+#endif /* TEST */

=== modified file 'mysys/mf_iocache2.c'
--- a/mysys/mf_iocache2.c	2007-01-22 12:10:46 +0000
+++ b/mysys/mf_iocache2.c	2009-02-10 22:47:54 +0000
@@ -368,9 +368,9 @@ uint my_b_vprintf(IO_CACHE *info, const 
     else
     {
       /* %% or unknown code */
-      if (my_b_write(info, backtrack, fmt-backtrack))
+      if (my_b_write(info, backtrack, (uint) (fmt - backtrack)))
         goto err;
-      out_length+= fmt-backtrack;
+      out_length+= (uint) (fmt - backtrack);
     }
   }
   return out_length;

=== modified file 'mysys/my_fstream.c'
--- a/mysys/my_fstream.c	2007-03-28 17:46:42 +0000
+++ b/mysys/my_fstream.c	2009-03-06 09:32:00 +0000
@@ -116,10 +116,8 @@ uint my_fwrite(FILE *stream, const byte 
       if ((errno == ENOSPC || errno == EDQUOT) &&
           (MyFlags & MY_WAIT_IF_FULL))
       {
-        if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE))
-          my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
-                   "[stream]",my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
-        VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
+        wait_for_free_space("[stream]", errors);
+        errors++;
         VOID(my_fseek(stream,seekptr,MY_SEEK_SET,MYF(0)));
         continue;
       }

=== modified file 'mysys/my_new.cc'
--- a/mysys/my_new.cc	2006-12-23 19:17:15 +0000
+++ b/mysys/my_new.cc	2009-03-19 20:20:15 +0000
@@ -46,8 +46,9 @@ void operator delete[] (void *ptr) throw
 
 C_MODE_START
 
-int __cxa_pure_virtual() {
-  assert("Pure virtual method called." == "Aborted");
+int __cxa_pure_virtual()
+{
+  assert(! "Aborted: pure virtual method called.");
   return 0;
 }
 

=== modified file 'mysys/my_pread.c'
--- a/mysys/my_pread.c	2007-03-28 17:46:42 +0000
+++ b/mysys/my_pread.c	2009-03-06 09:32:00 +0000
@@ -121,10 +121,8 @@ uint my_pwrite(int Filedes, const byte *
     if ((my_errno == ENOSPC || my_errno == EDQUOT) &&
         (MyFlags & MY_WAIT_IF_FULL))
     {
-      if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE))
-	my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
-		 my_filename(Filedes),my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
-      VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
+      wait_for_free_space(my_filename(Filedes), errors);
+      errors++;
       continue;
     }
     if ((writenbytes > 0 && (uint) writenbytes != (uint) -1) ||

=== modified file 'mysys/my_static.c'
--- a/mysys/my_static.c	2008-05-06 08:57:19 +0000
+++ b/mysys/my_static.c	2009-02-10 22:47:54 +0000
@@ -74,8 +74,8 @@ uint sf_malloc_prehunc=0,		/* If you hav
      sf_malloc_endhunc=0,		/* dump when malloc-message.... */
 					/* set theese to 64 or 128  */
      sf_malloc_quick=0;			/* set if no calls to sanity */
-ulong sf_malloc_cur_memory= 0L;		/* Current memory usage */
-ulong sf_malloc_max_memory= 0L;		/* Maximum memory usage */
+size_t sf_malloc_cur_memory= 0L;		/* Current memory usage */
+size_t sf_malloc_max_memory= 0L;		/* Maximum memory usage */
 uint  sf_malloc_count= 0;		/* Number of times NEW() was called */
 byte *sf_min_adress= (byte*) ~(unsigned long) 0L,
      *sf_max_adress= (byte*) 0L;

=== modified file 'mysys/my_write.c'
--- a/mysys/my_write.c	2007-10-25 04:19:57 +0000
+++ b/mysys/my_write.c	2009-03-06 09:32:00 +0000
@@ -54,10 +54,8 @@ uint my_write(int Filedes, const byte *B
     if ((my_errno == ENOSPC || my_errno == EDQUOT) &&
         (MyFlags & MY_WAIT_IF_FULL))
     {
-      if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE))
-	my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
-		 my_filename(Filedes),my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
-      VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
+      wait_for_free_space(my_filename(Filedes), errors);
+      errors++;
       continue;
     }
 

=== modified file 'mysys/safemalloc.c'
--- a/mysys/safemalloc.c	2007-08-29 15:20:18 +0000
+++ b/mysys/safemalloc.c	2009-02-10 22:47:54 +0000
@@ -173,7 +173,7 @@ gptr _mymalloc(size_t size, const char *
   data[size + 3]= MAGICEND3;
   irem->filename= (my_string) filename;
   irem->linenum= lineno;
-  irem->datasize= size;
+  irem->datasize= (uint32) size;
   irem->prev=	  NULL;
 
   /* Add this remember structure to the linked list */

=== modified file 'mysys/string.c'
--- a/mysys/string.c	2007-01-19 18:20:52 +0000
+++ b/mysys/string.c	2009-02-10 22:47:54 +0000
@@ -150,12 +150,12 @@ my_bool dynstr_append_os_quoted(DYNAMIC_
     /* Search for quote in each string and replace with escaped quote */
     while(*(next_pos= strcend(cur_pos, quote_str[0])) != '\0')
     {
-      ret&= dynstr_append_mem(str, cur_pos, next_pos - cur_pos);
+      ret&= dynstr_append_mem(str, cur_pos, (uint) (next_pos - cur_pos));
       ret&= dynstr_append_mem(str ,"\\", 1);
       ret&= dynstr_append_mem(str, quote_str, quote_len);
       cur_pos= next_pos + 1;
     }
-    ret&= dynstr_append_mem(str, cur_pos, next_pos - cur_pos);
+    ret&= dynstr_append_mem(str, cur_pos, (uint) (next_pos - cur_pos));
     append= va_arg(dirty_text, char *);
   }
   va_end(dirty_text);

=== modified file 'server-tools/instance-manager/buffer.cc'
--- a/server-tools/instance-manager/buffer.cc	2006-12-23 19:17:15 +0000
+++ b/server-tools/instance-manager/buffer.cc	2009-02-10 22:47:54 +0000
@@ -100,7 +100,7 @@ err:
 
 int Buffer::get_size()
 {
-  return buffer_size;
+  return (uint) buffer_size;
 }
 
 

=== modified file 'server-tools/instance-manager/commands.cc'
--- a/server-tools/instance-manager/commands.cc	2006-12-23 19:17:15 +0000
+++ b/server-tools/instance-manager/commands.cc	2009-02-10 22:47:54 +0000
@@ -52,11 +52,11 @@
 
 static inline int put_to_buff(Buffer *buff, const char *str, uint *position)
 {
-  uint len= strlen(str);
-  if (buff->append(*position, str, len))
+  size_t len= strlen(str);
+  if (buff->append(*position, str, (uint) len))
     return 1;
 
-  *position+= len;
+  *position+= (uint) len;
   return 0;
 }
 
@@ -201,7 +201,7 @@ int Show_instance_status::execute(struct
     Instance *instance;
 
     store_to_protocol_packet(&send_buff, (char*) instance_name, &position);
-    if (!(instance= instance_map->find(instance_name, strlen(instance_name))))
+    if (!(instance= instance_map->find(instance_name, (uint) strlen(instance_name))))
       goto err;
     if (instance->is_running())
       store_to_protocol_packet(&send_buff, (char*) "online", &position);
@@ -272,7 +272,7 @@ int Show_instance_options::execute(struc
   {
     Instance *instance;
 
-    if (!(instance= instance_map->find(instance_name, strlen(instance_name))))
+    if (!(instance= instance_map->find(instance_name, (uint) strlen(instance_name))))
       goto err;
     store_to_protocol_packet(&send_buff, (char*) "instance_name", &position);
     store_to_protocol_packet(&send_buff, (char*) instance_name, &position);
@@ -452,7 +452,7 @@ int Show_instance_log::execute(struct st
     File fd;
 
     if ((instance= instance_map->find(instance_name,
-                                      strlen(instance_name))) == NULL)
+                                      (uint) strlen(instance_name))) == NULL)
       goto err;
 
     logpath= instance->options.logs[log_type];
@@ -479,13 +479,13 @@ int Show_instance_log::execute(struct st
 
       buff_size= (size - offset);
 
-      read_buff.reserve(0, buff_size);
+      read_buff.reserve(0, (uint) buff_size);
 
       /* read in one chunk */
       read_len= (int)my_seek(fd, file_stat.st_size - size, MY_SEEK_SET, MYF(0));
 
       if ((read_len= my_read(fd, (byte*) read_buff.buffer,
-                             buff_size, MYF(0))) < 0)
+                             (uint) buff_size, MYF(0))) < 0)
         return ER_READ_FILE;
       store_to_protocol_packet(&send_buff, read_buff.buffer,
                                &position, read_len);
@@ -569,7 +569,7 @@ int Show_instance_log_files::execute(str
   Instance *instance;
 
   if ((instance= instance_map->
-                 find(instance_name, strlen(instance_name))) == NULL)
+                 find(instance_name, (uint) strlen(instance_name))) == NULL)
     goto err;
 
   {

=== modified file 'server-tools/instance-manager/instance.cc'
--- a/server-tools/instance-manager/instance.cc	2006-12-27 05:28:28 +0000
+++ b/server-tools/instance-manager/instance.cc	2009-02-10 22:47:54 +0000
@@ -173,7 +173,7 @@ static int start_process(Instance_option
 
   int cmdlen= 0;
   for (int i= 0; instance_options->argv[i] != 0; i++)
-    cmdlen+= strlen(instance_options->argv[i]) + 3;
+    cmdlen+= (uint) strlen(instance_options->argv[i]) + 3;
   cmdlen++;   /* make room for the null */
 
   char *cmdline= new char[cmdlen];

=== modified file 'server-tools/instance-manager/instance_map.cc'
--- a/server-tools/instance-manager/instance_map.cc	2006-12-23 19:17:15 +0000
+++ b/server-tools/instance-manager/instance_map.cc	2009-02-10 22:47:54 +0000
@@ -112,7 +112,7 @@ int Instance_map::process_one_option(con
        || group[sizeof(prefix)] == '\0'))
     {
       if (!(instance= (Instance *) hash_search(&hash, (byte *) group,
-                                               strlen(group))))
+                                               (uint) strlen(group))))
       {
         if (!(instance= new Instance))
           goto err;

=== modified file 'server-tools/instance-manager/instance_options.cc'
--- a/server-tools/instance-manager/instance_options.cc	2007-03-01 21:06:57 +0000
+++ b/server-tools/instance-manager/instance_options.cc	2009-02-10 22:47:54 +0000
@@ -257,7 +257,7 @@ int Instance_options::fill_log_options()
     strmov(hostname, "mysql");
 
   hostname[MAX_LOG_OPTION_LENGTH - 1]= 0; /* Safety */
-  hostname_length= strlen(hostname);
+  hostname_length= (uint) strlen(hostname);
 
 
   for (log_files= logs_st; log_files->name; log_files++)
@@ -392,7 +392,7 @@ int Instance_options::complete_initializ
   if (!mysqld_path)
   {
     // Need one extra byte, as convert_dirname() adds a slash at the end.
-    if (!(mysqld_path= alloc_root(&alloc, strlen(default_path) + 2)))
+    if (!(mysqld_path= alloc_root(&alloc, (uint) strlen(default_path) + 2)))
       goto err;
     strcpy((char *)mysqld_path, default_path);
   }
@@ -401,7 +401,7 @@ int Instance_options::complete_initializ
   end= convert_dirname((char*)mysqld_path, mysqld_path, NullS);
   end[-1]= 0;
 
-  mysqld_path_len= strlen(mysqld_path);
+  mysqld_path_len= (uint) strlen(mysqld_path);
 
   if (mysqld_port)
     mysqld_port_val= atoi(strchr(mysqld_port, '=') + 1);
@@ -572,7 +572,7 @@ void Instance_options::print_argv()
 
 int Instance_options::init(const char *instance_name_arg)
 {
-  instance_name_len= strlen(instance_name_arg);
+  instance_name_len= (uint) strlen(instance_name_arg);
 
   init_alloc_root(&alloc, MEM_ROOT_BLOCK_SIZE, 0);
 

=== modified file 'server-tools/instance-manager/listener.cc'
--- a/server-tools/instance-manager/listener.cc	2007-06-20 12:00:28 +0000
+++ b/server-tools/instance-manager/listener.cc	2009-02-10 22:47:54 +0000
@@ -35,23 +35,28 @@
 #include "portability.h"
 
 
+#ifndef __WIN__
 static void set_non_blocking(int socket)
 {
-#ifndef __WIN__
   int flags= fcntl(socket, F_GETFL, 0);
   fcntl(socket, F_SETFL, flags | O_NONBLOCK);
 #else
+static void set_non_blocking(SOCKET socket)
+{
   u_long arg= 1;
   ioctlsocket(socket, FIONBIO, &arg);
 #endif
 }
 
 
+#ifndef __WIN__
 static void set_no_inherit(int socket)
 {
-#ifndef __WIN__
   int flags= fcntl(socket, F_GETFD, 0);
   fcntl(socket, F_SETFD, flags | FD_CLOEXEC);
+#else
+static void set_no_inherit(SOCKET socket)
+{
 #endif
 }
 
@@ -71,7 +76,11 @@ private:
   ulong total_connection_count;
   Thread_info thread_info;
 
+#ifdef __WIN__
+  SOCKET  sockets[2];
+#else
   int     sockets[2];
+#endif
   int     num_sockets;
   fd_set  read_fds;
 private:
@@ -110,9 +119,10 @@ Listener_thread::~Listener_thread()
 
 void Listener_thread::run()
 {
-  int i, n= 0;
+  int i= 0;
 
 #ifndef __WIN__
+  int n= 0;
   /* we use this var to check whether we are running on LinuxThreads */
   pid_t thread_pid;
 
@@ -121,6 +131,8 @@ void Listener_thread::run()
   struct sockaddr_un unix_socket_address;
   /* set global variable */
   linuxthreads= (thread_pid != manager_pid);
+#else
+  SOCKET n= 0;
 #endif
 
   thread_registry.register_thread(&thread_info);
@@ -159,7 +171,11 @@ void Listener_thread::run()
       signal during shutdown. This results in failing assert
       (Thread_registry::~Thread_registry). Valgrind 2.2 works fine.
     */
+#ifdef __WIN__
+    int rc= select(0, &read_fds_arg, 0, 0, &tv);
+#else
     int rc= select(n, &read_fds_arg, 0, 0, &tv);
+#endif
 
     if (rc == 0 || rc == -1)
     {
@@ -175,11 +191,18 @@ void Listener_thread::run()
       /* Assuming that rc > 0 as we asked to wait forever */
       if (FD_ISSET(sockets[socket_index], &read_fds_arg))
       {
+#ifdef __WIN__
+        SOCKET client_fd= accept(sockets[socket_index], 0, 0);
+        /* accept may return INVALID_SOCKET on failure */
+        if (client_fd != INVALID_SOCKET)
+		{
+#else
         int client_fd= accept(sockets[socket_index], 0, 0);
         /* accept may return -1 (failure or spurious wakeup) */
         if (client_fd >= 0)                    // connection established
         {
           set_no_inherit(client_fd);
+#endif
 
           Vio *vio= vio_new(client_fd, socket_index == 0 ?
                             VIO_TYPE_SOCKET : VIO_TYPE_TCPIP,
@@ -230,7 +253,11 @@ int Listener_thread::create_tcp_socket()
   /* value to be set by setsockopt */
   int arg= 1;
 
+#ifdef __WIN__
+  SOCKET ip_socket= socket(AF_INET, SOCK_STREAM, 0);
+#else
   int ip_socket= socket(AF_INET, SOCK_STREAM, 0);
+#endif
   if (ip_socket == INVALID_SOCKET)
   {
     log_error("Listener_thead::run(): socket(AF_INET) failed, %s",

=== modified file 'server-tools/instance-manager/mysql_connection.cc'
--- a/server-tools/instance-manager/mysql_connection.cc	2007-05-24 09:21:27 +0000
+++ b/server-tools/instance-manager/mysql_connection.cc	2009-02-10 22:47:54 +0000
@@ -241,7 +241,7 @@ int Mysql_connection_thread::check_conne
 
   /* write connection message and read reply */
   enum { MIN_HANDSHAKE_SIZE= 2 };
-  if (net_write_command(&net, protocol_version, "", 0, buff, pos - buff) ||
+  if (net_write_command(&net, protocol_version, "", 0, buff, (uint) (pos - buff)) ||
      (pkt_len= my_net_read(&net)) == packet_error ||
       pkt_len < MIN_HANDSHAKE_SIZE)
   {
@@ -275,7 +275,7 @@ int Mysql_connection_thread::check_conne
     net_send_error(&net, ER_ACCESS_DENIED_ERROR);
     return 1;
   }
-  if (user_map.authenticate(user, password-user-2, password, scramble))
+  if (user_map.authenticate(user, (uint) (password - user - 2), password, scramble))
   {
     net_send_error(&net, ER_ACCESS_DENIED_ERROR);
     return 1;

=== modified file 'server-tools/instance-manager/options.cc'
--- a/server-tools/instance-manager/options.cc	2007-01-22 12:10:46 +0000
+++ b/server-tools/instance-manager/options.cc	2009-02-10 22:47:54 +0000
@@ -59,7 +59,7 @@ char **Options::saved_argv= NULL;
 bool Options::is_forced_default_file= 0;
 
 static const char * const ANGEL_PID_FILE_SUFFIX= ".angel.pid";
-static const int ANGEL_PID_FILE_SUFFIX_LEN= strlen(ANGEL_PID_FILE_SUFFIX);
+static const int ANGEL_PID_FILE_SUFFIX_LEN= (uint) strlen(ANGEL_PID_FILE_SUFFIX);
 
 /*
   List of options, accepted by the instance manager.

=== modified file 'server-tools/instance-manager/parse.cc'
--- a/server-tools/instance-manager/parse.cc	2007-01-22 12:10:46 +0000
+++ b/server-tools/instance-manager/parse.cc	2009-02-10 22:47:54 +0000
@@ -177,7 +177,7 @@ Command *parse_command(Instance_map *map
     get_word(&text, &option_len, NONSPACE);
     option= text;
     if ((tmp= strchr(text, '=')) != NULL)
-      option_len= tmp - text;
+      option_len= (uint) (tmp - text);
     text+= option_len;
 
     get_word(&text, &word_len);

=== modified file 'server-tools/instance-manager/parse.h'
--- a/server-tools/instance-manager/parse.h	2006-12-23 19:17:15 +0000
+++ b/server-tools/instance-manager/parse.h	2009-02-10 22:47:54 +0000
@@ -58,7 +58,7 @@ inline void get_word(const char **text, 
            (*word_end != '\0'))
       ++word_end;
 
-  *word_len= word_end - *text;
+  *word_len= (uint) (word_end - *text);
 }
 
 #endif /* INCLUDES_MYSQL_INSTANCE_MANAGER_PARSE_H */

=== modified file 'server-tools/instance-manager/parse_output.cc'
--- a/server-tools/instance-manager/parse_output.cc	2006-12-23 19:17:15 +0000
+++ b/server-tools/instance-manager/parse_output.cc	2009-02-10 22:47:54 +0000
@@ -30,11 +30,11 @@ void trim_space(const char **text, uint 
     start++;
   *text= start;
 
-  int len= strlen(start);
+  size_t len= strlen(start);
   const char *end= start + len - 1;
   while (end > start && my_isspace(&my_charset_latin1, *end))
     end--;
-  *word_len= (end - start)+1;
+  *word_len= (uint) (end - start)+1;
 }
 
 /*
@@ -65,7 +65,7 @@ int parse_output_and_get_value(const cha
                                uint flag)
 {
   FILE *output;
-  uint wordlen;
+  size_t wordlen;
   /* should be enough to store the string from the output */
   enum { MAX_LINE_LEN= 512 };
   char linebuf[MAX_LINE_LEN];
@@ -111,7 +111,7 @@ int parse_output_and_get_value(const cha
         strmake(result, linep, found_word_len);
       }
       else         /* currently there are only two options */
-        strmake(result, linep, input_buffer_len - 1);
+        strmake(result, linep, (uint) (input_buffer_len - 1));
       rc= 0;
       break;
     }

=== modified file 'server-tools/instance-manager/protocol.cc'
--- a/server-tools/instance-manager/protocol.cc	2006-12-31 00:02:27 +0000
+++ b/server-tools/instance-manager/protocol.cc	2009-02-10 22:47:54 +0000
@@ -53,11 +53,11 @@ int net_send_ok(struct st_net *net, unsi
   int2store(pos, 0);
   pos+= 2;
 
-  uint position= pos - buff.buffer; /* we might need it for message */
+  uint position= (uint) (pos - buff.buffer); /* we might need it for message */
 
   if (message != NULL)
   {
-    buff.reserve(position, 9 + strlen(message));
+    buff.reserve(position, 9 + (uint) strlen(message));
     store_to_protocol_packet(&buff, message, &position);
   }
 
@@ -82,7 +82,7 @@ int net_send_error(struct st_net *net, u
   memcpy(pos, errno_to_sqlstate(sql_errno), SQLSTATE_LENGTH);
   pos+= SQLSTATE_LENGTH;
   pos= strmake(pos, err, MYSQL_ERRMSG_SIZE - 1) + 1;
-  return my_net_write(net, buff, pos - buff) || net_flush(net);
+  return my_net_write(net, buff, (uint) (pos - buff)) || net_flush(net);
 }
 
 
@@ -98,7 +98,7 @@ int net_send_error_323(struct st_net *ne
   int2store(pos, sql_errno);
   pos+= 2;
   pos= strmake(pos, err, MYSQL_ERRMSG_SIZE - 1) + 1;
-  return my_net_write(net, buff, pos - buff) || net_flush(net);
+  return my_net_write(net, buff, (uint) (pos - buff)) || net_flush(net);
 }
 
 char *net_store_length(char *pkg, uint length)
@@ -123,7 +123,7 @@ int store_to_protocol_packet(Buffer *buf
   /* reserve max amount of bytes needed to store length */
   if (buf->reserve(*position, 9))
     goto err;
-  currpos= (net_store_length(buf->buffer + *position,
+  currpos= (uint) (net_store_length(buf->buffer + *position,
                              (ulonglong) string_len) - buf->buffer);
   if (buf->append(currpos, string, string_len))
     goto err;
@@ -139,7 +139,7 @@ int store_to_protocol_packet(Buffer *buf
 {
   uint string_len;
 
-  string_len= strlen(string);
+  string_len= (uint) strlen(string);
   return store_to_protocol_packet(buf, string, position, string_len);
 }
 

=== modified file 'server-tools/instance-manager/user_map.cc'
--- a/server-tools/instance-manager/user_map.cc	2007-01-22 12:10:46 +0000
+++ b/server-tools/instance-manager/user_map.cc	2009-02-10 22:47:54 +0000
@@ -55,7 +55,7 @@ int User::init(const char *line)
       goto err;
     password= name_end + 1;
   }
-  user_length= name_end - name_begin;
+  user_length= (uint) (name_end - name_begin);
   if (user_length > USERNAME_LENGTH)
     goto err;
 

=== removed file 'sql-bench/TODO'
--- a/sql-bench/TODO	2001-03-11 19:20:15 +0000
+++ b/sql-bench/TODO	1970-01-01 00:00:00 +0000
@@ -1,21 +0,0 @@
-When comparing with ms-sql:
-
-Check how to get MySQL faster         mysql   ms-sql
-
-count_distinct (2000)               |  89.00|  39.00|
-count_distinct_big (120)            | 324.00| 121.00|
-count_distinct_group (1000)         | 158.00| 107.00|
-count_distinct_group_on_key (1000)  |  49.00|  17.00|
-count_distinct_group_on_key_parts (1| 157.00| 108.00|
-order_by_big (10)                   | 197.00|  89.00|
-order_by_big_key (10)               | 170.00|  82.00|
-order_by_big_key2 (10)              | 163.00|  73.00|
-order_by_big_key_desc (10)          | 172.00|  84.00|
-order_by_big_key_diff (10)          | 193.00|  89.00|
-order_by_big_key_prefix (10)        | 165.00|  72.00|                          
-
-
-Why is the following slow on NT:
-				        NT     Linux
-update_of_primary_key_many_keys (256| 560.00|  65.00|
-

=== modified file 'sql-common/client.c'
--- a/sql-common/client.c	2008-03-29 07:52:16 +0000
+++ b/sql-common/client.c	2009-02-10 22:47:54 +0000
@@ -3145,7 +3145,7 @@ int STDCALL mysql_set_character_set(MYSQ
     if (mysql_get_server_version(mysql) < 40100)
       return 0;
     sprintf(buff, "SET NAMES %s", cs_name);
-    if (!mysql_real_query(mysql, buff, strlen(buff)))
+    if (!mysql_real_query(mysql, buff, (uint) strlen(buff)))
     {
       mysql->charset= cs;
     }

=== modified file 'sql-common/my_user.c'
--- a/sql-common/my_user.c	2006-12-23 19:17:15 +0000
+++ b/sql-common/my_user.c	2009-02-10 22:47:54 +0000
@@ -44,8 +44,8 @@ void parse_user(const char *user_id_str,
   }
   else
   {
-    *user_name_len= p - user_id_str;
-    *host_name_len= user_id_len - *user_name_len - 1;
+    *user_name_len= (uint) (p - user_id_str);
+    *host_name_len= (uint) (user_id_len - *user_name_len - 1);
 
     memcpy(user_name_str, user_id_str, *user_name_len);
     memcpy(host_name_str, p + 1, *host_name_len);

=== modified file 'sql/gen_lex_hash.cc'
--- a/sql/gen_lex_hash.cc	2007-01-30 23:06:42 +0000
+++ b/sql/gen_lex_hash.cc	2009-02-10 22:47:54 +0000
@@ -199,7 +199,7 @@ void insert_symbols()
   for (cur= symbols; i<array_elements(symbols); cur++, i++){
     hash_lex_struct *root= 
       get_hash_struct_by_len(&root_by_len,cur->length,&max_len);
-    insert_into_hash(root,cur->name,0,i,0);
+    insert_into_hash(root,cur->name,0,(uint) i,0);
   }
 }
 
@@ -511,7 +511,7 @@ static inline SYMBOL *get_hash_symbol(co
           res= symbols+ires;\n\
         else\n\
           res= sql_functions-ires-1;\n\
-        register uint count= cur_str-s;\n\
+		  register uint count= (uint) (cur_str - s);\n\
         return lex_casecmp(cur_str,res->name+count,len-count) ? 0 : res;\n\
       }\n\
 \n\
@@ -540,7 +540,7 @@ static inline SYMBOL *get_hash_symbol(co
         register int16 ires= (int16)(cur_struct>>16);\n\
         if (ires==array_elements(symbols)) return 0;\n\
         register SYMBOL *res= symbols+ires;\n\
-        register uint count= cur_str-s;\n\
+		register uint count= (uint) (cur_str - s);\n\
         return lex_casecmp(cur_str,res->name+count,len-count)!=0 ? 0 : res;\n\
       }\n\
 \n\

=== modified file 'sql/ha_archive.cc'
--- a/sql/ha_archive.cc	2007-06-27 08:19:34 +0000
+++ b/sql/ha_archive.cc	2009-02-10 22:47:54 +0000
@@ -851,7 +851,7 @@ int ha_archive::get_row(gzFile file_to_r
     total_blob_length += ((Field_blob*) table->field[*ptr])->get_length();
 
   /* Adjust our row buffer if we need be */
-  buffer.alloc(total_blob_length);
+  buffer.alloc((uint) total_blob_length);
   last= (char *)buffer.ptr();
 
   /* Loop through our blobs and read them */
@@ -862,10 +862,10 @@ int ha_archive::get_row(gzFile file_to_r
     size_t size= ((Field_blob*) table->field[*ptr])->get_length();
     if (size)
     {
-      read= gzread(file_to_read, last, size);
+      read= gzread(file_to_read, last, (uint) size);
       if ((size_t) read != size)
         DBUG_RETURN(HA_ERR_END_OF_FILE);
-      ((Field_blob*) table->field[*ptr])->set_ptr(size, last);
+      ((Field_blob*) table->field[*ptr])->set_ptr((uint) size, last);
       last += size;
     }
   }

=== modified file 'sql/ha_federated.cc'
--- a/sql/ha_federated.cc	2008-11-20 10:08:36 +0000
+++ b/sql/ha_federated.cc	2009-02-10 22:47:54 +0000
@@ -640,7 +640,7 @@ static int parse_url(FEDERATED_SHARE *sh
   share->database[share->table_name - share->database]= '\0';
   share->table_name++;
 
-  share->table_name_length= strlen(share->table_name);
+  share->table_name_length= (uint) strlen(share->table_name);
  
   /* make sure there's not an extra / */
   if ((strchr(share->table_name, '/')))
@@ -726,7 +726,7 @@ uint ha_federated::convert_row_to_intern
       index variable to move us through the row at the
       same iterative step as the field
     */
-    int x= field - table->field;
+    size_t x= (field - table->field);
     my_ptrdiff_t old_ptr;
     old_ptr= (my_ptrdiff_t) (record - table->record[0]);
     (*field)->move_field(old_ptr);
@@ -750,7 +750,7 @@ static bool emit_key_part_name(String *t
 {
   DBUG_ENTER("emit_key_part_name");
   if (append_ident(to, part->field->field_name, 
-                   strlen(part->field->field_name), ident_quote_char))
+                   (uint) strlen(part->field->field_name), ident_quote_char))
     DBUG_RETURN(1);                           // Out of memory
   DBUG_RETURN(0);
 }
@@ -1290,13 +1290,13 @@ static FEDERATED_SHARE *get_share(const 
     for (field= table->field; *field; field++)
     {
       append_ident(&query, (*field)->field_name, 
-                   strlen((*field)->field_name), ident_quote_char);
+                   (uint) strlen((*field)->field_name), ident_quote_char);
       query.append(FEDERATED_COMMA);
     }
-    query.length(query.length()- strlen(FEDERATED_COMMA));
+    query.length(query.length() - (uint) strlen(FEDERATED_COMMA));
     query.append(FEDERATED_FROM);
 
-    tmp_share.table_name_length= strlen(tmp_share.table_name);
+    tmp_share.table_name_length= (uint) strlen(tmp_share.table_name);
     append_ident(&query, tmp_share.table_name, 
                  tmp_share.table_name_length, ident_quote_char);
 
@@ -1528,7 +1528,7 @@ bool ha_federated::append_stmt_insert(St
   append_ident(&insert_string, share->table_name, share->table_name_length, 
                ident_quote_char);
   insert_string.append(FEDERATED_OPENPAREN);
-  tmp_length= insert_string.length() - strlen(FEDERATED_COMMA);
+  tmp_length= insert_string.length() - (uint) strlen(FEDERATED_COMMA);
 
   /*
     loop through the field pointer array, add any fields to both the values
@@ -1538,7 +1538,7 @@ bool ha_federated::append_stmt_insert(St
   {
     /* append the field name */
     append_ident(&insert_string, (*field)->field_name, 
-                 strlen((*field)->field_name), ident_quote_char);
+                 (uint) strlen((*field)->field_name), ident_quote_char);
 
     /* append commas between both fields and fieldnames */
     /*
@@ -1554,7 +1554,7 @@ bool ha_federated::append_stmt_insert(St
   /*
     remove trailing comma
   */
-  insert_string.length(insert_string.length() - strlen(FEDERATED_COMMA));
+  insert_string.length(insert_string.length() - (uint) strlen(FEDERATED_COMMA));
 
   /*
     if there were no fields, we don't want to add a closing paren
@@ -1667,7 +1667,7 @@ int ha_federated::write_row(byte *buf)
   if (values_string.length() > tmp_length)
   {
     /* chops off leading commas */
-    values_string.length(values_string.length() - strlen(FEDERATED_COMMA));
+    values_string.length(values_string.length() - (uint) strlen(FEDERATED_COMMA));
   }
   /* we always want to append this, even if there aren't any fields */
   values_string.append(FEDERATED_CLOSEPAREN);
@@ -1950,10 +1950,10 @@ int ha_federated::update_row(const byte 
 
   for (Field **field= table->field; *field; field++)
   {
-    uint field_name_length= strlen((*field)->field_name);
-    append_ident(&where_string, (*field)->field_name, field_name_length,
+    size_t field_name_length= strlen((*field)->field_name);
+    append_ident(&where_string, (*field)->field_name, (uint) field_name_length,
                  ident_quote_char);
-    append_ident(&update_string, (*field)->field_name, field_name_length,
+    append_ident(&update_string, (*field)->field_name, (uint) field_name_length,
                  ident_quote_char);
     update_string.append(FEDERATED_EQ);
 
@@ -2044,7 +2044,7 @@ int ha_federated::delete_row(const byte 
     Field *cur_field= *field;
     data_string.length(0);
     append_ident(&delete_string, (*field)->field_name,
-                 strlen((*field)->field_name), ident_quote_char);
+                 (uint) strlen((*field)->field_name), ident_quote_char);
 
     if (cur_field->is_null())
     {
@@ -2359,7 +2359,7 @@ int ha_federated::rnd_init(bool scan)
       stored_result= 0;
     }
 
-    if (real_query(share->select_query, strlen(share->select_query)))
+    if (real_query(share->select_query, (uint) strlen(share->select_query)))
       goto error;
 
     stored_result= mysql_store_result(mysql);

=== modified file 'sql/ha_innodb.cc'
--- a/sql/ha_innodb.cc	2009-03-03 00:57:09 +0000
+++ b/sql/ha_innodb.cc	2009-03-19 13:44:58 +0000
@@ -7025,7 +7025,7 @@ ha_innobase::get_error_message(int error
 {
 	trx_t*	    trx = check_trx_exists(current_thd);
 
-	buf->copy(trx->detailed_error, strlen(trx->detailed_error),
+	buf->copy(trx->detailed_error, (uint) strlen(trx->detailed_error),
 		system_charset_info);
 
 	return FALSE;

=== modified file 'sql/handler.cc'
--- a/sql/handler.cc	2008-11-25 06:22:02 +0000
+++ b/sql/handler.cc	2009-02-10 22:47:54 +0000
@@ -188,7 +188,8 @@ retest:
   {
     if (!my_strnncoll(&my_charset_latin1,
                       (const uchar *)name, namelen,
-                      (const uchar *)(*types)->name, strlen((*types)->name)))
+                      (const uchar *)(*types)->name, 
+                      (uint) strlen((*types)->name)))
       return (enum db_type) (*types)->db_type;
   }
 
@@ -200,10 +201,10 @@ retest:
     if (!my_strnncoll(&my_charset_latin1,
                       (const uchar *)name, namelen,
                       (const uchar *)table_alias->alias,
-                      strlen(table_alias->alias)))
+                      (uint) strlen(table_alias->alias)))
     {
       name= table_alias->type;
-      namelen= strlen(name);
+      namelen= (uint) strlen(name);
       goto retest;
     }
   }

=== modified file 'sql/item.cc'
--- a/sql/item.cc	2009-02-20 09:42:35 +0000
+++ b/sql/item.cc	2009-03-19 13:58:56 +0000
@@ -1498,7 +1498,8 @@ bool DTCollation::aggregate(DTCollation 
     else
     {
       // Cannot apply conversion
-      set(0, DERIVATION_NONE, 0);
+      set(&my_charset_bin, DERIVATION_NONE,
+          (dt.repertoire|repertoire));
       return 1;
     }
   }
@@ -1581,15 +1582,31 @@ bool agg_item_collations(DTCollation &c,
 {
   uint i;
   Item **arg;
+  bool unknown_cs= 0;
+
   c.set(av[0]->collation);
   for (i= 1, arg= &av[item_sep]; i < count; i++, arg++)
   {
     if (c.aggregate((*arg)->collation, flags))
     {
+      if (c.derivation == DERIVATION_NONE &&
+          c.collation == &my_charset_bin)
+      {
+        unknown_cs= 1;
+        continue;
+      }
       my_coll_agg_error(av, count, fname, item_sep);
       return TRUE;
     }
   }
+
+  if (unknown_cs &&
+      c.derivation != DERIVATION_EXPLICIT)
+  {
+    my_coll_agg_error(av, count, fname, item_sep);
+    return TRUE;
+  }
+
   if ((flags & MY_COLL_DISALLOW_NONE) &&
       c.derivation == DERIVATION_NONE)
   {
@@ -6290,7 +6307,7 @@ bool Item_trigger_field::fix_fields(THD 
       if (check_grant_column(thd, table_grants, triggers->trigger_table->s->db,
                              triggers->trigger_table->s->table_name,
                              field_name,
-                             strlen(field_name), thd->security_ctx))
+                             (uint) strlen(field_name), thd->security_ctx))
         return TRUE;
     }
 #endif // NO_EMBEDDED_ACCESS_CHECKS

=== modified file 'sql/item_func.cc'
--- a/sql/item_func.cc	2009-02-12 09:49:44 +0000
+++ b/sql/item_func.cc	2009-03-19 13:44:58 +0000
@@ -2758,7 +2758,7 @@ longlong Item_func_find_in_set::val_int(
           if (is_last_item && !is_separator)
             str_end= substr_end;
           if (!my_strnncoll(cs, (const uchar *) str_begin,
-                            str_end - str_begin,
+                            (uint) (str_end - str_begin),
                             find_str, find_str_len))
             return (longlong) position;
           else
@@ -4792,7 +4792,7 @@ Item_func_get_system_var(sys_var *var_ar
   :var(var_arg), var_type(var_type_arg), component(*component_arg)
 {
   /* set_name() will allocate the name */
-  set_name(name_arg, name_len_arg, system_charset_info);
+  set_name(name_arg, (uint) name_len_arg, system_charset_info);
 }
 
 

=== modified file 'sql/item_strfunc.cc'
--- a/sql/item_strfunc.cc	2009-01-09 11:50:18 +0000
+++ b/sql/item_strfunc.cc	2009-03-19 13:44:58 +0000
@@ -101,13 +101,10 @@ String *Item_func_md5::val_str(String *s
   str->set_charset(&my_charset_bin);
   if (sptr)
   {
-    my_MD5_CTX context;
     unsigned char digest[16];
 
     null_value=0;
-    my_MD5Init (&context);
-    my_MD5Update (&context,(unsigned char *) sptr->ptr(), sptr->length());
-    my_MD5Final (digest, &context);
+    MY_MD5_HASH(digest,(unsigned char *) sptr->ptr(), sptr->length());
     if (str->alloc(32))				// Ensure that memory is free
     {
       null_value=1;
@@ -1743,17 +1740,17 @@ bool Item_func_user::init(const char *us
   if (user)
   {
     CHARSET_INFO *cs= str_value.charset();
-    uint res_length= (strlen(user)+strlen(host)+2) * cs->mbmaxlen;
+    size_t res_length= (strlen(user)+strlen(host)+2) * cs->mbmaxlen;
 
-    if (str_value.alloc(res_length))
+    if (str_value.alloc((uint) res_length))
     {
       null_value=1;
       return TRUE;
     }
 
-    res_length=cs->cset->snprintf(cs, (char*)str_value.ptr(), res_length,
+    res_length=cs->cset->snprintf(cs, (char*)str_value.ptr(), (uint) res_length,
                                   "%s@%s", user, host);
-    str_value.length(res_length);
+    str_value.length((uint) res_length);
     str_value.mark_as_const();
   }
   return FALSE;
@@ -2433,7 +2430,7 @@ String *Item_func_rpad::val_str(String *
     memcpy(to,ptr_pad,(size_t) pad_byte_length);
     to+= pad_byte_length;
   }
-  res->length(to- (char*) res->ptr());
+  res->length((uint) (to- (char*) res->ptr()));
   return (res);
 
  err:
@@ -2701,7 +2698,7 @@ String *Item_func_charset::val_str(Strin
 
   CHARSET_INFO *cs= args[0]->collation.collation; 
   null_value= 0;
-  str->copy(cs->csname, strlen(cs->csname),
+  str->copy(cs->csname, (uint) strlen(cs->csname),
 	    &my_charset_latin1, collation.collation, &dummy_errors);
   return str;
 }
@@ -2713,7 +2710,7 @@ String *Item_func_collation::val_str(Str
   CHARSET_INFO *cs= args[0]->collation.collation; 
 
   null_value= 0;
-  str->copy(cs->name, strlen(cs->name),
+  str->copy(cs->name, (uint) strlen(cs->name),
 	    &my_charset_latin1, collation.collation, &dummy_errors);
   return str;
 }

=== modified file 'sql/item_strfunc.h'
--- a/sql/item_strfunc.h	2008-12-09 10:00:43 +0000
+++ b/sql/item_strfunc.h	2009-02-10 22:47:54 +0000
@@ -362,7 +362,7 @@ public:
   Item_func_encode(Item *a, char *seed_arg):
     Item_str_func(a), sql_crypt(seed_arg)
     {
-      seed.copy(seed_arg, strlen(seed_arg), default_charset_info);
+      seed.copy(seed_arg, (uint) strlen(seed_arg), default_charset_info);
     }
   String *val_str(String *);
   void fix_length_and_dec();

=== modified file 'sql/item_sum.cc'
--- a/sql/item_sum.cc	2008-12-09 18:35:02 +0000
+++ b/sql/item_sum.cc	2009-03-11 12:10:44 +0000
@@ -440,7 +440,8 @@ void Item_sum::make_field(Send_field *tm
 
 void Item_sum::print(String *str)
 {
-  Item **pargs= orig_args;
+  /* orig_args is not filled with valid values until fix_fields() */
+  Item **pargs= fixed ? orig_args : args;
   str->append(func_name());
   for (uint i=0 ; i < arg_count ; i++)
   {

=== modified file 'sql/item_timefunc.cc'
--- a/sql/item_timefunc.cc	2008-12-23 14:08:04 +0000
+++ b/sql/item_timefunc.cc	2009-02-10 22:47:54 +0000
@@ -384,7 +384,7 @@ static bool extract_date_time(DATE_TIME_
 	if (tmp - val > 6)
 	  tmp= (char*) val + 6;
 	l_time->second_part= (int) my_strtoll10(val, &tmp, &error);
-	frac_part= 6 - (tmp - val);
+	frac_part= 6 - (uint) (tmp - val);
 	if (frac_part > 0)
 	  l_time->second_part*= (ulong) log_10_int[frac_part];
 	val= tmp;
@@ -635,14 +635,14 @@ bool make_date_time(DATE_TIME_FORMAT *fo
         if (!l_time->month)
           return 1;
         str->append(locale->month_names->type_names[l_time->month-1],
-                    strlen(locale->month_names->type_names[l_time->month-1]),
+                    (uint) strlen(locale->month_names->type_names[l_time->month-1]),
                     system_charset_info);
         break;
       case 'b':
         if (!l_time->month)
           return 1;
         str->append(locale->ab_month_names->type_names[l_time->month-1],
-                    strlen(locale->ab_month_names->type_names[l_time->month-1]),
+                    (uint) strlen(locale->ab_month_names->type_names[l_time->month-1]),
                     system_charset_info);
         break;
       case 'W':
@@ -651,7 +651,7 @@ bool make_date_time(DATE_TIME_FORMAT *fo
         weekday= calc_weekday(calc_daynr(l_time->year,l_time->month,
                               l_time->day),0);
         str->append(locale->day_names->type_names[weekday],
-                    strlen(locale->day_names->type_names[weekday]),
+                    (uint) strlen(locale->day_names->type_names[weekday]),
                     system_charset_info);
         break;
       case 'a':
@@ -660,13 +660,13 @@ bool make_date_time(DATE_TIME_FORMAT *fo
         weekday=calc_weekday(calc_daynr(l_time->year,l_time->month,
                              l_time->day),0);
         str->append(locale->ab_day_names->type_names[weekday],
-                    strlen(locale->ab_day_names->type_names[weekday]),
+                    (uint) strlen(locale->ab_day_names->type_names[weekday]),
                     system_charset_info);
         break;
       case 'D':
 	if (type == MYSQL_TIMESTAMP_TIME)
 	  return 1;
-	length= int10_to_str(l_time->day, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->day, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 1, '0');
 	if (l_time->day >= 10 &&  l_time->day <= 19)
 	  str->append(STRING_WITH_LEN("th"));
@@ -689,62 +689,62 @@ bool make_date_time(DATE_TIME_FORMAT *fo
 	}
 	break;
       case 'Y':
-	length= int10_to_str(l_time->year, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->year, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 4, '0');
 	break;
       case 'y':
-	length= int10_to_str(l_time->year%100, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->year%100, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 2, '0');
 	break;
       case 'm':
-	length= int10_to_str(l_time->month, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->month, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 2, '0');
 	break;
       case 'c':
-	length= int10_to_str(l_time->month, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->month, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 1, '0');
 	break;
       case 'd':
-	length= int10_to_str(l_time->day, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->day, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 2, '0');
 	break;
       case 'e':
-	length= int10_to_str(l_time->day, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->day, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 1, '0');
 	break;
       case 'f':
-	length= int10_to_str(l_time->second_part, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->second_part, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 6, '0');
 	break;
       case 'H':
-	length= int10_to_str(l_time->hour, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->hour, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 2, '0');
 	break;
       case 'h':
       case 'I':
 	hours_i= (l_time->hour%24 + 11)%12+1;
-	length= int10_to_str(hours_i, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(hours_i, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 2, '0');
 	break;
       case 'i':					/* minutes */
-	length= int10_to_str(l_time->minute, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->minute, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 2, '0');
 	break;
       case 'j':
 	if (type == MYSQL_TIMESTAMP_TIME)
 	  return 1;
-	length= int10_to_str(calc_daynr(l_time->year,l_time->month,
+	length= (uint) (int10_to_str(calc_daynr(l_time->year,l_time->month,
 					l_time->day) - 
-		     calc_daynr(l_time->year,1,1) + 1, intbuff, 10) - intbuff;
+		     calc_daynr(l_time->year,1,1) + 1, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 3, '0');
 	break;
       case 'k':
-	length= int10_to_str(l_time->hour, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->hour, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 1, '0');
 	break;
       case 'l':
 	hours_i= (l_time->hour%24 + 11)%12+1;
-	length= int10_to_str(hours_i, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(hours_i, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 1, '0');
 	break;
       case 'p':
@@ -763,7 +763,7 @@ bool make_date_time(DATE_TIME_FORMAT *fo
 	break;
       case 'S':
       case 's':
-	length= int10_to_str(l_time->second, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(l_time->second, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 2, '0');
 	break;
       case 'T':
@@ -781,11 +781,11 @@ bool make_date_time(DATE_TIME_FORMAT *fo
 	uint year;
 	if (type == MYSQL_TIMESTAMP_TIME)
 	  return 1;
-	length= int10_to_str(calc_week(l_time,
+	length= (uint) (int10_to_str(calc_week(l_time,
 				       (*ptr) == 'U' ?
 				       WEEK_FIRST_WEEKDAY : WEEK_MONDAY_FIRST,
 				       &year),
-			     intbuff, 10) - intbuff;
+			     intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 2, '0');
       }
       break;
@@ -795,12 +795,12 @@ bool make_date_time(DATE_TIME_FORMAT *fo
 	uint year;
 	if (type == MYSQL_TIMESTAMP_TIME)
 	  return 1;
-	length= int10_to_str(calc_week(l_time,
+	length= (uint) (int10_to_str(calc_week(l_time,
 				       ((*ptr) == 'V' ?
 					(WEEK_YEAR | WEEK_FIRST_WEEKDAY) :
 					(WEEK_YEAR | WEEK_MONDAY_FIRST)),
 				       &year),
-			     intbuff, 10) - intbuff;
+			     intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 2, '0');
       }
       break;
@@ -815,7 +815,7 @@ bool make_date_time(DATE_TIME_FORMAT *fo
 			  WEEK_YEAR | WEEK_FIRST_WEEKDAY :
 			  WEEK_YEAR | WEEK_MONDAY_FIRST),
 			 &year);
-	length= int10_to_str(year, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(year, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 4, '0');
       }
       break;
@@ -824,7 +824,7 @@ bool make_date_time(DATE_TIME_FORMAT *fo
 	  return 1;
 	weekday=calc_weekday(calc_daynr(l_time->year,l_time->month,
 					l_time->day),1);
-	length= int10_to_str(weekday, intbuff, 10) - intbuff;
+	length= (uint) (int10_to_str(weekday, intbuff, 10) - intbuff);
 	str->append_with_prefill(intbuff, length, 1, '0');
 	break;
 
@@ -875,7 +875,7 @@ static bool get_interval_info(const char
       value= value*LL(10) + (longlong) (*str - '0');
     if (transform_msec && i == count - 1) // microseconds always last
     {
-      long msec_length= 6 - (str - start);
+      long msec_length= 6 - (uint) (str - start);
       if (msec_length > 0)
 	value*= (long) log_10_int[msec_length];
     }
@@ -1063,7 +1063,7 @@ String* Item_func_monthname::val_str(Str
   }
   null_value=0;
   month_name= locale->month_names->type_names[month-1];
-  str->copy(month_name, strlen(month_name), &my_charset_utf8_bin,
+  str->copy(month_name, (uint) strlen(month_name), &my_charset_utf8_bin,
 	    collation.collation, &err);
   return str;
 }
@@ -1207,7 +1207,7 @@ String* Item_func_dayname::val_str(Strin
     return (String*) 0;
   
   day_name= locale->day_names->type_names[weekday];
-  str->copy(day_name, strlen(day_name), &my_charset_utf8_bin,
+  str->copy(day_name, (uint) strlen(day_name), &my_charset_utf8_bin,
 	    collation.collation, &err);
   return str;
 }
@@ -3222,14 +3222,14 @@ String *Item_func_get_format::val_str(St
        format++)
   {
     uint format_name_len;
-    format_name_len= strlen(format_name);
+    format_name_len= (uint) strlen(format_name);
     if (val_len == format_name_len &&
 	!my_strnncoll(&my_charset_latin1, 
 		      (const uchar *) val->ptr(), val_len, 
 		      (const uchar *) format_name, val_len))
     {
       const char *format_str= get_date_time_format_str(format, type);
-      str->set(format_str, strlen(format_str), &my_charset_bin);
+      str->set(format_str, (uint) strlen(format_str), &my_charset_bin);
       return str;
     }
   }

=== modified file 'sql/lock.cc'
--- a/sql/lock.cc	2008-03-29 15:50:46 +0000
+++ b/sql/lock.cc	2009-02-10 22:47:54 +0000
@@ -347,7 +347,7 @@ void mysql_unlock_read_tables(THD *thd, 
   for (i= 0; i < sql_lock->table_count; i++)
   {
     TABLE *tbl= *table;
-    tbl->lock_position= table - sql_lock->table;
+    tbl->lock_position= (uint) (table - sql_lock->table);
     tbl->lock_data_start= found;
     found+= tbl->lock_count;
     table++;
@@ -740,7 +740,7 @@ static MYSQL_LOCK *get_lock_data(THD *th
       {
 	my_error(ER_OPEN_AS_READONLY,MYF(0),table->alias);
         /* Clear the lock type of the lock data that are stored already. */
-        sql_lock->lock_count= locks - sql_lock->locks;
+        sql_lock->lock_count= (uint) (locks - sql_lock->locks);
         reset_lock_data(sql_lock);
 	my_free((gptr) sql_lock,MYF(0));
 	DBUG_RETURN(0);

=== modified file 'sql/log.cc'
--- a/sql/log.cc	2008-12-11 11:06:50 +0000
+++ b/sql/log.cc	2009-02-10 22:47:54 +0000
@@ -487,7 +487,7 @@ const char *MYSQL_LOG::generate_name(con
 {
   if (!log_name || !log_name[0])
   {
-    strmake(buff, pidfile_name, FN_REFLEN - strlen(suffix) - 1);
+    strmake(buff, pidfile_name, (uint) (FN_REFLEN - strlen(suffix) - 1));
     return (const char *)
       fn_format(buff, buff, "", suffix, MYF(MY_REPLACE_EXT|MY_REPLACE_DIR));
 
@@ -728,7 +728,7 @@ bool MYSQL_LOG::open(const char *log_nam
         file. As every time we write to the index file, we sync it.
       */
       if (my_b_write(&index_file, (byte*) log_file_name,
-		     strlen(log_file_name)) ||
+		     (uint) strlen(log_file_name)) ||
 	  my_b_write(&index_file, (byte*) "\n", 1) ||
 	  flush_io_cache(&index_file) ||
           my_sync(index_file.file, MYF(MY_WME)))

=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc	2009-03-05 10:10:44 +0000
+++ b/sql/log_event.cc	2009-03-19 13:44:58 +0000
@@ -268,7 +268,7 @@ append_query_string(CHARSET_INFO *csinfo
                                   from->ptr(), from->length());
     *ptr++='\'';
   }
-  to->length(orig_len + ptr - beg);
+  to->length((uint) (orig_len + ptr - beg));
   return 0;
 }
 #endif
@@ -556,7 +556,7 @@ int Log_event::net_send(Protocol *protoc
   protocol->store(log_name, &my_charset_bin);
   protocol->store((ulonglong) pos);
   event_type = get_type_str();
-  protocol->store(event_type, strlen(event_type), &my_charset_bin);
+  protocol->store(event_type, (uint) strlen(event_type), &my_charset_bin);
   protocol->store((uint32) server_id);
   protocol->store((ulonglong) log_pos);
   pack_info(protocol);
@@ -1106,7 +1106,7 @@ void Query_log_event::pack_info(Protocol
     memcpy(pos, query, q_len);
     pos+= q_len;
   }
-  protocol->store(buf, pos-buf, &my_charset_bin);
+  protocol->store(buf, (uint) (pos - buf), &my_charset_bin);
   my_free(buf, MYF(MY_ALLOW_ZERO_PTR));
 }
 #endif
@@ -1443,7 +1443,7 @@ get_str_len_and_pointer(const Log_event:
   if (length > 0)
   {
     if (*src + length >= end)
-      return *src + length - end + 1;       // Number of bytes missing
+      return (int) (*src + length - end + 1);  // Number of bytes missing
     *dst= (char *)*src + 1;                    // Will be copied later
   }
   *len= length;
@@ -1921,7 +1921,7 @@ int Query_log_event::exec_event(struct s
     Thank you.
   */
   thd->catalog= catalog_len ? (char *) catalog : (char *)"";
-  thd->set_db(new_db, strlen(new_db));          /* allocates a copy of 'db' */
+  thd->set_db(new_db, (uint) strlen(new_db));          /* allocates a copy of 'db' */
   thd->variables.auto_increment_increment= auto_increment_increment;
   thd->variables.auto_increment_offset=    auto_increment_offset;
 
@@ -2786,7 +2786,7 @@ void Load_log_event::pack_info(Protocol 
   if (!(buf= my_malloc(get_query_buffer_length(), MYF(MY_WME))))
     return;
   print_query(TRUE, buf, &end, 0, 0);
-  protocol->store(buf, end-buf, &my_charset_bin);
+  protocol->store(buf, (uint) (end - buf), &my_charset_bin);
   my_free(buf, MYF(0));
 }
 #endif /* defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT) */
@@ -2993,7 +2993,7 @@ int Load_log_event::copy_log_event(const
   table_name  = fields + field_block_len;
   db = table_name + table_name_len + 1;
   fname = db + db_len + 1;
-  fname_len = strlen(fname);
+  fname_len = (uint) strlen(fname);
   // null termination is accomplished by the caller doing buf[event_len]=0
 
   DBUG_RETURN(0);
@@ -3159,7 +3159,7 @@ int Load_log_event::exec_event(NET* net,
 			       bool use_rli_only_for_errors)
 {
   const char *new_db= rewrite_db(db);
-  thd->set_db(new_db, strlen(new_db));
+  thd->set_db(new_db, (uint) strlen(new_db));
   DBUG_ASSERT(thd->query == 0);
   thd->query_length= 0;                         // Should not be needed
   thd->query_error= 0;
@@ -3252,7 +3252,7 @@ int Load_log_event::exec_event(NET* net,
       print_query(FALSE, load_data_query, &end, (char **)&thd->lex->fname_start,
                   (char **)&thd->lex->fname_end);
       *end= 0;
-      thd->query_length= end - load_data_query;
+      thd->query_length= (uint) (end - load_data_query);
       thd->query= load_data_query;
 
       if (sql_ex.opt_flags & REPLACE_FLAG)
@@ -3872,7 +3872,7 @@ void User_var_log_event::pack_info(Proto
       break;
     case INT_RESULT:
       buf= my_malloc(val_offset + 22, MYF(MY_WME));
-      event_len= longlong10_to_str(uint8korr(val), buf + val_offset,-10)-buf;
+      event_len= (uint) (longlong10_to_str(uint8korr(val), buf + val_offset,-10) - buf);
       break;
     case DECIMAL_RESULT:
     {
@@ -3898,7 +3898,7 @@ void User_var_log_event::pack_info(Proto
         char *p= strxmov(buf + val_offset, "_", cs->csname, " ", NullS);
         p= str_to_hex(p, val, val_len);
         p= strxmov(p, " COLLATE ", cs->name, NullS);
-        event_len= p-buf;
+        event_len= (uint) (p - buf);
       }
       break;
     case ROW_RESULT:
@@ -4219,7 +4219,7 @@ void Slave_log_event::pack_info(Protocol
   pos= strmov(pos, master_log);
   pos= strmov(pos, ",pos=");
   pos= longlong10_to_str(master_pos, pos, 10);
-  protocol->store(buf, pos-buf, &my_charset_bin);
+  protocol->store(buf, (uint) (pos - buf), &my_charset_bin);
 }
 #endif /* !MYSQL_CLIENT */
 
@@ -4237,8 +4237,8 @@ Slave_log_event::Slave_log_event(THD* th
   // TODO: re-write this better without holding both locks at the same time
   pthread_mutex_lock(&mi->data_lock);
   pthread_mutex_lock(&rli->data_lock);
-  master_host_len = strlen(mi->host);
-  master_log_len = strlen(rli->group_master_log_name);
+  master_host_len= (uint) strlen(mi->host);
+  master_log_len= (uint) strlen(rli->group_master_log_name);
   // on OOM, just do not initialize the structure and print the error
   if ((mem_pool = (char*)my_malloc(get_data_size() + 1,
 				   MYF(MY_WME))))
@@ -4307,7 +4307,7 @@ void Slave_log_event::init_from_mem_pool
   master_pos = uint8korr(mem_pool + SL_MASTER_POS_OFFSET);
   master_port = uint2korr(mem_pool + SL_MASTER_PORT_OFFSET);
   master_host = mem_pool + SL_MASTER_HOST_OFFSET;
-  master_host_len = strlen(master_host);
+  master_host_len= (uint) strlen(master_host);
   // safety
   master_log = master_host + master_host_len + 1;
   if (master_log > mem_pool + data_size)
@@ -4315,7 +4315,7 @@ void Slave_log_event::init_from_mem_pool
     master_host = 0;
     return;
   }
-  master_log_len = strlen(master_log);
+  master_log_len= (uint) strlen(master_log);
 }
 
 
@@ -5237,7 +5237,7 @@ void Execute_load_query_log_event::pack_
   }
   pos= strmov(pos, " ;file_id=");
   pos= int10_to_str((long) file_id, pos, 10);
-  protocol->store(buf, pos-buf, &my_charset_bin);
+  protocol->store(buf, (uint) (pos - buf), &my_charset_bin);
   my_free(buf, MYF(MY_ALLOW_ZERO_PTR));
 }
 
@@ -5280,7 +5280,7 @@ Execute_load_query_log_event::exec_event
   p= strmake(p, STRING_WITH_LEN(" INTO"));
   p= strmake(p, query+fn_pos_end, q_len-fn_pos_end);
 
-  error= Query_log_event::exec_event(rli, buf, p-buf);
+  error= Query_log_event::exec_event(rli, buf, (uint) (p - buf));
 
   /* Forging file name for deletion in same buffer */
   *fname_end= 0;

=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc	2009-02-25 08:36:11 +0000
+++ b/sql/mysqld.cc	2009-03-19 13:44:58 +0000
@@ -2815,7 +2815,7 @@ static bool init_global_datetime_format(
     */
     opt_date_time_formats[format_type]= str;
   }
-  if (!(*var_ptr= date_time_format_make(format_type, str, strlen(str))))
+  if (!(*var_ptr= date_time_format_make(format_type, str, (uint) strlen(str))))
   {
     fprintf(stderr, "Wrong date/time format specifier: %s\n", str);
     return 1;
@@ -3041,7 +3041,7 @@ static int init_common_variables(const c
 
   sys_init_slave.value_length= 0;
   if ((sys_init_slave.value= opt_init_slave))
-    sys_init_slave.value_length= strlen(opt_init_slave);
+    sys_init_slave.value_length= (uint) strlen(opt_init_slave);
   else
     sys_init_slave.value=my_strdup("",MYF(0));
   sys_init_slave.is_os_charset= TRUE;
@@ -7336,7 +7336,7 @@ get_one_option(int optid, const struct m
   case OPT_STORAGE_ENGINE:
   {
     if ((enum db_type)((global_system_variables.table_type=
-                        ha_resolve_by_name(argument, strlen(argument)))) ==
+                        ha_resolve_by_name(argument, (uint) strlen(argument)))) ==
         DB_TYPE_UNKNOWN)
     {
       fprintf(stderr,"Unknown/unsupported table type: %s\n",argument);

=== modified file 'sql/net_serv.cc'
--- a/sql/net_serv.cc	2008-03-28 18:02:27 +0000
+++ b/sql/net_serv.cc	2009-02-10 22:47:54 +0000
@@ -253,7 +253,7 @@ static int net_data_is_ready(my_socket s
 
   tv.tv_sec= tv.tv_usec= 0;
 
-  if ((res= select(sd+1, &sfds, NULL, NULL, &tv)) < 0)
+  if ((res= select((int) (sd + 1), &sfds, NULL, NULL, &tv)) < 0)
     return 0;
   else
     return test(res ? FD_ISSET(sd, &sfds) : 0);
@@ -501,7 +501,7 @@ net_write_buff(NET *net,const char *pack
 {
   ulong left_length;
   if (net->compress && net->max_packet > MAX_PACKET_LENGTH)
-    left_length= MAX_PACKET_LENGTH - (net->write_pos - net->buff);
+    left_length= (ulong) (MAX_PACKET_LENGTH - (net->write_pos - net->buff));
   else
     left_length= (ulong) (net->buff_end - net->write_pos);
 

=== modified file 'sql/opt_range.cc'
--- a/sql/opt_range.cc	2009-02-27 13:25:06 +0000
+++ b/sql/opt_range.cc	2009-03-19 13:44:58 +0000
@@ -673,7 +673,7 @@ int SEL_IMERGE::or_sel_tree(PARAM *param
   if (trees_next == trees_end)
   {
     const int realloc_ratio= 2;		/* Double size for next round */
-    uint old_elements= (trees_end - trees);
+    uint old_elements= (uint) (trees_end - trees);
     uint old_size= sizeof(SEL_TREE**) * old_elements;
     uint new_size= old_size * realloc_ratio;
     SEL_TREE **new_trees;
@@ -2398,7 +2398,7 @@ TABLE_READ_PLAN *get_best_disjunct_quick
 {
   SEL_TREE **ptree;
   TRP_INDEX_MERGE *imerge_trp= NULL;
-  uint n_child_scans= imerge->trees_next - imerge->trees;
+  uint n_child_scans= (uint) (imerge->trees_next - imerge->trees);
   TRP_RANGE **range_scans;
   TRP_RANGE **cur_child;
   TRP_RANGE **cpk_scan= NULL;
@@ -2997,7 +2997,7 @@ static double ror_scan_selectivity(const
         tuple_arg= tuple_arg->next_key_part;
         tuple_arg->store_min(key_part[tuple_arg->part].store_length, &key_ptr, 0);
       }
-      min_range.length= max_range.length= ((char*) key_ptr - (char*) key_val);
+      min_range.length= max_range.length= (uint) ((char*) key_ptr - (char*) key_val);
       records= (info->param->table->file->
                 records_in_range(scan->keynr, &min_range, &max_range));
       if (cur_covered)
@@ -3297,7 +3297,7 @@ TRP_ROR_INTERSECT *get_best_ror_intersec
                                           intersect_scans_best););
 
   *are_all_covering= intersect->is_covering;
-  uint best_num= intersect_scans_best - intersect_scans;
+  uint best_num= (uint) (intersect_scans_best - intersect_scans);
   ror_intersect_cpy(intersect, intersect_best);
 
   /*
@@ -3474,7 +3474,7 @@ TRP_ROR_INTERSECT *get_best_covering_ror
   TRP_ROR_INTERSECT *trp;
   if (!(trp= new (param->mem_root) TRP_ROR_INTERSECT))
     DBUG_RETURN(trp);
-  uint best_num= (ror_scan_mark - tree->ror_scans);
+  uint best_num= (uint) (ror_scan_mark - tree->ror_scans);
   if (!(trp->first_scan= (ROR_SCAN_INFO**)alloc_root(param->mem_root,
                                                      sizeof(ROR_SCAN_INFO*)*
                                                      best_num)))
@@ -3594,7 +3594,7 @@ static TRP_RANGE *get_key_scans_params(P
                                       "ROR scans"););
   if (key_to_read)
   {
-    idx= key_to_read - tree->keys;
+    idx= (uint) (key_to_read - tree->keys);
     if ((read_plan= new (param->mem_root) TRP_RANGE(*key_to_read, idx)))
     {
       read_plan->records= best_records;
@@ -4755,7 +4755,7 @@ tree_and(PARAM *param,SEL_TREE *tree1,SE
 	tree1->type= SEL_TREE::IMPOSSIBLE;
         DBUG_RETURN(tree1);
       }
-      result_keys.set_bit(key1 - tree1->keys);
+      result_keys.set_bit((uint) (key1 - tree1->keys));
 #ifdef EXTRA_DEBUG
         if (*key1 && param->alloced_sel_args < SEL_ARG::MAX_SEL_ARGS) 
           (*key1)->test_use_count(*key1);
@@ -4837,7 +4837,7 @@ tree_or(PARAM *param,SEL_TREE *tree1,SEL
       if (*key1)
       {
         result=tree1;				// Added to tree1
-        result_keys.set_bit(key1 - tree1->keys);
+        result_keys.set_bit((uint) (key1 - tree1->keys));
 #ifdef EXTRA_DEBUG
         if (param->alloced_sel_args < SEL_ARG::MAX_SEL_ARGS) 
           (*key1)->test_use_count(*key1);
@@ -6956,8 +6956,8 @@ int QUICK_RANGE_SELECT::get_next()
       }
     }
 
-    uint count= min(multi_range_length, ranges.elements -
-                    (cur_range - (QUICK_RANGE**) ranges.buffer));
+    uint count= min(multi_range_length, (uint) (ranges.elements -
+                    (cur_range - (QUICK_RANGE**) ranges.buffer)));
     if (count == 0)
     {
       /* Ranges have already been used up before. None is left for read. */
@@ -7047,7 +7047,7 @@ int QUICK_RANGE_SELECT::get_next_prefix(
         DBUG_RETURN(result);
     }
 
-    uint count= ranges.elements - (cur_range - (QUICK_RANGE**) ranges.buffer);
+    uint count= (uint) (ranges.elements - (cur_range - (QUICK_RANGE**) ranges.buffer));
     if (count == 0)
     {
       /* Ranges have already been used up before. None is left for read. */
@@ -7102,7 +7102,7 @@ int QUICK_RANGE_SELECT_GEOM::get_next()
 	DBUG_RETURN(result);
     }
 
-    uint count= ranges.elements - (cur_range - (QUICK_RANGE**) ranges.buffer);
+    uint count= (uint) (ranges.elements - (cur_range - (QUICK_RANGE**) ranges.buffer));
     if (count == 0)
     {
       /* Ranges have already been used up before. None is left for read. */
@@ -7435,18 +7435,18 @@ void QUICK_RANGE_SELECT::add_keys_and_le
                                               String *used_lengths)
 {
   char buf[64];
-  uint length;
+  size_t length;
   KEY *key_info= head->key_info + index;
   key_names->append(key_info->name);
   length= longlong2str(max_used_key_length, buf, 10) - buf;
-  used_lengths->append(buf, length);
+  used_lengths->append(buf, (uint) length);
 }
 
 void QUICK_INDEX_MERGE_SELECT::add_keys_and_lengths(String *key_names,
                                                     String *used_lengths)
 {
   char buf[64];
-  uint length;
+  size_t length;
   bool first= TRUE;
   QUICK_RANGE_SELECT *quick;
 
@@ -7464,7 +7464,7 @@ void QUICK_INDEX_MERGE_SELECT::add_keys_
     KEY *key_info= head->key_info + quick->index;
     key_names->append(key_info->name);
     length= longlong2str(quick->max_used_key_length, buf, 10) - buf;
-    used_lengths->append(buf, length);
+    used_lengths->append(buf, (uint) length);
   }
   if (pk_quick_select)
   {
@@ -7473,7 +7473,7 @@ void QUICK_INDEX_MERGE_SELECT::add_keys_
     key_names->append(key_info->name);
     length= longlong2str(pk_quick_select->max_used_key_length, buf, 10) - buf;
     used_lengths->append(',');
-    used_lengths->append(buf, length);
+    used_lengths->append(buf, (uint) length);
   }
 }
 
@@ -7481,7 +7481,7 @@ void QUICK_ROR_INTERSECT_SELECT::add_key
                                                       String *used_lengths)
 {
   char buf[64];
-  uint length;
+  size_t length;
   bool first= TRUE;
   QUICK_RANGE_SELECT *quick;
   List_iterator_fast<QUICK_RANGE_SELECT> it(quick_selects);
@@ -7497,7 +7497,7 @@ void QUICK_ROR_INTERSECT_SELECT::add_key
     }
     key_names->append(key_info->name);
     length= longlong2str(quick->max_used_key_length, buf, 10) - buf;
-    used_lengths->append(buf, length);
+    used_lengths->append(buf, (uint) length);
   }
 
   if (cpk_quick)
@@ -7507,7 +7507,7 @@ void QUICK_ROR_INTERSECT_SELECT::add_key
     key_names->append(key_info->name);
     length= longlong2str(cpk_quick->max_used_key_length, buf, 10) - buf;
     used_lengths->append(',');
-    used_lengths->append(buf, length);
+    used_lengths->append(buf, (uint) length);
   }
 }
 
@@ -8016,7 +8016,7 @@ get_best_group_min_max(PARAM *param, SEL
     }
 
     /* If we got to this point, cur_index_info passes the test. */
-    key_infix_parts= cur_key_infix_len ?
+    key_infix_parts= cur_key_infix_len ? (uint) 
                      (first_non_infix_part - first_non_group_part) : 0;
     cur_used_key_parts= cur_group_key_parts + key_infix_parts;
 
@@ -8353,7 +8353,7 @@ get_field_keypart(KEY *index, Field *fie
   for (part= index->key_part, end= part + index->key_parts; part < end; part++)
   {
     if (field->eq(part->field))
-      return part - index->key_part + 1;
+      return (uint) (part - index->key_part + 1);
   }
   return 0;
 }
@@ -9608,7 +9608,7 @@ void QUICK_GROUP_MIN_MAX_SELECT::add_key
   char buf[64];
   uint length;
   key_names->append(index_info->name);
-  length= longlong2str(max_used_key_length, buf, 10) - buf;
+  length= (uint) (longlong2str(max_used_key_length, buf, 10) - buf);
   used_lengths->append(buf, length);
 }
 

=== modified file 'sql/opt_sum.cc'
--- a/sql/opt_sum.cc	2008-12-09 18:35:02 +0000
+++ b/sql/opt_sum.cc	2009-02-10 22:47:54 +0000
@@ -636,12 +636,12 @@ static bool matching_cond(bool max_fl, T
   key_part_map org_key_part_used= *key_part_used;
   if (eq_type || between || max_fl == less_fl)
   {
-    uint length= (key_ptr-ref->key_buff)+part->store_length;
+    size_t length= (key_ptr-ref->key_buff)+part->store_length;
     if (ref->key_length < length)
     /* Ultimately ref->key_length will contain the length of the search key */
-      ref->key_length= length;      
+      ref->key_length= (uint) length;      
     if (!*prefix_len && part+1 == field_part)       
-      *prefix_len= length;
+      *prefix_len= (uint) length;
     if (is_field_part && eq_type)
       *prefix_len= ref->key_length;
   

=== modified file 'sql/parse_file.cc'
--- a/sql/parse_file.cc	2009-01-26 17:34:55 +0000
+++ b/sql/parse_file.cc	2009-02-10 22:47:54 +0000
@@ -215,7 +215,7 @@ sql_create_definition_file(const LEX_STR
 		       dir->str, file_name->str, (ulong) base));
 
   fn_format(path, file_name->str, dir->str, 0, MY_UNPACK_FILENAME);
-  path_end= strlen(path);
+  path_end= (uint) strlen(path);
 
   // temporary file name
   path[path_end]='~';
@@ -411,7 +411,7 @@ sql_parse_prepare(const LEX_STRING *file
     sign++;
   if (*sign != '\n')
     goto frm_error;
-  parser->file_type.length= sign - parser->file_type.str;
+  parser->file_type.length= (uint) (sign - parser->file_type.str);
   // EOS for file signature just for safety
   *sign= '\0';
 
@@ -456,7 +456,7 @@ parse_string(char *ptr, char *end, MEM_R
   if (eol >= end)
     return 0;
 
-  str->length= eol - ptr;
+  str->length= (uint) (eol - ptr);
 
   if (!(str->str= alloc_root(mem_root, str->length+1)))
     return 0;
@@ -521,7 +521,7 @@ read_escaped_string(char *ptr, char *eol
     else
       *write_pos= c;
   }
-  str->str[str->length= write_pos-str->str]= '\0'; // just for safety
+  str->str[str->length= (uint) (write_pos - str->str)]= '\0'; // just for safety
   return FALSE;
 }
 
@@ -548,7 +548,7 @@ parse_escaped_string(char *ptr, char *en
   char *eol= strchr(ptr, '\n');
 
   if (eol == 0 || eol >= end ||
-      !(str->str= alloc_root(mem_root, (eol - ptr) + 1)) ||
+      !(str->str= alloc_root(mem_root, (uint) ((eol - ptr) + 1))) ||
       read_escaped_string(ptr, eol, str))
     return 0;
     

=== modified file 'sql/protocol.cc'
--- a/sql/protocol.cc	2009-02-26 08:34:15 +0000
+++ b/sql/protocol.cc	2009-03-19 13:44:58 +0000
@@ -306,7 +306,7 @@ send_ok(THD *thd, ha_rows affected_rows,
     pos+=2;
   }
   if (message)
-    pos=net_store_data((char*) pos, message, strlen(message));
+    pos=net_store_data((char*) pos, message, (uint) strlen(message));
   VOID(my_net_write(net,buff,(uint) (pos-buff)));
   VOID(net_flush(net));
   /* We can't anymore send an error to the client */
@@ -641,7 +641,8 @@ bool Protocol::send_fields(List<Item> *l
                      field.length / item->collation.collation->mbminlen :
                      field.length / item->collation.collation->mbmaxlen;
         max_length*= thd_charset->mbmaxlen;
-        field_length= (max_length > UINT_MAX32) ? UINT_MAX32 : max_length;
+        field_length= (max_length > UINT_MAX32) ? 
+          UINT_MAX32 : (uint32) max_length;
         int4store(pos + 2, field_length);
       }
       pos[6]= field.type;
@@ -734,8 +735,8 @@ bool Protocol::store(const char *from, C
 {
   if (!from)
     return store_null();
-  uint length= strlen(from);
-  return store(from, length, cs);
+  size_t length= strlen(from);
+  return store(from, (uint) length, cs);
 }
 
 

=== modified file 'sql/set_var.cc'
--- a/sql/set_var.cc	2009-01-15 10:48:31 +0000
+++ b/sql/set_var.cc	2009-02-10 22:47:54 +0000
@@ -1927,7 +1927,7 @@ Item *sys_var::item(THD *thd, enum_var_t
     pthread_mutex_lock(&LOCK_global_system_variables);
     char *str= (char*) value_ptr(thd, var_type, base);
     if (str)
-      tmp= new Item_string(str, strlen(str),
+      tmp= new Item_string(str, (uint) strlen(str),
                            charset(thd), DERIVATION_SYSCONST);
     else
     {
@@ -2079,7 +2079,7 @@ void sys_var_thd_date_time_format::set_d
   {
     const char *format;
     if ((format= opt_date_time_formats[date_time_type]))
-      res= date_time_format_make(date_time_type, format, strlen(format));
+      res= date_time_format_make(date_time_type, format, (uint) strlen(format));
   }
   else
   {
@@ -3166,10 +3166,10 @@ static byte *get_tmpdir(THD *thd)
 
 static struct my_option *find_option(struct my_option *opt, const char *name)
 {
-  uint length=strlen(name);
+  size_t length=strlen(name);
   for (; opt->name; opt++)
   {
-    if (!getopt_compare_strings(opt->name, name, length) &&
+    if (!getopt_compare_strings(opt->name, name, (uint) length) &&
 	!opt->name[length])
     {
       /*
@@ -3210,7 +3210,7 @@ void set_var_init()
        var < end;
        var++)
   {
-    (*var)->name_length= strlen((*var)->name);
+    (*var)->name_length= (uint) strlen((*var)->name);
     (*var)->option_limits= find_option(my_long_options, (*var)->name);
     my_hash_insert(&system_variable_hash, (byte*) *var);
   }
@@ -3249,7 +3249,7 @@ sys_var *find_sys_var(const char *str, u
   sys_var *var= (sys_var*) hash_search(&system_variable_hash,
 				       (byte*) str,
 				       length ? length :
-				       strlen(str));
+				       (uint) strlen(str));
   if (!var)
     my_error(ER_UNKNOWN_SYSTEM_VARIABLE, MYF(0), (char*) str);
   return var;
@@ -3479,7 +3479,7 @@ int set_var_password::check(THD *thd)
     if (*thd->security_ctx->priv_host != 0)
     {
       user->host.str= (char *) thd->security_ctx->priv_host;
-      user->host.length= strlen(thd->security_ctx->priv_host);
+      user->host.length= (uint) strlen(thd->security_ctx->priv_host);
     }
     else
     {
@@ -3495,7 +3495,7 @@ int set_var_password::check(THD *thd)
   }
   /* Returns 1 as the function sends error to client */
   return check_change_password(thd, user->host.str, user->user.str,
-                               password, strlen(password)) ? 1 : 0;
+                               password, (uint) strlen(password)) ? 1 : 0;
 #else
   return 0;
 #endif

=== modified file 'sql/slave.cc'
--- a/sql/slave.cc	2008-03-28 20:01:05 +0000
+++ b/sql/slave.cc	2009-02-10 22:47:54 +0000
@@ -1003,7 +1003,7 @@ int db_ok_with_wild_table(const char *db
   int len;
   end= strmov(hash_key, db);
   *end++= '.';
-  len= end - hash_key ;
+  len= (uint) (end - hash_key);
   if (wild_do_table_inited && find_wild(&replicate_wild_do_table,
                                         hash_key, len))
     return 1;
@@ -1189,7 +1189,7 @@ void skip_load_data_infile(NET *net)
 bool net_request_file(NET* net, const char* fname)
 {
   DBUG_ENTER("net_request_file");
-  DBUG_RETURN(net_write_command(net, 251, fname, strlen(fname), "", 0));
+  DBUG_RETURN(net_write_command(net, 251, fname, (uint) strlen(fname), "", 0));
 }
 
 
@@ -1581,7 +1581,7 @@ static int create_table_from_dump(THD* t
   save_db = thd->db;
   save_db_length= thd->db_length;
   DBUG_ASSERT(db != 0);
-  thd->reset_db((char*)db, strlen(db));
+  thd->reset_db((char*)db, (uint) strlen(db));
   mysql_parse(thd, thd->query, packet_len, &found_semicolon); // run create table
   thd->db = save_db;		// leave things the way the were before
   thd->db_length= save_db_length;
@@ -2314,11 +2314,11 @@ int register_slave_on_master(MYSQL* mysq
 
   if (!report_host)
     return 0;
-  report_host_len= strlen(report_host);
+  report_host_len= (uint) strlen(report_host);
   if (report_user)
-    report_user_len= strlen(report_user);
+    report_user_len= (uint) strlen(report_user);
   if (report_password)
-    report_password_len= strlen(report_password);
+    report_password_len= (uint) strlen(report_password);
   /* 30 is a good safety margin */
   if (report_host_len + report_user_len + report_password_len + 30 >
       sizeof(buf))
@@ -3043,7 +3043,7 @@ static int request_table_dump(MYSQL* mys
   *p++ = table_len;
   memcpy(p, table, table_len);
   
-  if (simple_command(mysql, COM_TABLE_DUMP, buf, p - buf + table_len, 1))
+  if (simple_command(mysql, COM_TABLE_DUMP, buf, (uint) (p - buf + table_len), 1))
   {
     sql_print_error("request_table_dump: Error sending the table dump \
 command");

=== modified file 'sql/sp.cc'
--- a/sql/sp.cc	2008-07-14 21:41:30 +0000
+++ b/sql/sp.cc	2009-02-10 22:47:54 +0000
@@ -414,7 +414,7 @@ db_load_routine(THD *thd, int type, sp_n
   thd->lex= &newlex;
   newlex.current_select= NULL;
 
-  parse_user(definer, strlen(definer),
+  parse_user(definer, (uint) strlen(definer),
              definer_user_name.str, &definer_user_name.length,
              definer_host_name.str, &definer_host_name.length);
 
@@ -929,7 +929,7 @@ sp_drop_db_routines(THD *thd, char *db)
   if (!(table= open_proc_table_for_update(thd)))
     goto err;
 
-  table->field[MYSQL_PROC_FIELD_DB]->store(db, strlen(db), system_charset_info);
+  table->field[MYSQL_PROC_FIELD_DB]->store(db, (uint) strlen(db), system_charset_info);
   key_len= table->key_info->key_part[0].store_length;
 
   ret= SP_OK;
@@ -1099,8 +1099,8 @@ sp_exist_routines(THD *thd, TABLE_LIST *
     sp_name *name;
     LEX_STRING lex_db;
     LEX_STRING lex_name;
-    lex_db.length= strlen(routine->db);
-    lex_name.length= strlen(routine->table_name);
+    lex_db.length= (uint) strlen(routine->db);
+    lex_name.length= (uint) strlen(routine->table_name);
     lex_db.str= thd->strmake(routine->db, lex_db.length);
     lex_name.str= thd->strmake(routine->table_name, lex_name.length);
     name= new sp_name(lex_db, lex_name, true);
@@ -1918,7 +1918,7 @@ sp_use_new_db(THD *thd, LEX_STRING new_d
 
   if (thd->db)
   {
-    old_db->length= (strmake(old_db->str, thd->db, old_db->length - 1) -
+    old_db->length= (uint) (strmake(old_db->str, thd->db, old_db->length - 1) -
                      old_db->str);
   }
   else

=== modified file 'sql/sp_head.cc'
--- a/sql/sp_head.cc	2009-01-15 10:48:31 +0000
+++ b/sql/sp_head.cc	2009-02-10 22:47:54 +0000
@@ -381,7 +381,7 @@ sp_name::sp_name(THD *thd, char *key, ui
   m_qname.length= key_len - 1;
   if ((m_name.str= strchr(m_qname.str, '.')))
   {
-    m_db.length= m_name.str - key;
+    m_db.length= (uint) (m_name.str - key);
     m_db.str= strmake_root(thd->mem_root, key, m_db.length);
     m_name.str++;
     m_name.length= m_qname.length - m_db.length - 1;
@@ -447,7 +447,7 @@ sp_head::operator new(size_t size) throw
   sp_head *sp;
 
   init_sql_alloc(&own_root, MEM_ROOT_BLOCK_SIZE, MEM_ROOT_PREALLOC);
-  sp= (sp_head *) alloc_root(&own_root, size);
+  sp= (sp_head *) alloc_root(&own_root, (uint) size);
   if (sp == NULL)
     DBUG_RETURN(NULL);
   sp->main_mem_root= own_root;
@@ -598,7 +598,7 @@ sp_head::init_strings(THD *thd, LEX *lex
 
   if (m_param_begin && m_param_end)
   {
-    m_params.length= m_param_end - m_param_begin;
+    m_params.length= (uint) (m_param_end - m_param_begin);
     m_params.str= strmake_root(root,
                                (char *)m_param_begin, m_params.length);
   }
@@ -611,9 +611,9 @@ sp_head::init_strings(THD *thd, LEX *lex
   */
   endp= skip_rear_comments(thd->charset(), (char*) m_body_begin, (char*) endp);
 
-  m_body.length= endp - m_body_begin;
+  m_body.length= (uint) (endp - m_body_begin);
   m_body.str= strmake_root(root, m_body_begin, m_body.length);
-  m_defstr.length= endp - lip->buf;
+  m_defstr.length= (uint) (endp - lip->buf);
   m_defstr.str= strmake_root(root, lip->buf, m_defstr.length);
   DBUG_VOID_RETURN;
 }
@@ -3606,7 +3606,7 @@ sp_head::merge_table_list(THD *thd, TABL
       memcpy(tname+tlen, table->table_name, table->table_name_length);
       tlen+= table->table_name_length;
       tname[tlen++]= '\0';
-      alen= strlen(table->alias);
+      alen= (uint) strlen(table->alias);
       memcpy(tname+tlen, table->alias, alen);
       tlen+= alen;
       tname[tlen]= '\0';
@@ -3771,9 +3771,9 @@ sp_add_to_query_tables(THD *thd, LEX *le
     thd->fatal_error();
     return NULL;
   }
-  table->db_length= strlen(db);
+  table->db_length= (uint) strlen(db);
   table->db= thd->strmake(db, table->db_length);
-  table->table_name_length= strlen(name);
+  table->table_name_length= (uint) strlen(name);
   table->table_name= thd->strmake(name, table->table_name_length);
   table->alias= thd->strdup(name);
   table->lock_type= locktype;

=== modified file 'sql/spatial.cc'
--- a/sql/spatial.cc	2007-07-05 15:24:48 +0000
+++ b/sql/spatial.cc	2009-02-10 22:47:54 +0000
@@ -54,7 +54,7 @@ static Geometry::Class_info **ci_collect
 
 Geometry::Class_info::Class_info(const char *name, int type_id,
 					 void(*create_func)(void *)):
-  m_name(name, strlen(name)), m_type_id(type_id), m_create_func(create_func)
+  m_name(name, (uint) strlen(name)), m_type_id(type_id), m_create_func(create_func)
 {
   ci_collection[type_id]= this;
 }

=== modified file 'sql/sql_acl.cc'
--- a/sql/sql_acl.cc	2009-02-26 17:00:44 +0000
+++ b/sql/sql_acl.cc	2009-03-19 13:44:58 +0000
@@ -313,8 +313,8 @@ static my_bool acl_load(THD *thd, TABLE_
     }
 
     const char *password= get_field(thd->mem_root, table->field[2]);
-    uint password_len= password ? strlen(password) : 0;
-    set_user_salt(&user, password, password_len);
+    size_t password_len= password ? strlen(password) : 0;
+    set_user_salt(&user, password, (uint) password_len);
     if (user.salt_len == 0 && password_len != 0)
     {
       switch (password_len) {
@@ -1405,7 +1405,7 @@ int check_change_password(THD *thd, cons
                MYF(0));
     return(1);
   }
-  uint len=strlen(new_password);
+  size_t len= strlen(new_password);
   if (len && len != SCRAMBLED_PASSWORD_CHAR_LENGTH &&
       len != SCRAMBLED_PASSWORD_CHAR_LENGTH_323)
   {
@@ -1439,14 +1439,14 @@ bool change_password(THD *thd, const cha
   /* Buffer should be extended when password length is extended. */
   char buff[512];
   ulong query_length;
-  uint new_password_len= strlen(new_password);
+  size_t new_password_len= strlen(new_password);
   bool result= 1;
   DBUG_ENTER("change_password");
   DBUG_PRINT("enter",("host: '%s'  user: '%s'  new_password: '%s'",
 		      host,user,new_password));
   DBUG_ASSERT(host != 0);			// Ensured by parent
 
-  if (check_change_password(thd, host, user, new_password, new_password_len))
+  if (check_change_password(thd, host, user, new_password, (uint) new_password_len))
     DBUG_RETURN(1);
 
   bzero((char*) &tables, sizeof(tables));
@@ -1483,12 +1483,12 @@ bool change_password(THD *thd, const cha
     goto end;
   }
   /* update loaded acl entry: */
-  set_user_salt(acl_user, new_password, new_password_len);
+  set_user_salt(acl_user, new_password, (uint) new_password_len);
 
   if (update_user_table(thd, table,
 			acl_user->host.hostname ? acl_user->host.hostname : "",
 			acl_user->user ? acl_user->user : "",
-			new_password, new_password_len))
+			new_password, (uint) new_password_len))
   {
     VOID(pthread_mutex_unlock(&acl_cache->lock)); /* purecov: deadcode */
     goto end;
@@ -1641,11 +1641,11 @@ bool hostname_requires_resolving(const c
   char cur;
   if (!hostname)
     return FALSE;
-  int namelen= strlen(hostname);
-  int lhlen= strlen(my_localhost);
+  size_t namelen= strlen(hostname);
+  size_t lhlen= strlen(my_localhost);
   if ((namelen == lhlen) &&
-      !my_strnncoll(system_charset_info, (const uchar *)hostname,  namelen,
-		    (const uchar *)my_localhost, strlen(my_localhost)))
+      !my_strnncoll(system_charset_info, (const uchar *)hostname, (uint) namelen,
+		    (const uchar *)my_localhost, (uint) strlen(my_localhost)))
     return FALSE;
   for (; (cur=*hostname); hostname++)
   {
@@ -1873,13 +1873,13 @@ static int replace_user_table(THD *thd, 
       table->field[next_field+3]->store("", 0, &my_charset_latin1);
       if (lex->ssl_cipher)
         table->field[next_field+1]->store(lex->ssl_cipher,
-                                strlen(lex->ssl_cipher), system_charset_info);
+                                (uint) strlen(lex->ssl_cipher), system_charset_info);
       if (lex->x509_issuer)
         table->field[next_field+2]->store(lex->x509_issuer,
-                                strlen(lex->x509_issuer), system_charset_info);
+                                (uint) strlen(lex->x509_issuer), system_charset_info);
       if (lex->x509_subject)
         table->field[next_field+3]->store(lex->x509_subject,
-                                strlen(lex->x509_subject), system_charset_info);
+                                (uint) strlen(lex->x509_subject), system_charset_info);
       break;
     case SSL_TYPE_NOT_SPECIFIED:
       break;
@@ -4202,10 +4202,10 @@ static void add_user_option(String *gran
   {
     char buff[22], *p; // just as in int2str
     grant->append(' ');
-    grant->append(name, strlen(name));
+    grant->append(name, (uint) strlen(name));
     grant->append(' ');
     p=int10_to_str(value, buff, 10);
-    grant->append(buff,p-buff);
+    grant->append(buff,(uint) (p - buff));
   }
 }
 
@@ -4343,7 +4343,7 @@ bool mysql_show_grants(THD *thd,LEX_USER
       {
 	ssl_options++;
 	global.append(STRING_WITH_LEN("ISSUER \'"));
-	global.append(acl_user->x509_issuer,strlen(acl_user->x509_issuer));
+	global.append(acl_user->x509_issuer,(uint) strlen(acl_user->x509_issuer));
 	global.append('\'');
       }
       if (acl_user->x509_subject)
@@ -4351,7 +4351,7 @@ bool mysql_show_grants(THD *thd,LEX_USER
 	if (ssl_options++)
 	  global.append(' ');
 	global.append(STRING_WITH_LEN("SUBJECT \'"));
-	global.append(acl_user->x509_subject,strlen(acl_user->x509_subject),
+	global.append(acl_user->x509_subject,(uint) strlen(acl_user->x509_subject),
                       system_charset_info);
 	global.append('\'');
       }
@@ -4360,7 +4360,7 @@ bool mysql_show_grants(THD *thd,LEX_USER
 	if (ssl_options++)
 	  global.append(' ');
 	global.append(STRING_WITH_LEN("CIPHER '"));
-	global.append(acl_user->ssl_cipher,strlen(acl_user->ssl_cipher),
+	global.append(acl_user->ssl_cipher,(uint) strlen(acl_user->ssl_cipher),
                       system_charset_info);
 	global.append('\'');
       }
@@ -4440,13 +4440,13 @@ bool mysql_show_grants(THD *thd,LEX_USER
 	  }
 	}
 	db.append (STRING_WITH_LEN(" ON "));
-	append_identifier(thd, &db, acl_db->db, strlen(acl_db->db));
+	append_identifier(thd, &db, acl_db->db, (uint) strlen(acl_db->db));
 	db.append (STRING_WITH_LEN(".* TO '"));
 	db.append(lex_user->user.str, lex_user->user.length,
 		  system_charset_info);
 	db.append (STRING_WITH_LEN("'@'"));
 	// host and lex_user->host are equal except for case
-	db.append(host, strlen(host), system_charset_info);
+	db.append(host, (uint) strlen(host), system_charset_info);
 	db.append ('\'');
 	if (want_access & GRANT_ACL)
 	  db.append(STRING_WITH_LEN(" WITH GRANT OPTION"));
@@ -4552,16 +4552,16 @@ bool mysql_show_grants(THD *thd,LEX_USER
 	}
 	global.append(STRING_WITH_LEN(" ON "));
 	append_identifier(thd, &global, grant_table->db,
-			  strlen(grant_table->db));
+			  (uint) strlen(grant_table->db));
 	global.append('.');
 	append_identifier(thd, &global, grant_table->tname,
-			  strlen(grant_table->tname));
+			  (uint) strlen(grant_table->tname));
 	global.append(STRING_WITH_LEN(" TO '"));
 	global.append(lex_user->user.str, lex_user->user.length,
 		      system_charset_info);
 	global.append(STRING_WITH_LEN("'@'"));
 	// host and lex_user->host are equal except for case
-	global.append(host, strlen(host), system_charset_info);
+	global.append(host, (uint) strlen(host), system_charset_info);
 	global.append('\'');
 	if (table_access & GRANT_ACL)
 	  global.append(STRING_WITH_LEN(" WITH GRANT OPTION"));
@@ -4658,16 +4658,16 @@ static int show_routine_grants(THD* thd,
         global.append(type,typelen);
         global.append(' ');
 	append_identifier(thd, &global, grant_proc->db,
-			  strlen(grant_proc->db));
+			  (uint) strlen(grant_proc->db));
 	global.append('.');
 	append_identifier(thd, &global, grant_proc->tname,
-			  strlen(grant_proc->tname));
+			  (uint) strlen(grant_proc->tname));
 	global.append(STRING_WITH_LEN(" TO '"));
 	global.append(lex_user->user.str, lex_user->user.length,
 		      system_charset_info);
 	global.append(STRING_WITH_LEN("'@'"));
 	// host and lex_user->host are equal except for case
-	global.append(host, strlen(host), system_charset_info);
+	global.append(host, (uint) strlen(host), system_charset_info);
 	global.append('\'');
 	if (proc_access & GRANT_ACL)
 	  global.append(STRING_WITH_LEN(" WITH GRANT OPTION"));
@@ -5785,11 +5785,11 @@ bool sp_revoke_privileges(THD *thd, cons
       {
         LEX_USER lex_user;
 	lex_user.user.str= grant_proc->user;
-	lex_user.user.length= strlen(grant_proc->user);
+	lex_user.user.length= (uint) strlen(grant_proc->user);
 	lex_user.host.str= grant_proc->host.hostname ?
 	  grant_proc->host.hostname : (char*)"";
 	lex_user.host.length= grant_proc->host.hostname ?
-	  strlen(grant_proc->host.hostname) : 0;
+	  (uint) strlen(grant_proc->host.hostname) : 0;
 	if (!replace_routine_table(thd,grant_proc,tables[4].table,lex_user,
 				   grant_proc->db, grant_proc->tname,
                                    is_proc, ~(ulong)0, 1))
@@ -5868,8 +5868,8 @@ int sp_grant_privileges(THD *thd, const 
   tables->db= (char*)sp_db;
   tables->table_name= tables->alias= (char*)sp_name;
 
-  combo->host.length= strlen(combo->host.str);
-  combo->user.length= strlen(combo->user.str);
+  combo->host.length= (uint) strlen(combo->host.str);
+  combo->user.length= (uint) strlen(combo->user.str);
   combo->host.str= thd->strmake(combo->host.str,combo->host.length);
   combo->user.str= thd->strmake(combo->user.str,combo->user.length);
 

=== modified file 'sql/sql_base.cc'
--- a/sql/sql_base.cc	2009-02-26 17:00:44 +0000
+++ b/sql/sql_base.cc	2009-03-19 13:44:58 +0000
@@ -780,10 +780,10 @@ void close_temporary_tables(THD *thd)
           We are going to add 4 ` around the db/table names and possible more
           due to special characters in the names
         */
-        append_identifier(thd, &s_query, table->s->db, strlen(table->s->db));
+        append_identifier(thd, &s_query, table->s->db, (uint) strlen(table->s->db));
         s_query.q_append('.');
         append_identifier(thd, &s_query, table->s->table_name,
-                          strlen(table->s->table_name));
+                          (uint) strlen(table->s->table_name));
         s_query.q_append(',');
         next= table->next;
         close_temporary(table, 1);
@@ -3690,7 +3690,7 @@ find_field_in_table(THD *thd, TABLE *tab
 
   if (field_ptr && *field_ptr)
   {
-    *cached_field_index_ptr= field_ptr - table->field;
+    *cached_field_index_ptr= (uint) (field_ptr - table->field);
     field= *field_ptr;
   }
   else
@@ -5992,7 +5992,7 @@ my_bool mysql_rm_tmp_tables(void)
     if (!bcmp(file->name,tmp_file_prefix,tmp_file_prefix_length))
     {
       char *ext= fn_ext(file->name);
-      uint ext_len= strlen(ext);
+      size_t ext_len= strlen(ext);
       uint filePath_len= my_snprintf(filePath, sizeof(filePath),
                                      "%s%s", tmpdir, file->name);
       if (!bcmp(reg_ext, ext, ext_len))
@@ -6264,7 +6264,7 @@ open_new_frm(THD *thd, const char *path,
   DBUG_ENTER("open_new_frm");
 
   pathstr.str=    (char*) path;
-  pathstr.length= strlen(path);
+  pathstr.length= (uint) strlen(path);
 
   if ((parser= sql_parse_prepare(&pathstr, mem_root, 1)))
   {

=== modified file 'sql/sql_cache.cc'
--- a/sql/sql_cache.cc	2009-01-22 10:28:01 +0000
+++ b/sql/sql_cache.cc	2009-03-19 13:44:58 +0000
@@ -363,6 +363,43 @@ TYPELIB query_cache_type_typelib=
   array_elements(query_cache_type_names)-1,"", query_cache_type_names, NULL
 };
 
+
+/**
+  Helper function for determine if a SELECT statement has a SQL_NO_CACHE
+  directive.
+  
+  @param sql A pointer to the first white space character after SELECT
+  
+  @return
+   @retval TRUE The character string contains SQL_NO_CACHE
+   @retval FALSE No directive found.
+*/
+ 
+static bool has_no_cache_directive(char *sql)
+{
+  int i=0;
+  while (sql[i] == ' ')
+    ++i;
+    
+  if (my_toupper(system_charset_info, sql[i])    == 'S' &&
+      my_toupper(system_charset_info, sql[i+1])  == 'Q' &&
+      my_toupper(system_charset_info, sql[i+2])  == 'L' &&
+      my_toupper(system_charset_info, sql[i+3])  == '_' &&
+      my_toupper(system_charset_info, sql[i+4])  == 'N' &&
+      my_toupper(system_charset_info, sql[i+5])  == 'O' &&
+      my_toupper(system_charset_info, sql[i+6])  == '_' &&
+      my_toupper(system_charset_info, sql[i+7])  == 'C' &&
+      my_toupper(system_charset_info, sql[i+8])  == 'A' &&
+      my_toupper(system_charset_info, sql[i+9])  == 'C' &&
+      my_toupper(system_charset_info, sql[i+10]) == 'H' &&
+      my_toupper(system_charset_info, sql[i+11]) == 'E' &&
+      my_toupper(system_charset_info, sql[i+12]) == ' ')
+    return TRUE;
+  
+  return FALSE;       
+}
+
+
 /*****************************************************************************
  Query_cache_block_table method(s)
 *****************************************************************************/
@@ -1095,6 +1132,16 @@ Query_cache::send_result_to_client(THD *
       DBUG_PRINT("qcache", ("The statement is not a SELECT; Not cached"));
       goto err;
     }
+    
+    if (query_length > 20 && has_no_cache_directive(&sql[i+6]))
+    {
+      /*
+        We do not increase 'refused' statistics here since it will be done
+        later when the query is parsed.
+      */
+      DBUG_PRINT("qcache", ("The statement has a SQL_NO_CACHE directive"));
+      goto err;
+    }
   }
 
 #ifdef __WIN__
@@ -3126,7 +3173,7 @@ Query_cache::process_and_count_tables(TH
       {
         ha_myisammrg *handler = (ha_myisammrg *)tables_used->table->file;
         MYRG_INFO *file = handler->myrg_info();
-        table_count+= (file->end_table - file->open_tables);
+        table_count+= (uint) (file->end_table - file->open_tables);
       }
     }
   }
@@ -3313,7 +3360,7 @@ my_bool Query_cache::move_by_type(byte *
 		      *pprev = block->pprev,
 		      *pnext = block->pnext,
 		      *new_block =(Query_cache_block *) *border;
-    uint tablename_offset = block->table()->table() - block->table()->db();
+    size_t tablename_offset= block->table()->table() - block->table()->db();
     char *data = (char*) block->data();
     byte *key;
     uint key_length;
@@ -3625,7 +3672,7 @@ uint Query_cache::filename_2_table_key (
   filename=  tablename + dirname_length(tablename + 2) + 2;
   /* Find start of databasename */
   for (dbname= filename - 2 ; dbname[-1] != FN_LIBCHAR ; dbname--) ;
-  *db_length= (filename - dbname) - 1;
+  *db_length= (uint) ((filename - dbname) - 1);
   DBUG_PRINT("qcache", ("table '%-.*s.%s'", *db_length, dbname, filename));
 
   DBUG_RETURN((uint) (strmov(strmake(key, dbname, *db_length) + 1,
@@ -3934,8 +3981,8 @@ my_bool Query_cache::check_integrity(boo
       }
       else
       {
-	int idx = (((byte*)bin) - ((byte*)bins)) /
-	  sizeof(Query_cache_memory_bin);
+	int idx = (int) ((((byte*)bin) - ((byte*)bins)) /
+	  sizeof(Query_cache_memory_bin));
 	if (in_list(bins[idx].free_blocks, block, "free memory"))
 	  result = 1;
       }

=== modified file 'sql/sql_class.cc'
--- a/sql/sql_class.cc	2009-03-05 10:10:44 +0000
+++ b/sql/sql_class.cc	2009-03-19 20:20:15 +0000
@@ -343,6 +343,12 @@ void THD::init(void)
   if (variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES)
     server_status|= SERVER_STATUS_NO_BACKSLASH_ESCAPES;
   options= thd_startup_options;
+
+  if (variables.max_join_size == HA_POS_ERROR)
+    options |= OPTION_BIG_SELECTS;
+  else
+    options &= ~OPTION_BIG_SELECTS;
+
   transaction.all.modified_non_trans_table= transaction.stmt.modified_non_trans_table= FALSE;
   open_options=ha_open_options;
   update_lock_default= (variables.low_priority_updates ?
@@ -1752,7 +1758,7 @@ void Query_arena::set_query_arena(Query_
 
 void Query_arena::cleanup_stmt()
 {
-  DBUG_ASSERT("Query_arena::cleanup_stmt()" == "not implemented");
+  DBUG_ASSERT(! "Query_arena::cleanup_stmt() not implemented");
 }
 
 /*

=== modified file 'sql/sql_crypt.cc'
--- a/sql/sql_crypt.cc	2006-12-31 00:02:27 +0000
+++ b/sql/sql_crypt.cc	2009-02-10 22:47:54 +0000
@@ -31,7 +31,7 @@
 SQL_CRYPT::SQL_CRYPT(const char *password)
 {
   ulong rand_nr[2];
-  hash_password(rand_nr,password, strlen(password));
+  hash_password(rand_nr,password, (uint) strlen(password));
   crypt_init(rand_nr);
 }
 

=== modified file 'sql/sql_db.cc'
--- a/sql/sql_db.cc	2009-01-15 11:08:09 +0000
+++ b/sql/sql_db.cc	2009-02-10 22:47:54 +0000
@@ -239,7 +239,7 @@ void del_dbopt(const char *path)
   my_dbopt_t *opt;
   rw_wrlock(&LOCK_dboptions);
   if ((opt= (my_dbopt_t *)hash_search(&dboptions, (const byte*) path,
-                                      strlen(path))))
+                                      (uint) strlen(path))))
     hash_delete(&dboptions, (byte*) opt);
   rw_unlock(&LOCK_dboptions);
 }
@@ -582,7 +582,7 @@ int mysql_create_db(THD *thd, char *db, 
                                       # database does not exist.
       */
       qinfo.db     = db;
-      qinfo.db_len = strlen(db);
+      qinfo.db_len = (uint) strlen(db);
 
       /* These DDL methods and logging protected with LOCK_mysql_create_db */
       mysql_bin_log.write(&qinfo);
@@ -653,7 +653,7 @@ bool mysql_alter_db(THD *thd, const char
       default.
     */
     qinfo.db     = db;
-    qinfo.db_len = strlen(db);
+    qinfo.db_len = (uint) strlen(db);
 
     thd->clear_error();
     /* These DDL methods and logging protected with LOCK_mysql_create_db */
@@ -777,7 +777,7 @@ bool mysql_rm_db(THD *thd,char *db,bool 
         default.
       */
       qinfo.db     = db;
-      qinfo.db_len = strlen(db);
+      qinfo.db_len = (uint) strlen(db);
 
       thd->clear_error();
       /* These DDL methods and logging protected with LOCK_mysql_create_db */
@@ -797,18 +797,18 @@ bool mysql_rm_db(THD *thd,char *db,bool 
       goto exit; /* not much else we can do */
     query_pos= query_data_start= strmov(query,"drop table ");
     query_end= query + MAX_DROP_TABLE_Q_LEN;
-    db_len= strlen(db);
+    db_len= (uint) strlen(db);
 
     for (tbl= dropped_tables; tbl; tbl= tbl->next_local)
     {
       uint tbl_name_len;
 
       /* 3 for the quotes and the comma*/
-      tbl_name_len= strlen(tbl->table_name) + 3;
+      tbl_name_len= (uint) strlen(tbl->table_name) + 3;
       if (query_pos + tbl_name_len + 1 >= query_end)
       {
         /* These DDL methods and logging protected with LOCK_mysql_create_db */
-        write_to_binlog(thd, query, query_pos -1 - query, db, db_len);
+        write_to_binlog(thd, query, (uint) (query_pos - 1 - query), db, db_len);
         query_pos= query_data_start;
       }
 
@@ -821,7 +821,7 @@ bool mysql_rm_db(THD *thd,char *db,bool 
     if (query_pos != query_data_start)
     {
       /* These DDL methods and logging protected with LOCK_mysql_create_db */
-      write_to_binlog(thd, query, query_pos -1 - query, db, db_len);
+      write_to_binlog(thd, query, (uint) (query_pos - 1 - query), db, db_len);
     }
   }
 
@@ -938,7 +938,7 @@ static long mysql_rm_known_files(THD *th
       /* Drop the table nicely */
       *extension= 0;			// Remove extension
       TABLE_LIST *table_list=(TABLE_LIST*)
-	thd->calloc(sizeof(*table_list)+ strlen(db)+strlen(file->name)+2);
+	thd->calloc((uint) (sizeof(*table_list)+ strlen(db)+strlen(file->name)+2));
       if (!table_list)
 	goto err;
       table_list->db= (char*) (table_list+1);

=== modified file 'sql/sql_derived.cc'
--- a/sql/sql_derived.cc	2007-03-22 14:07:32 +0000
+++ b/sql/sql_derived.cc	2009-02-10 22:47:54 +0000
@@ -177,7 +177,7 @@ exit:
       orig_table_list->derived_result= derived_result;
       orig_table_list->table= table;
       orig_table_list->table_name= (char*) table->s->table_name;
-      orig_table_list->table_name_length= strlen((char*)table->s->table_name);
+      orig_table_list->table_name_length= (uint) strlen((char*)table->s->table_name);
       table->derived_select_number= first_select->select_number;
       table->s->tmp_table= NON_TRANSACTIONAL_TMP_TABLE;
 #ifndef NO_EMBEDDED_ACCESS_CHECKS

=== modified file 'sql/sql_error.cc'
--- a/sql/sql_error.cc	2007-06-20 08:46:15 +0000
+++ b/sql/sql_error.cc	2009-02-10 22:47:54 +0000
@@ -243,7 +243,7 @@ bool mysqld_show_warnings(THD *thd, ulon
     protocol->store(warning_level_names[err->level],
 		    warning_level_length[err->level], system_charset_info);
     protocol->store((uint32) err->code);
-    protocol->store(err->msg, strlen(err->msg), system_charset_info);
+    protocol->store(err->msg, (uint) strlen(err->msg), system_charset_info);
     if (protocol->write())
       DBUG_RETURN(TRUE);
   }

=== modified file 'sql/sql_handler.cc'
--- a/sql/sql_handler.cc	2009-02-24 09:15:21 +0000
+++ b/sql/sql_handler.cc	2009-03-19 13:44:58 +0000
@@ -90,7 +90,7 @@ static int mysql_ha_flush_table(THD *thd
 static char *mysql_ha_hash_get_key(TABLE_LIST *tables, uint *key_len_p,
                                    my_bool first __attribute__((unused)))
 {
-  *key_len_p= strlen(tables->alias) + 1 ; /* include '\0' in comparisons */
+  *key_len_p= (uint) strlen(tables->alias) + 1 ; /* include '\0' in comparisons */
   return tables->alias;
 }
 
@@ -204,7 +204,7 @@ bool mysql_ha_open(THD *thd, TABLE_LIST 
   else if (! reopen) /* Otherwise we have 'tables' already. */
   {
     if (hash_search(&thd->handler_tables_hash, (byte*) tables->alias,
-                    strlen(tables->alias) + 1))
+                    (uint) strlen(tables->alias) + 1))
     {
       DBUG_PRINT("info",("duplicate '%s'", tables->alias));
       my_error(ER_NONUNIQ_TABLE, MYF(0), tables->alias);
@@ -259,9 +259,9 @@ bool mysql_ha_open(THD *thd, TABLE_LIST 
   if (! reopen)
   {
     /* copy the TABLE_LIST struct */
-    dblen= strlen(tables->db) + 1;
-    namelen= strlen(tables->table_name) + 1;
-    aliaslen= strlen(tables->alias) + 1;
+    dblen= (uint) strlen(tables->db) + 1;
+    namelen= (uint) strlen(tables->table_name) + 1;
+    aliaslen= (uint) strlen(tables->alias) + 1;
     if (!(my_multi_malloc(MYF(MY_WME),
                           &hash_tables, sizeof(*hash_tables),
                           &db, dblen,
@@ -324,7 +324,7 @@ bool mysql_ha_close(THD *thd, TABLE_LIST
 
   if ((hash_tables= (TABLE_LIST*) hash_search(&thd->handler_tables_hash,
                                               (byte*) tables->alias,
-                                              strlen(tables->alias) + 1)))
+                                              (uint) strlen(tables->alias) + 1)))
   {
     mysql_ha_close_table(thd, hash_tables);
     hash_delete(&thd->handler_tables_hash, (byte*) hash_tables);
@@ -396,7 +396,7 @@ bool mysql_ha_read(THD *thd, TABLE_LIST 
 retry:
   if ((hash_tables= (TABLE_LIST*) hash_search(&thd->handler_tables_hash,
                                               (byte*) tables->alias,
-                                              strlen(tables->alias) + 1)))
+                                              (uint) strlen(tables->alias) + 1)))
   {
     table= hash_tables->table;
     DBUG_PRINT("info-in-hash",("'%s'.'%s' as '%s' tab %p",
@@ -778,7 +778,7 @@ static int mysql_ha_flush_table(THD *thd
 
   if ((hash_tables= (TABLE_LIST*) hash_search(&thd->handler_tables_hash,
                                               (byte*) table->alias,
-                                              strlen(table->alias) + 1)))
+                                              (uint) strlen(table->alias) + 1)))
   {
     if (! (mode_flags & MYSQL_HA_REOPEN_ON_USAGE))
     {

=== modified file 'sql/sql_help.cc'
--- a/sql/sql_help.cc	2008-07-15 14:13:21 +0000
+++ b/sql/sql_help.cc	2009-02-10 22:47:54 +0000
@@ -628,7 +628,7 @@ bool mysqld_help(THD *thd, const char *m
   List<String> topics_list, categories_list, subcategories_list;
   String name, description, example;
   int count_topics, count_categories, error;
-  uint mlen= strlen(mask);
+  size_t mlen= strlen(mask);
   size_t i;
   MEM_ROOT *mem_root= thd->mem_root;
   DBUG_ENTER("mysqld_help");
@@ -668,7 +668,7 @@ bool mysqld_help(THD *thd, const char *m
     tables[i].table->file->init_table_handle_for_HANDLER();
 
   if (!(select=
-	prepare_select_for_name(thd,mask,mlen,tables,tables[0].table,
+	prepare_select_for_name(thd,mask,(uint) mlen,tables,tables[0].table,
 				used_fields[help_topic_name].field,&error)))
     goto error;
 
@@ -681,7 +681,7 @@ bool mysqld_help(THD *thd, const char *m
   {
     int key_id;
     if (!(select=
-          prepare_select_for_name(thd,mask,mlen,tables,tables[3].table,
+          prepare_select_for_name(thd,mask,(uint) mlen,tables,tables[3].table,
                                   used_fields[help_keyword_name].field,&error)))
       goto error;
 
@@ -698,7 +698,7 @@ bool mysqld_help(THD *thd, const char *m
     int16 category_id;
     Field *cat_cat_id= used_fields[help_category_parent_category_id].field;
     if (!(select=
-          prepare_select_for_name(thd,mask,mlen,tables,tables[1].table,
+          prepare_select_for_name(thd,mask,(uint) mlen,tables,tables[1].table,
                                   used_fields[help_category_name].field,&error)))
       goto error;
 
@@ -759,7 +759,7 @@ bool mysqld_help(THD *thd, const char *m
 	send_variant_2_list(mem_root,protocol, &topics_list, "N", 0))
       goto error;
     if (!(select=
-          prepare_select_for_name(thd,mask,mlen,tables,tables[1].table,
+          prepare_select_for_name(thd,mask,(uint) mlen,tables,tables[1].table,
                                   used_fields[help_category_name].field,&error)))
       goto error;
     search_categories(thd, tables[1].table, used_fields,

=== modified file 'sql/sql_insert.cc'
--- a/sql/sql_insert.cc	2009-03-24 00:45:05 +0000
+++ b/sql/sql_insert.cc	2009-03-24 07:29:04 +0000
@@ -1820,7 +1820,7 @@ bool delayed_get_table(THD *thd, TABLE_L
       pthread_mutex_lock(&LOCK_thread_count);
       thread_count++;
       pthread_mutex_unlock(&LOCK_thread_count);
-      di->thd.set_db(table_list->db, strlen(table_list->db));
+      di->thd.set_db(table_list->db, (uint) strlen(table_list->db));
       di->thd.query= my_strdup(table_list->table_name, MYF(MY_WME));
       if (di->thd.db == NULL || di->thd.query == NULL)
       {

=== modified file 'sql/sql_lex.cc'
--- a/sql/sql_lex.cc	2008-10-15 21:34:51 +0000
+++ b/sql/sql_lex.cc	2009-02-10 22:47:54 +0000
@@ -858,7 +858,7 @@ int MYSQLlex(void *arg, void *yythd)
     case MY_LEX_HEX_NUMBER:		// Found x'hexstring'
       yyGet();				// Skip '
       while (my_isxdigit(cs,(c = yyGet()))) ;
-      length=(lip->ptr - lip->tok_start);	// Length of hexnum+3
+      length=(uint) (lip->ptr - lip->tok_start);	// Length of hexnum+3
       if (!(length & 1) || c != '\'')
       {
 	return(ABORT_SYM);		// Illegal hex constant
@@ -872,7 +872,7 @@ int MYSQLlex(void *arg, void *yythd)
     case MY_LEX_BIN_NUMBER:           // Found b'bin-string'
       yyGet();                                // Skip '
       while ((c= yyGet()) == '0' || c == '1');
-      length= (lip->ptr - lip->tok_start);    // Length of bin-num + 3
+      length= (uint) (lip->ptr - lip->tok_start);    // Length of bin-num + 3
       if (c != '\'')
       return(ABORT_SYM);              // Illegal hex constant
       yyGet();                        // get_token makes an unget

=== modified file 'sql/sql_load.cc'
--- a/sql/sql_load.cc	2008-09-17 06:34:00 +0000
+++ b/sql/sql_load.cc	2009-02-10 22:47:54 +0000
@@ -526,8 +526,8 @@ static bool write_execute_load_query_log
 {
   Execute_load_query_log_event
     e(thd, thd->query, thd->query_length,
-      (char*)thd->lex->fname_start - (char*)thd->query,
-      (char*)thd->lex->fname_end - (char*)thd->query,
+      (uint) ((char*)thd->lex->fname_start - (char*)thd->query),
+      (uint) ((char*)thd->lex->fname_end - (char*)thd->query),
       (duplicates == DUP_REPLACE) ? LOAD_DUP_REPLACE :
       (ignore ? LOAD_DUP_IGNORE : LOAD_DUP_ERROR),
       transactional_table, FALSE, killed_err_arg);

=== modified file 'sql/sql_parse.cc'
--- a/sql/sql_parse.cc	2009-03-05 10:10:44 +0000
+++ b/sql/sql_parse.cc	2009-03-19 13:44:58 +0000
@@ -250,7 +250,7 @@ static int get_or_create_user_conn(THD *
 				   USER_RESOURCES *mqh)
 {
   int return_val= 0;
-  uint temp_len, user_len;
+  size_t temp_len, user_len;
   char temp_user[USER_HOST_BUFF_SIZE];
   struct  user_conn *uc;
 
@@ -261,7 +261,7 @@ static int get_or_create_user_conn(THD *
   temp_len= (strmov(strmov(temp_user, user)+1, host) - temp_user)+1;
   (void) pthread_mutex_lock(&LOCK_user_conn);
   if (!(uc = (struct  user_conn *) hash_search(&hash_user_connections,
-					       (byte*) temp_user, temp_len)))
+					       (byte*) temp_user, (uint) temp_len)))
   {
     /* First connection for user; Create a user connection object */
     if (!(uc= ((struct user_conn*)
@@ -275,7 +275,7 @@ static int get_or_create_user_conn(THD *
     uc->user=(char*) (uc+1);
     memcpy(uc->user,temp_user,temp_len+1);
     uc->host= uc->user + user_len +  1;
-    uc->len= temp_len;
+    uc->len= (uint) temp_len;
     uc->connections= uc->questions= uc->updates= uc->conn_per_hour= 0;
     uc->user_resources= *mqh;
     uc->intime= thd->thr_create_time;
@@ -328,7 +328,7 @@ int check_user(THD *thd, enum enum_serve
 	       bool check_count)
 {
   DBUG_ENTER("check_user");
-  LEX_STRING db_str= { (char *) db, db ? strlen(db) : 0 };
+  LEX_STRING db_str= { (char *) db, db ? (uint) strlen(db) : 0 };
 
 #ifdef NO_EMBEDDED_ACCESS_CHECKS
   thd->main_security_ctx.master_access= GLOBAL_ACLS;       // Full rights
@@ -1036,7 +1036,7 @@ static int check_connection(THD *thd)
 
   char *user= end;
   char *passwd= strend(user)+1;
-  uint user_len= passwd - user - 1;
+  size_t user_len= passwd - user - 1;
   char *db= passwd;
   char db_buff[NAME_LEN + 1];           // buffer to store db in utf8
   char user_buff[USERNAME_LENGTH + 1];	// buffer to store user in utf8
@@ -1051,10 +1051,10 @@ static int check_connection(THD *thd)
     *passwd > 127 and become 2**32-127 after casting to uint.
   */
   uint passwd_len= thd->client_capabilities & CLIENT_SECURE_CONNECTION ?
-    (uchar)(*passwd++) : strlen(passwd);
+    (uchar)(*passwd++) : (uint) strlen(passwd);
   db= thd->client_capabilities & CLIENT_CONNECT_WITH_DB ?
     db + passwd_len + 1 : 0;
-  uint db_len= db ? strlen(db) : 0;
+  size_t db_len= db ? strlen(db) : 0;
 
   if (passwd + passwd_len + db_len > (char *)net->read_pos + pkt_len)
   {
@@ -1067,13 +1067,13 @@ static int check_connection(THD *thd)
   {
     db_buff[copy_and_convert(db_buff, sizeof(db_buff)-1,
                              system_charset_info,
-                             db, db_len,
+                             db, (uint) db_len,
                              thd->charset(), &dummy_errors)]= 0;
     db= db_buff;
   }
 
   user_buff[user_len= copy_and_convert(user_buff, sizeof(user_buff)-1,
-                                       system_charset_info, user, user_len,
+                                       system_charset_info, user, (uint) user_len,
                                        thd->charset(), &dummy_errors)]= '\0';
   user= user_buff;
 
@@ -1769,7 +1769,7 @@ bool dispatch_command(enum enum_server_c
     statistic_increment(thd->status_var.com_stat[SQLCOM_CHANGE_DB],
 			&LOCK_status);
     thd->convert_string(&tmp, system_charset_info,
-			packet, strlen(packet), thd->charset());
+			packet, (uint) strlen(packet), thd->charset());
     if (!mysql_change_db(thd, &tmp, FALSE))
     {
       mysql_log.write(thd,command,"%s",thd->db);
@@ -1832,7 +1832,7 @@ bool dispatch_command(enum enum_server_c
     */
     char db_buff[NAME_LEN+1];               // buffer to store db in utf8
     char *db= passwd;
-    uint passwd_len= thd->client_capabilities & CLIENT_SECURE_CONNECTION ?
+    size_t passwd_len= thd->client_capabilities & CLIENT_SECURE_CONNECTION ?
       (uchar)(*passwd++) : strlen(passwd);
     db+= passwd_len + 1;
 #ifndef EMBEDDED_LIBRARY
@@ -1846,7 +1846,7 @@ bool dispatch_command(enum enum_server_c
     /* Convert database name to utf8 */
     uint dummy_errors;
     db_buff[copy_and_convert(db_buff, sizeof(db_buff)-1,
-                             system_charset_info, db, strlen(db),
+                             system_charset_info, db, (uint) strlen(db),
                              thd->charset(), &dummy_errors)]= 0;
     db= db_buff;
 
@@ -1865,7 +1865,7 @@ bool dispatch_command(enum enum_server_c
 
     /* Clear variables that are allocated */
     thd->user_connect= 0;
-    int res= check_user(thd, COM_CHANGE_USER, passwd, passwd_len, db, FALSE);
+    int res= check_user(thd, COM_CHANGE_USER, passwd, (uint) passwd_len, db, FALSE);
 
     if (res)
     {
@@ -2011,7 +2011,7 @@ bool dispatch_command(enum enum_server_c
         table_list.schema_table= schema_table;
     }
 
-    thd->query_length= strlen(packet);       // for simplicity: don't optimize
+    thd->query_length= (uint) strlen(packet);       // for simplicity: don't optimize
     if (!(thd->query=fields=thd->memdup(packet,thd->query_length+1)))
       break;
     mysql_log.write(thd,command,"%s %s",table_list.table_name, fields);
@@ -3963,7 +3963,7 @@ end_with_restore_list:
 #endif
   case SQLCOM_CHANGE_DB:
   {
-    LEX_STRING db_str= { (char *) select_lex->db, strlen(select_lex->db) };
+    LEX_STRING db_str= { (char *) select_lex->db, (uint) strlen(select_lex->db) };
 
     if (!mysql_change_db(thd, &db_str, FALSE))
       send_ok(thd);
@@ -6194,7 +6194,7 @@ void create_select_for_variable(const ch
   mysql_init_select(lex);
   lex->sql_command= SQLCOM_SELECT;
   tmp.str= (char*) var_name;
-  tmp.length=strlen(var_name);
+  tmp.length=(uint) strlen(var_name);
   bzero((char*) &null_lex_string.str, sizeof(null_lex_string));
   /*
     We set the name of Item to @@session.var_name because that then is used
@@ -6203,7 +6203,7 @@ void create_select_for_variable(const ch
   if ((var= get_system_var(thd, OPT_SESSION, tmp, null_lex_string)))
   {
     end= strxmov(buff, "@@session.", var_name, NullS);
-    var->set_name(buff, end-buff, system_charset_info);
+    var->set_name(buff, (uint) (end - buff), system_charset_info);
     add_item_to_list(thd, var);
   }
   DBUG_VOID_RETURN;
@@ -7946,10 +7946,10 @@ void get_default_definer(THD *thd, LEX_U
   const Security_context *sctx= thd->security_ctx;
 
   definer->user.str= (char *) sctx->priv_user;
-  definer->user.length= strlen(definer->user.str);
+  definer->user.length= (uint) strlen(definer->user.str);
 
   definer->host.str= (char *) sctx->priv_host;
-  definer->host.length= strlen(definer->host.str);
+  definer->host.length= (uint) strlen(definer->host.str);
 }
 
 

=== modified file 'sql/sql_prepare.cc'
--- a/sql/sql_prepare.cc	2008-07-14 21:41:30 +0000
+++ b/sql/sql_prepare.cc	2009-02-10 22:47:54 +0000
@@ -726,13 +726,13 @@ static bool insert_params_withlog(Prepar
     Item_param *param= *it;
     if (param->state != Item_param::LONG_DATA_VALUE)
     {
-      if (is_param_null(null_array, it - begin))
+      if (is_param_null(null_array, (uint) (it - begin)))
         param->set_null();
       else
       {
         if (read_pos >= data_end)
           DBUG_RETURN(1);
-        param->set_param_func(param, &read_pos, data_end - read_pos);
+        param->set_param_func(param, &read_pos, (uint) (data_end - read_pos));
         if (param->state == Item_param::NO_VALUE)
           DBUG_RETURN(1);
       }
@@ -764,13 +764,13 @@ static bool insert_params(Prepared_state
     Item_param *param= *it;
     if (param->state != Item_param::LONG_DATA_VALUE)
     {
-      if (is_param_null(null_array, it - begin))
+      if (is_param_null(null_array, (uint) (it - begin)))
         param->set_null();
       else
       {
         if (read_pos >= data_end)
           DBUG_RETURN(1);
-        param->set_param_func(param, &read_pos, data_end - read_pos);
+        param->set_param_func(param, &read_pos, (uint) (data_end - read_pos));
         if (param->state == Item_param::NO_VALUE)
           DBUG_RETURN(1);
       }

=== modified file 'sql/sql_repl.cc'
--- a/sql/sql_repl.cc	2008-01-31 06:19:29 +0000
+++ b/sql/sql_repl.cc	2009-02-10 22:47:54 +0000
@@ -202,7 +202,7 @@ void adjust_linfo_offsets(my_off_t purge
 
 bool log_in_use(const char* log_name)
 {
-  int log_name_len = strlen(log_name) + 1;
+  size_t log_name_len = strlen(log_name) + 1;
   THD *tmp;
   bool result = 0;
 
@@ -1284,8 +1284,8 @@ int cmp_master_pos(const char* log_file_
 		   const char* log_file_name2, ulonglong log_pos2)
 {
   int res;
-  uint log_file_name1_len=  strlen(log_file_name1);
-  uint log_file_name2_len=  strlen(log_file_name2);
+  size_t log_file_name1_len=  strlen(log_file_name1);
+  size_t log_file_name2_len=  strlen(log_file_name2);
 
   //  We assume that both log names match up to '.'
   if (log_file_name1_len == log_file_name2_len)
@@ -1580,7 +1580,7 @@ int log_loaded_block(IO_CACHE* file)
       lf_info->last_pos_in_file >= my_b_get_pos_in_file(file))
     DBUG_RETURN(0);
   
-  for (block_len= my_b_get_bytes_in_buffer(file); block_len > 0;
+  for (block_len= (uint) (my_b_get_bytes_in_buffer(file)); block_len > 0;
        buffer += min(block_len, max_event_size),
        block_len -= min(block_len, max_event_size))
   {

=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc	2009-02-19 15:30:03 +0000
+++ b/sql/sql_select.cc	2009-03-19 13:44:58 +0000
@@ -7617,7 +7617,7 @@ static int compare_fields_by_table_order
   if (outer_ref)
     return cmp;
   JOIN_TAB **idx= (JOIN_TAB **) table_join_idx;
-  cmp= idx[field2->field->table->tablenr]-idx[field1->field->table->tablenr];
+  cmp= (uint) (idx[field2->field->table->tablenr] - idx[field1->field->table->tablenr]);
   return cmp < 0 ? -1 : (cmp ? 1 : 0);
 }
 
@@ -9644,7 +9644,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARA
     table->s->default_values= table->record[1]+alloc_length;
   }
   copy_func[0]=0;				// End marker
-  param->func_count= copy_func - param->items_to_copy; 
+  param->func_count= (uint) (copy_func - param->items_to_copy); 
 
   recinfo=param->start_recinfo;
   null_flags=(uchar*) table->record[0];
@@ -15217,10 +15217,10 @@ static void select_describe(JOIN *join, 
     item_list.push_back(new Item_int((int32)
 				     join->select_lex->select_number));
     item_list.push_back(new Item_string(join->select_lex->type,
-					strlen(join->select_lex->type), cs));
+					(uint) strlen(join->select_lex->type), cs));
     for (uint i=0 ; i < 7; i++)
       item_list.push_back(item_null);
-    item_list.push_back(new Item_string(message,strlen(message),cs));
+    item_list.push_back(new Item_string(message,(uint) strlen(message),cs));
     if (result->send_data(item_list))
       join->error= 1;
   }
@@ -15239,7 +15239,7 @@ static void select_describe(JOIN *join, 
     item_list.push_back(new Item_null);
     /* select_type */
     item_list.push_back(new Item_string(join->select_lex->type,
-					strlen(join->select_lex->type),
+					(uint) strlen(join->select_lex->type),
 					cs));
     /* table */
     {
@@ -15266,7 +15266,7 @@ static void select_describe(JOIN *join, 
     }
     /* type */
     item_list.push_back(new Item_string(join_type_str[JT_ALL],
-					  strlen(join_type_str[JT_ALL]),
+					  (uint) strlen(join_type_str[JT_ALL]),
 					  cs));
     /* possible_keys */
     item_list.push_back(item_null);
@@ -15315,7 +15315,7 @@ static void select_describe(JOIN *join, 
 				       join->select_lex->select_number));
       /* select_type */
       item_list.push_back(new Item_string(join->select_lex->type,
-					  strlen(join->select_lex->type),
+					  (uint) strlen(join->select_lex->type),
 					  cs));
       if (tab->type == JT_ALL && tab->select && tab->select->quick)
       {
@@ -15340,12 +15340,12 @@ static void select_describe(JOIN *join, 
       {
         TABLE_LIST *real_table= table->pos_in_table_list; 
 	item_list.push_back(new Item_string(real_table->alias,
-					    strlen(real_table->alias),
+					    (uint) strlen(real_table->alias),
 					    cs));
       }
       /* type */
       item_list.push_back(new Item_string(join_type_str[tab->type],
-					  strlen(join_type_str[tab->type]),
+					  (uint) strlen(join_type_str[tab->type]),
 					  cs));
       /* Build "possible_keys" value and add it to item_list */
       if (!tab->keys.is_clear_all())
@@ -15358,7 +15358,7 @@ static void select_describe(JOIN *join, 
             if (tmp1.length())
               tmp1.append(',');
             tmp1.append(table->key_info[j].name, 
-			strlen(table->key_info[j].name),
+			(uint) strlen(table->key_info[j].name),
 			system_charset_info);
           }
         }
@@ -15374,17 +15374,17 @@ static void select_describe(JOIN *join, 
 	KEY *key_info=table->key_info+ tab->ref.key;
         register uint length;
 	item_list.push_back(new Item_string(key_info->name,
-					    strlen(key_info->name),
+					    (uint) strlen(key_info->name),
 					    system_charset_info));
-        length= longlong2str(tab->ref.key_length, keylen_str_buf, 10) - 
-                keylen_str_buf;
+        length= (uint) (longlong2str(tab->ref.key_length, keylen_str_buf, 10) - 
+                keylen_str_buf);
         item_list.push_back(new Item_string(keylen_str_buf, length,
                                             system_charset_info));
 	for (store_key **ref=tab->ref.key_copy ; *ref ; ref++)
 	{
 	  if (tmp2.length())
 	    tmp2.append(',');
-	  tmp2.append((*ref)->name(), strlen((*ref)->name()),
+	  tmp2.append((*ref)->name(), (uint) strlen((*ref)->name()),
 		      system_charset_info);
 	}
 	item_list.push_back(new Item_string(tmp2.ptr(),tmp2.length(),cs));
@@ -15394,9 +15394,9 @@ static void select_describe(JOIN *join, 
 	KEY *key_info=table->key_info+ tab->index;
         register uint length;
 	item_list.push_back(new Item_string(key_info->name,
-					    strlen(key_info->name),cs));
-        length= longlong2str(key_info->key_length, keylen_str_buf, 10) - 
-                keylen_str_buf;
+					    (uint) strlen(key_info->name),cs));
+        length= (uint) (longlong2str(key_info->key_length, keylen_str_buf, 10) - 
+                keylen_str_buf);
         item_list.push_back(new Item_string(keylen_str_buf, 
                                             length,
                                             system_charset_info));
@@ -15429,7 +15429,7 @@ static void select_describe(JOIN *join, 
         key_read=1;
         
       if (tab->info)
-	item_list.push_back(new Item_string(tab->info,strlen(tab->info),cs));
+	item_list.push_back(new Item_string(tab->info,(uint) strlen(tab->info),cs));
       else if (tab->packed_info & TAB_INFO_HAVE_VALUE)
       {
         if (tab->packed_info & TAB_INFO_USING_INDEX)
@@ -15753,7 +15753,7 @@ void TABLE_LIST::print(THD *thd, String 
       if (schema_table)
       {
         append_identifier(thd, str, schema_table_name,
-                          strlen(schema_table_name));
+                          (uint) strlen(schema_table_name));
         cmp_name= schema_table_name;
       }
       else
@@ -15778,7 +15778,7 @@ void TABLE_LIST::print(THD *thd, String 
         }
       }
 
-      append_identifier(thd, str, t_alias, strlen(t_alias));
+      append_identifier(thd, str, t_alias, (uint) strlen(t_alias));
     }
 
     if (use_index)

=== modified file 'sql/sql_show.cc'
--- a/sql/sql_show.cc	2009-02-25 11:44:50 +0000
+++ b/sql/sql_show.cc	2009-03-19 13:44:58 +0000
@@ -362,9 +362,9 @@ find_files(THD *thd, List<char> *files, 
     if (db && !(col_access & TABLE_ACLS))
     {
       table_list.db= (char*) db;
-      table_list.db_length= strlen(db);
+      table_list.db_length= (uint) strlen(db);
       table_list.table_name= file->name;
-      table_list.table_name_length= strlen(file->name);
+      table_list.table_name_length= (uint) strlen(file->name);
       table_list.grant.privilege=col_access;
       if (check_grant(thd, TABLE_ACLS, &table_list, 1, 1, 1))
         continue;
@@ -530,12 +530,12 @@ bool mysqld_show_create_db(THD *thd, cha
     DBUG_RETURN(TRUE);
 
   protocol->prepare_for_resend();
-  protocol->store(dbname, strlen(dbname), system_charset_info);
+  protocol->store(dbname, (uint) strlen(dbname), system_charset_info);
   buffer.length(0);
   buffer.append(STRING_WITH_LEN("CREATE DATABASE "));
   if (create_options & HA_LEX_CREATE_IF_NOT_EXISTS)
     buffer.append(STRING_WITH_LEN("/*!32312 IF NOT EXISTS*/ "));
-  append_identifier(thd, &buffer, dbname, strlen(dbname));
+  append_identifier(thd, &buffer, dbname, (uint) strlen(dbname));
 
   if (create.default_table_charset)
   {
@@ -907,7 +907,7 @@ store_create_info(THD *thd, TABLE_LIST *
   else
     alias= (lower_case_table_names == 2 ? table->alias :
             share->table_name);
-  append_identifier(thd, packet, alias, strlen(alias));
+  append_identifier(thd, packet, alias, (uint) strlen(alias));
   packet->append(STRING_WITH_LEN(" (\n"));
 
   for (ptr=table->field ; (field= *ptr); ptr++)
@@ -918,7 +918,7 @@ store_create_info(THD *thd, TABLE_LIST *
       packet->append(STRING_WITH_LEN(",\n"));
 
     packet->append(STRING_WITH_LEN("  "));
-    append_identifier(thd,packet,field->field_name, strlen(field->field_name));
+    append_identifier(thd,packet,field->field_name, (uint) strlen(field->field_name));
     packet->append(' ');
     // check for surprises from the previous call to Field::sql_type()
     if (type.ptr() != tmp)
@@ -1005,7 +1005,7 @@ store_create_info(THD *thd, TABLE_LIST *
     packet->append(STRING_WITH_LEN("KEY "));
 
     if (!found_primary)
-     append_identifier(thd, packet, key_info->name, strlen(key_info->name));
+     append_identifier(thd, packet, key_info->name, (uint) strlen(key_info->name));
 
     if (!(thd->variables.sql_mode & MODE_NO_KEY_OPTIONS) &&
 	!limited_mysql_mode && !foreign_db_mode)
@@ -1032,7 +1032,7 @@ store_create_info(THD *thd, TABLE_LIST *
 
       if (key_part->field)
         append_identifier(thd,packet,key_part->field->field_name,
-			  strlen(key_part->field->field_name));
+			  (uint) strlen(key_part->field->field_name));
       if (key_part->field &&
           (key_part->length !=
            table->field[key_part->fieldnr-1]->key_length() &&
@@ -1056,7 +1056,7 @@ store_create_info(THD *thd, TABLE_LIST *
 
   if ((for_str= file->get_foreign_key_create_info()))
   {
-    packet->append(for_str, strlen(for_str));
+    packet->append(for_str, (uint) strlen(for_str));
     file->free_foreign_key_create_info(for_str);
   }
 
@@ -1338,7 +1338,8 @@ void mysqld_list_processes(THD *thd,cons
   field_list.push_back(field=new Item_empty_string("db",NAME_LEN));
   field->maybe_null=1;
   field_list.push_back(new Item_empty_string("Command",16));
-  field_list.push_back(new Item_return_int("Time",7, FIELD_TYPE_LONG));
+  field_list.push_back(field= new Item_return_int("Time",7, FIELD_TYPE_LONG));
+  field->unsigned_flag= 0;
   field_list.push_back(field=new Item_empty_string("State",30));
   field->maybe_null=1;
   field_list.push_back(field=new Item_empty_string("Info",max_query_length));
@@ -1439,7 +1440,7 @@ void mysqld_list_processes(THD *thd,cons
     else
       protocol->store(command_name[thd_info->command], system_charset_info);
     if (thd_info->start_time)
-      protocol->store((uint32) (now - thd_info->start_time));
+      protocol->store_long ((longlong) (now - thd_info->start_time));
     else
       protocol->store_null();
     protocol->store(thd_info->state_info, system_charset_info);
@@ -1465,7 +1466,7 @@ static bool show_status_array(THD *thd, 
   char buff[1024], *prefix_end;
   /* the variable name should not be longer then 80 characters */
   char name_buffer[80];
-  int len;
+  size_t len;
   LEX_STRING null_lex_str;
   CHARSET_INFO *charset= system_charset_info;
   DBUG_ENTER("show_status_array");
@@ -1474,11 +1475,11 @@ static bool show_status_array(THD *thd, 
   null_lex_str.length= 0;
 
   prefix_end=strnmov(name_buffer, prefix, sizeof(name_buffer)-1);
-  len=name_buffer + sizeof(name_buffer) - prefix_end;
+  len= name_buffer + sizeof(name_buffer) - prefix_end;
 
   for (; variables->name; variables++)
   {
-    strnmov(prefix_end, variables->name, len);
+    strnmov(prefix_end, variables->name, (uint) len);
     name_buffer[sizeof(name_buffer)-1]=0;       /* Safety */
     SHOW_TYPE show_type=variables->type;
     if (show_type == SHOW_VARS)
@@ -1794,7 +1795,7 @@ static bool show_status_array(THD *thd, 
               const char *p= SSL_get_cipher_list((SSL*) thd->net.vio->ssl_arg,i);
               if (p == NULL)
                 break;
-              to= strnmov(to, p, buff_end-to-1);
+              to= strnmov(to, p, (uint) (buff_end-to-1));
               *to++= ':';
             }
             if (to != buff)
@@ -1823,7 +1824,7 @@ static bool show_status_array(THD *thd, 
           break;
         }
         restore_record(table, s->default_values);
-        table->field[0]->store(name_buffer, strlen(name_buffer),
+        table->field[0]->store(name_buffer, (uint) strlen(name_buffer),
                                system_charset_info);
         table->field[1]->store(pos, (uint32) (end - pos), charset);
         if (schema_table_store_record(thd, table))
@@ -1942,9 +1943,9 @@ int make_table_list(THD *thd, SELECT_LEX
   Table_ident *table_ident;
   LEX_STRING ident_db, ident_table;
   ident_db.str= db; 
-  ident_db.length= strlen(db);
+  ident_db.length= (uint) strlen(db);
   ident_table.str= table;
-  ident_table.length= strlen(table);
+  ident_table.length= (uint) strlen(table);
   table_ident= new Table_ident(thd, ident_db, ident_table, 1);
   sel->init_query();
   if (!sel->add_table_to_list(thd, table_ident, 0, 0, TL_READ,
@@ -1974,12 +1975,12 @@ bool uses_only_table_name_fields(Item *i
     const char *field_name1= schema_table->idx_field1 >= 0 ? field_info[schema_table->idx_field1].field_name : "";
     const char *field_name2= schema_table->idx_field2 >= 0 ? field_info[schema_table->idx_field2].field_name : "";
     if (table->table != item_field->field->table ||
-        (cs->coll->strnncollsp(cs, (uchar *) field_name1, strlen(field_name1),
+        (cs->coll->strnncollsp(cs, (uchar *) field_name1, (uint) strlen(field_name1),
                                (uchar *) item_field->field_name, 
-                               strlen(item_field->field_name), 0) &&
-         cs->coll->strnncollsp(cs, (uchar *) field_name2, strlen(field_name2),
+                               (uint) strlen(item_field->field_name), 0) &&
+         cs->coll->strnncollsp(cs, (uchar *) field_name2, (uint) strlen(field_name2),
                                (uchar *) item_field->field_name, 
-                               strlen(item_field->field_name), 0)))
+                               (uint) strlen(item_field->field_name), 0)))
       return 0;
   }
   else if (item->type() == Item::REF_ITEM)
@@ -2310,9 +2311,9 @@ int get_all_tables(THD *thd, TABLE_LIST 
       {
 	restore_record(table, s->default_values);
         table->field[schema_table->idx_field1]->
-          store(base_name, strlen(base_name), system_charset_info);
+          store(base_name, (uint) strlen(base_name), system_charset_info);
         table->field[schema_table->idx_field2]->
-          store(file_name, strlen(file_name),system_charset_info);
+          store(file_name, (uint) strlen(file_name),system_charset_info);
         if (!partial_cond || partial_cond->val_int())
         {
           if (schema_table_idx == SCH_TABLE_NAMES)
@@ -2420,9 +2421,9 @@ bool store_schema_shemata(THD* thd, TABL
                           CHARSET_INFO *cs)
 {
   restore_record(table, s->default_values);
-  table->field[1]->store(db_name, strlen(db_name), system_charset_info);
-  table->field[2]->store(cs->csname, strlen(cs->csname), system_charset_info);
-  table->field[3]->store(cs->name, strlen(cs->name), system_charset_info);
+  table->field[1]->store(db_name, (uint) strlen(db_name), system_charset_info);
+  table->field[2]->store(cs->csname, (uint) strlen(cs->csname), system_charset_info);
+  table->field[3]->store(cs->name, (uint) strlen(cs->name), system_charset_info);
   return schema_table_store_record(thd, table);
 }
 
@@ -2488,8 +2489,8 @@ static int get_schema_tables_record(THD 
   DBUG_ENTER("get_schema_tables_record");
 
   restore_record(table, s->default_values);
-  table->field[1]->store(base_name, strlen(base_name), cs);
-  table->field[2]->store(file_name, strlen(file_name), cs);
+  table->field[1]->store(base_name, (uint) strlen(base_name), cs);
+  table->field[2]->store(file_name, (uint) strlen(file_name), cs);
   if (res)
   {
     /*
@@ -2502,7 +2503,7 @@ static int get_schema_tables_record(THD 
       table->field[3]->store(STRING_WITH_LEN("SYSTEM VIEW"), cs);
     else
       table->field[3]->store(STRING_WITH_LEN("BASE TABLE"), cs);
-    table->field[20]->store(error, strlen(error), cs);
+    table->field[20]->store(error, (uint) strlen(error), cs);
     thd->clear_error();
   }
   else if (tables->view)
@@ -2532,7 +2533,7 @@ static int get_schema_tables_record(THD 
       table->field[i]->set_notnull();
     }
     tmp_buff= file->table_type();
-    table->field[4]->store(tmp_buff, strlen(tmp_buff), cs);
+    table->field[4]->store(tmp_buff, (uint) strlen(tmp_buff), cs);
     table->field[5]->store((longlong) share->frm_version, TRUE);
     enum row_type row_type = file->get_row_type();
     switch (row_type) {
@@ -2559,7 +2560,7 @@ static int get_schema_tables_record(THD 
       tmp_buff= "Compact";
       break;
     }
-    table->field[6]->store(tmp_buff, strlen(tmp_buff), cs);
+    table->field[6]->store(tmp_buff, (uint) strlen(tmp_buff), cs);
     if (!tables->schema_table)
     {
       table->field[7]->store((longlong) file->records, TRUE);
@@ -2601,7 +2602,7 @@ static int get_schema_tables_record(THD 
     }
     tmp_buff= (share->table_charset ?
                share->table_charset->name : "default");
-    table->field[17]->store(tmp_buff, strlen(tmp_buff), cs);
+    table->field[17]->store(tmp_buff, (uint) strlen(tmp_buff), cs);
     if (file->table_flags() & (ulong) HA_HAS_CHECKSUM)
     {
       table->field[18]->store((longlong) file->checksum(), TRUE);
@@ -2657,7 +2658,7 @@ static int get_schema_tables_record(THD 
         table->field[20]->store(comment,
                                 (comment == share->comment.str ?
                                  share->comment.length : 
-                                 strlen(comment)), cs);
+                                 (uint) strlen(comment)), cs);
         if (comment != share->comment.str)
           my_free(comment, MYF(0));
       }
@@ -2703,8 +2704,8 @@ static int get_schema_column_record(THD 
   count= 0;
   file->info(HA_STATUS_VARIABLE | HA_STATUS_NO_LOCK);
   restore_record(show_table, s->default_values);
-  base_name_length= strlen(base_name);
-  file_name_length= strlen(file_name);
+  base_name_length= (uint) strlen(base_name);
+  file_name_length= (uint) strlen(file_name);
 
   for (ptr=show_table->field; (field= *ptr) ; ptr++)
   {
@@ -2749,13 +2750,13 @@ static int get_schema_column_record(THD 
 #endif
     table->field[1]->store(base_name, base_name_length, cs);
     table->field[2]->store(file_name, file_name_length, cs);
-    table->field[3]->store(field->field_name, strlen(field->field_name),
+    table->field[3]->store(field->field_name, (uint) strlen(field->field_name),
                            cs);
     table->field[4]->store((longlong) count, TRUE);
     field->sql_type(type);
     table->field[14]->store(type.ptr(), type.length(), cs);		
     tmp_buff= strchr(type.ptr(), '(');
-    table->field[7]->store(type.ptr(),
+    table->field[7]->store(type.ptr(), (uint) 
                            (tmp_buff ? tmp_buff - type.ptr() :
                             type.length()), cs);
 
@@ -2767,7 +2768,7 @@ static int get_schema_column_record(THD 
 
     pos=(byte*) ((flags & NOT_NULL_FLAG) ?  "NO" : "YES");
     table->field[6]->store((const char*) pos,
-                           strlen((const char*) pos), cs);
+                           (uint) strlen((const char*) pos), cs);
     is_blob= (field->type() == FIELD_TYPE_BLOB);
     if (field->has_charset() || is_blob ||
         field->real_type() == MYSQL_TYPE_VARCHAR ||  // For varbinary type
@@ -2835,18 +2836,18 @@ static int get_schema_column_record(THD 
     {
       pos=(byte*) field->charset()->csname;
       table->field[12]->store((const char*) pos,
-                              strlen((const char*) pos), cs);
+                              (uint) strlen((const char*) pos), cs);
       table->field[12]->set_notnull();
       pos=(byte*) field->charset()->name;
       table->field[13]->store((const char*) pos,
-                              strlen((const char*) pos), cs);
+                              (uint) strlen((const char*) pos), cs);
       table->field[13]->set_notnull();
     }
     pos=(byte*) ((field->flags & PRI_KEY_FLAG) ? "PRI" :
                  (field->flags & UNIQUE_KEY_FLAG) ? "UNI" :
                  (field->flags & MULTIPLE_KEY_FLAG) ? "MUL":"");
     table->field[15]->store((const char*) pos,
-                            strlen((const char*) pos), cs);
+                            (uint) strlen((const char*) pos), cs);
 
     end= tmp;
     if (field->unireg_check == Field::NEXT_NUMBER)
@@ -2879,10 +2880,10 @@ int fill_schema_charsets(THD *thd, TABLE
     {
       const char *comment;
       restore_record(table, s->default_values);
-      table->field[0]->store(tmp_cs->csname, strlen(tmp_cs->csname), scs);
-      table->field[1]->store(tmp_cs->name, strlen(tmp_cs->name), scs);
+      table->field[0]->store(tmp_cs->csname, (uint) strlen(tmp_cs->csname), scs);
+      table->field[1]->store(tmp_cs->name, (uint) strlen(tmp_cs->name), scs);
       comment= tmp_cs->comment ? tmp_cs->comment : "";
-      table->field[2]->store(comment, strlen(comment), scs);
+      table->field[2]->store(comment, (uint) strlen(comment), scs);
       table->field[3]->store((longlong) tmp_cs->mbmaxlen, TRUE);
       if (schema_table_store_record(thd, table))
         return 1;
@@ -2916,13 +2917,13 @@ int fill_schema_collation(THD *thd, TABL
       {
 	const char *tmp_buff;
 	restore_record(table, s->default_values);
-	table->field[0]->store(tmp_cl->name, strlen(tmp_cl->name), scs);
-        table->field[1]->store(tmp_cl->csname , strlen(tmp_cl->csname), scs);
+	table->field[0]->store(tmp_cl->name, (uint) strlen(tmp_cl->name), scs);
+        table->field[1]->store(tmp_cl->csname , (uint) strlen(tmp_cl->csname), scs);
         table->field[2]->store((longlong) tmp_cl->number, TRUE);
         tmp_buff= (tmp_cl->state & MY_CS_PRIMARY) ? "Yes" : "";
-	table->field[3]->store(tmp_buff, strlen(tmp_buff), scs);
+	table->field[3]->store(tmp_buff, (uint) strlen(tmp_buff), scs);
         tmp_buff= (tmp_cl->state & MY_CS_COMPILED)? "Yes" : "";
-	table->field[4]->store(tmp_buff, strlen(tmp_buff), scs);
+	table->field[4]->store(tmp_buff, (uint) strlen(tmp_buff), scs);
         table->field[5]->store((longlong) tmp_cl->strxfrm_multiply, TRUE);
         if (schema_table_store_record(thd, table))
           return 1;
@@ -2952,8 +2953,8 @@ int fill_schema_coll_charset_app(THD *th
           !my_charset_same(tmp_cs,tmp_cl))
 	continue;
       restore_record(table, s->default_values);
-      table->field[0]->store(tmp_cl->name, strlen(tmp_cl->name), scs);
-      table->field[1]->store(tmp_cl->csname , strlen(tmp_cl->csname), scs);
+      table->field[0]->store(tmp_cl->name, (uint) strlen(tmp_cl->name), scs);
+      table->field[1]->store(tmp_cl->csname , (uint) strlen(tmp_cl->csname), scs);
       if (schema_table_store_record(thd, table))
         return 1;
     }
@@ -3124,16 +3125,16 @@ static int get_schema_stat_record(THD *t
       for (uint j=0 ; j < key_info->key_parts ; j++,key_part++)
       {
         restore_record(table, s->default_values);
-        table->field[1]->store(base_name, strlen(base_name), cs);
-        table->field[2]->store(file_name, strlen(file_name), cs);
+        table->field[1]->store(base_name, (uint) strlen(base_name), cs);
+        table->field[2]->store(file_name, (uint) strlen(file_name), cs);
         table->field[3]->store((longlong) ((key_info->flags &
                                             HA_NOSAME) ? 0 : 1), TRUE);
-        table->field[4]->store(base_name, strlen(base_name), cs);
-        table->field[5]->store(key_info->name, strlen(key_info->name), cs);
+        table->field[4]->store(base_name, (uint) strlen(base_name), cs);
+        table->field[5]->store(key_info->name, (uint) strlen(key_info->name), cs);
         table->field[6]->store((longlong) (j+1), TRUE);
         str=(key_part->field ? key_part->field->field_name :
              "?unknown field?");
-        table->field[7]->store(str, strlen(str), cs);
+        table->field[7]->store(str, (uint) strlen(str), cs);
         if (show_table->file->index_flags(i, j, 0) & HA_READ_ORDER)
         {
           table->field[8]->store(((key_part->key_part_flag &
@@ -3160,9 +3161,9 @@ static int get_schema_stat_record(THD *t
         }
         uint flags= key_part->field ? key_part->field->flags : 0;
         const char *pos=(char*) ((flags & NOT_NULL_FLAG) ? "" : "YES");
-        table->field[12]->store(pos, strlen(pos), cs);
+        table->field[12]->store(pos, (uint) strlen(pos), cs);
         pos= show_table->file->index_type(i);
-        table->field[13]->store(pos, strlen(pos), cs);
+        table->field[13]->store(pos, (uint) strlen(pos), cs);
         if (!show_table->s->keys_in_use.is_set(i))
           table->field[14]->store(STRING_WITH_LEN("disabled"), cs);
         else
@@ -3278,7 +3279,7 @@ static int get_schema_views_record(THD *
       table->field[5]->store(STRING_WITH_LEN("YES"), cs);
     else
       table->field[5]->store(STRING_WITH_LEN("NO"), cs);
-    definer_len= (strxmov(definer, tables->definer.user.str, "@",
+    definer_len= (uint) (strxmov(definer, tables->definer.user.str, "@",
                           tables->definer.host.str, NullS) - definer);
     table->field[6]->store(definer, definer_len, cs);
     if (tables->view_suid)
@@ -3303,10 +3304,10 @@ bool store_constraints(THD *thd, TABLE *
 {
   CHARSET_INFO *cs= system_charset_info;
   restore_record(table, s->default_values);
-  table->field[1]->store(db, strlen(db), cs);
+  table->field[1]->store(db, (uint) strlen(db), cs);
   table->field[2]->store(key_name, key_len, cs);
-  table->field[3]->store(db, strlen(db), cs);
-  table->field[4]->store(tname, strlen(tname), cs);
+  table->field[3]->store(db, (uint) strlen(db), cs);
+  table->field[4]->store(tname, (uint) strlen(tname), cs);
   table->field[5]->store(con_type, con_len, cs);
   return schema_table_store_record(thd, table);
 }
@@ -3343,14 +3344,14 @@ static int get_schema_constraints_record
       if (i == primary_key && !strcmp(key_info->name, primary_key_name))
       {
         if (store_constraints(thd, table, base_name, file_name, key_info->name,
-                              strlen(key_info->name),
+                              (uint) strlen(key_info->name),
                               STRING_WITH_LEN("PRIMARY KEY")))
           DBUG_RETURN(1);
       }
       else if (key_info->flags & HA_NOSAME)
       {
         if (store_constraints(thd, table, base_name, file_name, key_info->name,
-                              strlen(key_info->name),
+                              (uint) strlen(key_info->name),
                               STRING_WITH_LEN("UNIQUE")))
           DBUG_RETURN(1);
       }
@@ -3363,7 +3364,7 @@ static int get_schema_constraints_record
     {
       if (store_constraints(thd, table, base_name, file_name, 
                             f_key_info->forein_id->str,
-                            strlen(f_key_info->forein_id->str),
+                            (uint) strlen(f_key_info->forein_id->str),
                             "FOREIGN KEY", 11))
         DBUG_RETURN(1);
     }
@@ -3385,12 +3386,12 @@ static bool store_trigger(THD *thd, TABL
   ulong sql_mode_len;
 
   restore_record(table, s->default_values);
-  table->field[1]->store(db, strlen(db), cs);
+  table->field[1]->store(db, (uint) strlen(db), cs);
   table->field[2]->store(trigger_name->str, trigger_name->length, cs);
   table->field[3]->store(trg_event_type_names[event].str,
                          trg_event_type_names[event].length, cs);
-  table->field[5]->store(db, strlen(db), cs);
-  table->field[6]->store(tname, strlen(tname), cs);
+  table->field[5]->store(db, (uint) strlen(db), cs);
+  table->field[6]->store(tname, (uint) strlen(tname), cs);
   table->field[9]->store(trigger_stmt->str, trigger_stmt->length, cs);
   table->field[10]->store(STRING_WITH_LEN("ROW"), cs);
   table->field[11]->store(trg_action_time_type_names[timing].str,
@@ -3474,10 +3475,10 @@ void store_key_column_usage(TABLE *table
                             const char *con_type, uint con_len, longlong idx)
 {
   CHARSET_INFO *cs= system_charset_info;
-  table->field[1]->store(db, strlen(db), cs);
+  table->field[1]->store(db, (uint) strlen(db), cs);
   table->field[2]->store(key_name, key_len, cs);
-  table->field[4]->store(db, strlen(db), cs);
-  table->field[5]->store(tname, strlen(tname), cs);
+  table->field[4]->store(db, (uint) strlen(db), cs);
+  table->field[5]->store(tname, (uint) strlen(tname), cs);
   table->field[6]->store(con_type, con_len, cs);
   table->field[7]->store((longlong) idx, TRUE);
 }
@@ -3521,9 +3522,9 @@ static int get_schema_key_column_usage_r
           restore_record(table, s->default_values);
           store_key_column_usage(table, base_name, file_name,
                                  key_info->name,
-                                 strlen(key_info->name), 
+                                 (uint) strlen(key_info->name), 
                                  key_part->field->field_name, 
-                                 strlen(key_part->field->field_name),
+                                 (uint) strlen(key_part->field->field_name),
                                  (longlong) f_idx);
           if (schema_table_store_record(thd, table))
             DBUG_RETURN(1);
@@ -3587,8 +3588,8 @@ int fill_open_tables(THD *thd, TABLE_LIS
   for (; open_list ; open_list=open_list->next)
   {
     restore_record(table, s->default_values);
-    table->field[0]->store(open_list->db, strlen(open_list->db), cs);
-    table->field[1]->store(open_list->table, strlen(open_list->table), cs);
+    table->field[0]->store(open_list->db, (uint) strlen(open_list->db), cs);
+    table->field[1]->store(open_list->table, (uint) strlen(open_list->table), cs);
     table->field[2]->store((longlong) open_list->in_use, TRUE);
     table->field[3]->store((longlong) open_list->locked, TRUE);
     if (schema_table_store_record(thd, table))
@@ -3720,7 +3721,7 @@ TABLE *create_schema_table(THD *thd, TAB
         DBUG_RETURN(0);
       }
       item->set_name(fields_info->field_name,
-                     strlen(fields_info->field_name), cs);
+                     (uint) strlen(fields_info->field_name), cs);
       break;
     }
     field_list.push_back(item);
@@ -3773,7 +3774,7 @@ int make_old_format(THD *thd, ST_SCHEMA_
       if (field)
       {
         field->set_name(field_info->old_name,
-                        strlen(field_info->old_name),
+                        (uint) strlen(field_info->old_name),
                         system_charset_info);
         if (add_item_to_list(thd, field))
           return 1;
@@ -3842,7 +3843,7 @@ int make_table_names_old_format(THD *thd
     field= new Item_field(context, NullS, NullS, field_info->field_name);
     if (add_item_to_list(thd, field))
       return 1;
-    field->set_name(field_info->old_name, strlen(field_info->old_name),
+    field->set_name(field_info->old_name, (uint) strlen(field_info->old_name),
                     system_charset_info);
   }
   return 0;
@@ -3868,7 +3869,7 @@ int make_columns_old_format(THD *thd, ST
     if (field)
     {
       field->set_name(field_info->old_name,
-                      strlen(field_info->old_name),
+                      (uint) strlen(field_info->old_name),
                       system_charset_info);
       if (add_item_to_list(thd, field))
         return 1;
@@ -3893,7 +3894,7 @@ int make_character_sets_old_format(THD *
     if (field)
     {
       field->set_name(field_info->old_name,
-                      strlen(field_info->old_name),
+                      (uint) strlen(field_info->old_name),
                       system_charset_info);
       if (add_item_to_list(thd, field))
         return 1;
@@ -3918,7 +3919,7 @@ int make_proc_old_format(THD *thd, ST_SC
     if (field)
     {
       field->set_name(field_info->old_name,
-                      strlen(field_info->old_name),
+                      (uint) strlen(field_info->old_name),
                       system_charset_info);
       if (add_item_to_list(thd, field))
         return 1;
@@ -3964,7 +3965,7 @@ int mysql_schema_table(THD *thd, LEX *le
                                           table_list->schema_table_name,
                                           table_list->alias);
   table_list->table_name= (char*) table->s->table_name;
-  table_list->table_name_length= strlen(table->s->table_name);
+  table_list->table_name_length= (uint) strlen(table->s->table_name);
   table_list->table= table;
   table->next= thd->derived_tables;
   thd->derived_tables= table;
@@ -4040,7 +4041,7 @@ int make_schema_select(THD *thd, SELECT_
   make_lex_string(thd, &db, INFORMATION_SCHEMA_NAME.str,
                   INFORMATION_SCHEMA_NAME.length, 0);
   make_lex_string(thd, &table, schema_table->table_name,
-                  strlen(schema_table->table_name), 0);
+                  (uint) strlen(schema_table->table_name), 0);
   if (schema_table->old_format(thd, schema_table) ||   /* Handle old syntax */
       !sel->add_table_to_list(thd, new Table_ident(thd, db, table, 0),
                               0, 0, TL_READ, (List<String> *) 0,

=== modified file 'sql/sql_string.cc'
--- a/sql/sql_string.cc	2009-02-14 09:09:35 +0000
+++ b/sql/sql_string.cc	2009-03-19 13:44:58 +0000
@@ -465,7 +465,7 @@ bool String::append(const char *s,uint32
 
 bool String::append(const char *s)
 {
-  return append(s, strlen(s));
+  return append(s, (uint) strlen(s));
 }
 
 
@@ -1000,7 +1000,7 @@ outp:
       }
     }
     *from_end_pos= from;
-    res= to - to_start;
+    res= (uint) (to - to_start);
   }
   return (uint32) res;
 }

=== modified file 'sql/sql_table.cc'
--- a/sql/sql_table.cc	2009-02-27 14:11:15 +0000
+++ b/sql/sql_table.cc	2009-03-19 13:44:58 +0000
@@ -66,8 +66,8 @@ static void set_tmp_file_path(char *buf,
 uint build_table_path(char *buff, size_t bufflen, const char *db,
                       const char *table, const char *ext)
 {
-  strxnmov(buff, bufflen-1, mysql_data_home, "/", db, "/", table, ext,
-           NullS);
+  strxnmov(buff, (uint) (bufflen - 1), mysql_data_home, "/", db, "/", table, 
+           ext, NullS);
   return unpack_filename(buff,buff);
 }
 
@@ -2542,7 +2542,7 @@ send_result_message:
     case HA_ADMIN_WRONG_CHECKSUM:
     {
       protocol->store(STRING_WITH_LEN("note"), system_charset_info);
-      protocol->store(ER(ER_VIEW_CHECKSUM), strlen(ER(ER_VIEW_CHECKSUM)),
+      protocol->store(ER(ER_VIEW_CHECKSUM), (uint) strlen(ER(ER_VIEW_CHECKSUM)),
                       system_charset_info);
       break;
     }
@@ -4448,7 +4448,7 @@ static bool check_engine(THD *thd, const
 
 static void set_tmp_file_path(char *buf, size_t bufsize, THD *thd)
 {
-  char *p= strnmov(buf, mysql_tmpdir, bufsize);
+  char *p= strnmov(buf, mysql_tmpdir, (uint) bufsize);
   my_snprintf(p, bufsize - (p - buf), "%s%lx_%lx_%x%s",
               tmp_file_prefix, current_pid,
               thd->thread_id, thd->tmp_table++, reg_ext);

=== modified file 'sql/sql_trigger.cc'
--- a/sql/sql_trigger.cc	2009-01-15 11:08:09 +0000
+++ b/sql/sql_trigger.cc	2009-02-10 22:47:54 +0000
@@ -459,12 +459,12 @@ bool Table_triggers_list::create_trigger
   strxnmov(dir_buff, FN_REFLEN, mysql_data_home, "/", tables->db, "/", NullS);
   dir.length= unpack_filename(dir_buff, dir_buff);
   dir.str= dir_buff;
-  file.length=  strxnmov(file_buff, FN_REFLEN, tables->table_name,
-                         triggers_file_ext, NullS) - file_buff;
+  file.length= (uint) (strxnmov(file_buff, FN_REFLEN, tables->table_name,
+                         triggers_file_ext, NullS) - file_buff);
   file.str= file_buff;
-  trigname_file.length= strxnmov(trigname_buff, FN_REFLEN,
+  trigname_file.length= (uint) (strxnmov(trigname_buff, FN_REFLEN,
                                  lex->spname->m_name.str,
-                                 trigname_file_ext, NullS) - trigname_buff;
+                                 trigname_file_ext, NullS) - trigname_buff);
   trigname_file.str= trigname_buff;
   strxnmov(trigname_path, FN_REFLEN, dir_buff, trigname_buff, NullS);
 
@@ -524,8 +524,8 @@ bool Table_triggers_list::create_trigger
     definer_host= lex->definer->host;
 
     trg_definer->str= trg_definer_holder;
-    trg_definer->length= strxmov(trg_definer->str, definer_user.str, "@",
-                                 definer_host.str, NullS) - trg_definer->str;
+    trg_definer->length= (uint) (strxmov(trg_definer->str, definer_user.str, "@",
+                                 definer_host.str, NullS) - trg_definer->str);
   }
   else
   {
@@ -559,9 +559,9 @@ bool Table_triggers_list::create_trigger
   }
 
   stmt_query->append(thd->lex->stmt_definition_begin,
-                     (char *) thd->lex->sphead->m_body_begin -
+                     (uint) ((char *) thd->lex->sphead->m_body_begin -
                      thd->lex->stmt_definition_begin +
-                     thd->lex->sphead->m_body.length);
+                     thd->lex->sphead->m_body.length));
 
   trg_def->str= stmt_query->c_ptr();
   trg_def->length= stmt_query->length();
@@ -651,8 +651,8 @@ static bool save_trigger_file(Table_trig
   strxnmov(dir_buff, FN_REFLEN, mysql_data_home, "/", db, "/", NullS);
   dir.length= unpack_filename(dir_buff, dir_buff);
   dir.str= dir_buff;
-  file.length=  strxnmov(file_buff, FN_REFLEN, table_name, triggers_file_ext,
-                         NullS) - file_buff;
+  file.length= (uint) (strxnmov(file_buff, FN_REFLEN, table_name, triggers_file_ext,
+                         NullS) - file_buff);
   file.str= file_buff;
 
   return sql_create_definition_file(&dir, &file, &triggers_file_type,
@@ -960,7 +960,7 @@ bool Table_triggers_list::check_n_load(T
 
       save_db.str= thd->db;
       save_db.length= thd->db_length;
-      thd->reset_db((char*) db, strlen(db));
+      thd->reset_db((char*) db, (uint) strlen(db));
       while ((trg_create_str= it++))
       {
         trg_sql_mode= itm++;
@@ -1153,8 +1153,8 @@ bool Table_triggers_list::get_trigger_in
     }
     else
     {
-      definer->length= strxmov(definer->str, body->m_definer_user.str, "@",
-                               body->m_definer_host.str, NullS) - definer->str;
+      definer->length= (uint) (strxmov(definer->str, body->m_definer_user.str, "@",
+                               body->m_definer_host.str, NullS) - definer->str);
     }
 
     DBUG_RETURN(0);
@@ -1350,7 +1350,7 @@ Table_triggers_list::change_table_name_i
 
     /* Construct CREATE TRIGGER statement with new table name. */
     buff.length(0);
-    before_on_len= on_table_name->str - def->str;
+    before_on_len= (uint) (on_table_name->str - def->str);
     buff.append(def->str, before_on_len);
     buff.append(STRING_WITH_LEN("ON "));
     append_identifier(thd, &buff, new_table_name->str, new_table_name->length);
@@ -1420,8 +1420,8 @@ Table_triggers_list::change_table_name_i
 
   while ((trigger= it_name++) != stopper)
   {
-    trigname_file.length= strxnmov(trigname_buff, FN_REFLEN, trigger->str,
-                                   trigname_file_ext, NullS) - trigname_buff;
+    trigname_file.length= (uint) (strxnmov(trigname_buff, FN_REFLEN, trigger->str,
+                                   trigname_file_ext, NullS) - trigname_buff);
     trigname_file.str= trigname_buff;
 
     trigname.trigger_table= *new_table_name;
@@ -1482,8 +1482,8 @@ bool Table_triggers_list::change_table_n
   }
   if (table.triggers)
   {
-    LEX_STRING_WITH_INIT old_table_name(old_table, strlen(old_table));
-    LEX_STRING_WITH_INIT new_table_name(new_table, strlen(new_table));
+    LEX_STRING_WITH_INIT old_table_name(old_table, (uint) strlen(old_table));
+    LEX_STRING_WITH_INIT new_table_name(new_table, (uint) strlen(new_table));
     /*
       Since triggers should be in the same schema as their subject tables
       moving table with them between two schemas raises too many questions.

=== modified file 'sql/sql_udf.cc'
--- a/sql/sql_udf.cc	2009-01-15 10:48:31 +0000
+++ b/sql/sql_udf.cc	2009-02-10 22:47:54 +0000
@@ -182,7 +182,7 @@ void udf_init()
     DBUG_PRINT("info",("init udf record"));
     LEX_STRING name;
     name.str=get_field(&mem, table->field[0]);
-    name.length = strlen(name.str);
+    name.length = (uint) strlen(name.str);
     char *dl_name= get_field(&mem, table->field[2]);
     bool new_dl=0;
     Item_udftype udftype=UDFTYPE_FUNCTION;

=== modified file 'sql/sql_view.cc'
--- a/sql/sql_view.cc	2009-01-15 11:08:09 +0000
+++ b/sql/sql_view.cc	2009-02-10 22:47:54 +0000
@@ -775,11 +775,11 @@ static int mysql_register_view(THD *thd,
   }
 
   view->source.str= thd->query + thd->lex->create_view_select_start;
-  view->source.length= (char *)skip_rear_comments(thd->charset(),
+  view->source.length= (uint) ((char *)skip_rear_comments(thd->charset(),
                                                   (char *)view->source.str,
                                                   (char *)thd->query +
                                                   thd->query_length) -
-                        view->source.str;
+                        view->source.str);
   view->file_version= 1;
   view->calc_md5(md5);
   if (!(view->md5.str= thd->memdup(md5, 32)))
@@ -831,10 +831,10 @@ loop_out:
 		     mysql_data_home, view->db);
   unpack_filename(dir_buff, dir_buff);
   dir.str= dir_buff;
-  dir.length= strlen(dir_buff);
+  dir.length= (uint) strlen(dir_buff);
 
   file.str= file_buff;
-  file.length= (strxnmov(file_buff, FN_REFLEN, view->table_name, reg_ext,
+  file.length= (uint) (strxnmov(file_buff, FN_REFLEN, view->table_name, reg_ext,
                          NullS) - file_buff);
   /* init timestamp */
   if (!view->timestamp.str)
@@ -848,7 +848,7 @@ loop_out:
 
     path.str= path_buff;
     fn_format(path_buff, file.str, dir.str, 0, MY_UNPACK_FILENAME);
-    path.length= strlen(path_buff);
+    path.length= (uint) strlen(path_buff);
 
     if (!access(path.str, F_OK))
     {
@@ -1828,7 +1828,7 @@ mysql_rename_view(THD *thd,
   (void) unpack_filename(view_path, view_path);
 
   pathstr.str= (char *)view_path;
-  pathstr.length= strlen(view_path);
+  pathstr.length= (uint) strlen(view_path);
 
   if ((parser= sql_parse_prepare(&pathstr, thd->mem_root, 1)) && 
        is_equal(&view_type, parser->type()))
@@ -1860,10 +1860,10 @@ mysql_rename_view(THD *thd,
     (void) unpack_filename(dir_buff, dir_buff);
 
     pathstr.str=    (char*)dir_buff;
-    pathstr.length= strlen(dir_buff);
+    pathstr.length= (uint) strlen(dir_buff);
 
     file.str= file_buff;
-    file.length= (strxnmov(file_buff, FN_REFLEN, new_name, reg_ext, NullS) 
+    file.length= (uint) (strxnmov(file_buff, FN_REFLEN, new_name, reg_ext, NullS) 
                   - file_buff);
 
     if (sql_create_definition_file(&pathstr, &file, view_file_type,

=== modified file 'sql/table.cc'
--- a/sql/table.cc	2008-10-07 21:34:00 +0000
+++ b/sql/table.cc	2009-03-19 13:44:58 +0000
@@ -471,7 +471,7 @@ int openfrm(THD *thd, const char *name, 
       for (count= 0; count < interval->count; count++)
       {
         char *val= (char*) interval->type_names[count];
-        interval->type_lengths[count]= strlen(val);
+        interval->type_lengths[count]= (uint) strlen(val);
       }
       interval->type_lengths[count]= 0;
     }
@@ -916,7 +916,7 @@ int openfrm(THD *thd, const char *name, 
     the correct null_bytes can now be set, since bitfields have been taken
     into account
   */
-  share->null_bytes= (null_pos - (uchar*) outparam->null_flags +
+  share->null_bytes= (uint) (null_pos - (uchar*) outparam->null_flags +
                       (null_bit_pos + 7) / 8);
   share->last_null_bit_pos= null_bit_pos;
 
@@ -1792,11 +1792,8 @@ void st_table::reset_item_list(List<Item
 
 void  TABLE_LIST::calc_md5(char *buffer)
 {
-  my_MD5_CTX context;
   uchar digest[16];
-  my_MD5Init(&context);
-  my_MD5Update(&context,(uchar *) query.str, query.length);
-  my_MD5Final(digest, &context);
+  MY_MD5_HASH(digest, (uchar *) query.str, query.length);
   sprintf((char *) buffer,
 	    "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
 	    digest[0], digest[1], digest[2], digest[3],
@@ -3000,8 +2997,8 @@ Field_iterator_table_ref::get_or_create_
     /* The field belongs to a merge view or information schema table. */
     Field_translator *translated_field= view_field_it.field_translator();
     nj_col= new Natural_join_column(translated_field, table_ref);
-    field_count= table_ref->field_translation_end -
-                 table_ref->field_translation;
+    field_count= (uint) (table_ref->field_translation_end -
+                 table_ref->field_translation);
   }
   else
   {

=== modified file 'sql/tztime.cc'
--- a/sql/tztime.cc	2009-01-15 11:08:09 +0000
+++ b/sql/tztime.cc	2009-03-19 10:27:45 +0000
@@ -1871,6 +1871,12 @@ tz_load_from_open_tables(const String *t
 #ifdef ABBR_ARE_USED
   char chars[max(TZ_MAX_CHARS + 1, (2 * (MY_TZNAME_MAX + 1)))];
 #endif
+  /* 
+    Used as a temporary tz_info until we decide that we actually want to
+    allocate and keep the tz info and tz name in tz_storage.
+  */
+  TIME_ZONE_INFO tmp_tz_info;
+  memset(&tmp_tz_info, 0, sizeof(TIME_ZONE_INFO));
 
   DBUG_ENTER("tz_load_from_open_tables");
 
@@ -1914,7 +1920,8 @@ tz_load_from_open_tables(const String *t
       Most probably user has mistyped time zone name, so no need to bark here
       unless we need it for debugging.
     */
-    sql_print_error("Can't find description of time zone '%s'", tz_name_buff);
+     sql_print_error("Can't find description of time zone '%.*s'", 
+                     tz_name->length(), tz_name->ptr());
 #endif
     goto end;
   }
@@ -1943,8 +1950,8 @@ tz_load_from_open_tables(const String *t
   /* If Uses_leap_seconds == 'Y' */
   if (table->field[1]->val_int() == 1)
   {
-    tz_info->leapcnt= tz_leapcnt;
-    tz_info->lsis= tz_lsis;
+    tmp_tz_info.leapcnt= tz_leapcnt;
+    tmp_tz_info.lsis= tz_lsis;
   }
 
   (void)table->file->ha_index_end();
@@ -1981,18 +1988,18 @@ tz_load_from_open_tables(const String *t
 #ifdef ABBR_ARE_USED
     // FIXME should we do something with duplicates here ?
     table->field[4]->val_str(&abbr, &abbr);
-    if (tz_info->charcnt + abbr.length() + 1 > sizeof(chars))
+    if (tmp_tz_info.charcnt + abbr.length() + 1 > sizeof(chars))
     {
       sql_print_error("Error while loading time zone description from "
                       "mysql.time_zone_transition_type table: not enough "
                       "room for abbreviations");
       goto end;
     }
-    ttis[ttid].tt_abbrind= tz_info->charcnt;
-    memcpy(chars + tz_info->charcnt, abbr.ptr(), abbr.length());
-    tz_info->charcnt+= abbr.length();
-    chars[tz_info->charcnt]= 0;
-    tz_info->charcnt++;
+    ttis[ttid].tt_abbrind= tmp_tz_info.charcnt;
+    memcpy(chars + tmp_tz_info.charcnt, abbr.ptr(), abbr.length());
+    tmp_tz_info.charcnt+= abbr.length();
+    chars[tmp_tz_info.charcnt]= 0;
+    tmp_tz_info.charcnt++;
 
     DBUG_PRINT("info",
       ("time_zone_transition_type table: tz_id=%u tt_id=%u tt_gmtoff=%ld "
@@ -2005,9 +2012,9 @@ tz_load_from_open_tables(const String *t
 #endif
 
     /* ttid is increasing because we are reading using index */
-    DBUG_ASSERT(ttid >= tz_info->typecnt);
+    DBUG_ASSERT(ttid >= tmp_tz_info.typecnt);
 
-    tz_info->typecnt= ttid + 1;
+    tmp_tz_info.typecnt= ttid + 1;
 
     res= table->file->index_next_same(table->record[0],
                                       (byte*)table->field[0]->ptr, 4);
@@ -2040,14 +2047,14 @@ tz_load_from_open_tables(const String *t
     ttime= (my_time_t)table->field[1]->val_int();
     ttid= (uint)table->field[2]->val_int();
 
-    if (tz_info->timecnt + 1 > TZ_MAX_TIMES)
+    if (tmp_tz_info.timecnt + 1 > TZ_MAX_TIMES)
     {
       sql_print_error("Error while loading time zone description from "
                       "mysql.time_zone_transition table: "
                       "too much transitions");
       goto end;
     }
-    if (ttid + 1 > tz_info->typecnt)
+    if (ttid + 1 > tmp_tz_info.typecnt)
     {
       sql_print_error("Error while loading time zone description from "
                       "mysql.time_zone_transition table: "
@@ -2055,9 +2062,9 @@ tz_load_from_open_tables(const String *t
       goto end;
     }
 
-    ats[tz_info->timecnt]= ttime;
-    types[tz_info->timecnt]= ttid;
-    tz_info->timecnt++;
+    ats[tmp_tz_info.timecnt]= ttime;
+    types[tmp_tz_info.timecnt]= ttid;
+    tmp_tz_info.timecnt++;
 
     DBUG_PRINT("info",
                ("time_zone_transition table: tz_id: %u  tt_time: %lu  tt_id: %u",
@@ -2082,6 +2089,34 @@ tz_load_from_open_tables(const String *t
   table= 0;
 
   /*
+    Let us check how correct our time zone description is. We don't check for
+    tz->timecnt < 1 since it is ok for GMT.
+  */
+  if (tmp_tz_info.typecnt < 1)
+  {
+    sql_print_error("loading time zone without transition types");
+    goto end;
+  }
+
+  /* Allocate memory for the timezone info and timezone name in tz_storage. */
+  if (!(alloc_buff= (char*) alloc_root(&tz_storage, sizeof(TIME_ZONE_INFO) +
+                                       tz_name->length() + 1)))
+  {
+    sql_print_error("Out of memory while loading time zone description");
+    return 0;
+  }
+
+  /* Move the temporary tz_info into the allocated area */
+  tz_info= (TIME_ZONE_INFO *)alloc_buff;
+  memcpy(tz_info, &tmp_tz_info, sizeof(TIME_ZONE_INFO));
+  tz_name_buff= alloc_buff + sizeof(TIME_ZONE_INFO);
+  /*
+    By writing zero to the end we guarantee that we can call ptr()
+    instead of c_ptr() for time zone name.
+  */
+  strmake(tz_name_buff, tz_name->ptr(), tz_name->length());
+
+  /*
     Now we will allocate memory and init TIME_ZONE_INFO structure.
   */
   if (!(alloc_buff= alloc_root(&tz_storage,
@@ -2112,15 +2147,7 @@ tz_load_from_open_tables(const String *t
   tz_info->ttis= (TRAN_TYPE_INFO *)alloc_buff;
   memcpy(tz_info->ttis, ttis, tz_info->typecnt * sizeof(TRAN_TYPE_INFO));
 
-  /*
-    Let us check how correct our time zone description and build
-    reversed map. We don't check for tz->timecnt < 1 since it ok for GMT.
-  */
-  if (tz_info->typecnt < 1)
-  {
-    sql_print_error("loading time zone without transition types");
-    goto end;
-  }
+  /* Build reversed map. */
   if (prepare_tz_info(tz_info, &tz_storage))
   {
     sql_print_error("Unable to build mktime map for time zone");

=== modified file 'sql/udf_example.c'
--- a/sql/udf_example.c	2007-11-27 15:16:52 +0000
+++ b/sql/udf_example.c	2009-02-10 22:47:54 +0000
@@ -1099,7 +1099,7 @@ char * is_const(UDF_INIT *initid, UDF_AR
     sprintf(result, "not const");
   }
   *is_null= 0;
-  *length= strlen(result);
+  *length= (uint) strlen(result);
   return result;
 }
 
@@ -1133,7 +1133,7 @@ char * check_const_len(UDF_INIT *initid,
                 char *is_null, char *error __attribute__((unused)))
 {
   strmov(result, initid->ptr);
-  *length= strlen(result);
+  *length= (uint) strlen(result);
   *is_null= 0;
   return result;
 }

=== modified file 'sql/uniques.cc'
--- a/sql/uniques.cc	2007-07-01 22:33:28 +0000
+++ b/sql/uniques.cc	2009-02-10 22:47:54 +0000
@@ -131,7 +131,7 @@ static double get_merge_buffers_cost(uin
     total_buf_elems+= *pbuf;
   *last= total_buf_elems;
 
-  int n_buffers= last - first + 1;
+  size_t n_buffers= last - first + 1;
 
   /* Using log2(n)=log(n)/log(2) formula */
   return 2*((double)total_buf_elems*elem_size) / IO_SIZE +

=== modified file 'sql/unireg.cc'
--- a/sql/unireg.cc	2009-01-14 16:15:11 +0000
+++ b/sql/unireg.cc	2009-02-10 22:47:54 +0000
@@ -119,7 +119,7 @@ bool mysql_create_frm(THD *thd, my_strin
 
   /* Calculate extra data segment length */
   str_db_type.str= (char *) ha_get_storage_engine(create_info->db_type);
-  str_db_type.length= strlen(str_db_type.str);
+  str_db_type.length= (uint) strlen(str_db_type.str);
   create_info->extra_size= (2 + str_db_type.length +
                             2 + create_info->connect_string.length);
 

=== modified file 'strings/Makefile.am'
--- a/strings/Makefile.am	2006-12-31 00:02:27 +0000
+++ b/strings/Makefile.am	2009-03-11 07:11:59 +0000
@@ -52,7 +52,7 @@ EXTRA_DIST =		ctype-big5.c ctype-cp932.c
 			bmove_upp-sparc.s strappend-sparc.s strend-sparc.s \
 			strinstr-sparc.s strmake-sparc.s strmov-sparc.s \
 			strnmov-sparc.s strstr-sparc.s strxmov-sparc.s \
-			t_ctype.h CMakeLists.txt
+			t_ctype.h CMakeLists.txt CHARSET_INFO.txt
 
 libmystrings_a_LIBADD=
 conf_to_src_SOURCES = conf_to_src.c xml.c ctype.c bcmp.c

=== modified file 'strings/ctype-mb.c'
--- a/strings/ctype-mb.c	2007-06-28 08:34:44 +0000
+++ b/strings/ctype-mb.c	2009-02-10 22:47:54 +0000
@@ -37,7 +37,7 @@ uint my_caseup_str_mb(CHARSET_INFO * cs,
       str++;
     }
   }
-  return str - str_orig;
+  return (uint) (str - str_orig);
 }
 
 uint my_casedn_str_mb(CHARSET_INFO * cs, char *str)
@@ -57,7 +57,7 @@ uint my_casedn_str_mb(CHARSET_INFO * cs,
       str++;
     }
   }
-  return str - str_orig;
+  return (uint) (str - str_orig);
 }
 
 uint my_caseup_mb(CHARSET_INFO * cs, char *src, uint srclen,

=== modified file 'strings/ctype-simple.c'
--- a/strings/ctype-simple.c	2007-12-07 10:40:18 +0000
+++ b/strings/ctype-simple.c	2009-02-10 22:47:54 +0000
@@ -193,7 +193,7 @@ uint my_caseup_str_8bit(CHARSET_INFO * c
   char *str_orig= str;
   while ((*str= (char) map[(uchar) *str]) != 0)
     str++;
-  return str - str_orig;
+  return (uint) (str - str_orig);
 }
 
 
@@ -203,7 +203,7 @@ uint my_casedn_str_8bit(CHARSET_INFO * c
   char *str_orig= str;
   while ((*str= (char) map[(uchar) *str]) != 0)
     str++;
-  return str - str_orig;
+  return (uint) (str - str_orig);
 }
 
 
@@ -1516,7 +1516,7 @@ my_strntoull10rnd_8bit(CHARSET_INFO *cs 
     }
   }
   
-  digits= str - beg;
+  digits= (int) (str - beg);
 
   /* Continue to accumulate into ulonglong */
   for (dot= NULL, ull= ul; str < end; str++)
@@ -1553,7 +1553,7 @@ my_strntoull10rnd_8bit(CHARSET_INFO *cs 
       }
       else
       {
-        shift= dot - str;
+        shift= (int) (dot - str);
         for ( ; str < end && (ch= (unsigned char) (*str - '0')) < 10; str++);
       }
       goto exp;
@@ -1577,7 +1577,7 @@ my_strntoull10rnd_8bit(CHARSET_INFO *cs 
     /* Unknown character, exit the loop */
     break; 
   }
-  shift= dot ? dot - str : 0; /* Right shift */
+  shift= dot ? (int) (dot - str) : 0; /* Right shift */
   addon= 0;
 
 exp:    /* [ E [ <sign> ] <unsigned integer> ] */

=== modified file 'strings/ctype-ucs2.c'
--- a/strings/ctype-ucs2.c	2008-02-20 10:38:52 +0000
+++ b/strings/ctype-ucs2.c	2009-02-10 22:47:54 +0000
@@ -1001,7 +1001,7 @@ ulonglong my_strntoull10rnd_ucs2(CHARSET
     *b++= (char) wc;
   }
 
-  res= my_strntoull10rnd_8bit(cs, buf, b - buf, unsign_fl, endptr, err);
+  res= my_strntoull10rnd_8bit(cs, buf, (uint) (b - buf), unsign_fl, endptr, err);
   *endptr= (char*) nptr + 2 * (uint) (*endptr- buf);
   return res;
 }

=== modified file 'strings/my_vsnprintf.c'
--- a/strings/my_vsnprintf.c	2007-01-22 12:10:46 +0000
+++ b/strings/my_vsnprintf.c	2009-02-10 22:47:54 +0000
@@ -107,7 +107,7 @@ int my_vsnprintf(char *to, size_t n, con
       char *par = va_arg(ap, char *);
       DBUG_ASSERT(to <= end);
       if (to + abs(width) + 1 > end)
-        width= end - to - 1;  /* sign doesn't matter */
+        width= (uint) (end - to - 1);  /* sign doesn't matter */
       memmove(to, par, abs(width));
       to+= width;
       continue;

=== modified file 'strings/xml.c'
--- a/strings/xml.c	2006-12-23 19:17:15 +0000
+++ b/strings/xml.c	2009-02-10 22:47:54 +0000
@@ -147,7 +147,7 @@ static int my_xml_enter(MY_XML_PARSER *s
   memcpy(st->attrend,str,len);
   st->attrend+=len;
   st->attrend[0]='\0';
-  return st->enter ?  st->enter(st,st->attr,st->attrend-st->attr) : MY_XML_OK;
+  return st->enter ?  st->enter(st,st->attr, (uint) (st->attrend - st->attr)) : MY_XML_OK;
 }
 
 
@@ -179,7 +179,7 @@ static int my_xml_leave(MY_XML_PARSER *p
     return MY_XML_ERROR;
   }
   
-  rc = p->leave_xml ?  p->leave_xml(p,p->attr,p->attrend-p->attr) : MY_XML_OK;
+  rc = p->leave_xml ?  p->leave_xml(p,p->attr, (uint) (p->attrend - p->attr)) : MY_XML_OK;
   
   *e='\0';
   p->attrend=e;

=== modified file 'tests/bug25714.c'
--- a/tests/bug25714.c	2007-11-19 15:59:25 +0000
+++ b/tests/bug25714.c	2009-02-10 22:47:54 +0000
@@ -54,14 +54,14 @@ int main (int argc, char **argv)
     printf("%s\n", mysql_error(&conn));
   }
 
-  OK = mysql_real_query (&conn, query4, strlen(query4));
+  OK = mysql_real_query (&conn, query4, (uint) strlen(query4));
 
   assert(0 == OK);
 
   printf("%ld inserted\n",
          (long) mysql_insert_id(&conn));
 
-  OK = mysql_real_query (&conn, query5, strlen(query5));
+  OK = mysql_real_query (&conn, query5, (uint) strlen(query5));
 
   assert(0 == OK);
 

=== modified file 'tests/mysql_client_test.c'
--- a/tests/mysql_client_test.c	2009-02-26 08:34:15 +0000
+++ b/tests/mysql_client_test.c	2009-03-19 13:44:58 +0000
@@ -115,6 +115,8 @@ static void client_disconnect(void);
 
 #define DIE_UNLESS(expr) \
         ((void) ((expr) ? 0 : (die(__FILE__, __LINE__, #expr), 0)))
+#define DIE_IF(expr) \
+        ((void) ((expr) ? (die(__FILE__, __LINE__, #expr), 0) : 0))
 #define DIE(expr) \
         die(__FILE__, __LINE__, #expr)
 
@@ -256,7 +258,7 @@ static MYSQL_STMT *STDCALL
 mysql_simple_prepare(MYSQL *mysql_arg, const char *query)
 {
   MYSQL_STMT *stmt= mysql_stmt_init(mysql_arg);
-  if (stmt && mysql_stmt_prepare(stmt, query, strlen(query)))
+  if (stmt && mysql_stmt_prepare(stmt, query, (uint) strlen(query)))
   {
     mysql_stmt_close(stmt);
     return 0;
@@ -436,7 +438,7 @@ static void my_print_result_metadata(MYS
   for(i= 0; i< field_count; i++)
   {
     field= mysql_fetch_field(result);
-    j= strlen(field->name);
+    j= (uint) strlen(field->name);
     if (j < field->max_length)
       j= field->max_length;
     if (j < 4 && !IS_NOT_NULL(field->flags))
@@ -962,7 +964,7 @@ void stmt_fetch_init(Stmt_fetch *fetch, 
 
   fetch->handle= mysql_stmt_init(mysql);
 
-  rc= mysql_stmt_prepare(fetch->handle, fetch->query, strlen(fetch->query));
+  rc= mysql_stmt_prepare(fetch->handle, fetch->query, (uint) strlen(fetch->query));
   check_execute(fetch->handle, rc);
 
   /*
@@ -1072,7 +1074,7 @@ my_bool fetch_n(const char **query_list,
   for (fetch= fetch_array; fetch < fetch_array + query_count; ++fetch)
   {
     /* Init will exit(1) in case of error */
-    stmt_fetch_init(fetch, fetch - fetch_array,
+    stmt_fetch_init(fetch, (uint) (fetch - fetch_array),
                     query_list[fetch - fetch_array]);
   }
 
@@ -2344,7 +2346,7 @@ static void test_ps_conj_select()
 
   int_data= 1;
   strmov(str_data, "hh");
-  str_length= strlen(str_data);
+  str_length= (uint) strlen(str_data);
 
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -2855,9 +2857,9 @@ static void test_long_data()
   data= (char *)"Michael";
 
   /* supply data in pieces */
-  rc= mysql_stmt_send_long_data(stmt, 1, data, strlen(data));
+  rc= mysql_stmt_send_long_data(stmt, 1, data, (uint) strlen(data));
   data= (char *)" 'Monty' Widenius";
-  rc= mysql_stmt_send_long_data(stmt, 1, data, strlen(data));
+  rc= mysql_stmt_send_long_data(stmt, 1, data, (uint) strlen(data));
   check_execute(stmt, rc);
   rc= mysql_stmt_send_long_data(stmt, 2, "Venu (venu@stripped)", 4);
   check_execute(stmt, rc);
@@ -8433,7 +8435,7 @@ static void test_mem_overun()
     sprintf(field, "c%d int", i);
     strxmov(buffer, buffer, field, ", ", NullS);
   }
-  length= strlen(buffer);
+  length= (uint) strlen(buffer);
   buffer[length-2]= ')';
   buffer[--length]= '\0';
 
@@ -8445,7 +8447,7 @@ static void test_mem_overun()
   {
     strxmov(buffer, buffer, "1, ", NullS);
   }
-  length= strlen(buffer);
+  length= (uint) strlen(buffer);
   buffer[length-2]= ')';
   buffer[--length]= '\0';
 
@@ -8973,7 +8975,7 @@ static void test_bug1500()
   data= "Dogs";
   my_bind[0].buffer_type= MYSQL_TYPE_STRING;
   my_bind[0].buffer= (void *) data;
-  my_bind[0].buffer_length= strlen(data);
+  my_bind[0].buffer_length= (uint) strlen(data);
   my_bind[0].is_null= 0;
   my_bind[0].length= 0;
 
@@ -8998,7 +9000,7 @@ static void test_bug1500()
   data= "Grave";
   my_bind[0].buffer_type= MYSQL_TYPE_STRING;
   my_bind[0].buffer= (void *) data;
-  my_bind[0].buffer_length= strlen(data);
+  my_bind[0].buffer_length= (uint) strlen(data);
 
   rc= mysql_stmt_bind_param(stmt, my_bind);
   check_execute(stmt, rc);
@@ -9029,7 +9031,7 @@ static void test_bug1946()
 
   stmt= mysql_simple_prepare(mysql, query);
   check_stmt(stmt);
-  rc= mysql_real_query(mysql, query, strlen(query));
+  rc= mysql_real_query(mysql, query, (uint) strlen(query));
   DIE_UNLESS(rc != 0);
   if (!opt_silent)
     fprintf(stdout, "Got error (as expected):\n");
@@ -10045,7 +10047,7 @@ static void test_bug3035()
   myheader("test_bug3035");
 
   stmt_text= "DROP TABLE IF EXISTS t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "CREATE TABLE t1 (i8 TINYINT, ui8 TINYINT UNSIGNED, "
@@ -10053,7 +10055,7 @@ static void test_bug3035()
                               "i32 INT, ui32 INT UNSIGNED, "
                               "i64 BIGINT, ui64 BIGINT UNSIGNED, "
                               "id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   bzero((char*) bind_array, sizeof(bind_array));
@@ -10094,7 +10096,7 @@ static void test_bug3035()
 
   stmt_text= "INSERT INTO t1 (i8, ui8, i16, ui16, i32, ui32, i64, ui64) "
                      "VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   mysql_stmt_bind_param(stmt, bind_array);
@@ -10127,7 +10129,7 @@ static void test_bug3035()
              "cast(ui64 as signed), ui64, cast(ui64 as signed)"
              "FROM t1 ORDER BY id ASC";
 
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   rc= mysql_stmt_execute(stmt);
@@ -10197,7 +10199,7 @@ static void test_bug3035()
   mysql_stmt_close(stmt);
 
   stmt_text= "DROP TABLE t1";
-  mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
 }
 
 
@@ -10260,7 +10262,7 @@ static void test_bug1664()
 
     stmt= mysql_stmt_init(mysql);
     check_stmt(stmt);
-    rc= mysql_stmt_prepare(stmt, query, strlen(query));
+    rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
     check_execute(stmt, rc);
 
     verify_param_count(stmt, 2);
@@ -10269,7 +10271,7 @@ static void test_bug1664()
 
     my_bind[0].buffer_type= MYSQL_TYPE_STRING;
     my_bind[0].buffer= (void *)str_data;
-    my_bind[0].buffer_length= strlen(str_data);
+    my_bind[0].buffer_length= (uint) strlen(str_data);
 
     my_bind[1].buffer= (void *)&int_data;
     my_bind[1].buffer_type= MYSQL_TYPE_LONG;
@@ -10284,7 +10286,7 @@ static void test_bug1664()
       not break following execution.
     */
     data= "";
-    rc= mysql_stmt_send_long_data(stmt, 0, data, strlen(data));
+    rc= mysql_stmt_send_long_data(stmt, 0, data, (uint) strlen(data));
     check_execute(stmt, rc);
 
     rc= mysql_stmt_execute(stmt);
@@ -10298,7 +10300,7 @@ static void test_bug1664()
 
     /* This should pass OK */
     data= (char *)"Data";
-    rc= mysql_stmt_send_long_data(stmt, 0, data, strlen(data));
+    rc= mysql_stmt_send_long_data(stmt, 0, data, (uint) strlen(data));
     check_execute(stmt, rc);
 
     rc= mysql_stmt_execute(stmt);
@@ -10335,7 +10337,7 @@ static void test_bug1664()
     */
 
     data= (char *)"SomeOtherData";
-    rc= mysql_stmt_send_long_data(stmt, 0, data, strlen(data));
+    rc= mysql_stmt_send_long_data(stmt, 0, data, (uint) strlen(data));
     check_execute(stmt, rc);
 
     rc= mysql_stmt_execute(stmt);
@@ -10353,13 +10355,13 @@ static void test_bug1664()
     /* Now let us test how mysql_stmt_reset works. */
     stmt= mysql_stmt_init(mysql);
     check_stmt(stmt);
-    rc= mysql_stmt_prepare(stmt, query, strlen(query));
+    rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
     check_execute(stmt, rc);
     rc= mysql_stmt_bind_param(stmt, my_bind);
     check_execute(stmt, rc);
 
     data= (char *)"SomeData";
-    rc= mysql_stmt_send_long_data(stmt, 0, data, strlen(data));
+    rc= mysql_stmt_send_long_data(stmt, 0, data, (uint) strlen(data));
     check_execute(stmt, rc);
 
     rc= mysql_stmt_reset(stmt);
@@ -10485,7 +10487,7 @@ static void test_ps_i18n()
   myheader("test_ps_i18n");
 
   stmt_text= "DROP TABLE IF EXISTS t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   /*
@@ -10496,37 +10498,37 @@ static void test_ps_i18n()
 
   stmt_text= "CREATE TABLE t1 (c1 VARBINARY(255), c2 VARBINARY(255))";
 
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "SET CHARACTER_SET_CLIENT=koi8r, "
                  "CHARACTER_SET_CONNECTION=cp1251, "
                  "CHARACTER_SET_RESULTS=koi8r";
 
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   bzero((char*) bind_array, sizeof(bind_array));
 
   bind_array[0].buffer_type= MYSQL_TYPE_STRING;
   bind_array[0].buffer= (void *) koi8;
-  bind_array[0].buffer_length= strlen(koi8);
+  bind_array[0].buffer_length= (uint) strlen(koi8);
 
   bind_array[1].buffer_type= MYSQL_TYPE_STRING;
   bind_array[1].buffer= (void *) koi8;
-  bind_array[1].buffer_length= strlen(koi8);
+  bind_array[1].buffer_length= (uint) strlen(koi8);
 
   stmt= mysql_stmt_init(mysql);
   check_stmt(stmt);
 
   stmt_text= "INSERT INTO t1 (c1, c2) VALUES (?, ?)";
 
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   mysql_stmt_bind_param(stmt, bind_array);
 
-  mysql_stmt_send_long_data(stmt, 0, koi8, strlen(koi8));
+  mysql_stmt_send_long_data(stmt, 0, koi8, (uint) strlen(koi8));
 
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -10534,7 +10536,7 @@ static void test_ps_i18n()
   stmt_text= "SELECT c1, c2 FROM t1";
 
   /* c1 and c2 are binary so no conversion will be done on select */
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   rc= mysql_stmt_execute(stmt);
@@ -10562,7 +10564,7 @@ static void test_ps_i18n()
   DIE_UNLESS(rc == MYSQL_NO_DATA);
 
   stmt_text= "DROP TABLE IF EXISTS t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   /*
@@ -10575,26 +10577,26 @@ static void test_ps_i18n()
   stmt_text= "CREATE TABLE t1 (c1 VARCHAR(255) CHARACTER SET cp1251, "
                               "c2 VARCHAR(255) CHARACTER SET cp1251)";
 
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "INSERT INTO t1 (c1, c2) VALUES (?, ?)";
 
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   /* this data must be converted */
   bind_array[0].buffer_type= MYSQL_TYPE_STRING;
   bind_array[0].buffer= (void *) koi8;
-  bind_array[0].buffer_length= strlen(koi8);
+  bind_array[0].buffer_length= (uint) strlen(koi8);
 
   bind_array[1].buffer_type= MYSQL_TYPE_STRING;
   bind_array[1].buffer= (void *) koi8;
-  bind_array[1].buffer_length= strlen(koi8);
+  bind_array[1].buffer_length= (uint) strlen(koi8);
 
   mysql_stmt_bind_param(stmt, bind_array);
 
-  mysql_stmt_send_long_data(stmt, 0, koi8, strlen(koi8));
+  mysql_stmt_send_long_data(stmt, 0, koi8, (uint) strlen(koi8));
 
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -10602,15 +10604,15 @@ static void test_ps_i18n()
   /* this data must not be converted */
   bind_array[0].buffer_type= MYSQL_TYPE_BLOB;
   bind_array[0].buffer= (void *) cp1251;
-  bind_array[0].buffer_length= strlen(cp1251);
+  bind_array[0].buffer_length= (uint) strlen(cp1251);
 
   bind_array[1].buffer_type= MYSQL_TYPE_BLOB;
   bind_array[1].buffer= (void *) cp1251;
-  bind_array[1].buffer_length= strlen(cp1251);
+  bind_array[1].buffer_length= (uint) strlen(cp1251);
 
   mysql_stmt_bind_param(stmt, bind_array);
 
-  mysql_stmt_send_long_data(stmt, 0, cp1251, strlen(cp1251));
+  mysql_stmt_send_long_data(stmt, 0, cp1251, (uint) strlen(cp1251));
 
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -10620,7 +10622,7 @@ static void test_ps_i18n()
   stmt_text= "SELECT c1, c2 FROM t1";
 
   /* c1 and c2 are binary so no conversion will be done on select */
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   rc= mysql_stmt_execute(stmt);
@@ -10647,10 +10649,10 @@ static void test_ps_i18n()
   mysql_stmt_close(stmt);
 
   stmt_text= "DROP TABLE t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "SET NAMES DEFAULT";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 }
 
@@ -10671,22 +10673,22 @@ static void test_bug3796()
 
   /* Create and fill test table */
   stmt_text= "DROP TABLE IF EXISTS t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "CREATE TABLE t1 (a INT, b VARCHAR(30))";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "INSERT INTO t1 VALUES(1, 'ONE'), (2, 'TWO')";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   /* Create statement handle and prepare it with select */
   stmt= mysql_stmt_init(mysql);
   stmt_text= "SELECT concat(?, b) FROM t1";
 
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   /* Bind input buffers */
@@ -10694,7 +10696,7 @@ static void test_bug3796()
 
   my_bind[0].buffer_type= MYSQL_TYPE_STRING;
   my_bind[0].buffer= (void *) concat_arg0;
-  my_bind[0].buffer_length= strlen(concat_arg0);
+  my_bind[0].buffer_length= (uint) strlen(concat_arg0);
 
   mysql_stmt_bind_param(stmt, my_bind);
 
@@ -10731,7 +10733,7 @@ static void test_bug3796()
   mysql_stmt_close(stmt);
 
   stmt_text= "DROP TABLE IF EXISTS t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 }
 
@@ -10753,7 +10755,7 @@ static void test_bug4026()
   stmt= mysql_stmt_init(mysql);
   stmt_text= "SELECT ?, ?";
 
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   /* Bind input buffers */
@@ -10831,7 +10833,7 @@ static void test_bug4079()
   stmt= mysql_stmt_init(mysql);
   stmt_text= "SELECT 1 < (SELECT a FROM t1)";
 
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   /* Execute the select statement */
@@ -10870,7 +10872,7 @@ static void test_bug4236()
   /* mysql_stmt_execute() of statement with statement id= 0 crashed server */
   stmt_text= "SELECT 1";
   /* We need to prepare statement to pass by possible check in libmysql */
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   /* Hack to check that server works OK if statement wasn't found */
   backup.stmt_id= stmt->stmt_id;
@@ -10902,7 +10904,7 @@ static void test_bug4030()
   stmt= mysql_stmt_init(mysql);
   stmt_text= "SELECT '23:59:59.123456', '2003-12-31', "
              "'2003-12-31 23:59:59.123456'";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -11013,7 +11015,7 @@ static void test_view()
   myquery(rc);
 
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
 
   strmov(str_data, "TEST");
@@ -11067,7 +11069,7 @@ static void test_view_where()
   myquery(rc);
 
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
 
   for (i= 0; i < 3; i++)
@@ -11149,7 +11151,7 @@ static void test_view_2where()
     length[i] = 1;
   }
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
 
   rc= mysql_stmt_bind_param(stmt, my_bind);
@@ -11200,7 +11202,7 @@ static void test_view_star()
   }
 
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
 
   rc= mysql_stmt_bind_param(stmt, my_bind);
@@ -11248,11 +11250,11 @@ static void test_view_insert()
   myquery(rc);
 
   insert_stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(insert_stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(insert_stmt, query, (uint) strlen(query));
   check_execute(insert_stmt, rc);
   query= "select * from t1";
   select_stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(select_stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(select_stmt, query, (uint) strlen(query));
   check_execute(select_stmt, rc);
 
   bzero((char*) my_bind, sizeof(my_bind));
@@ -11307,7 +11309,7 @@ static void test_left_join_view()
   rc= mysql_query(mysql,"create view v1 (x) as select a from t1 where a > 1");
   myquery(rc);
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
 
   for (i= 0; i < 3; i++)
@@ -11375,7 +11377,7 @@ static void test_view_insert_fields()
     my_bind[i].length= &l[i];
   }
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
   rc= mysql_stmt_bind_param(stmt, my_bind);
   check_execute(stmt, rc);
@@ -11386,7 +11388,7 @@ static void test_view_insert_fields()
 
   query= "select * from t1";
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -11412,20 +11414,20 @@ static void test_bug5126()
   myheader("test_bug5126");
 
   stmt_text= "DROP TABLE IF EXISTS t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "CREATE TABLE t1 (a mediumint, b int)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "INSERT INTO t1 VALUES (8386608, 1)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt= mysql_stmt_init(mysql);
   stmt_text= "SELECT a, b FROM t1";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -11460,20 +11462,20 @@ static void test_bug4231()
   myheader("test_bug4231");
 
   stmt_text= "DROP TABLE IF EXISTS t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "CREATE TABLE t1 (a int)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "INSERT INTO t1 VALUES (1)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt= mysql_stmt_init(mysql);
   stmt_text= "SELECT a FROM t1 WHERE ? = ?";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   /* Bind input buffers */
@@ -11517,7 +11519,7 @@ static void test_bug4231()
 
   mysql_stmt_close(stmt);
   stmt_text= "DROP TABLE t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 }
 
@@ -11546,7 +11548,7 @@ static void test_bug5399()
   {
     sprintf(buff, "select %d", (int) (stmt - stmt_list));
     *stmt= mysql_stmt_init(mysql);
-    rc= mysql_stmt_prepare(*stmt, buff, strlen(buff));
+    rc= mysql_stmt_prepare(*stmt, buff, (uint) strlen(buff));
     check_execute(*stmt, rc);
     mysql_stmt_bind_result(*stmt, my_bind);
   }
@@ -11623,7 +11625,7 @@ static void test_bug5194()
   myheader("test_bug5194");
 
   stmt_text= "drop table if exists t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
 
   stmt_text= "create table if not exists t1"
    "(c1 float, c2 float, c3 float, c4 float, c5 float, c6 float, "
@@ -11668,7 +11670,7 @@ static void test_bug5194()
    "c235 float, c236 float, c237 float, c238 float, c239 float, c240 float, "
    "c241 float, c242 float, c243 float, c244 float, c245 float, c246 float, "
    "c247 float, c248 float, c249 float, c250 float)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   my_bind= (MYSQL_BIND*) malloc(MAX_PARAM_COUNT * sizeof(MYSQL_BIND));
@@ -11695,7 +11697,7 @@ static void test_bug5194()
   for (i= 1; i < COLUMN_COUNT; ++i)
     strcat(param_str, "?, ");
   strcat(param_str, "?)");
-  param_str_length= strlen(param_str);
+  param_str_length= (uint) strlen(param_str);
 
   /* setup bind array */
   bzero((char*) my_bind, MAX_PARAM_COUNT * sizeof(MYSQL_BIND));
@@ -11726,7 +11728,7 @@ static void test_bug5194()
     }
     *query_ptr= '\0';
 
-    rc= mysql_stmt_prepare(stmt, query, query_ptr - query);
+    rc= mysql_stmt_prepare(stmt, query, (uint) (query_ptr - query));
     if (rc && nrows * COLUMN_COUNT > uint16_max)
     {
       if (!opt_silent)
@@ -11755,7 +11757,7 @@ static void test_bug5194()
   free(query);
   free(param_str);
   stmt_text= "drop table t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 }
 
@@ -11770,7 +11772,7 @@ static void test_bug5315()
 
   stmt_text= "SELECT 1";
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   DIE_UNLESS(rc == 0);
   mysql_change_user(mysql, opt_user, opt_password, current_db);
   rc= mysql_stmt_execute(stmt);
@@ -11783,7 +11785,7 @@ static void test_bug5315()
   /* check that connection is OK */
   mysql_stmt_close(stmt);
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   DIE_UNLESS(rc == 0);
   rc= mysql_stmt_execute(stmt);
   DIE_UNLESS(rc == 0);
@@ -11806,13 +11808,13 @@ static void test_bug6049()
 
   stmt_text= "SELECT MAKETIME(-25, 12, 12)";
 
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   res= mysql_store_result(mysql);
   row= mysql_fetch_row(res);
 
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -11855,13 +11857,13 @@ static void test_bug6058()
 
   stmt_text= "SELECT CAST('0000-00-00' AS DATE)";
 
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   res= mysql_store_result(mysql);
   row= mysql_fetch_row(res);
 
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -11899,7 +11901,7 @@ static void test_bug6059()
   stmt_text= "SELECT 'foo' INTO OUTFILE 'x.3'";
 
   stmt= mysql_stmt_init(mysql);
-  (void) mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  (void) mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   DIE_UNLESS(mysql_stmt_field_count(stmt) == 0);
   mysql_stmt_close(stmt);
 }
@@ -11916,13 +11918,13 @@ static void test_bug6046()
   myheader("test_bug6046");
 
   stmt_text= "DROP TABLE IF EXISTS t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "CREATE TABLE t1 (a int, b int)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "INSERT INTO t1 VALUES (1,1),(2,2),(3,1),(4,2)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt= mysql_stmt_init(mysql);
@@ -11930,7 +11932,7 @@ static void test_bug6046()
   stmt_text= "SELECT t1.a FROM t1 NATURAL JOIN t1 as X1 "
              "WHERE t1.b > ? ORDER BY t1.a";
 
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   b= 1;
@@ -12066,7 +12068,7 @@ static void test_bug6096()
   myheader("test_bug6096");
 
   stmt_text= "drop table if exists t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   mysql_query(mysql, "set sql_mode=''");
@@ -12076,24 +12078,24 @@ static void test_bug6096()
                              " c_double double, c_varchar varchar(20), "
                              " c_char char(20), c_time time, c_date date, "
                              " c_datetime datetime)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "insert into t1  values (-100, -20000, 30000000, 4, 8, 1.0, "
                                      "2.0, 'abc', 'def', now(), now(), now())";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "select * from t1";
 
   /* Run select in prepared and non-prepared mode and compare metadata */
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   query_result= mysql_store_result(mysql);
   query_field_list= mysql_fetch_fields(query_result);
   query_field_count= mysql_num_fields(query_result);
 
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -12150,7 +12152,7 @@ static void test_bug6096()
   mysql_free_result(query_result);
   mysql_free_result(stmt_metadata);
   stmt_text= "drop table t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 }
 
@@ -12171,12 +12173,12 @@ static void test_datetime_ranges()
   myheader("test_datetime_ranges");
 
   stmt_text= "drop table if exists t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "create table t1 (year datetime, month datetime, day datetime, "
                               "hour datetime, min datetime, sec datetime)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt= mysql_simple_prepare(mysql,
@@ -12215,7 +12217,7 @@ static void test_datetime_ranges()
   mysql_stmt_close(stmt);
 
   stmt_text= "delete from t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt= mysql_simple_prepare(mysql, "INSERT INTO t1 (year, month, day) "
@@ -12243,11 +12245,11 @@ static void test_datetime_ranges()
   mysql_stmt_close(stmt);
 
   stmt_text= "drop table t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "create table t1 (day_ovfl time, day time, hour time, min time, sec time)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt= mysql_simple_prepare(mysql,
@@ -12284,7 +12286,7 @@ static void test_datetime_ranges()
   mysql_stmt_close(stmt);
 
   stmt_text= "drop table t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 }
 
@@ -12310,7 +12312,7 @@ static void test_bug4172()
   stmt= mysql_stmt_init(mysql);
   stmt_text= "SELECT f, d, e FROM t1";
 
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -12335,7 +12337,7 @@ static void test_bug4172()
   rc= mysql_stmt_fetch(stmt);
   check_execute(stmt, rc);
 
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   res= mysql_store_result(mysql);
   row= mysql_fetch_row(res);
@@ -12366,20 +12368,20 @@ static void test_conversion()
   myheader("test_conversion");
 
   stmt_text= "DROP TABLE IF EXISTS t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "CREATE TABLE t1 (a TEXT) DEFAULT CHARSET latin1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "SET character_set_connection=utf8, character_set_client=utf8, "
              " character_set_results=latin1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt= mysql_stmt_init(mysql);
 
   stmt_text= "INSERT INTO t1 (a) VALUES (?)";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   bzero((char*) my_bind, sizeof(my_bind));
@@ -12397,7 +12399,7 @@ static void test_conversion()
   check_execute(stmt, rc);
 
   stmt_text= "SELECT a FROM t1";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -12414,10 +12416,10 @@ static void test_conversion()
 
   mysql_stmt_close(stmt);
   stmt_text= "DROP TABLE t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "SET NAMES DEFAULT";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 }
 
@@ -12433,16 +12435,16 @@ static void test_rewind(void)
   myheader("test_rewind");
 
   stmt_text= "CREATE TABLE t1 (a int)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "INSERT INTO t1 VALUES(2),(3),(4)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt= mysql_stmt_init(mysql);
 
   stmt_text= "SELECT * FROM t1";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   bzero((char*) &my_bind, sizeof(MYSQL_BIND));
@@ -12477,7 +12479,7 @@ static void test_rewind(void)
   DIE_UNLESS(rc == MYSQL_NO_DATA);
 
   stmt_text= "DROP TABLE t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   rc= mysql_stmt_free_result(stmt);
   rc= mysql_stmt_close(stmt);
@@ -12505,7 +12507,7 @@ static void test_truncation()
              "d double, d_1 double, ch char(30), ch_1 char(30), "
              "tx text, tx_1 text, ch_2 char(30) "
              ")";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "insert into t1 VALUES ("
              "-10, "                            /* i8 */
@@ -12523,7 +12525,7 @@ static void test_truncation()
              "'12345.67 	      ', "      /* tx_1 */
              "'12345.67abc'"                    /* ch_2 */
              ")";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "select i8 c1, i8 c2, ui8 c3, i16_1 c4, ui16 c5, "
@@ -12533,7 +12535,7 @@ static void test_truncation()
              "from t1";
 
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -12741,7 +12743,7 @@ static void test_truncation_option()
   stmt_text= "select -1";
 
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -12787,7 +12789,7 @@ static void test_bug6761(void)
   myheader("test_bug6761");
 
   stmt_text= "CREATE TABLE t1 (a int, b char(255), c decimal)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   res= mysql_list_fields(mysql, "t1", "%");
@@ -12795,7 +12797,7 @@ static void test_bug6761(void)
   mysql_free_result(res);
 
   stmt_text= "DROP TABLE t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 }
 
@@ -12815,17 +12817,17 @@ static void test_bug8330()
 
   stmt_text= "drop table if exists t1";
   /* in case some previos test failed */
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "create table t1 (a int, b int)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   bzero((char*) my_bind, sizeof(my_bind));
   for (i=0; i < 2; i++)
   {
     stmt[i]= mysql_stmt_init(mysql);
-    rc= mysql_stmt_prepare(stmt[i], query, strlen(query));
+    rc= mysql_stmt_prepare(stmt[i], query, (uint) strlen(query));
     check_execute(stmt[i], rc);
 
     my_bind[i].buffer_type= MYSQL_TYPE_LONG;
@@ -12846,7 +12848,7 @@ static void test_bug8330()
   mysql_stmt_close(stmt[1]);
 
   stmt_text= "drop table t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 }
 
@@ -13031,7 +13033,7 @@ static void test_bug8378()
 
   sprintf(buf, "SELECT '%s'", out);
   
-  rc=mysql_real_query(lmysql, buf, strlen(buf));
+  rc=mysql_real_query(lmysql, buf, (uint) strlen(buf));
   myquery(rc);
 
   mysql_close(lmysql);
@@ -13048,19 +13050,19 @@ static void test_bug8722()
   myheader("test_bug8722");
   /* Prepare test data */
   stmt_text= "drop table if exists t1, v1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "CREATE TABLE t1 (c1 varchar(10), c2 varchar(10), c3 varchar(10),"
                              " c4 varchar(10), c5 varchar(10), c6 varchar(10),"
                              " c7 varchar(10), c8 varchar(10), c9 varchar(10),"
                              "c10 varchar(10))";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "INSERT INTO t1 VALUES (1,2,3,4,5,6,7,8,9,10)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   stmt_text= "CREATE VIEW v1 AS SELECT * FROM t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   /* Note: if you uncomment following block everything works fine */
 /*
@@ -13071,11 +13073,11 @@ static void test_bug8722()
 
   stmt= mysql_stmt_init(mysql);
   stmt_text= "select * from v1";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   mysql_stmt_close(stmt);
   stmt_text= "drop table if exists t1, v1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 }
 
@@ -13086,7 +13088,7 @@ MYSQL_STMT *open_cursor(const char *quer
   const ulong type= (ulong)CURSOR_TYPE_READ_ONLY;
 
   MYSQL_STMT *stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
 
   mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void*) &type);
@@ -13137,7 +13139,7 @@ static void test_bug9159()
   myquery(rc);
 
   stmt= mysql_stmt_init(mysql);
-  mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (const void *)&type);
 
   mysql_stmt_execute(stmt);
@@ -13379,7 +13381,7 @@ static void test_bug9643()
                           (void*) &prefetch_rows);
   check_execute(stmt, rc);
   stmt_text= "select * from t1";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   bzero((char*) my_bind, sizeof(my_bind));
@@ -13435,7 +13437,7 @@ static void test_bug11111()
 
   stmt= mysql_stmt_init(mysql);
 
-  mysql_stmt_prepare(stmt, query, strlen(query));
+  mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   mysql_stmt_execute(stmt);
 
   bzero((char*) my_bind, sizeof(my_bind));
@@ -13493,7 +13495,7 @@ static void test_bug10729()
   rc= mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void*) &type);
   check_execute(stmt, rc);
   stmt_text= "select name from t1";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   bzero((char*) my_bind, sizeof(my_bind));
@@ -13603,7 +13605,7 @@ static void test_bug10736()
   rc= mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void*) &type);
   check_execute(stmt, rc);
   stmt_text= "select name from t1 where name=(select name from t1 where id=2)";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   bzero((char*) my_bind, sizeof(my_bind));
@@ -13653,7 +13655,7 @@ static void test_bug10794()
                                       "name varchar(20) not null)");
   stmt= mysql_stmt_init(mysql);
   stmt_text= "insert into t1 (id, name) values (?, ?)";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   bzero((char*) my_bind, sizeof(my_bind));
   my_bind[0].buffer_type= MYSQL_TYPE_LONG;
@@ -13667,12 +13669,12 @@ static void test_bug10794()
   {
     id_val= (i+1)*10;
     sprintf(a, "a%d", i);
-    a_len= strlen(a); /* safety against broken sprintf */
+    a_len= (uint) strlen(a); /* safety against broken sprintf */
     rc= mysql_stmt_execute(stmt);
     check_execute(stmt, rc);
   }
   stmt_text= "select name from t1";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   type= (ulong) CURSOR_TYPE_READ_ONLY;
   mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (const void*) &type);
   stmt1= mysql_stmt_init(mysql);
@@ -13694,7 +13696,7 @@ static void test_bug10794()
   mysql_stmt_free_result(stmt);
   mysql_stmt_reset(stmt);
   stmt_text= "select name from t1 where id=10";
-  rc= mysql_stmt_prepare(stmt1, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt1, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt1, rc);
   rc= mysql_stmt_bind_result(stmt1, my_bind);
   check_execute(stmt1, rc);
@@ -13744,7 +13746,7 @@ static void test_bug11172()
   myquery(rc);
   stmt= mysql_stmt_init(mysql);
   stmt_text= "SELECT id, hired FROM t1 WHERE hired=?";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
 
   type= (ulong) CURSOR_TYPE_READ_ONLY;
@@ -13816,7 +13818,7 @@ static void test_bug11656()
   stmt_text= "select distinct test_kind, test_id from t1 "
              "where server in (?, ?)";
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   type= (ulong) CURSOR_TYPE_READ_ONLY;
   mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (const void*) &type);
@@ -13828,7 +13830,7 @@ static void test_bug11656()
   {
     my_bind[i].buffer_type= MYSQL_TYPE_STRING;
     my_bind[i].buffer= (gptr *)&buf[i];
-    my_bind[i].buffer_length= strlen(buf[i]);
+    my_bind[i].buffer_length= (uint) strlen(buf[i]);
   }
   mysql_stmt_bind_param(stmt, my_bind);
 
@@ -13933,7 +13935,7 @@ static void test_bug11183()
   stmt= mysql_stmt_init(mysql);
   DIE_UNLESS(stmt != 0);
 
-  rc= mysql_stmt_prepare(stmt, bug_statement, strlen(bug_statement));
+  rc= mysql_stmt_prepare(stmt, bug_statement, (uint) strlen(bug_statement));
   check_execute(stmt, rc);
 
   rc= mysql_query(mysql, "drop table t1");
@@ -13979,7 +13981,7 @@ static void test_bug11037()
 
   stmt_text= "select id FROM t1";
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
 
   /* expected error */
   rc = mysql_stmt_fetch(stmt);
@@ -14047,7 +14049,7 @@ static void test_bug10760()
     con1: insert into t1 (id) values (1)
   */
   stmt_text= "select id from t1 order by 1";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
@@ -14080,7 +14082,7 @@ static void test_bug10760()
   else
   {
     stmt_text= "select id from t1 order by 1";
-    rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+    rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
     check_execute(stmt, rc);
 
     rc= mysql_query(mysql, "alter table t1 engine=InnoDB");
@@ -14183,7 +14185,7 @@ static void test_bug11909()
   myheader("test_bug11909");
 
   stmt_text= "drop table if exists t1";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "create table t1 ("
@@ -14192,7 +14194,7 @@ static void test_bug11909()
     "  workdept varchar(6) not null, salary double not null,"
     "  bonus float not null, primary key (empno)"
     ") default charset=latin1 collate=latin1_bin";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "insert into t1 values "
@@ -14201,7 +14203,7 @@ static void test_bug11909()
     "(30, 'SALLY',     'A', 'KWAN',     'C01', 38250, 800),"
     "(50, 'JOHN',      'B', 'GEYER',    'E01', 40175, 800), "
     "(60, 'IRVING',    'F', 'STERN',    'D11', 32250, 500)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   /* ****** Begin of trace ****** */
@@ -14299,7 +14301,7 @@ static void test_bug11901()
   myheader("test_bug11901");
 
   stmt_text= "drop table if exists t1, t2";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "create table t1 ("
@@ -14309,7 +14311,7 @@ static void test_bug11901()
     "  bonus float not null, primary key (empno), "
     " unique key (workdept, empno) "
     ") default charset=latin1 collate=latin1_bin";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "insert into t1 values "
@@ -14346,7 +14348,7 @@ static void test_bug11901()
      "(330, 'WING',      '',  'LEE',       'E21', 25370, 500), "
      "(340, 'JASON',     'R', 'GOUNOT',    'E21', 23840, 500)";
 
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "create table t2 ("
@@ -14355,7 +14357,7 @@ static void test_bug11901()
     " admrdept varchar(6) not null, refcntd int(11) not null,"
     " refcntu int(11) not null, primary key (deptno)"
     ") default charset=latin1 collate=latin1_bin";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   stmt_text= "insert into t2 values "
@@ -14368,7 +14370,7 @@ static void test_bug11901()
     "('E01', 'SUPPORT SERVICES',     50, '', 'A00', 0, 0), "
     "('E11', 'OPERATIONS',           90, '', 'E01', 0, 0), "
     "('E21', 'SOFTWARE SUPPORT',     100,'', 'E01', 0, 0)";
-  rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+  rc= mysql_real_query(mysql, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
 
   /* ****** Begin of trace ****** */
@@ -14438,7 +14440,7 @@ static void test_bug11904()
 
   stmt_text= "SELECT id, MIN(name) FROM bug11904b GROUP BY id";
 
-  rc= mysql_stmt_prepare(stmt1, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt1, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt1, rc);
 
   memset(my_bind, 0, sizeof(my_bind));
@@ -14514,14 +14516,14 @@ static void test_bug12243()
 
   stmt_text= "select a from t1";
 
-  rc= mysql_stmt_prepare(stmt1, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt1, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt1, rc);
   rc= mysql_stmt_execute(stmt1);
   check_execute(stmt1, rc);
   rc= mysql_stmt_fetch(stmt1);
   check_execute(stmt1, rc);
 
-  rc= mysql_stmt_prepare(stmt2, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt2, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt2, rc);
   rc= mysql_stmt_execute(stmt2);
   check_execute(stmt2, rc);
@@ -14627,7 +14629,7 @@ static void test_bug14210()
 
   stmt_text= "select a from t1";
 
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   check_execute(stmt, rc);
   rc= mysql_stmt_execute(stmt);
   while ((rc= mysql_stmt_fetch(stmt)) == 0)
@@ -14681,7 +14683,7 @@ static void test_bug13488()
   rc= mysql_stmt_attr_set(stmt1,STMT_ATTR_CURSOR_TYPE, (const void *)&type);
   check_execute(stmt1, rc);
 
-  rc= mysql_stmt_prepare(stmt1, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt1, query, (uint) strlen(query));
   check_execute(stmt1, rc);
 
   rc= mysql_stmt_execute(stmt1);
@@ -14736,7 +14738,7 @@ static void test_bug13524()
   rc= mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (const void*) &type);
   check_execute(stmt, rc);
 
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
 
   rc= mysql_stmt_execute(stmt);
@@ -14795,7 +14797,7 @@ static void test_bug14845()
   rc= mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (const void*) &type);
   check_execute(stmt, rc);
 
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
 
   rc= mysql_stmt_execute(stmt);
@@ -14831,7 +14833,7 @@ static void test_bug15510()
 
   stmt= mysql_stmt_init(mysql);
 
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
 
   rc= mysql_stmt_execute(stmt);
@@ -15003,7 +15005,7 @@ static void test_bug15613()
 
   /* II. Check SELECT metadata */
   stmt_text= ("select t, tt, mt, lt, vl, vb, vu from t1");
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   metadata= mysql_stmt_result_metadata(stmt);
   field= mysql_fetch_fields(metadata);
   if (!opt_silent)
@@ -15197,7 +15199,7 @@ static void test_bug14169()
   myquery(rc);
   stmt= mysql_stmt_init(mysql);
   stmt_text= "select f2,group_concat(f1) from t1 group by f2";
-  rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
+  rc= mysql_stmt_prepare(stmt, stmt_text, (uint) strlen(stmt_text));
   myquery(rc);
   res= mysql_stmt_result_metadata(stmt);
   field= mysql_fetch_fields(res);
@@ -15440,7 +15442,7 @@ static void test_bug20152()
   myquery(rc);
 
   stmt= mysql_stmt_init(mysql);
-  rc= mysql_stmt_prepare(stmt, query, strlen(query));
+  rc= mysql_stmt_prepare(stmt, query, (uint) strlen(query));
   check_execute(stmt, rc);
   rc= mysql_stmt_bind_param(stmt, my_bind);
   check_execute(stmt, rc);
@@ -15485,11 +15487,11 @@ static void test_bug15752()
     printf("Unable connect to MySQL server: %s\n", mysql_error(&mysql_local));
     DIE_UNLESS(0);
   }
-  rc= mysql_real_query(&mysql_local, query, strlen(query));
+  rc= mysql_real_query(&mysql_local, query, (uint) strlen(query));
   myquery(rc);
   mysql_free_result(mysql_store_result(&mysql_local));
 
-  rc= mysql_real_query(&mysql_local, query, strlen(query));
+  rc= mysql_real_query(&mysql_local, query, (uint) strlen(query));
   DIE_UNLESS(rc && mysql_errno(&mysql_local) == CR_COMMANDS_OUT_OF_SYNC);
 
   if (! opt_silent)
@@ -15504,7 +15506,7 @@ static void test_bug15752()
   /* The second problem is not reproducible: add the test case */
   for (i = 0; i < ITERATION_COUNT; i++)
   {
-    if (mysql_real_query(&mysql_local, query, strlen(query)))
+    if (mysql_real_query(&mysql_local, query, (uint) strlen(query)))
     {
       printf("\ni=%d %s failed: %s\n", i, query, mysql_error(&mysql_local));
       break;
@@ -15551,7 +15553,7 @@ static void test_bug21206()
   for (fetch= fetch_array; fetch < fetch_array + cursor_count; ++fetch)
   {
     /* Init will exit(1) in case of error */
-    stmt_fetch_init(fetch, fetch - fetch_array, query);
+    stmt_fetch_init(fetch, (uint) (fetch - fetch_array), query);
   }
 
   for (fetch= fetch_array; fetch < fetch_array + cursor_count; ++fetch)
@@ -15646,7 +15648,7 @@ static void test_bug23383()
   stmt= mysql_stmt_init(mysql);
   DIE_UNLESS(stmt != 0);
 
-  rc= mysql_stmt_prepare(stmt, insert_query, strlen(insert_query));
+  rc= mysql_stmt_prepare(stmt, insert_query, (uint) strlen(insert_query));
   check_execute(stmt, rc);
 
   rc= mysql_stmt_execute(stmt);
@@ -15659,7 +15661,7 @@ static void test_bug23383()
   row_count= mysql_stmt_affected_rows(stmt);
   DIE_UNLESS(row_count == (my_ulonglong)-1);
 
-  rc= mysql_stmt_prepare(stmt, update_query, strlen(update_query));
+  rc= mysql_stmt_prepare(stmt, update_query, (uint) strlen(update_query));
   check_execute(stmt, rc);
 
   rc= mysql_stmt_execute(stmt);
@@ -15725,7 +15727,7 @@ static void test_bug21635()
     rc= mysql_query(mysql, "INSERT INTO t1 VALUES (1)");
     myquery(rc);
 
-    rc= mysql_real_query(mysql, query, query_end - query);
+    rc= mysql_real_query(mysql, query, (uint) (query_end - query));
     myquery(rc);
 
     result= mysql_use_result(mysql);
@@ -16276,6 +16278,176 @@ static void test_bug38486(void)
   DBUG_VOID_RETURN;
 }
 
+static void bug20023_change_user(MYSQL *con)
+{
+  DIE_IF(mysql_change_user(con,
+                           opt_user,
+                           opt_password,
+                           opt_db ? opt_db : "test"));
+}
+
+static void bug20023_query_int_variable(MYSQL *con,
+                                        const char *var_name,
+                                        int *var_value)
+{
+  MYSQL_RES *rs;
+  MYSQL_ROW row;
+
+  char query_buffer[MAX_TEST_QUERY_LENGTH];
+
+  my_snprintf(query_buffer,
+          sizeof (query_buffer),
+          "SELECT @@%s",
+          (const char *) var_name);
+
+  DIE_IF(mysql_query(con, query_buffer));
+  DIE_UNLESS(rs= mysql_store_result(con));
+  DIE_UNLESS(row= mysql_fetch_row(rs));
+  *var_value= atoi(row[0]);
+  mysql_free_result(rs);
+}
+
+static void test_bug20023()
+{
+  MYSQL con;
+
+  int sql_big_selects_orig;
+  int max_join_size_orig;
+
+  int sql_big_selects_2;
+  int sql_big_selects_3;
+  int sql_big_selects_4;
+  int sql_big_selects_5;
+
+  char query_buffer[MAX_TEST_QUERY_LENGTH];
+
+  /* Create a new connection. */
+
+  DIE_UNLESS(mysql_init(&con));
+
+  DIE_UNLESS(mysql_real_connect(&con,
+                                opt_host,
+                                opt_user,
+                                opt_password,
+                                opt_db ? opt_db : "test",
+                                opt_port,
+                                opt_unix_socket,
+                                CLIENT_FOUND_ROWS));
+
+  /***********************************************************************
+   Remember original SQL_BIG_SELECTS, MAX_JOIN_SIZE values.
+  ***********************************************************************/
+
+  bug20023_query_int_variable(&con,
+                              "session.sql_big_selects",
+                              &sql_big_selects_orig);
+
+  bug20023_query_int_variable(&con,
+                              "global.max_join_size",
+                              &max_join_size_orig);
+
+  /***********************************************************************
+   Test that COM_CHANGE_USER resets the SQL_BIG_SELECTS to the initial value.
+  ***********************************************************************/
+
+  /* Issue COM_CHANGE_USER. */
+
+  bug20023_change_user(&con);
+
+  /* Query SQL_BIG_SELECTS. */
+
+  bug20023_query_int_variable(&con,
+                              "session.sql_big_selects",
+                              &sql_big_selects_2);
+
+  /* Check that SQL_BIG_SELECTS is reset properly. */
+
+  DIE_UNLESS(sql_big_selects_orig == sql_big_selects_2);
+
+  /***********************************************************************
+   Test that if MAX_JOIN_SIZE set to non-default value,
+   SQL_BIG_SELECTS will be 0.
+  ***********************************************************************/
+
+  /* Set MAX_JOIN_SIZE to some non-default value. */
+
+  DIE_IF(mysql_query(&con, "SET @@global.max_join_size = 10000"));
+  DIE_IF(mysql_query(&con, "SET @@session.max_join_size = default"));
+
+  /* Issue COM_CHANGE_USER. */
+
+  bug20023_change_user(&con);
+
+  /* Query SQL_BIG_SELECTS. */
+
+  bug20023_query_int_variable(&con,
+                              "session.sql_big_selects",
+                              &sql_big_selects_3);
+
+  /* Check that SQL_BIG_SELECTS is 0. */
+
+  DIE_UNLESS(sql_big_selects_3 == 0);
+
+  /***********************************************************************
+   Test that if MAX_JOIN_SIZE set to default value,
+   SQL_BIG_SELECTS will be 1.
+  ***********************************************************************/
+
+  /* Set MAX_JOIN_SIZE to the default value (-1). */
+
+  DIE_IF(mysql_query(&con, "SET @@global.max_join_size = -1"));
+  DIE_IF(mysql_query(&con, "SET @@session.max_join_size = default"));
+
+  /* Issue COM_CHANGE_USER. */
+
+  bug20023_change_user(&con);
+
+  /* Query SQL_BIG_SELECTS. */
+
+  bug20023_query_int_variable(&con,
+                              "session.sql_big_selects",
+                              &sql_big_selects_4);
+
+  /* Check that SQL_BIG_SELECTS is 1. */
+
+  DIE_UNLESS(sql_big_selects_4 == 1);
+
+  /***********************************************************************
+   Restore MAX_JOIN_SIZE.
+   Check that SQL_BIG_SELECTS will be the original one.
+  ***********************************************************************/
+
+  /* Restore MAX_JOIN_SIZE. */
+
+  my_snprintf(query_buffer,
+           sizeof (query_buffer),
+           "SET @@global.max_join_size = %d",
+           (int) max_join_size_orig);
+
+  DIE_IF(mysql_query(&con, query_buffer));
+  DIE_IF(mysql_query(&con, "SET @@session.max_join_size = default"));
+
+  /* Issue COM_CHANGE_USER. */
+
+  bug20023_change_user(&con);
+
+  /* Query SQL_BIG_SELECTS. */
+
+  bug20023_query_int_variable(&con,
+                              "session.sql_big_selects",
+                              &sql_big_selects_5);
+
+  /* Check that SQL_BIG_SELECTS is 1. */
+
+  DIE_UNLESS(sql_big_selects_5 == sql_big_selects_orig);
+
+  /***********************************************************************
+   That's it. Cleanup.
+  ***********************************************************************/
+
+  mysql_close(&con);
+}
+
 static void test_bug40365(void)
 {
   uint         rc, i;
@@ -16780,6 +16952,7 @@ static struct my_tests_st my_tests[]= {
   { "test_bug36326", test_bug36326 },
 #endif
   { "test_bug41078", test_bug41078 },
+  { "test_bug20023", test_bug20023 },
   { 0, 0 }
 };
 

=== modified file 'tools/mysqlmanager.c'
--- a/tools/mysqlmanager.c	2007-07-19 12:14:03 +0000
+++ b/tools/mysqlmanager.c	2009-03-09 18:57:03 +0000
@@ -992,7 +992,6 @@ end:  
 static int authenticate(struct manager_thd* thd)
 {
   char* buf_end,*buf,*p,*p_end;
-  my_MD5_CTX context;
   uchar digest[MD5_LEN];
   struct manager_user* u;
   char c;
@@ -1018,9 +1017,7 @@ static int authenticate(struct manager_t
     return 1;
   for (;my_isspace(cs,*buf) && buf<buf_end;buf++) /* empty */;
 
-  my_MD5Init(&context);
-  my_MD5Update(&context,(uchar*) buf,(uint)(buf_end-buf));
-  my_MD5Final(digest,&context);
+  MY_MD5_HASH (digest, (uchar*) buf,(uint)(buf_end-buf));
   if (memcmp(u->md5_pass,digest,MD5_LEN))
     return 1;
   client_msg(&thd->net,MANAGER_OK,"OK");

=== modified file 'vio/viosocket.c'
--- a/vio/viosocket.c	2007-05-24 09:21:27 +0000
+++ b/vio/viosocket.c	2009-02-10 22:47:54 +0000
@@ -67,7 +67,7 @@ int vio_read_buff(Vio *vio, gptr buf, in
 
   if (vio->read_pos < vio->read_end)
   {
-    rc= min(vio->read_end - vio->read_pos, size);
+    rc= min((int) (vio->read_end - vio->read_pos), size);
     memcpy(buf, vio->read_pos, rc);
     vio->read_pos+= rc;
     /*

Attachment: [text/bzr-bundle] bzr/leonard@mysql.com-20090324072904-7w2lxdxzw8hx1rnm.bundle
Thread
bzr commit into mysql-5.0-bugteam branch (leonard:2768) Leonard Zhou24 Mar