Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
MDEV-9266 Creating index on temporaray table breaks replication
Problem:- Create/drop index was logged into binlog. Goal:- Operation on temporary table should not be binlog when binlog format is row. Solution:- We should add CF_FORCE_ORIGINAL_BINLOG_FORMAT when there is ddl on temp table. For optimize, analyze, repair we wont change anything ,Then will be logged in binlog , But they also dont throw any error if operation fails Since slave wont be having any temp table , but these operation on tmp table will be processed without breaking replication. For rename we need a different logic MDEV-16728 will solve it.
- Loading branch information
1 parent
e5c26fd
commit ada5410
Showing
4 changed files
with
71 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| # This file runs the query and checks | ||
| # whether the size of binlog is increased or not | ||
| # If size is changed it issue die command | ||
| # Parameters | ||
| # $sql_query = query to run | ||
|
|
||
| #Only last row of show binlog events matter | ||
| --let $tmp= 0 | ||
| --let $counter= 1 | ||
| while ($tmp != "No such row") | ||
| { | ||
| --let $initial_binlog_size= $tmp | ||
| --let $tmp= query_get_value(show binary logs, File_size, $counter) | ||
| --inc $counter | ||
| } | ||
|
|
||
| --eval $sql_query | ||
|
|
||
| --let $tmp= 0 | ||
| --let $counter= 1 | ||
| while ($tmp != "No such row") | ||
| { | ||
| --let $current_binlog_size= $tmp | ||
| --let $tmp= query_get_value(show binary logs, File_size, $counter) | ||
| --inc $counter | ||
| } | ||
|
|
||
| if ($initial_binlog_size != $current_binlog_size) | ||
| { | ||
| die "Binlog size changed"; | ||
| } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| RESET MASTER; | ||
| #Create table test | ||
| create temporary table t1(a int, b int); | ||
| #Add index test | ||
| create index index_a on t1(a); | ||
| #drop index test | ||
| drop index index_a on t1; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| # ==== Purpose ==== | ||
| # | ||
| # Test if statements used temporary tables are not binlogged in the case of | ||
| # binlog_format=row | ||
| # | ||
| # ==== Method ==== | ||
| # | ||
| # We will see if binlog file size is increased or not, It should be constant for the | ||
| # entire period of test. | ||
| # | ||
| # ==== Related bugs ==== | ||
| # | ||
| # Mdev-9266 | ||
| # | ||
| source include/have_log_bin.inc; | ||
| source include/have_binlog_format_row.inc; | ||
|
|
||
| RESET MASTER; | ||
|
|
||
| --echo #Create table test | ||
| --let $sql_query= create temporary table t1(a int, b int) | ||
| --source suite/binlog/include/check_binlog_size.inc | ||
|
|
||
| --echo #Add index test | ||
| --let $sql_query= create index index_a on t1(a) | ||
| --source suite/binlog/include/check_binlog_size.inc | ||
|
|
||
| --echo #drop index test | ||
| --let $sql_query= drop index index_a on t1 | ||
| --source suite/binlog/include/check_binlog_size.inc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters