From: Alexander Nozdrin Date: April 25 2011 10:45am Subject: bzr commit into mysql-5.5 branch (alexander.nozdrin:3458) Bug#12362125 List-Archive: http://lists.mysql.com/commits/136006 X-Bug: 12362125 Message-Id: <201104251045.p3PAjQsX015649@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2209899280524568118==" --===============2209899280524568118== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/alik/MySQL/bzr/00/bug12362125/mysql-5.5-bug12362125/ based on revid:jon.hauglid@stripped 3458 Alexander Nozdrin 2011-04-25 Patch for Bug#12362125 (SP INOUT HANDLING IS BROKEN FOR TEXT TYPE). The problem was that BLOBs were not copied to the result table from triggers. It worked in 5.1 due to a subtle bug in create_virtual_tmp_table(): - in 5.1 create_virtual_tmp_table() returned a table which had db_low_byte_first == false. - in 5.5 and up create_virtual_tmp_table() returns a table which has db_low_byte_first == true. Actually, db_low_byte_first == false only for ISAM storage engine, which was deprecated and removed in 5.0. Having db_low_byte_first == false led to getting false in the complex condition for the 2nd "if" in field_conv(), which in turn led to copy-blob-behavior as a fall-back strategy: - to->table->s->db_low_byte_first was true (correct value) - from->table->s->db_low_byte_first was false (incorrect value) In 5.5 and up that condition is true, which means blob-values are not copied. modified: mysql-test/r/trigger.result mysql-test/t/trigger.test sql/item.cc === modified file 'mysql-test/r/trigger.result' --- a/mysql-test/r/trigger.result 2011-03-10 08:07:57 +0000 +++ b/mysql-test/r/trigger.result 2011-04-25 10:45:16 +0000 @@ -2208,4 +2208,22 @@ trigger_name # Clean-up. drop temporary table t1; drop table t1; -End of 6.0 tests. + +# +# Bug #12362125: SP INOUT HANDLING IS BROKEN FOR TEXT TYPE. +# +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(c TEXT); +CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +DECLARE v TEXT; +SET v = 'aaa'; +SET NEW.c = v; +END| +INSERT INTO t1 VALUES('qazwsxedc'); +SELECT c FROM t1; +c +aaa +DROP TABLE t1; + +End of 5.5 tests. === modified file 'mysql-test/t/trigger.test' --- a/mysql-test/t/trigger.test 2011-03-10 08:07:57 +0000 +++ b/mysql-test/t/trigger.test 2011-04-25 10:45:16 +0000 @@ -2583,4 +2583,32 @@ select trigger_name from information_sch drop temporary table t1; drop table t1; ---echo End of 6.0 tests. + +--echo +--echo # +--echo # Bug #12362125: SP INOUT HANDLING IS BROKEN FOR TEXT TYPE. +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1(c TEXT); + +delimiter |; +CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW +BEGIN + DECLARE v TEXT; + SET v = 'aaa'; + SET NEW.c = v; +END| +delimiter ;| + +INSERT INTO t1 VALUES('qazwsxedc'); + +SELECT c FROM t1; + +DROP TABLE t1; + +--echo +--echo End of 5.5 tests. === modified file 'sql/item.cc' --- a/sql/item.cc 2011-04-08 13:15:23 +0000 +++ b/sql/item.cc 2011-04-25 10:45:16 +0000 @@ -7131,8 +7131,18 @@ bool Item_trigger_field::set_value(THD * { Item *item= sp_prepare_func_item(thd, it); - return (!item || (!fixed && fix_fields(thd, 0)) || - (item->save_in_field(field, 0) < 0)); + if (!item) + return true; + + if (!fixed) + { + if (fix_fields(thd, NULL)) + return true; + } + +// debug field->table->copy_blobs= true; + + return item->save_in_field(field, 0) < 0; } --===============2209899280524568118== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/alexander.nozdrin@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: alexander.nozdrin@stripped\ # bzyqp1iccr0sfid2 # target_branch: file:///home/alik/MySQL/bzr/00/bug12362125/mysql-5.5-\ # bug12362125/ # testament_sha1: bb501164b1ec941cf2784897089c9a84ffcb9525 # timestamp: 2011-04-25 14:45:20 +0400 # base_revision_id: jon.hauglid@stripped\ # wqkqx1u7jjw06jrh # # Begin bundle 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 HiLg --===============2209899280524568118==--