List:Commits« Previous MessageNext Message »
From:Mats Kindahl Date:October 10 2007 3:00pm
Subject:Re: bk commit into 5.0 tree (aelkin:1.2501) BUG#26199
View as plain text  
Hi Andrei!

Patch looks good. Patch OK to push.

Just my few cents,
Mats Kindahl

Andrei Elkin wrote:
> Below is the list of changes that have just been committed into a local
> 5.0 repository of elkin. When elkin does a push these changes will
> be propagated to the main repository and, within 24 hours after the
> push, to the public repository.
> For information on how to access the public repository
> see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
>
> ChangeSet@stripped, 2007-09-14 17:01:53+03:00, aelkin@stripped +3 -0
>   Bug #26199  	Replication Failure on Slave when using stored procs with bit-type
> parameters.
>   
>   The value of the actual argument of BIT-type-arg stored procedure was binlogged as
> non-espaped sequence of
>   bytes corresponding to internal representation of the bit value.
>   
>   The patch enforces binlogging of the bit-argument as a valid literal: prefixing the
> quoted bytes sequence with
>   _binary.
>   Note, that behaviour of Item_field::var_str for field_type() of MYSQL_TYPE_BIT is
> exceptional in that
>   the returned string contains the binary representation even though result_type() of
> the item is INT_RESULT.
>
>   mysql-test/r/rpl_sp_effects.result@stripped, 2007-09-14 17:01:43+03:00,
> aelkin@stripped +32 -1
>     testing stored function and procedure called with BIT-arg.
>
>   mysql-test/t/rpl_sp_effects.test@stripped, 2007-09-14 17:01:43+03:00,
> aelkin@stripped +36 -1
>     results changed
>
>   sql/sp_head.cc@stripped, 2007-09-14 17:01:43+03:00, aelkin@stripped +3 -2
>     Treating BIT field type specially to for its value to be prefixed and quoted.
>
> diff -Nrup a/mysql-test/r/rpl_sp_effects.result b/mysql-test/r/rpl_sp_effects.result
> --- a/mysql-test/r/rpl_sp_effects.result	2005-09-07 18:39:41 +03:00
> +++ b/mysql-test/r/rpl_sp_effects.result	2007-09-14 17:01:43 +03:00
> @@ -209,7 +209,38 @@ slave	30
>  slave	31
>  slave	101
>  slave	102
> -drop table t1;
> +create table t2 (b BIT(7));
> +create procedure sp_bug26199(bitvalue BIT(7))
> +begin
> +insert into t2 set b = bitvalue;
> +end //
> +create function sf_bug26199(b BIT(7)) returns int
> +begin
> +insert into t2 values(b);
> +return 0;
> +end//
> +call   sp_bug26199(b'1110');
> +select sf_bug26199(b'1111111');
> +sf_bug26199(b'1111111')
> +0
> +select sf_bug26199(b'101111111');
> +sf_bug26199(b'101111111')
> +0
> +Warnings:
> +Warning	1264	Out of range value adjusted for column 'b' at row 1
> +select hex(b) from t2;
> +hex(b)
> +E
> +7F
> +7F
> +select hex(b) from t2;
> +hex(b)
> +E
> +7F
> +7F
> +drop table t1,t2;
>  drop function f1;
>  drop function f2;
>  drop procedure p1;
> +drop procedure sp_bug26199;
> +drop function sf_bug26199;
> diff -Nrup a/mysql-test/t/rpl_sp_effects.test b/mysql-test/t/rpl_sp_effects.test
> --- a/mysql-test/t/rpl_sp_effects.test	2005-09-07 18:39:41 +03:00
> +++ b/mysql-test/t/rpl_sp_effects.test	2007-09-14 17:01:43 +03:00
> @@ -195,9 +195,44 @@ sync_slave_with_master;
>  connection slave;
>  select 'slave', a from t1;
>  
> +# bug#26199 Replication Failure on Slave when using stored procs with bit-type
> parameters
> +
>  connection master;
> -drop table t1;
> +
> +create table t2 (b BIT(7));
> +delimiter //;
> +create procedure sp_bug26199(bitvalue BIT(7))
> +begin
> +  insert into t2 set b = bitvalue;
> +end //
> +
> +create function sf_bug26199(b BIT(7)) returns int
> +begin
> +  insert into t2 values(b);
> +  return 0;
> +end//
> +
> +DELIMITER ;//
> +
> +
> +
> +call   sp_bug26199(b'1110');
> +select sf_bug26199(b'1111111');
> +select sf_bug26199(b'101111111');
> +select hex(b) from t2;
> +
> +sync_slave_with_master;
> +#connection slave;
> +select hex(b) from t2;
> +
> +
> +
> +
> +connection master;
> +drop table t1,t2;
>  drop function f1;
>  drop function f2;
>  drop procedure p1;
> +drop procedure sp_bug26199;
> +drop function sf_bug26199;
>  sync_slave_with_master;
> diff -Nrup a/sql/sp_head.cc b/sql/sp_head.cc
> --- a/sql/sp_head.cc	2007-07-31 15:23:23 +03:00
> +++ b/sql/sp_head.cc	2007-09-14 17:01:43 +03:00
> @@ -100,8 +100,9 @@ sp_get_item_value(THD *thd, Item *item, 
>    case REAL_RESULT:
>    case INT_RESULT:
>    case DECIMAL_RESULT:
> -    return item->val_str(str);
> -
> +    if (item->field_type() != MYSQL_TYPE_BIT)
> +      return item->val_str(str);
> +    else {/* Bit type is handled as binary string */}
>    case STRING_RESULT:
>      {
>        String *result= item->val_str(str);
>
>   


-- 
Mats Kindahl
Lead Software Developer
Replication Team
MySQL AB, www.mysql.com


Thread
bk commit into 5.0 tree (aelkin:1.2501) BUG#26199Andrei Elkin14 Sep
  • Re: bk commit into 5.0 tree (aelkin:1.2501) BUG#26199Mats Kindahl10 Oct
  • Re: bk commit into 5.0 tree (aelkin:1.2501) BUG#26199Dmitri Lenev15 Oct
    • Re: bk commit into 5.0 tree (aelkin:1.2501) BUG#26199Andrei Elkin21 Oct