MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Alfranio Correia Date:October 15 2010 2:26pm
Subject:Re: bzr commit into mysql-next-mr-bugfixing branch (Li-Bing.Song:3324)
Bug#55478
View as plain text  
Hi Sven,

I agree with you.

Cheers.

On 10/15/2010 12:13 PM, Sven Sandberg wrote:
> Hi Libing,
>
> The patch looks ok from my viewpoint. I would suggest to clarify the
> changeset comment: instead of "But there are some cases...", please say
> that row events can be generated for the base table if the temporary
> table exists and user executes CREATE TABLE...SELECT that creates the
> base table.
>
> Also, I think maybe it would be good to find a reviewer from runtime
> team on this one. I'll send a separate email and ask Kostja to find one
> and replace me.
>
> /Sven
>
>
> On 10/15/2010 10:20 AM, Li-Bing.Song@stripped wrote:
>> #At file:///home/anders/work/bzrwork1/wt2/mysql-next-mr-bugfixing/
>> based on revid:dao-gang.qu@stripped
>>
>> 3324 Li-Bing.Song@stripped 2010-10-15
>> Bug#55478 Row events wrongly apply on the temporary table of the same
>> name
>>
>> Rows events were applied wrongly on the temporary table with the same
>> name.
>> But rows events are generated only for base tables. As temporary
>> table's data never be binlogged on row mode. Normally, base table of the
>> same name cannot be updated if a temporary table has the same name.
>> But there are some cases which can generate rows events on
>> the base table of same name.
>>
>> After this patch, slave opens only base table when applying a rows event.
>>
>> modified:
>> mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result
>> mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test
>> sql/log_event.cc
>> === modified file 'mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result'
>> --- a/mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result 2010-08-20
>> 02:59:58 +0000
>> +++ b/mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result 2010-10-15
>> 08:20:12 +0000
>> @@ -71,3 +71,30 @@ slave-bin.000001 # Query # # BEGIN
>> slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (2)
>> slave-bin.000001 # Query # # COMMIT
>> slave-bin.000001 # Query # # use `test`; DROP TABLE `t3`,`t1` /*
>> generated by server */
>> +
>> +# Bug#55478 Row events wrongly apply on the temporary table of the
>> same name
>> +#
>> ==========================================================================
>>
>> +# The statement should be binlogged
>> +CREATE TEMPORARY TABLE t1(c1 INT);
>> +show binlog events in 'master-bin.000001' from<binlog_start>;
>> +Log_name Pos Event_type Server_id End_log_pos Info
>> +master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE
>> t1(c1 INT)
>> +
>> +# The statement generates row events on t1. And the rows events should
>> +# be inserted into the base table on slave.
>> +CREATE TABLE t1 SELECT rand();
>> +show binlog events in 'master-bin.000001' from<binlog_start>;
>> +Log_name Pos Event_type Server_id End_log_pos Info
>> +master-bin.000001 # Query # # BEGIN
>> +master-bin.000001 # Query # # use `test`; CREATE TABLE `t1` (
>> + `rand()` double NOT NULL DEFAULT '0'
>> +)
>> +master-bin.000001 # Table_map # # table_id: # (test.t1)
>> +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
>> +master-bin.000001 # Query # # COMMIT
>> +
>> +DROP TEMPORARY TABLE t1;
>> +# Compare the base table.
>> +Comparing tables master:test.t1 and slave:test.t1
>> +
>> +DROP TABLE t1;
>>
>> === modified file 'mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test'
>> --- a/mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test 2009-07-26
>> 21:48:24 +0000
>> +++ b/mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test 2010-10-15
>> 08:20:12 +0000
>> @@ -146,3 +146,37 @@ DROP TABLE t3, t1;
>> -- sync_slave_with_master
>>
>> -- source include/show_binlog_events.inc
>> +
>> +--echo
>> +--echo # Bug#55478 Row events wrongly apply on the temporary table of
>> the same name
>> +--echo #
>> ==========================================================================
>>
>> +connection master;
>> +
>> +let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
>> +let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
>> +
>> +--echo # The statement should be binlogged
>> +CREATE TEMPORARY TABLE t1(c1 INT);
>> +
>> +source include/show_binlog_events.inc;
>> +let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
>> +let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
>> +
>> +--echo
>> +--echo # The statement generates row events on t1. And the rows
>> events should
>> +--echo # be inserted into the base table on slave.
>> +CREATE TABLE t1 SELECT rand();
>> +
>> +source include/show_binlog_events.inc;
>> +
>> +--echo
>> +DROP TEMPORARY TABLE t1;
>> +
>> +--echo # Compare the base table.
>> +let diff_table= test.t1;
>> +source include/rpl_diff_tables.inc;
>> +
>> +--echo
>> +connection master;
>> +DROP TABLE t1;
>> +source include/master-slave-end.inc;
>>
>> === modified file 'sql/log_event.cc'
>> --- a/sql/log_event.cc 2010-09-24 15:24:54 +0000
>> +++ b/sql/log_event.cc 2010-10-15 08:20:12 +0000
>> @@ -8439,6 +8439,7 @@ int Table_map_log_event::do_apply_event(
>> m_field_metadata, m_field_metadata_size,
>> m_null_bits, m_flags);
>> table_list->m_tabledef_valid= TRUE;
>> + table_list->open_type= OT_BASE_ONLY;
>>
>> /*
>> We record in the slave's information that the table should be
>>
>>
>>
>>
>>
>
>

Thread
bzr commit into mysql-next-mr-bugfixing branch (Li-Bing.Song:3324) Bug#55478Li-Bing.Song15 Oct
  • Re: bzr commit into mysql-next-mr-bugfixing branch (Li-Bing.Song:3324)Bug#55478Sven Sandberg15 Oct
    • Re: bzr commit into mysql-next-mr-bugfixing branch (Li-Bing.Song:3324)Bug#55478Alfranio Correia15 Oct
    • Re: bzr commit into mysql-next-mr-bugfixing branch (Li-Bing.Song:3324)Bug#55478Libing Song18 Oct
      • Re: bzr commit into mysql-next-mr-bugfixing branch (Li-Bing.Song:3324)Bug#55478Sven Sandberg18 Oct
  • Re: bzr commit into mysql-next-mr-bugfixing branch (Li-Bing.Song:3324)Bug#55478Alfranio Correia15 Oct
    • Re: bzr commit into mysql-next-mr-bugfixing branch (Li-Bing.Song:3324)Bug#55478Libing Song18 Oct
  • Re: bzr commit into mysql-next-mr-bugfixing branch (Li-Bing.Song:3324)Bug#55478Alfranio Correia15 Oct
    • Re: bzr commit into mysql-next-mr-bugfixing branch (Li-Bing.Song:3324)Bug#55478Libing Song18 Oct