diff --git a/mysql-test/r/timezone2.result b/mysql-test/r/timezone2.result index 70f5ef9edc1..0ac4ddca277 100644 --- a/mysql-test/r/timezone2.result +++ b/mysql-test/r/timezone2.result @@ -326,5 +326,11 @@ NULL Warnings: Warning 1292 Incorrect datetime value: '00:00:00' # +# MDEV-5506 safe_mutex: Trying to lock unitialized mutex at safemalloc.c on server shutdown after SELECT with CONVERT_TZ +# +SELECT CONVERT_TZ('2001-10-08 00:00:00', MAKE_SET(0,'+01:00'), '+00:00' ); +CONVERT_TZ('2001-10-08 00:00:00', MAKE_SET(0,'+01:00'), '+00:00' ) +NULL +# # End of 5.3 tests # diff --git a/mysql-test/t/date_formats.test b/mysql-test/t/date_formats.test index 7e6990f4754..972543aefc2 100644 --- a/mysql-test/t/date_formats.test +++ b/mysql-test/t/date_formats.test @@ -32,6 +32,8 @@ ORDER BY variable_name; # SET date_format='%d.%m.%Y'; # SET date_format='%m-%d-%Y'; # +# --error ER_WRONG_VALUE_FOR_VAR +# SET datetime_format= NULL; # set datetime_format= '%Y%m%d%H%i%s'; # set datetime_format= '%Y-%m-%d %H:%i:%s'; # set datetime_format= '%m-%d-%y %H:%i:%s.%f'; diff --git a/mysql-test/t/timezone2.test b/mysql-test/t/timezone2.test index 7764b39bf33..2d61c7631f2 100644 --- a/mysql-test/t/timezone2.test +++ b/mysql-test/t/timezone2.test @@ -297,6 +297,12 @@ DROP TABLE t1; SELECT CONVERT_TZ(TIME('00:00:00'),'+00:00','+7:5'); SELECT CONVERT_TZ(TIME('2010-01-01 00:00:00'),'+00:00','+7:5'); +--echo # +--echo # MDEV-5506 safe_mutex: Trying to lock unitialized mutex at safemalloc.c on server shutdown after SELECT with CONVERT_TZ +--echo # +SELECT CONVERT_TZ('2001-10-08 00:00:00', MAKE_SET(0,'+01:00'), '+00:00' ); + + --echo # --echo # End of 5.3 tests --echo # diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index fc0d3beeea3..1b0f8c6acc0 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -61,11 +61,6 @@ C_MODE_END size_t username_char_length= 16; -/** - @todo Remove this. It is not safe to use a shared String object. - */ -String my_empty_string("",default_charset_info); - /* For the Items which have only val_str_ascii() method and don't have their own "native" val_str(), @@ -103,7 +98,6 @@ String *Item_str_func::val_str_from_val_str_ascii(String *str, String *str2) } - /* Convert an array of bytes to a hexadecimal representation. @@ -2481,7 +2475,7 @@ String *Item_func_make_set::val_str(String *str) ulonglong bits; bool first_found=0; Item **ptr=args+1; - String *result=&my_empty_string; + String *result= make_empty_result(); bits=args[0]->val_int(); if ((null_value=args[0]->null_value)) diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index e0566b1d8c9..1731fcf7e99 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -1061,6 +1061,4 @@ public: String *val_str(String *); }; -extern String my_empty_string; - #endif /* ITEM_STRFUNC_INCLUDED */ diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 732840c8d8d..2ead1b533d9 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -2284,6 +2284,7 @@ bool select_result::check_simple_select() const static String default_line_term("\n",default_charset_info); static String default_escaped("\\",default_charset_info); static String default_field_term("\t",default_charset_info); +static String default_enclosed_and_line_start("", default_charset_info); static String default_xml_row_term("", default_charset_info); sql_exchange::sql_exchange(char *name, bool flag, @@ -2292,7 +2293,7 @@ sql_exchange::sql_exchange(char *name, bool flag, { filetype= filetype_arg; field_term= &default_field_term; - enclosed= line_start= &my_empty_string; + enclosed= line_start= &default_enclosed_and_line_start; line_term= filetype == FILETYPE_CSV ? &default_line_term : &default_xml_row_term; escaped= &default_escaped;