List:Commits« Previous MessageNext Message »
From:monty Date:August 2 2007 6:49am
Subject:bk commit into 5.1 tree (monty:1.2558)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of monty. When monty does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-08-02 07:49:29+03:00, monty@stripped +10 -0
  Set --debug-check if one uses DBUG_PUSH in all clients
  Fixed bug in query cache that made it impossible to run mysqld with --debug
  Fixed memory leaks in mysqldump and mysqltest
  Memory leaks associated with wrong usage of mysqltest is not fixed. To find these, run
  mysql-test-run --debug mysqltest

  client/mysql_upgrade.c@stripped, 2007-08-02 07:49:24+03:00, monty@stripped +1 -0
    Set --debug-check if one uses DBUG_PUSH

  client/mysqlcheck.c@stripped, 2007-08-02 07:49:24+03:00, monty@stripped +1 -0
    Set --debug-check if one uses DBUG_PUSH

  client/mysqldump.c@stripped, 2007-08-02 07:49:24+03:00, monty@stripped +43 -13
    Set --debug-check if one uses DBUG_PUSH
    Fixed several memory leaks

  client/mysqlimport.c@stripped, 2007-08-02 07:49:24+03:00, monty@stripped +1 -0
    Set --debug-check if one uses DBUG_PUSH

  client/mysqlshow.c@stripped, 2007-08-02 07:49:24+03:00, monty@stripped +1 -0
    Set --debug-check if one uses DBUG_PUSH

  client/mysqlslap.c@stripped, 2007-08-02 07:49:24+03:00, monty@stripped +1 -0
    Set --debug-check if one uses DBUG_PUSH

  client/mysqltest.c@stripped, 2007-08-02 07:49:24+03:00, monty@stripped +14 -10
    Set --debug-check if one uses DBUG_PUSH
    Fixed some memory leaks
    Removed MY_CHECK_ERROR argument to my_end() as mysqltest.test otherwise shows MANY
memory leaks

  dbug/dbug.c@stripped, 2007-08-02 07:49:24+03:00, monty@stripped +3 -4
    Fixed compiler warning
    Force flush of out_file on end
    Removed some wrong dbug_flush(0) commands that could cause crashes

  mysys/my_init.c@stripped, 2007-08-02 07:49:24+03:00, monty@stripped +3 -3
    Don't write memory usage if MY_GIVE_INFO is not given

  sql/sql_cache.cc@stripped, 2007-08-02 07:49:24+03:00, monty@stripped +4 -3
    Fixed bug in query cache that made it impossible to run mysqld with --debug

