From: Tor Didriksen Date: February 9 2011 3:44pm Subject: bzr commit into mysql-5.5 branch (tor.didriksen:3326) Bug#59686 List-Archive: http://lists.mysql.com/commits/130900 X-Bug: 59686 Message-Id: <20110209154500.B5DA1376B@atum07.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2341207829585498204==" --===============2341207829585498204== 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:joerg@stripped 3326 Tor Didriksen 2011-02-09 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-09 15:44:57 +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-09 15:44:57 +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-09 15:44:57 +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; } --===============2341207829585498204== 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\ # ktc7243s19uaebzr # target_branch: file:///export/home/didrik/repo/5.5-bug59686-\ # timestamp/ # testament_sha1: 255925f5fcacc7458cef0afaabdad9b7d0984540 # timestamp: 2011-02-09 16:45:00 +0100 # base_revision_id: joerg@stripped # # Begin bundle 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 mveP/F3JFOFCQpMn8uw= --===============2341207829585498204==--