List:Commits« Previous MessageNext Message »
From:Libing Song Date:October 18 2010 6:49am
Subject:Re: bzr commit into mysql-next-mr-bugfixing branch (Li-Bing.Song:3324)
Bug#55478
View as plain text  
Hi Sven,
A new patch was committed, please review it.
http://lists.mysql.com/commits/120927

On Fri, 2010-10-15 at 13:13 +0200, 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.
ok. There are two cases which cause this bug. Both of them were added
into the comment.
> 
> 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
> >
> >
> >
> >
> >
> 
> 

-- 
Your Sincerely,
Libing Song
==================================
MySQL Replication Team
Software Engineer


Email : Li-Bing.Song@stripped
Skype : libing.song
MSN   : slb_database@stripped
Phone : +86 010-6505-4020 ext. 319
Mobile: +86 138-1144-2038
==================================

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