diff options
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item_strfunc.cc | 5 | ||||
-rw-r--r-- | sql/mysqld.cc | 3 | ||||
-rw-r--r-- | sql/slave.cc | 6 | ||||
-rw-r--r-- | sql/sql_string.h | 1 |
4 files changed, 13 insertions, 2 deletions
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index d3493e1fad1..995627766c0 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -984,7 +984,10 @@ String *Item_func_left::val_str(String *str) return &my_empty_string; if (res->length() <= (uint) length) return res; - str_value.set(*res, 0, res->charpos(length)); + if (&str_value == res) + str_value.length(res->charpos(length)); + else + str_value.set(*res, 0, res->charpos(length)); return &str_value; } diff --git a/sql/mysqld.cc b/sql/mysqld.cc index c81a888d2e9..48a2e1fbc71 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2535,7 +2535,8 @@ server."); if (opt_error_log) { if (!log_error_file_ptr[0]) - fn_format(log_error_file, glob_hostname, mysql_data_home, ".err", 0); + fn_format(log_error_file, glob_hostname, mysql_data_home, ".err", + MY_REPLACE_EXT); /* replace '.<domain>' by '.err', bug#4997 */ else fn_format(log_error_file, log_error_file_ptr, mysql_data_home, ".err", MY_UNPACK_FILENAME | MY_SAFE_PATH); diff --git a/sql/slave.cc b/sql/slave.cc index 7e46fb81053..0fe525d766f 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -1236,6 +1236,12 @@ not always make sense; please check the manual before using it)."; /* Check that the master's global character_set_server and ours are the same. Not fatal if query fails (old master?). + Note that we don't check for equality of global character_set_client and + collation_connection (neither do we prevent their setting in + set_var.cc). That's because from what I (Guilhem) have tested, the global + values of these 2 are never used (new connections don't use them). + We don't test equality of global collation_database either as it's is + going to be deprecated (made read-only) in 4.1 very soon. */ if (!mysql_real_query(mysql, "SELECT @@GLOBAL.COLLATION_SERVER", 32) && (master_res= mysql_store_result(mysql))) diff --git a/sql/sql_string.h b/sql/sql_string.h index 01329c45a98..0179b3ebadc 100644 --- a/sql/sql_string.h +++ b/sql/sql_string.h @@ -98,6 +98,7 @@ public: void set(String &str,uint32 offset,uint32 arg_length) { + DBUG_ASSERT(&str != this); free(); Ptr=(char*) str.ptr()+offset; str_length=arg_length; alloced=0; if (str.Alloced_length) |