List:Commits« Previous MessageNext Message »
From:Andrei Elkin Date:October 21 2007 3:43pm
Subject:Re: bk commit into 5.0 tree (aelkin:1.2501) BUG#26199
View as plain text  
Dmitri, hello.

Thanks for discussions and review.
I fixed all items you pointed out.

cheers,

Andrei

> Hello Andrei!
>
>
> Here is my review for your patch:
>
> * Andrei Elkin <aelkin@stripped> [07/09/14 19:59]:
>> 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.
>
> non-escaped :)
>
> Also in future please keep lines in ChangeSet comment shorter than 80
> characters to make it more convinient for e-mail quoting.
>   
>>   The patch enforces binlogging of the bit-argument as a valid literal: prefixing
> the quoted bytes sequence with
>>   _binary.
>
> I think it makes sense to mention here and below that this value is also
> escaped if it is needed (and not only quoted).
>
> ...
>
>>   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/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//
>
> I think it is better not to mix this test with cleanup section for the
> previous test case. Also IMO it makes sense to stick to the style which
> is used in other tests where we use bug-specific table/routine names and
> try to drop objects before creating them (e.g. see sp.test).
>
>> +
>> +DELIMITER ;//
>> +
>> +
>> +
>> +call   sp_bug26199(b'1110');
>> +select sf_bug26199(b'1111111');
>> +select sf_bug26199(b'101111111');
>> +select hex(b) from t2;
>
> How about testing value which will require escaping in addition
> to the quoting (like '\0' or '\'') ? 
>
>> +
>> +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);
>
> Hmm... in future we might need more generic way for handling of such
> 'strange' types, but such solution is probably OK at the moment.
>
> I think it is OK to push this patch after fixing/discussing minor
> issues mentioned above.
>
> -- 
> Dmitri Lenev, Software Developer
> MySQL AB, www.mysql.com
>
> Are you MySQL certified?  http://www.mysql.com/certification
>
> -- 
> MySQL Code Commits Mailing List
> For list archives: http://lists.mysql.com/commits
> To unsubscribe:    http://lists.mysql.com/commits?unsub=1
>

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