MySQL Lists are EOL. Please join:

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

Patch conditionally approved.
Please, augment the test case with the test reported in BUG#55709 ("[3 Aug 18:17] Alfranio
Correia").

Cheers.


On 10/15/2010 09: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