From: Sergey Glukhov Date: May 5 2011 9:21am Subject: bzr commit into mysql-5.1 branch (sergey.glukhov:3674) Bug#12403504 List-Archive: http://lists.mysql.com/commits/136726 X-Bug: 12403504 Message-Id: <201105050924.p459ON3H017126@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============7067550108799215229==" --===============7067550108799215229== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/gluh/MySQL/mysql-5.1/ based on revid:sergey.glukhov@stripped 3674 Sergey Glukhov 2011-05-05 Bug#12403504 AFTER FIX FOR #11889186 : ASSERTION FAILED: DELSUM+(INT) Y/4-TEMP > 0 There are two problems: 1. There is a missing check for 'year' parameter(year can not be greater than 9999) in makedate function. fix: added check that year can not be greater than 9999. 2. There is a missing check for zero date in from_days() function. fix: added zero date check into Item_func_from_days::get_date() function. @ mysql-test/r/func_time.result test case @ mysql-test/t/func_time.test test case @ sql/item_timefunc.cc --added check that year can not be greater than 9999 for makedate() function --added zero date check into Item_func_from_days::get_date() function modified: mysql-test/r/func_time.result mysql-test/t/func_time.test sql/item_timefunc.cc === modified file 'mysql-test/r/func_time.result' --- a/mysql-test/r/func_time.result 2011-04-27 07:35:57 +0000 +++ b/mysql-test/r/func_time.result 2011-05-05 09:21:30 +0000 @@ -1417,4 +1417,13 @@ NULL SELECT DATE_FORMAT('0000-00-11', '%w'); DATE_FORMAT('0000-00-11', '%w') NULL +# +# Bug#12403504 AFTER FIX FOR #11889186 : ASSERTION FAILED: DELSUM+(INT) Y/4-TEMP > 0 +# +SELECT MAKEDATE(11111111,1); +MAKEDATE(11111111,1) +NULL +SELECT WEEK(DATE_ADD(FROM_DAYS(1),INTERVAL 1 MONTH), 1); +WEEK(DATE_ADD(FROM_DAYS(1),INTERVAL 1 MONTH), 1) +NULL End of 5.1 tests === modified file 'mysql-test/t/func_time.test' --- a/mysql-test/t/func_time.test 2011-04-27 07:35:57 +0000 +++ b/mysql-test/t/func_time.test 2011-05-05 09:21:30 +0000 @@ -921,4 +921,11 @@ SELECT DATE_FORMAT('0000-00-11', '%W'); SELECT DATE_FORMAT('0000-00-11', '%a'); SELECT DATE_FORMAT('0000-00-11', '%w'); +--echo # +--echo # Bug#12403504 AFTER FIX FOR #11889186 : ASSERTION FAILED: DELSUM+(INT) Y/4-TEMP > 0 +--echo # + +SELECT MAKEDATE(11111111,1); +SELECT WEEK(DATE_ADD(FROM_DAYS(1),INTERVAL 1 MONTH), 1); + --echo End of 5.1 tests === modified file 'sql/item_timefunc.cc' --- a/sql/item_timefunc.cc 2011-04-27 07:35:57 +0000 +++ b/sql/item_timefunc.cc 2011-05-05 09:21:30 +0000 @@ -1519,6 +1519,11 @@ bool Item_func_from_days::get_date(MYSQL return 1; bzero(ltime, sizeof(MYSQL_TIME)); get_date_from_daynr((long) value, <ime->year, <ime->month, <ime->day); + + if ((null_value= (fuzzy_date & TIME_NO_ZERO_DATE) && + (ltime->year == 0 || ltime->month == 0 || ltime->day == 0))) + return TRUE; + ltime->time_type= MYSQL_TIMESTAMP_DATE; return 0; } @@ -2684,7 +2689,7 @@ String *Item_func_makedate::val_str(Stri long days; if (args[0]->null_value || args[1]->null_value || - year < 0 || daynr <= 0) + year < 0 || year > 9999 || daynr <= 0) goto err; if (year < 100) @@ -2727,7 +2732,7 @@ longlong Item_func_makedate::val_int() long days; if (args[0]->null_value || args[1]->null_value || - year < 0 || daynr <= 0) + year < 0 || year > 9999 || daynr <= 0) goto err; if (year < 100) --===============7067550108799215229== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/sergey.glukhov@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: sergey.glukhov@stripped\ # 0e6w2q20zyuw8y2s # target_branch: file:///home/gluh/MySQL/mysql-5.1/ # testament_sha1: 74081550586dea411274b53770f85fd40e0d3643 # timestamp: 2011-05-05 13:21:34 +0400 # source_branch: bzr+ssh://sgluhov@stripped/bzrroot\ # /server/mysql-5.1/ # base_revision_id: sergey.glukhov@stripped\ # b7028gag212n8e0y # # Begin bundle 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 --===============7067550108799215229==--