diff -Nrup a/client/mysql_upgrade.c b/client/mysql_upgrade.c
--- a/client/mysql_upgrade.c	2007-08-01 22:58:59 +03:00
+++ b/client/mysql_upgrade.c	2007-08-02 07:49:24 +03:00
@@ -218,6 +218,7 @@ get_one_option(int optid, const struct m
   case '#':
     DBUG_PUSH(argument ? argument : default_dbug_option);
     add_option= FALSE;
+    debug_check_flag= 1;
     break;
 
   case 'p':
diff -Nrup a/client/mysqlcheck.c b/client/mysqlcheck.c
--- a/client/mysqlcheck.c	2007-08-01 22:58:59 +03:00
+++ b/client/mysqlcheck.c	2007-08-02 07:49:24 +03:00
@@ -310,6 +310,7 @@ get_one_option(int optid, const struct m
     break;
   case '#':
     DBUG_PUSH(argument ? argument : "d:t:o");
+    debug_check_flag= 1;
     break;
 #include <sslopt-case.h>
   case OPT_TABLES:
diff -Nrup a/client/mysqldump.c b/client/mysqldump.c
--- a/client/mysqldump.c	2007-08-01 22:58:59 +03:00
+++ b/client/mysqldump.c	2007-08-02 07:49:24 +03:00
@@ -729,7 +729,7 @@ get_one_option(int optid, const struct m
     break;
   case '#':
     DBUG_PUSH(argument ? argument : default_dbug_option);
-    debug_info_flag= 1;
+    debug_check_flag= 1;
     break;
 #include <sslopt-case.h>
   case 'V': print_version(); exit(0);
@@ -2070,7 +2070,6 @@ static uint get_table_structure(char *ta
   int        len;
   MYSQL_RES  *result;
   MYSQL_ROW  row;
-
   DBUG_ENTER("get_table_structure");
   DBUG_PRINT("enter", ("db: %s  table: %s", db, table));
 
@@ -2472,6 +2471,7 @@ static uint get_table_structure(char *ta
           fprintf(sql_file, " (%s)",row[7]);      /* Sub key */
         check_io(sql_file);
       }
+      mysql_free_result(result);
       if (!opt_xml)
       {
         if (keynr)
@@ -2813,7 +2813,7 @@ static void dump_table(char *table, char
   /*
     The "table" could be a view.  If so, we don't do anything here.
   */
-  if (strcmp (table_type, "VIEW") == 0)
+  if (strcmp(table_type, "VIEW") == 0)
     DBUG_VOID_RETURN;
 
   /* Check --no-data flag */
@@ -2903,6 +2903,7 @@ static void dump_table(char *table, char
     if (mysql_real_query(mysql, query_string.str, query_string.length))
     {
       DB_error(mysql, "when executing 'SELECT INTO OUTFILE'");
+      dynstr_free(&query_string);
       DBUG_VOID_RETURN;
     }
   }
@@ -3257,8 +3258,8 @@ static void dump_table(char *table, char
       check_io(md_result_file);
     }
     mysql_free_result(res);
-    dynstr_free(&query_string);
   }
+  dynstr_free(&query_string);
   DBUG_VOID_RETURN;
 
 err:
@@ -3379,6 +3380,7 @@ static int dump_tablespaces(char* ts_whe
   char extra_format[]= "UNDO_BUFFER_SIZE=";
   char *ubs;
   char *endsemi;
+  DBUG_ENTER("dump_tablespaces");
 
   init_dynamic_string_checked(&sqlbuf,
                       "SELECT LOGFILE_GROUP_NAME,"
@@ -3410,6 +3412,7 @@ static int dump_tablespaces(char* ts_whe
   if (mysql_query(mysql, sqlbuf.str) ||
       !(tableres = mysql_store_result(mysql)))
   {
+    dynstr_free(&sqlbuf);
     if (mysql_errno(mysql) == ER_BAD_TABLE_ERROR ||
         mysql_errno(mysql) == ER_BAD_DB_ERROR ||
         mysql_errno(mysql) == ER_UNKNOWN_TABLE)
@@ -3418,12 +3421,12 @@ static int dump_tablespaces(char* ts_whe
               "\n--\n-- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES"
               " table on this server\n--\n");
       check_io(md_result_file);
-      return 0;
+      DBUG_RETURN(0);
     }
 
-    my_printf_error(0, "Error: Couldn't dump tablespaces %s",
+    my_printf_error(0, "Error: '%s' when trying to dump tablespaces",
                     MYF(0), mysql_error(mysql));
-    return 1;
+    DBUG_RETURN(1);
   }
 
   buf[0]= 0;
@@ -3475,6 +3478,7 @@ static int dump_tablespaces(char* ts_whe
     }
   }
   dynstr_free(&sqlbuf);
+  mysql_free_result(tableres);
   init_dynamic_string_checked(&sqlbuf,
                       "SELECT DISTINCT TABLESPACE_NAME,"
                       " FILE_NAME,"
@@ -3492,7 +3496,10 @@ static int dump_tablespaces(char* ts_whe
   dynstr_append_checked(&sqlbuf, " ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME");
 
   if (mysql_query_with_error_report(mysql, &tableres, sqlbuf.str))
-    return 1;
+  {
+    dynstr_free(&sqlbuf);
+    DBUG_RETURN(1);
+  }
 
   buf[0]= 0;
   while ((row= mysql_fetch_row(tableres)))
@@ -3538,8 +3545,9 @@ static int dump_tablespaces(char* ts_whe
     }
   }
 
+  mysql_free_result(tableres);
   dynstr_free(&sqlbuf);
-  return 0;
+  DBUG_RETURN(0);
 }
 
 static int dump_all_databases()
@@ -3626,8 +3634,11 @@ RETURN VALUES
   0        Success.
   1        Failure.
 */
+
 int init_dumping_tables(char *qdatabase)
 {
+  DBUG_ENTER("init_dumping_tables");
+
   if (!opt_create_db)
   {
     char qbuf[256];
@@ -3660,10 +3671,10 @@ int init_dumping_tables(char *qdatabase)
       {
         fprintf(md_result_file,"\n%s;\n",row[1]);
       }
+      mysql_free_result(dbinfo);
     }
   }
-
-  return 0;
+  DBUG_RETURN(0);
 } /* init_dumping_tables */
 
 
@@ -3931,8 +3942,13 @@ static int dump_selected_tables(char *db
     }
     else
     {
-       maybe_die(EX_ILLEGAL_TABLE, "Couldn't find table: \"%s\"", *table_names);
-       /* We shall countinue here, if --force was given */
+      if (!ignore_errors)
+      {
+        dynstr_free(&lock_tables_query);
+        free_root(&root, MYF(0));
+      }
+      maybe_die(EX_ILLEGAL_TABLE, "Couldn't find table: \"%s\"", *table_names);
+      /* We shall countinue here, if --force was given */
     }
   }
   end= pos;
@@ -3941,14 +3957,25 @@ static int dump_selected_tables(char *db
   {
     if (mysql_real_query(mysql, lock_tables_query.str,
                          lock_tables_query.length-1))
+    {
+      if (!ignore_errors)
+      {
+        dynstr_free(&lock_tables_query);
+        free_root(&root, MYF(0));
+      }
       DB_error(mysql, "when doing LOCK TABLES");
        /* We shall countinue here, if --force was given */
+    }
   }
   dynstr_free(&lock_tables_query);
   if (flush_logs)
   {
     if (mysql_refresh(mysql, REFRESH_LOG))
+    {
+      if (!ignore_errors)
+        free_root(&root, MYF(0));
       DB_error(mysql, "when doing refresh");
+    }
      /* We shall countinue here, if --force was given */
   }
   if (opt_xml)
@@ -4511,6 +4538,9 @@ static my_bool get_view_structure(char *
     if (!(table_res= mysql_store_result(mysql)) ||
         !(row= mysql_fetch_row(table_res)))
     {
+      if (table_res)
+        mysql_free_result(table_res);
+      dynstr_free(&ds_view);
       DB_error(mysql, "when trying to save the result of SHOW CREATE TABLE in ds_view.");
       DBUG_RETURN(1);
     }
diff -Nrup a/client/mysqlimport.c b/client/mysqlimport.c
--- a/client/mysqlimport.c	2007-08-01 22:59:00 +03:00
+++ b/client/mysqlimport.c	2007-08-02 07:49:24 +03:00
@@ -240,6 +240,7 @@ get_one_option(int optid, const struct m
     break;
   case '#':
     DBUG_PUSH(argument ? argument : "d:t:o");
+    debug_check_flag= 1;
     break;
 #include <sslopt-case.h>
   case 'V': print_version(); exit(0);
diff -Nrup a/client/mysqlshow.c b/client/mysqlshow.c
--- a/client/mysqlshow.c	2007-08-01 22:59:00 +03:00
+++ b/client/mysqlshow.c	2007-08-02 07:49:24 +03:00
@@ -299,6 +299,7 @@ get_one_option(int optid, const struct m
     break;
   case '#':
     DBUG_PUSH(argument ? argument : "d:t:o");
+    debug_check_flag= 1;
     break;
 #include <sslopt-case.h>
   case 'V':
diff -Nrup a/client/mysqlslap.c b/client/mysqlslap.c
--- a/client/mysqlslap.c	2007-08-01 22:59:00 +03:00
+++ b/client/mysqlslap.c	2007-08-02 07:49:24 +03:00
@@ -699,6 +699,7 @@ get_one_option(int optid, const struct m
     break;
   case '#':
     DBUG_PUSH(argument ? argument : default_dbug_option);
+    debug_check_flag= 1;
     break;
 #include <sslopt-case.h>
   case 'V':
diff -Nrup a/client/mysqltest.c b/client/mysqltest.c
--- a/client/mysqltest.c	2007-08-01 22:59:00 +03:00
+++ b/client/mysqltest.c	2007-08-02 07:49:24 +03:00
@@ -809,10 +809,9 @@ void free_used_memory()
 static void cleanup_and_exit(int exit_code)
 {
   free_used_memory();
-  my_end(my_end_arg | MY_CHECK_ERROR);
+  my_end(my_end_arg);
 
-  if (!silent)
-  {
+  if (!silent) {
     switch (exit_code) {
     case 1:
       printf("not ok\n");
@@ -1085,8 +1084,7 @@ void check_result(DYNAMIC_STRING* ds)
   DBUG_ENTER("check_result");
   DBUG_ASSERT(result_file_name);
 
-  switch (dyn_string_cmp(ds, result_file_name))
-  {
+  switch (dyn_string_cmp(ds, result_file_name)) {
   case RESULT_OK:
     break; /* ok */
   case RESULT_LENGTH_MISMATCH:
@@ -1930,7 +1928,10 @@ void do_exec(struct st_command *command)
                       command->first_argument, ds_cmd.str));
 
   if (!(res_file= my_popen(&ds_cmd, "r")) && command->abort_on_error)
+  {
+    dynstr_free(&ds_cmd);
     die("popen(\"%s\", \"r\") failed", command->first_argument);
+  }
 
   while (fgets(buf, sizeof(buf), res_file))
   {
@@ -1954,6 +1955,7 @@ void do_exec(struct st_command *command)
     {
       log_msg("exec of '%s failed, error: %d, status: %d, errno: %d",
               ds_cmd.str, error, status, errno);
+      dynstr_free(&ds_cmd);
       die("command \"%s\" failed", command->first_argument);
     }
 
@@ -1972,8 +1974,11 @@ void do_exec(struct st_command *command)
       }
     }
     if (!ok)
+    {
+      dynstr_free(&ds_cmd);
       die("command \"%s\" failed with wrong error: %d",
           command->first_argument, status);
+    }
   }
   else if (command->expected_errors.err[0].type == ERR_ERRNO &&
            command->expected_errors.err[0].code.errnum != 0)
@@ -1981,6 +1986,7 @@ void do_exec(struct st_command *command)
     /* Error code we wanted was != 0, i.e. not an expected success */
     log_msg("exec of '%s failed, error: %d, errno: %d",
             ds_cmd.str, error, errno);
+    dynstr_free(&ds_cmd);
     die("command \"%s\" succeeded - should have failed with errno %d...",
         command->first_argument, command->expected_errors.err[0].code.errnum);
   }
@@ -4632,6 +4638,7 @@ get_one_option(int optid, const struct m
   case '#':
 #ifndef DBUG_OFF
     DBUG_PUSH(argument ? argument : "d:t:S:i:O,/tmp/mysqltest.trace");
+    debug_check_flag= 1;
 #endif
     break;
   case 'r':
@@ -5388,11 +5395,8 @@ end:
   ds    - dynamic string which is used for output buffer
 
   NOTE
-  If there is an unexpected error this function will abort mysqltest
-  immediately.
-
-  RETURN VALUE
-  error - function will not return
+    If there is an unexpected error this function will abort mysqltest
+    immediately.
 */
 
 void handle_error(struct st_command *command,
diff -Nrup a/dbug/dbug.c b/dbug/dbug.c
--- a/dbug/dbug.c	2007-05-10 12:59:24 +03:00
+++ b/dbug/dbug.c	2007-08-02 07:49:24 +03:00
@@ -1184,7 +1184,7 @@ void _db_dump_(uint _line_, const char *
       fprintf(cs->stack->out_file, "%s: ", cs->func);
     }
     sprintf(dbuff,"%s: Memory: 0x%lx  Bytes: (%ld)\n",
-            keyword,(ulong) memory, length);
+            keyword, (ulong) memory, (long) length);
     (void) fputs(dbuff,cs->stack->out_file);
 
     pos=0;
@@ -1449,6 +1449,7 @@ static void FreeState(CODE_STATE *cs, st
     FreeList(state->p_functions);
   if (!is_shared(state, out_file))
     DBUGCloseFile(cs, state->out_file);
+  (void) fflush(cs->stack->out_file);
   if (state->prof_file)
     DBUGCloseFile(cs, state->prof_file);
   if (free_state)
@@ -1882,7 +1883,6 @@ static FILE *OpenProfile(CODE_STATE *cs,
   {
     (void) fprintf(cs->stack->out_file, ERR_OPEN, cs->process, name);
     perror("");
-    dbug_flush(0);
     (void) Delay(cs->stack->delay);
   }
   else
@@ -1892,7 +1892,6 @@ static FILE *OpenProfile(CODE_STATE *cs,
     {
       (void) fprintf(cs->stack->out_file, ERR_OPEN, cs->process, name);
       perror("");
-      dbug_flush(0);
     }
     else
     {
@@ -1931,7 +1930,7 @@ static void DBUGCloseFile(CODE_STATE *cs
     pthread_mutex_lock(&THR_LOCK_dbug);
     (void) fprintf(cs->stack->out_file, ERR_CLOSE, cs->process);
     perror("");
-    dbug_flush(0);
+    dbug_flush(cs);
   }
 }
 
diff -Nrup a/mysys/my_init.c b/mysys/my_init.c
--- a/mysys/my_init.c	2007-08-01 22:59:00 +03:00
+++ b/mysys/my_init.c	2007-08-02 07:49:24 +03:00
@@ -134,14 +134,14 @@ void my_end(int infoflag)
     We do not use DBUG_ENTER here, as after cleanup DBUG is no longer
     operational, so we cannot use DBUG_RETURN.
   */
-  DBUG_PRINT("info",("Shutting down"));
+  DBUG_PRINT("info",("Shutting down: infoflag: %d  print_info: %d",
+                     infoflag, print_info));
   if (!info_file)
   {
     info_file= stderr;
     print_info= 0;
   }
 
-  DBUG_PRINT("info",("Shutting down: print_info: %d", print_info));
   if ((infoflag & MY_CHECK_ERROR) || print_info)
 
   {					/* Test if some file is left open */
@@ -186,7 +186,7 @@ Voluntary context switches %ld, Involunt
     fprintf(info_file,"\nRun time: %.1f\n",(double) clock()/CLOCKS_PER_SEC);
 #endif
 #if defined(SAFEMALLOC)
-    TERMINATE(stderr, 1);		/* Give statistic on screen */
+    TERMINATE(stderr, (infoflag & MY_GIVE_INFO) != 0);
 #elif defined(__WIN__) && defined(_MSC_VER)
    _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE );
    _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDERR );
diff -Nrup a/sql/sql_cache.cc b/sql/sql_cache.cc
--- a/sql/sql_cache.cc	2007-07-16 21:34:33 +03:00
+++ b/sql/sql_cache.cc	2007-08-02 07:49:24 +03:00
@@ -862,6 +862,7 @@ Query_cache::Query_cache(ulong query_cac
 
 ulong Query_cache::resize(ulong query_cache_size_arg)
 {
+  ulong new_query_cache_size;
   DBUG_ENTER("Query_cache::resize");
   DBUG_PRINT("qcache", ("from %lu to %lu",query_cache_size,
 			query_cache_size_arg));
@@ -876,13 +877,13 @@ ulong Query_cache::resize(ulong query_ca
   free_cache();
 
   query_cache_size= query_cache_size_arg;
-  ulong new_query_cache_size= init_cache();
-
-  DBUG_EXECUTE("check_querycache",check_integrity(0););
+  new_query_cache_size= init_cache();
 
   STRUCT_LOCK(&structure_guard_mutex);
   m_cache_status= Query_cache::NO_FLUSH_IN_PROGRESS;
   pthread_cond_signal(&COND_cache_status_changed);
+  if (new_query_cache_size)
+    DBUG_EXECUTE("check_querycache",check_integrity(1););
   STRUCT_UNLOCK(&structure_guard_mutex);
 
   DBUG_RETURN(new_query_cache_size);
Thread
bk commit into 5.1 tree (monty:1.2558)monty2 Aug