Fixes for Opensolaris (to get buildbot green)
- Fixed memory leaks in mysqldump - Fixed printf of NULL which caused crashes on OpenSolaris when using --debug - Fixed realloc() problem that caused out of memory when running mysqldump.test on OpenSolaris client/mysqldump.c: Fixed memory leaks Fixed printf of NULL which caused crashes on OpenSolaris when using --debug client/mysqltest.cc: Fixed printf of NULL which caused crashes on OpenSolaris when using --debug include/my_global.h: Added simple macro val_or_null() to simplify detecting of NULL strings for printf sql/handler.cc: Fixed printf of NULL which caused crashes on OpenSolaris when using --debug sql/sql_db.cc: Fixed printf of NULL which caused crashes on OpenSolaris when using --debug Removed testing of 'new_db_name' as this is guranteed never NULL sql/sql_show.cc: Fixed printf of NULL which caused crashes on OpenSolaris when using --debug storage/csv/ha_tina.cc: Fixed realloc() problem that caused out of memory when running mysqldump.test on OpenSolaris (OpenSolaris default malloc() can't handle a lot of reallocs() of strings that are growing one byte at a time) This did speed up logging to cvs with a magnitude for large strings.
This commit is contained in:
parent
cfbee9359c
commit
5a2f40d48a
@ -1441,6 +1441,7 @@ static void free_resources()
|
||||
if (md_result_file && md_result_file != stdout)
|
||||
my_fclose(md_result_file, MYF(0));
|
||||
my_free(opt_password, MYF(MY_ALLOW_ZERO_PTR));
|
||||
my_free(current_host, MYF(MY_ALLOW_ZERO_PTR));
|
||||
if (hash_inited(&ignore_table))
|
||||
hash_free(&ignore_table);
|
||||
if (extended_insert)
|
||||
@ -4222,7 +4223,7 @@ static char *get_actual_table_name(const char *old_table_name, MEM_ROOT *root)
|
||||
}
|
||||
mysql_free_result(table_res);
|
||||
}
|
||||
DBUG_PRINT("exit", ("new_table_name: %s", name));
|
||||
DBUG_PRINT("exit", ("new_table_name: %s", val_or_null(name)));
|
||||
DBUG_RETURN(name);
|
||||
}
|
||||
|
||||
@ -4818,6 +4819,7 @@ static my_bool get_view_structure(char *table, char* db)
|
||||
field= mysql_fetch_field_direct(table_res, 0);
|
||||
if (strcmp(field->name, "View") != 0)
|
||||
{
|
||||
mysql_free_result(table_res);
|
||||
switch_character_set_results(mysql, default_charset);
|
||||
verbose_msg("-- It's base table, skipped\n");
|
||||
DBUG_RETURN(0);
|
||||
@ -4827,8 +4829,10 @@ static my_bool get_view_structure(char *table, char* db)
|
||||
if (path)
|
||||
{
|
||||
if (!(sql_file= open_sql_file_for_table(table, O_WRONLY)))
|
||||
{
|
||||
mysql_free_result(table_res);
|
||||
DBUG_RETURN(1);
|
||||
|
||||
}
|
||||
write_header(sql_file, db);
|
||||
}
|
||||
|
||||
|
@ -541,7 +541,7 @@ public:
|
||||
{
|
||||
DBUG_ENTER("LogFile::open");
|
||||
DBUG_PRINT("enter", ("dir: '%s', name: '%s'",
|
||||
dir, name));
|
||||
val_or_null(dir), val_or_null(name)));
|
||||
if (!name)
|
||||
{
|
||||
m_file= stdout;
|
||||
|
@ -90,6 +90,9 @@
|
||||
#define IF_WIN(A,B) (B)
|
||||
#endif
|
||||
|
||||
/* Make it easier to print null strings */
|
||||
#define val_or_null(A) ((A) ? (const char*) (A) : "(null)")
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
#ifdef WITH_NDB_BINLOG
|
||||
#define HAVE_NDB_BINLOG 1
|
||||
|
@ -3865,7 +3865,8 @@ ha_find_files(THD *thd,const char *db,const char *path,
|
||||
int error= 0;
|
||||
DBUG_ENTER("ha_find_files");
|
||||
DBUG_PRINT("enter", ("db: '%s' path: '%s' wild: '%s' dir: %d",
|
||||
db, path, wild ? wild : "NULL", dir));
|
||||
val_or_null(db), val_or_null(path),
|
||||
val_or_null(wild), dir));
|
||||
st_find_files_args args= {db, path, wild, dir, files};
|
||||
|
||||
plugin_foreach(thd, find_files_handlerton,
|
||||
|
@ -1539,12 +1539,9 @@ bool mysql_change_db(THD *thd, const LEX_STRING *new_db_name, bool force_switch)
|
||||
Security_context *sctx= thd->security_ctx;
|
||||
ulong db_access= sctx->db_access;
|
||||
CHARSET_INFO *db_default_cl;
|
||||
|
||||
DBUG_ENTER("mysql_change_db");
|
||||
DBUG_PRINT("enter",("name: '%s'", new_db_name->str));
|
||||
|
||||
if (new_db_name == NULL ||
|
||||
new_db_name->length == 0)
|
||||
if (new_db_name->length == 0)
|
||||
{
|
||||
if (force_switch)
|
||||
{
|
||||
@ -1553,8 +1550,7 @@ bool mysql_change_db(THD *thd, const LEX_STRING *new_db_name, bool force_switch)
|
||||
after loading stored program. The thing is that loading of stored
|
||||
program can happen when there is no current database.
|
||||
|
||||
TODO: actually, new_db_name and new_db_name->str seem to be always
|
||||
non-NULL. In case of stored program, new_db_name->str == "" and
|
||||
In case of stored program, new_db_name->str == "" and
|
||||
new_db_name->length == 0.
|
||||
*/
|
||||
|
||||
@ -1569,6 +1565,7 @@ bool mysql_change_db(THD *thd, const LEX_STRING *new_db_name, bool force_switch)
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
}
|
||||
DBUG_PRINT("enter",("name: '%s'", new_db_name->str));
|
||||
|
||||
if (is_schema_db(new_db_name->str, new_db_name->length))
|
||||
{
|
||||
|
@ -3563,9 +3563,9 @@ int fill_schema_schemata(THD *thd, TABLE_LIST *tables, COND *cond)
|
||||
|
||||
if (get_lookup_field_values(thd, cond, tables, &lookup_field_vals))
|
||||
DBUG_RETURN(0);
|
||||
DBUG_PRINT("INDEX VALUES",("db_name='%s', table_name='%s'",
|
||||
lookup_field_vals.db_value.str,
|
||||
lookup_field_vals.table_value.str));
|
||||
DBUG_PRINT("INDEX VALUES",("db_name: %s table_name: %s",
|
||||
val_or_null(lookup_field_vals.db_value.str),
|
||||
val_or_null(lookup_field_vals.table_value.str)));
|
||||
if (make_db_list(thd, &db_names, &lookup_field_vals,
|
||||
&with_i_schema))
|
||||
DBUG_RETURN(1);
|
||||
|
@ -489,6 +489,9 @@ int ha_tina::encode_quote(uchar *buf)
|
||||
ptr= attribute.ptr();
|
||||
end_ptr= attribute.length() + ptr;
|
||||
|
||||
if (buffer.realloc(attribute.length()*2+2))
|
||||
return 0; // Failure
|
||||
|
||||
buffer.append('"');
|
||||
|
||||
while (ptr < end_ptr)
|
||||
|
Loading…
x
Reference in New Issue
Block a user