From: Sergey Glukhov Date: March 28 2011 1:38pm Subject: bzr push into mysql-5.1 branch (sergey.glukhov:3637 to 3639) Bug#11766087 List-Archive: http://lists.mysql.com/commits/134065 X-Bug: 11766087 Message-Id: <201103281340.p2SDeomj022699@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3639 Sergey Glukhov 2011-03-28 Bug#11766087 59125: VALGRIND UNINITIALISED VALUE WARNING IN ULL2DEC, LONGLONG2DECIMAL Valgrind warning happens due to missing NULL value check in Item_func::val_decimal. The fix is to add this check. @ mysql-test/r/func_time.result test case @ mysql-test/t/func_time.test test case @ sql/item_func.cc added check for NULL value modified: mysql-test/r/func_time.result mysql-test/t/func_time.test sql/item_func.cc 3638 Sergey Glukhov 2011-03-28 Bug#11765216 58154: UNINITIALIZED VARIABLE FORMAT IN STR_TO_DATE FUNCTION Valgrind warning happens due to uninitialized cached_format_type field which is used later in Item_func_str_to_date::val_str method. The fix is to init cached_format_type field. @ mysql-test/r/func_time.result test case @ mysql-test/t/func_time.test test case @ sql/item_timefunc.cc init cached_format_type field modified: mysql-test/r/func_time.result mysql-test/t/func_time.test sql/item_timefunc.cc 3637 Georgi Kodinov 2011-03-28 Added support for VS10. Fixed RelWithDebugInfo bzr ignores. added: win/build-vs10.bat win/build-vs10_x64.bat modified: .bzrignore === modified file 'mysql-test/r/func_time.result' --- a/mysql-test/r/func_time.result 2011-03-28 07:53:18 +0000 +++ b/mysql-test/r/func_time.result 2011-03-28 13:27:44 +0000 @@ -1381,4 +1381,16 @@ DROP TABLE t1; SELECT STR_TO_DATE(SPACE(2),'1'); STR_TO_DATE(SPACE(2),'1') 0000-00-00 +# +# Bug#11765216 58154: UNINITIALIZED VARIABLE FORMAT IN STR_TO_DATE FUNCTION +# +SET GLOBAL SQL_MODE=''; +DO STR_TO_DATE((''), FROM_DAYS(@@GLOBAL.SQL_MODE)); +SET GLOBAL SQL_MODE=DEFAULT; +# +# Bug#11766087 59125: VALGRIND UNINITIALISED VALUE WARNING IN ULL2DEC, LONGLONG2DECIMAL +# +SELECT FORMAT(YEAR(STR_TO_DATE('',GET_FORMAT(TIME,''))),1); +FORMAT(YEAR(STR_TO_DATE('',GET_FORMAT(TIME,''))),1) +NULL End of 5.1 tests === modified file 'mysql-test/t/func_time.test' --- a/mysql-test/t/func_time.test 2011-03-28 07:53:18 +0000 +++ b/mysql-test/t/func_time.test 2011-03-28 13:27:44 +0000 @@ -887,4 +887,18 @@ DROP TABLE t1; SELECT STR_TO_DATE(SPACE(2),'1'); +--echo # +--echo # Bug#11765216 58154: UNINITIALIZED VARIABLE FORMAT IN STR_TO_DATE FUNCTION +--echo # + +SET GLOBAL SQL_MODE=''; +DO STR_TO_DATE((''), FROM_DAYS(@@GLOBAL.SQL_MODE)); +SET GLOBAL SQL_MODE=DEFAULT; + +--echo # +--echo # Bug#11766087 59125: VALGRIND UNINITIALISED VALUE WARNING IN ULL2DEC, LONGLONG2DECIMAL +--echo # + +SELECT FORMAT(YEAR(STR_TO_DATE('',GET_FORMAT(TIME,''))),1); + --echo End of 5.1 tests === modified file 'sql/item_func.cc' --- a/sql/item_func.cc 2011-03-28 08:35:50 +0000 +++ b/sql/item_func.cc 2011-03-28 13:27:44 +0000 @@ -482,7 +482,10 @@ bool Item_func::is_expensive_processor(u my_decimal *Item_func::val_decimal(my_decimal *decimal_value) { DBUG_ASSERT(fixed); - int2my_decimal(E_DEC_FATAL_ERROR, val_int(), unsigned_flag, decimal_value); + longlong nr= val_int(); + if (null_value) + return 0; /* purecov: inspected */ + int2my_decimal(E_DEC_FATAL_ERROR, nr, unsigned_flag, decimal_value); return decimal_value; } === modified file 'sql/item_timefunc.cc' --- a/sql/item_timefunc.cc 2011-03-28 07:53:18 +0000 +++ b/sql/item_timefunc.cc 2011-03-28 13:24:25 +0000 @@ -3293,6 +3293,7 @@ void Item_func_str_to_date::fix_length_a { maybe_null= 1; decimals=0; + cached_format_type= DATE_TIME; cached_field_type= MYSQL_TYPE_DATETIME; max_length= MAX_DATETIME_FULL_WIDTH*MY_CHARSET_BIN_MB_MAXLEN; cached_timestamp_type= MYSQL_TIMESTAMP_NONE; No bundle (reason: useless for push emails).