List:Commits« Previous MessageNext Message »
From:Jon Olav Hauglid Date:November 17 2010 4:42pm
Subject:bzr commit into mysql-5.5-runtime branch (jon.hauglid:3188)
View as plain text  
#At file:///export/home/x/mysql-5.5-runtime-test/ based on revid:jon.hauglid@stripped

 3188 Jon Olav Hauglid	2010-11-17 [merge]
      Merge from mysql-5.5-bugteam to mysql-5.5-runtime
      No conflicts

    modified:
      cmd-line-utils/readline/bind.c
      include/m_string.h
      include/my_compiler.h
      mysql-test/r/func_math.result
      mysql-test/t/func_math.test
      mysys/default.c
      mysys/mf_keycache.c
      regex/regexec.c
      sql/debug_sync.cc
      sql/field.cc
      sql/handler.cc
      sql/slave.cc
      sql/sql_partition.cc
      storage/myisam/ft_nlq_search.c
      storage/myisammrg/myrg_open.c
      tests/mysql_client_test.c
=== modified file 'cmd-line-utils/readline/bind.c'
--- a/cmd-line-utils/readline/bind.c	2009-08-28 16:21:54 +0000
+++ b/cmd-line-utils/readline/bind.c	2010-11-10 21:14:47 +0000
@@ -855,7 +855,7 @@ _rl_read_init_file (filename, include_le
 {
   register int i;
   char *buffer, *openname, *line, *end;
-  size_t file_size;
+  size_t file_size = 0;
 
   current_readline_init_file = filename;
   current_readline_init_include_level = include_level;

=== modified file 'include/m_string.h'
--- a/include/m_string.h	2010-07-23 20:17:55 +0000
+++ b/include/m_string.h	2010-11-17 09:50:19 +0000
@@ -76,7 +76,9 @@ extern "C" {
 extern void *(*my_str_malloc)(size_t);
 extern void (*my_str_free)(void *);
 
-#if defined(HAVE_STPCPY)
+#if defined(HAVE_STPCPY) && MY_GNUC_PREREQ(3, 4)
+#define strmov(A,B) __builtin_stpcpy((A),(B))
+#elif defined(HAVE_STPCPY)
 #define strmov(A,B) stpcpy((A),(B))
 #ifndef stpcpy
 extern char *stpcpy(char *, const char *);	/* For AIX with gcc 2.95.3 */

=== modified file 'include/my_compiler.h'
--- a/include/my_compiler.h	2010-10-20 18:21:40 +0000
+++ b/include/my_compiler.h	2010-11-10 21:14:47 +0000
@@ -76,6 +76,11 @@
 /**
   Generic (compiler-independent) features.
 */
+
+#ifndef MY_GNUC_PREREQ
+# define MY_GNUC_PREREQ(maj, min) (0)
+#endif
+
 #ifndef MY_ALIGNOF
 # ifdef __cplusplus
     template<typename type> struct my_alignof_helper { char m1; type m2; };

=== modified file 'mysql-test/r/func_math.result'
--- a/mysql-test/r/func_math.result	2010-10-08 09:52:09 +0000
+++ b/mysql-test/r/func_math.result	2010-11-17 15:39:35 +0000
@@ -607,3 +607,12 @@ SELECT floor(log10(format(concat_ws(5445
 as foo;
 foo
 2
+#
+# Bug #58137 char(0) column cause:
+#            my_gcvt: Assertion `width > 0 && to != ((void *)0)' failed
+#
+CREATE TABLE t1(a char(0));
+INSERT INTO t1 (SELECT -pi());
+Warnings:
+Warning	1265	Data truncated for column 'a' at row 1
+DROP TABLE t1;

=== modified file 'mysql-test/t/func_math.test'
--- a/mysql-test/t/func_math.test	2010-10-08 09:52:09 +0000
+++ b/mysql-test/t/func_math.test	2010-11-17 15:39:35 +0000
@@ -464,3 +464,11 @@ SELECT -9223372036854775808 MOD -1;
 --echo #
 SELECT floor(log10(format(concat_ws(5445796E25, 5306463, 30837), -358821)))
 as foo;
+
+--echo #
+--echo # Bug #58137 char(0) column cause:
+--echo #            my_gcvt: Assertion `width > 0 && to != ((void *)0)' failed
+--echo #
+CREATE TABLE t1(a char(0));
+INSERT INTO t1 (SELECT -pi());
+DROP TABLE t1;

=== modified file 'mysys/default.c'
--- a/mysys/default.c	2010-11-04 10:00:59 +0000
+++ b/mysys/default.c	2010-11-16 10:58:39 +0000
@@ -68,6 +68,9 @@ const char *my_defaults_file=0;
 const char *my_defaults_group_suffix=0;
 const char *my_defaults_extra_file=0;
 
+static char my_defaults_file_buffer[FN_REFLEN];
+static char my_defaults_extra_file_buffer[FN_REFLEN];
+
 static my_bool defaults_already_read= FALSE;
 
 /* Which directories are searched for options (and in which order) */
@@ -152,22 +155,19 @@ static char *remove_end_comment(char *pt
  */
 
 static int
-fn_expand(const char *filename, const char **filename_var)
+fn_expand(const char *filename, char *result_buf)
 {
-  char dir[FN_REFLEN], buf[FN_REFLEN];
+  char dir[FN_REFLEN];
   const int flags= MY_UNPACK_FILENAME | MY_SAFE_PATH | MY_RELATIVE_PATH;
-  const char *result_path= NULL;
   DBUG_ENTER("fn_expand");
-  DBUG_PRINT("enter", ("filename: %s, buf: 0x%lx", filename, (unsigned long) buf));
+  DBUG_PRINT("enter", ("filename: %s, result_buf: 0x%lx",
+                       filename, (unsigned long) result_buf));
   if (my_getwd(dir, sizeof(dir), MYF(0)))
     DBUG_RETURN(3);
   DBUG_PRINT("debug", ("dir: %s", dir));
-  if (fn_format(buf, filename, dir, NULL, flags) == NULL ||
-      (result_path= my_strdup(buf, MYF(0))) == NULL)
+  if (fn_format(result_buf, filename, dir, NULL, flags) == NULL)
     DBUG_RETURN(2);
-  DBUG_PRINT("return", ("result: %s", result_path));
-  DBUG_ASSERT(result_path != NULL);
-  *filename_var= result_path;
+  DBUG_PRINT("return", ("result: %s", result_buf));
   DBUG_RETURN(0);
 }
 
@@ -224,16 +224,18 @@ int my_search_option_files(const char *c
 
   if (forced_extra_defaults && !defaults_already_read)
   {
-    int error= fn_expand(forced_extra_defaults, &my_defaults_extra_file);
+    int error= fn_expand(forced_extra_defaults, my_defaults_extra_file_buffer);
     if (error)
       DBUG_RETURN(error);
+    my_defaults_extra_file= my_defaults_extra_file_buffer;
   }
 
   if (forced_default_file && !defaults_already_read)
   {
-    int error= fn_expand(forced_default_file, &my_defaults_file);
+    int error= fn_expand(forced_default_file, my_defaults_file_buffer);
     if (error)
       DBUG_RETURN(error);
+    my_defaults_file= my_defaults_file_buffer;
   }
 
   defaults_already_read= TRUE;

=== modified file 'mysys/mf_keycache.c'
--- a/mysys/mf_keycache.c	2010-07-23 20:15:41 +0000
+++ b/mysys/mf_keycache.c	2010-11-16 09:45:07 +0000
@@ -3963,11 +3963,11 @@ restart:
             if (!(block->status & (BLOCK_IN_EVICTION | BLOCK_IN_SWITCH |
                                    BLOCK_REASSIGNED)))
             {
-              struct st_hash_link *next_hash_link;
-              my_off_t            next_diskpos;
-              File                next_file;
-              uint                next_status;
-              uint                hash_requests;
+              struct st_hash_link *UNINIT_VAR(next_hash_link);
+              my_off_t UNINIT_VAR(next_diskpos);
+              File UNINIT_VAR(next_file);
+              uint UNINIT_VAR(next_status);
+              uint UNINIT_VAR(hash_requests);
 
               total_found++;
               found++;

=== modified file 'regex/regexec.c'
--- a/regex/regexec.c	2007-03-28 17:46:42 +0000
+++ b/regex/regexec.c	2010-11-10 21:14:47 +0000
@@ -117,6 +117,7 @@ size_t nmatch;
 my_regmatch_t pmatch[];
 int eflags;
 {
+	char *pstr = (char *) str;
 	register struct re_guts *g = preg->re_g;
 #ifdef REDEBUG
 #	define	GOODFLAGS(f)	(f)
@@ -133,7 +134,7 @@ int eflags;
 
 	if ((size_t) g->nstates <= CHAR_BIT*sizeof(states1) &&
 	    !(eflags&REG_LARGE))
-		return(smatcher(preg->charset, g, (char *)str, nmatch, pmatch, eflags));
+		return(smatcher(preg->charset, g, pstr, nmatch, pmatch, eflags));
 	else
-		return(lmatcher(preg->charset, g, (char *)str, nmatch, pmatch, eflags));
+		return(lmatcher(preg->charset, g, pstr, nmatch, pmatch, eflags));
 }

=== modified file 'sql/debug_sync.cc'
--- a/sql/debug_sync.cc	2010-07-08 21:20:08 +0000
+++ b/sql/debug_sync.cc	2010-11-16 09:45:07 +0000
@@ -1691,7 +1691,7 @@ static void debug_sync_execute(THD *thd,
 
   if (action->execute)
   {
-    const char  *old_proc_info;
+    const char *UNINIT_VAR(old_proc_info);
 
     action->execute--;
 

=== modified file 'sql/field.cc'
--- a/sql/field.cc	2010-10-29 09:35:07 +0000
+++ b/sql/field.cc	2010-11-17 15:39:35 +0000
@@ -6327,10 +6327,13 @@ int Field_str::store(double nr)
   ASSERT_COLUMN_MARKED_FOR_WRITE;
   char buff[DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE];
   uint local_char_length= field_length / charset()->mbmaxlen;
-  size_t length;
-  my_bool error;
+  size_t length= 0;
+  my_bool error= (local_char_length == 0);
+
+  // my_gcvt() requires width > 0, and we may have a CHAR(0) column.
+  if (!error)
+    length= my_gcvt(nr, MY_GCVT_ARG_DOUBLE, local_char_length, buff, &error);
 
-  length= my_gcvt(nr, MY_GCVT_ARG_DOUBLE, local_char_length, buff, &error);
   if (error)
   {
     if (table->in_use->abort_on_warning)

=== modified file 'sql/handler.cc'
--- a/sql/handler.cc	2010-11-11 17:11:05 +0000
+++ b/sql/handler.cc	2010-11-17 16:42:28 +0000
@@ -4184,7 +4184,7 @@ int handler::read_multi_range_first(KEY_
 */
 int handler::read_multi_range_next(KEY_MULTI_RANGE **found_range_p)
 {
-  int result;
+  int UNINIT_VAR(result);
   DBUG_ENTER("handler::read_multi_range_next");
 
   /* We should not be called after the last call returned EOF. */

=== modified file 'sql/slave.cc'
--- a/sql/slave.cc	2010-10-22 11:58:09 +0000
+++ b/sql/slave.cc	2010-11-17 16:42:28 +0000
@@ -2521,7 +2521,7 @@ static int exec_relay_log_event(THD* thd
 
     if (slave_trans_retries)
     {
-      int temp_err;
+      int UNINIT_VAR(temp_err);
       if (exec_res && (temp_err= has_temporary_error(thd)))
       {
         const char *errmsg;

=== modified file 'sql/sql_partition.cc'
--- a/sql/sql_partition.cc	2010-11-05 13:16:27 +0000
+++ b/sql/sql_partition.cc	2010-11-16 09:45:07 +0000
@@ -7484,8 +7484,8 @@ int get_part_iter_for_interval_via_mappi
                                            PARTITION_ITERATOR *part_iter)
 {
   Field *field= part_info->part_field_array[0];
-  uint32             max_endpoint_val;
-  get_endpoint_func  get_endpoint;
+  uint32             UNINIT_VAR(max_endpoint_val);
+  get_endpoint_func  UNINIT_VAR(get_endpoint);
   bool               can_match_multiple_values;  /* is not '=' */
   uint field_len= field->pack_length_in_rec();
   DBUG_ENTER("get_part_iter_for_interval_via_mapping");

=== modified file 'storage/myisam/ft_nlq_search.c'
--- a/storage/myisam/ft_nlq_search.c	2010-07-23 20:16:29 +0000
+++ b/storage/myisam/ft_nlq_search.c	2010-11-16 09:45:07 +0000
@@ -63,7 +63,7 @@ static int FT_SUPERDOC_cmp(void* cmp_arg
 
 static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
 {
-  int	       subkeys, r;
+  int	       UNINIT_VAR(subkeys), r;
   uint	       keylen, doc_cnt;
   FT_SUPERDOC  sdoc, *sptr;
   TREE_ELEMENT *selem;

=== modified file 'storage/myisammrg/myrg_open.c'
--- a/storage/myisammrg/myrg_open.c	2010-07-20 19:30:10 +0000
+++ b/storage/myisammrg/myrg_open.c	2010-11-16 09:45:07 +0000
@@ -220,7 +220,7 @@ MYRG_INFO *myrg_parent_open(const char *
                             int (*callback)(void*, const char*),
                             void *callback_param)
 {
-  MYRG_INFO *m_info;
+  MYRG_INFO *UNINIT_VAR(m_info);
   int       rc;
   int       errpos;
   int       save_errno;

=== modified file 'tests/mysql_client_test.c'
--- a/tests/mysql_client_test.c	2010-11-16 09:05:19 +0000
+++ b/tests/mysql_client_test.c	2010-11-17 16:42:28 +0000
@@ -1199,7 +1199,7 @@ my_bool fetch_n(const char **query_list,
 
 /* Separate thread query to test some cases */
 
-static my_bool thread_query(char *query)
+static my_bool thread_query(const char *query)
 {
   MYSQL *l_mysql;
   my_bool error;
@@ -1221,7 +1221,7 @@ static my_bool thread_query(char *query)
     goto end;
   }
   l_mysql->reconnect= 1;
-  if (mysql_query(l_mysql, (char *)query))
+  if (mysql_query(l_mysql, query))
   {
      fprintf(stderr, "Query failed (%s)\n", mysql_error(l_mysql));
      error= 1;
@@ -6447,7 +6447,7 @@ static void test_prepare_alter()
   rc= mysql_stmt_execute(stmt);
   check_execute(stmt, rc);
 
-  if (thread_query((char *)"ALTER TABLE test_prep_alter change id id_new varchar(20)"))
+  if (thread_query("ALTER TABLE test_prep_alter change id id_new varchar(20)"))
     exit(1);
 
   is_null= 1;

No bundle (reason: revision is a merge).
Thread
bzr commit into mysql-5.5-runtime branch (jon.hauglid:3188) Jon Olav Hauglid17 Nov