From: Tor Didriksen Date: February 11 2011 9:12am Subject: bzr commit into mysql-5.5 branch (tor.didriksen:3323) Bug#59686 List-Archive: http://lists.mysql.com/commits/131105 X-Bug: 59686 Message-Id: <20110211091236.5594B376D@atum07.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============7423733723878392051==" --===============7423733723878392051== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/didrik/repo/5.5-bug59686-timestamp/ based on revid:alexander.barkov@stripped 3323 Tor Didriksen 2011-02-11 Bug #59686 crash in String::copy() with time data type The problem was that Item_sum_hybrid::val_xxx() did not propagate null values up the expression tree. @ mysql-test/r/func_time.result New test case. @ mysql-test/t/func_time.test New test case. @ sql/item_sum.cc Check for null_value when evaluating sub-items in sub-trees in Item_sum_hybrid::val_xxx() modified: mysql-test/r/func_time.result mysql-test/t/func_time.test sql/item_sum.cc === modified file 'mysql-test/r/func_time.result' --- a/mysql-test/r/func_time.result 2011-02-02 18:16:06 +0000 +++ b/mysql-test/r/func_time.result 2011-02-11 09:12:32 +0000 @@ -1368,3 +1368,15 @@ SELECT SUBDATE(STR_TO_DATE(NULL,0), INTE SUBDATE(STR_TO_DATE(NULL,0), INTERVAL 1 HOUR) NULL # +# Bug #59686 crash in String::copy() with time data type +# +SELECT min(timestampadd(month, 1>'', from_days('%Z'))); +min(timestampadd(month, 1>'', from_days('%Z'))) +NULL +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '%Z' +create table t1(a time); +insert into t1 values ('00:00:00'),('00:01:00'); +select 1 from t1 where 1 < some (select cast(a as datetime) from t1); +1 +drop table t1; === modified file 'mysql-test/t/func_time.test' --- a/mysql-test/t/func_time.test 2011-02-02 18:16:06 +0000 +++ b/mysql-test/t/func_time.test 2011-02-11 09:12:32 +0000 @@ -881,4 +881,12 @@ SELECT WEEK(STR_TO_DATE(NULL,0)); SELECT SUBDATE(STR_TO_DATE(NULL,0), INTERVAL 1 HOUR); --echo # +--echo # Bug #59686 crash in String::copy() with time data type +--echo # + +SELECT min(timestampadd(month, 1>'', from_days('%Z'))); +create table t1(a time); +insert into t1 values ('00:00:00'),('00:01:00'); +select 1 from t1 where 1 < some (select cast(a as datetime) from t1); +drop table t1; === modified file 'sql/item_sum.cc' --- a/sql/item_sum.cc 2011-02-02 09:18:44 +0000 +++ b/sql/item_sum.cc 2011-02-11 09:12:32 +0000 @@ -1903,7 +1903,10 @@ double Item_sum_hybrid::val_real() DBUG_ASSERT(fixed == 1); if (null_value) return 0.0; - return value->val_real(); + double retval= value->val_real(); + if ((null_value= value->null_value)) + DBUG_ASSERT(retval == 0.0); + return retval; } longlong Item_sum_hybrid::val_int() @@ -1911,7 +1914,10 @@ longlong Item_sum_hybrid::val_int() DBUG_ASSERT(fixed == 1); if (null_value) return 0; - return value->val_int(); + longlong retval= value->val_int(); + if ((null_value= value->null_value)) + DBUG_ASSERT(retval == 0); + return retval; } @@ -1920,7 +1926,10 @@ my_decimal *Item_sum_hybrid::val_decimal DBUG_ASSERT(fixed == 1); if (null_value) return 0; - return value->val_decimal(val); + my_decimal *retval= value->val_decimal(val); + if ((null_value= value->null_value)) + DBUG_ASSERT(retval == NULL); + return retval; } @@ -1930,7 +1939,10 @@ Item_sum_hybrid::val_str(String *str) DBUG_ASSERT(fixed == 1); if (null_value) return 0; - return value->val_str(str); + String *retval= value->val_str(str); + if ((null_value= value->null_value)) + DBUG_ASSERT(retval == NULL); + return retval; } --===============7423733723878392051== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/tor.didriksen@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: tor.didriksen@stripped\ # 8tuhjgoe437fa7ft # target_branch: file:///export/home/didrik/repo/5.5-bug59686-\ # timestamp/ # testament_sha1: 88fa76308d6c796b0def3c7433d1a794e9423531 # timestamp: 2011-02-11 10:12:35 +0100 # base_revision_id: alexander.barkov@stripped\ # 9sxqewix0fg8c50j # # Begin bundle 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 q3h/xdyRThQkLxKytEA= --===============7423733723878392051==--