Commit f9ea4275 authored by unknown's avatar unknown

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:
  Set --debug-check if one uses DBUG_PUSH
client/mysqlcheck.c:
  Set --debug-check if one uses DBUG_PUSH
client/mysqldump.c:
  Set --debug-check if one uses DBUG_PUSH
  Fixed several memory leaks
client/mysqlimport.c:
  Set --debug-check if one uses DBUG_PUSH
client/mysqlshow.c:
  Set --debug-check if one uses DBUG_PUSH
client/mysqlslap.c:
  Set --debug-check if one uses DBUG_PUSH
client/mysqltest.c:
  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:
  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:
  Don't write memory usage if MY_GIVE_INFO is not given
sql/sql_cache.cc:
  Fixed bug in query cache that made it impossible to run mysqld with --debug
parent 0c9a3e59
...@@ -218,6 +218,7 @@ get_one_option(int optid, const struct my_option *opt, ...@@ -218,6 +218,7 @@ get_one_option(int optid, const struct my_option *opt,
case '#': case '#':
DBUG_PUSH(argument ? argument : default_dbug_option); DBUG_PUSH(argument ? argument : default_dbug_option);
add_option= FALSE; add_option= FALSE;
debug_check_flag= 1;
break; break;
case 'p': case 'p':
......
...@@ -310,6 +310,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), ...@@ -310,6 +310,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
break; break;
case '#': case '#':
DBUG_PUSH(argument ? argument : "d:t:o"); DBUG_PUSH(argument ? argument : "d:t:o");
debug_check_flag= 1;
break; break;
#include <sslopt-case.h> #include <sslopt-case.h>
case OPT_TABLES: case OPT_TABLES:
......
...@@ -729,7 +729,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), ...@@ -729,7 +729,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
break; break;
case '#': case '#':
DBUG_PUSH(argument ? argument : default_dbug_option); DBUG_PUSH(argument ? argument : default_dbug_option);
debug_info_flag= 1; debug_check_flag= 1;
break; break;
#include <sslopt-case.h> #include <sslopt-case.h>
case 'V': print_version(); exit(0); case 'V': print_version(); exit(0);
...@@ -2070,7 +2070,6 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -2070,7 +2070,6 @@ static uint get_table_structure(char *table, char *db, char *table_type,
int len; int len;
MYSQL_RES *result; MYSQL_RES *result;
MYSQL_ROW row; MYSQL_ROW row;
DBUG_ENTER("get_table_structure"); DBUG_ENTER("get_table_structure");
DBUG_PRINT("enter", ("db: %s table: %s", db, table)); DBUG_PRINT("enter", ("db: %s table: %s", db, table));
...@@ -2472,6 +2471,7 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -2472,6 +2471,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
fprintf(sql_file, " (%s)",row[7]); /* Sub key */ fprintf(sql_file, " (%s)",row[7]); /* Sub key */
check_io(sql_file); check_io(sql_file);
} }
mysql_free_result(result);
if (!opt_xml) if (!opt_xml)
{ {
if (keynr) if (keynr)
...@@ -2813,7 +2813,7 @@ static void dump_table(char *table, char *db) ...@@ -2813,7 +2813,7 @@ static void dump_table(char *table, char *db)
/* /*
The "table" could be a view. If so, we don't do anything here. 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; DBUG_VOID_RETURN;
/* Check --no-data flag */ /* Check --no-data flag */
...@@ -2903,6 +2903,7 @@ static void dump_table(char *table, char *db) ...@@ -2903,6 +2903,7 @@ static void dump_table(char *table, char *db)
if (mysql_real_query(mysql, query_string.str, query_string.length)) if (mysql_real_query(mysql, query_string.str, query_string.length))
{ {
DB_error(mysql, "when executing 'SELECT INTO OUTFILE'"); DB_error(mysql, "when executing 'SELECT INTO OUTFILE'");
dynstr_free(&query_string);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
} }
...@@ -3257,8 +3258,8 @@ static void dump_table(char *table, char *db) ...@@ -3257,8 +3258,8 @@ static void dump_table(char *table, char *db)
check_io(md_result_file); check_io(md_result_file);
} }
mysql_free_result(res); mysql_free_result(res);
dynstr_free(&query_string);
} }
dynstr_free(&query_string);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
err: err:
...@@ -3379,6 +3380,7 @@ static int dump_tablespaces(char* ts_where) ...@@ -3379,6 +3380,7 @@ static int dump_tablespaces(char* ts_where)
char extra_format[]= "UNDO_BUFFER_SIZE="; char extra_format[]= "UNDO_BUFFER_SIZE=";
char *ubs; char *ubs;
char *endsemi; char *endsemi;
DBUG_ENTER("dump_tablespaces");
init_dynamic_string_checked(&sqlbuf, init_dynamic_string_checked(&sqlbuf,
"SELECT LOGFILE_GROUP_NAME," "SELECT LOGFILE_GROUP_NAME,"
...@@ -3410,6 +3412,7 @@ static int dump_tablespaces(char* ts_where) ...@@ -3410,6 +3412,7 @@ static int dump_tablespaces(char* ts_where)
if (mysql_query(mysql, sqlbuf.str) || if (mysql_query(mysql, sqlbuf.str) ||
!(tableres = mysql_store_result(mysql))) !(tableres = mysql_store_result(mysql)))
{ {
dynstr_free(&sqlbuf);
if (mysql_errno(mysql) == ER_BAD_TABLE_ERROR || if (mysql_errno(mysql) == ER_BAD_TABLE_ERROR ||
mysql_errno(mysql) == ER_BAD_DB_ERROR || mysql_errno(mysql) == ER_BAD_DB_ERROR ||
mysql_errno(mysql) == ER_UNKNOWN_TABLE) mysql_errno(mysql) == ER_UNKNOWN_TABLE)
...@@ -3418,12 +3421,12 @@ static int dump_tablespaces(char* ts_where) ...@@ -3418,12 +3421,12 @@ static int dump_tablespaces(char* ts_where)
"\n--\n-- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES" "\n--\n-- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES"
" table on this server\n--\n"); " table on this server\n--\n");
check_io(md_result_file); 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)); MYF(0), mysql_error(mysql));
return 1; DBUG_RETURN(1);
} }
buf[0]= 0; buf[0]= 0;
...@@ -3475,6 +3478,7 @@ static int dump_tablespaces(char* ts_where) ...@@ -3475,6 +3478,7 @@ static int dump_tablespaces(char* ts_where)
} }
} }
dynstr_free(&sqlbuf); dynstr_free(&sqlbuf);
mysql_free_result(tableres);
init_dynamic_string_checked(&sqlbuf, init_dynamic_string_checked(&sqlbuf,
"SELECT DISTINCT TABLESPACE_NAME," "SELECT DISTINCT TABLESPACE_NAME,"
" FILE_NAME," " FILE_NAME,"
...@@ -3492,7 +3496,10 @@ static int dump_tablespaces(char* ts_where) ...@@ -3492,7 +3496,10 @@ static int dump_tablespaces(char* ts_where)
dynstr_append_checked(&sqlbuf, " ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME"); dynstr_append_checked(&sqlbuf, " ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME");
if (mysql_query_with_error_report(mysql, &tableres, sqlbuf.str)) if (mysql_query_with_error_report(mysql, &tableres, sqlbuf.str))
return 1; {
dynstr_free(&sqlbuf);
DBUG_RETURN(1);
}
buf[0]= 0; buf[0]= 0;
while ((row= mysql_fetch_row(tableres))) while ((row= mysql_fetch_row(tableres)))
...@@ -3538,8 +3545,9 @@ static int dump_tablespaces(char* ts_where) ...@@ -3538,8 +3545,9 @@ static int dump_tablespaces(char* ts_where)
} }
} }
mysql_free_result(tableres);
dynstr_free(&sqlbuf); dynstr_free(&sqlbuf);
return 0; DBUG_RETURN(0);
} }
static int dump_all_databases() static int dump_all_databases()
...@@ -3626,8 +3634,11 @@ RETURN VALUES ...@@ -3626,8 +3634,11 @@ RETURN VALUES
0 Success. 0 Success.
1 Failure. 1 Failure.
*/ */
int init_dumping_tables(char *qdatabase) int init_dumping_tables(char *qdatabase)
{ {
DBUG_ENTER("init_dumping_tables");
if (!opt_create_db) if (!opt_create_db)
{ {
char qbuf[256]; char qbuf[256];
...@@ -3660,10 +3671,10 @@ int init_dumping_tables(char *qdatabase) ...@@ -3660,10 +3671,10 @@ int init_dumping_tables(char *qdatabase)
{ {
fprintf(md_result_file,"\n%s;\n",row[1]); fprintf(md_result_file,"\n%s;\n",row[1]);
} }
mysql_free_result(dbinfo);
} }
} }
DBUG_RETURN(0);
return 0;
} /* init_dumping_tables */ } /* init_dumping_tables */
...@@ -3931,6 +3942,11 @@ static int dump_selected_tables(char *db, char **table_names, int tables) ...@@ -3931,6 +3942,11 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
} }
else else
{ {
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); maybe_die(EX_ILLEGAL_TABLE, "Couldn't find table: \"%s\"", *table_names);
/* We shall countinue here, if --force was given */ /* We shall countinue here, if --force was given */
} }
...@@ -3941,14 +3957,25 @@ static int dump_selected_tables(char *db, char **table_names, int tables) ...@@ -3941,14 +3957,25 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
{ {
if (mysql_real_query(mysql, lock_tables_query.str, if (mysql_real_query(mysql, lock_tables_query.str,
lock_tables_query.length-1)) 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"); DB_error(mysql, "when doing LOCK TABLES");
/* We shall countinue here, if --force was given */ /* We shall countinue here, if --force was given */
} }
}
dynstr_free(&lock_tables_query); dynstr_free(&lock_tables_query);
if (flush_logs) if (flush_logs)
{ {
if (mysql_refresh(mysql, REFRESH_LOG)) if (mysql_refresh(mysql, REFRESH_LOG))
{
if (!ignore_errors)
free_root(&root, MYF(0));
DB_error(mysql, "when doing refresh"); DB_error(mysql, "when doing refresh");
}
/* We shall countinue here, if --force was given */ /* We shall countinue here, if --force was given */
} }
if (opt_xml) if (opt_xml)
...@@ -4511,6 +4538,9 @@ static my_bool get_view_structure(char *table, char* db) ...@@ -4511,6 +4538,9 @@ static my_bool get_view_structure(char *table, char* db)
if (!(table_res= mysql_store_result(mysql)) || if (!(table_res= mysql_store_result(mysql)) ||
!(row= mysql_fetch_row(table_res))) !(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."); DB_error(mysql, "when trying to save the result of SHOW CREATE TABLE in ds_view.");
DBUG_RETURN(1); DBUG_RETURN(1);
} }
......
...@@ -240,6 +240,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), ...@@ -240,6 +240,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
break; break;
case '#': case '#':
DBUG_PUSH(argument ? argument : "d:t:o"); DBUG_PUSH(argument ? argument : "d:t:o");
debug_check_flag= 1;
break; break;
#include <sslopt-case.h> #include <sslopt-case.h>
case 'V': print_version(); exit(0); case 'V': print_version(); exit(0);
......
...@@ -299,6 +299,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), ...@@ -299,6 +299,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
break; break;
case '#': case '#':
DBUG_PUSH(argument ? argument : "d:t:o"); DBUG_PUSH(argument ? argument : "d:t:o");
debug_check_flag= 1;
break; break;
#include <sslopt-case.h> #include <sslopt-case.h>
case 'V': case 'V':
......
...@@ -699,6 +699,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), ...@@ -699,6 +699,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
break; break;
case '#': case '#':
DBUG_PUSH(argument ? argument : default_dbug_option); DBUG_PUSH(argument ? argument : default_dbug_option);
debug_check_flag= 1;
break; break;
#include <sslopt-case.h> #include <sslopt-case.h>
case 'V': case 'V':
......
...@@ -809,10 +809,9 @@ void free_used_memory() ...@@ -809,10 +809,9 @@ void free_used_memory()
static void cleanup_and_exit(int exit_code) static void cleanup_and_exit(int exit_code)
{ {
free_used_memory(); free_used_memory();
my_end(my_end_arg | MY_CHECK_ERROR); my_end(my_end_arg);
if (!silent) if (!silent) {
{
switch (exit_code) { switch (exit_code) {
case 1: case 1:
printf("not ok\n"); printf("not ok\n");
...@@ -1085,8 +1084,7 @@ void check_result(DYNAMIC_STRING* ds) ...@@ -1085,8 +1084,7 @@ void check_result(DYNAMIC_STRING* ds)
DBUG_ENTER("check_result"); DBUG_ENTER("check_result");
DBUG_ASSERT(result_file_name); DBUG_ASSERT(result_file_name);
switch (dyn_string_cmp(ds, result_file_name)) switch (dyn_string_cmp(ds, result_file_name)) {
{
case RESULT_OK: case RESULT_OK:
break; /* ok */ break; /* ok */
case RESULT_LENGTH_MISMATCH: case RESULT_LENGTH_MISMATCH:
...@@ -1930,7 +1928,10 @@ void do_exec(struct st_command *command) ...@@ -1930,7 +1928,10 @@ void do_exec(struct st_command *command)
command->first_argument, ds_cmd.str)); command->first_argument, ds_cmd.str));
if (!(res_file= my_popen(&ds_cmd, "r")) && command->abort_on_error) if (!(res_file= my_popen(&ds_cmd, "r")) && command->abort_on_error)
{
dynstr_free(&ds_cmd);
die("popen(\"%s\", \"r\") failed", command->first_argument); die("popen(\"%s\", \"r\") failed", command->first_argument);
}
while (fgets(buf, sizeof(buf), res_file)) while (fgets(buf, sizeof(buf), res_file))
{ {
...@@ -1954,6 +1955,7 @@ void do_exec(struct st_command *command) ...@@ -1954,6 +1955,7 @@ void do_exec(struct st_command *command)
{ {
log_msg("exec of '%s failed, error: %d, status: %d, errno: %d", log_msg("exec of '%s failed, error: %d, status: %d, errno: %d",
ds_cmd.str, error, status, errno); ds_cmd.str, error, status, errno);
dynstr_free(&ds_cmd);
die("command \"%s\" failed", command->first_argument); die("command \"%s\" failed", command->first_argument);
} }
...@@ -1972,15 +1974,19 @@ void do_exec(struct st_command *command) ...@@ -1972,15 +1974,19 @@ void do_exec(struct st_command *command)
} }
} }
if (!ok) if (!ok)
{
dynstr_free(&ds_cmd);
die("command \"%s\" failed with wrong error: %d", die("command \"%s\" failed with wrong error: %d",
command->first_argument, status); command->first_argument, status);
} }
}
else if (command->expected_errors.err[0].type == ERR_ERRNO && else if (command->expected_errors.err[0].type == ERR_ERRNO &&
command->expected_errors.err[0].code.errnum != 0) command->expected_errors.err[0].code.errnum != 0)
{ {
/* Error code we wanted was != 0, i.e. not an expected success */ /* Error code we wanted was != 0, i.e. not an expected success */
log_msg("exec of '%s failed, error: %d, errno: %d", log_msg("exec of '%s failed, error: %d, errno: %d",
ds_cmd.str, error, errno); ds_cmd.str, error, errno);
dynstr_free(&ds_cmd);
die("command \"%s\" succeeded - should have failed with errno %d...", die("command \"%s\" succeeded - should have failed with errno %d...",
command->first_argument, command->expected_errors.err[0].code.errnum); command->first_argument, command->expected_errors.err[0].code.errnum);
} }
...@@ -4632,6 +4638,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), ...@@ -4632,6 +4638,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
case '#': case '#':
#ifndef DBUG_OFF #ifndef DBUG_OFF
DBUG_PUSH(argument ? argument : "d:t:S:i:O,/tmp/mysqltest.trace"); DBUG_PUSH(argument ? argument : "d:t:S:i:O,/tmp/mysqltest.trace");
debug_check_flag= 1;
#endif #endif
break; break;
case 'r': case 'r':
...@@ -5390,9 +5397,6 @@ void run_query_normal(struct st_connection *cn, struct st_command *command, ...@@ -5390,9 +5397,6 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
NOTE NOTE
If there is an unexpected error this function will abort mysqltest If there is an unexpected error this function will abort mysqltest
immediately. immediately.
RETURN VALUE
error - function will not return
*/ */
void handle_error(struct st_command *command, void handle_error(struct st_command *command,
......
...@@ -1184,7 +1184,7 @@ void _db_dump_(uint _line_, const char *keyword, ...@@ -1184,7 +1184,7 @@ void _db_dump_(uint _line_, const char *keyword,
fprintf(cs->stack->out_file, "%s: ", cs->func); fprintf(cs->stack->out_file, "%s: ", cs->func);
} }
sprintf(dbuff,"%s: Memory: 0x%lx Bytes: (%ld)\n", 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); (void) fputs(dbuff,cs->stack->out_file);
pos=0; pos=0;
...@@ -1449,6 +1449,7 @@ static void FreeState(CODE_STATE *cs, struct settings *state, int free_state) ...@@ -1449,6 +1449,7 @@ static void FreeState(CODE_STATE *cs, struct settings *state, int free_state)
FreeList(state->p_functions); FreeList(state->p_functions);
if (!is_shared(state, out_file)) if (!is_shared(state, out_file))
DBUGCloseFile(cs, state->out_file); DBUGCloseFile(cs, state->out_file);
(void) fflush(cs->stack->out_file);
if (state->prof_file) if (state->prof_file)
DBUGCloseFile(cs, state->prof_file); DBUGCloseFile(cs, state->prof_file);
if (free_state) if (free_state)
...@@ -1882,7 +1883,6 @@ static FILE *OpenProfile(CODE_STATE *cs, const char *name) ...@@ -1882,7 +1883,6 @@ static FILE *OpenProfile(CODE_STATE *cs, const char *name)
{ {
(void) fprintf(cs->stack->out_file, ERR_OPEN, cs->process, name); (void) fprintf(cs->stack->out_file, ERR_OPEN, cs->process, name);
perror(""); perror("");
dbug_flush(0);
(void) Delay(cs->stack->delay); (void) Delay(cs->stack->delay);
} }
else else
...@@ -1892,7 +1892,6 @@ static FILE *OpenProfile(CODE_STATE *cs, const char *name) ...@@ -1892,7 +1892,6 @@ static FILE *OpenProfile(CODE_STATE *cs, const char *name)
{ {
(void) fprintf(cs->stack->out_file, ERR_OPEN, cs->process, name); (void) fprintf(cs->stack->out_file, ERR_OPEN, cs->process, name);
perror(""); perror("");
dbug_flush(0);
} }
else else
{ {
...@@ -1931,7 +1930,7 @@ static void DBUGCloseFile(CODE_STATE *cs, FILE *fp) ...@@ -1931,7 +1930,7 @@ static void DBUGCloseFile(CODE_STATE *cs, FILE *fp)
pthread_mutex_lock(&THR_LOCK_dbug); pthread_mutex_lock(&THR_LOCK_dbug);
(void) fprintf(cs->stack->out_file, ERR_CLOSE, cs->process); (void) fprintf(cs->stack->out_file, ERR_CLOSE, cs->process);
perror(""); perror("");
dbug_flush(0); dbug_flush(cs);
} }
} }
......
...@@ -134,14 +134,14 @@ void my_end(int infoflag) ...@@ -134,14 +134,14 @@ void my_end(int infoflag)
We do not use DBUG_ENTER here, as after cleanup DBUG is no longer We do not use DBUG_ENTER here, as after cleanup DBUG is no longer
operational, so we cannot use DBUG_RETURN. 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) if (!info_file)
{ {
info_file= stderr; info_file= stderr;
print_info= 0; print_info= 0;
} }
DBUG_PRINT("info",("Shutting down: print_info: %d", print_info));
if ((infoflag & MY_CHECK_ERROR) || print_info) if ((infoflag & MY_CHECK_ERROR) || print_info)
{ /* Test if some file is left open */ { /* Test if some file is left open */
...@@ -186,7 +186,7 @@ Voluntary context switches %ld, Involuntary context switches %ld\n", ...@@ -186,7 +186,7 @@ Voluntary context switches %ld, Involuntary context switches %ld\n",
fprintf(info_file,"\nRun time: %.1f\n",(double) clock()/CLOCKS_PER_SEC); fprintf(info_file,"\nRun time: %.1f\n",(double) clock()/CLOCKS_PER_SEC);
#endif #endif
#if defined(SAFEMALLOC) #if defined(SAFEMALLOC)
TERMINATE(stderr, 1); /* Give statistic on screen */ TERMINATE(stderr, (infoflag & MY_GIVE_INFO) != 0);
#elif defined(__WIN__) && defined(_MSC_VER) #elif defined(__WIN__) && defined(_MSC_VER)
_CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE ); _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE );
_CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDERR ); _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDERR );
......
...@@ -862,6 +862,7 @@ Query_cache::Query_cache(ulong query_cache_limit_arg, ...@@ -862,6 +862,7 @@ Query_cache::Query_cache(ulong query_cache_limit_arg,
ulong Query_cache::resize(ulong query_cache_size_arg) ulong Query_cache::resize(ulong query_cache_size_arg)
{ {
ulong new_query_cache_size;
DBUG_ENTER("Query_cache::resize"); DBUG_ENTER("Query_cache::resize");
DBUG_PRINT("qcache", ("from %lu to %lu",query_cache_size, DBUG_PRINT("qcache", ("from %lu to %lu",query_cache_size,
query_cache_size_arg)); query_cache_size_arg));
...@@ -876,13 +877,13 @@ ulong Query_cache::resize(ulong query_cache_size_arg) ...@@ -876,13 +877,13 @@ ulong Query_cache::resize(ulong query_cache_size_arg)
free_cache(); free_cache();
query_cache_size= query_cache_size_arg; query_cache_size= query_cache_size_arg;
ulong new_query_cache_size= init_cache(); new_query_cache_size= init_cache();
DBUG_EXECUTE("check_querycache",check_integrity(0););
STRUCT_LOCK(&structure_guard_mutex); STRUCT_LOCK(&structure_guard_mutex);
m_cache_status= Query_cache::NO_FLUSH_IN_PROGRESS; m_cache_status= Query_cache::NO_FLUSH_IN_PROGRESS;
pthread_cond_signal(&COND_cache_status_changed); pthread_cond_signal(&COND_cache_status_changed);
if (new_query_cache_size)
DBUG_EXECUTE("check_querycache",check_integrity(1););
STRUCT_UNLOCK(&structure_guard_mutex); STRUCT_UNLOCK(&structure_guard_mutex);
DBUG_RETURN(new_query_cache_size); DBUG_RETURN(new_query_cache_size);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment