[Commits] Rev 3009: MWL#234: After-review fixes, including better names for the new system variables. in http://bazaar.launchpad.net/~maria-captains/maria/5.2

knielsen at knielsen-hq.org knielsen at knielsen-hq.org
Fri Aug 12 14:18:35 EEST 2011


At http://bazaar.launchpad.net/~maria-captains/maria/5.2

------------------------------------------------------------
revno: 3009
revision-id: knielsen at knielsen-hq.org-20110812111834-dz2ccmozbwil4k41
parent: knielsen at knielsen-hq.org-20110811093852-liwxg7o5wnek55du
committer: knielsen at knielsen-hq.org
branch nick: work-5.2-mwl234
timestamp: Fri 2011-08-12 13:18:34 +0200
message:
  MWL#234: After-review fixes, including better names for the new system variables.
=== modified file 'client/mysqlbinlog.cc'
--- a/client/mysqlbinlog.cc	2011-08-11 09:38:52 +0000
+++ b/client/mysqlbinlog.cc	2011-08-12 11:18:34 +0000
@@ -671,7 +671,7 @@ print_use_stmt(PRINT_EVENT_INFO* pinfo,
 
 
 /**
-   Print "SET do_not_replicate=..." statement when needed.
+   Print "SET skip_replication=..." statement when needed.
 
    Not all servers support this (only MariaDB from some version on). So we
    mark the SET to only execute from the version of MariaDB that supports it,
@@ -679,20 +679,20 @@ print_use_stmt(PRINT_EVENT_INFO* pinfo,
    get spurious errors on MySQL at Oracle servers of higher version that do not
    support the flag.
 
-   So we start out assuming @@do_not_replicate is 0, and only output a SET
+   So we start out assuming @@skip_replication is 0, and only output a SET
    statement when it changes.
 */
 static void
-print_do_not_replicate_statement(PRINT_EVENT_INFO *pinfo, const Log_event *ev)
+print_skip_replication_statement(PRINT_EVENT_INFO *pinfo, const Log_event *ev)
 {
   int cur_val;
 
-  cur_val= (ev->flags & LOG_EVENT_DO_NOT_REPLICATE_F) != 0;
-  if (cur_val == pinfo->do_not_replicate)
+  cur_val= (ev->flags & LOG_EVENT_SKIP_REPLICATION_F) != 0;
+  if (cur_val == pinfo->skip_replication)
     return;                                     /* Not changed. */
-  fprintf(result_file, "/*!50400 SET do_not_replicate=%d*/%s\n",
+  fprintf(result_file, "/*!50400 SET skip_replication=%d*/%s\n",
           cur_val, pinfo->delimiter);
-  pinfo->do_not_replicate= cur_val;
+  pinfo->skip_replication= cur_val;
 }
 
 /**
@@ -828,7 +828,7 @@ Exit_status process_event(PRINT_EVENT_IN
       }
       else
       {
-        print_do_not_replicate_statement(print_event_info, ev);
+        print_skip_replication_statement(print_event_info, ev);
         ev->print(result_file, print_event_info);
       }
       break;
@@ -861,7 +861,7 @@ Exit_status process_event(PRINT_EVENT_IN
       }
       else
       {
-        print_do_not_replicate_statement(print_event_info, ev);
+        print_skip_replication_statement(print_event_info, ev);
         ce->print(result_file, print_event_info, TRUE);
       }
 
@@ -958,10 +958,10 @@ Exit_status process_event(PRINT_EVENT_IN
       if (!shall_skip_database(exlq->db))
       {
         print_use_stmt(print_event_info, exlq);
-        print_do_not_replicate_statement(print_event_info, ev);
         if (fname)
         {
           convert_path_to_forward_slashes(fname);
+          print_skip_replication_statement(print_event_info, ev);
           exlq->print(result_file, print_event_info, fname);
         }
         else
@@ -1062,13 +1062,8 @@ Exit_status process_event(PRINT_EVENT_IN
       }
       /* FALL THROUGH */
     }
-    case INTVAR_EVENT:
-    case RAND_EVENT:
-    case USER_VAR_EVENT:
-    case XID_EVENT:
-      print_do_not_replicate_statement(print_event_info, ev);
-      /* Fall through ... */
     default:
+      print_skip_replication_statement(print_event_info, ev);
       ev->print(result_file, print_event_info);
     }
   }

=== renamed file 'mysql-test/suite/rpl/r/rpl_do_not_replicate.result' => 'mysql-test/suite/rpl/r/rpl_skip_replication.result'
--- a/mysql-test/suite/rpl/r/rpl_do_not_replicate.result	2011-08-11 09:38:52 +0000
+++ b/mysql-test/suite/rpl/r/rpl_skip_replication.result	2011-08-12 11:18:34 +0000
@@ -3,20 +3,20 @@ include/master-slave.inc
 CREATE USER 'nonsuperuser'@'127.0.0.1';
 GRANT ALTER,CREATE,DELETE,DROP,EVENT,INSERT,PROCESS,REPLICATION SLAVE,
 SELECT,UPDATE ON *.* TO 'nonsuperuser'@'127.0.0.1';
-SET GLOBAL replicate_ignore_do_not_replicate=1;
+SET GLOBAL replicate_events_marked_for_skip=0;
 ERROR 42000: Access denied; you need the SUPER privilege for this operation
 DROP USER'nonsuperuser'@'127.0.0.1';
-SET GLOBAL replicate_ignore_do_not_replicate=1;
+SET GLOBAL replicate_events_marked_for_skip=0;
 ERROR HY000: This operation cannot be performed with a running slave; run STOP SLAVE first
 STOP SLAVE;
-SET GLOBAL replicate_ignore_do_not_replicate=1;
+SET GLOBAL replicate_events_marked_for_skip=0;
 START SLAVE;
-SET do_not_replicate=0;
+SET skip_replication=0;
 CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ENGINE=myisam;
 CREATE TABLE t2 (a INT PRIMARY KEY, b INT) ENGINE=innodb;
 INSERT INTO t1(a) VALUES (1);
 INSERT INTO t2(a) VALUES (1);
-SET do_not_replicate=1;
+SET skip_replication=1;
 CREATE TABLE t3 (a INT PRIMARY KEY, b INT) ENGINE=myisam;
 INSERT INTO t1(a) VALUES (2);
 INSERT INTO t2(a) VALUES (2);
@@ -34,7 +34,7 @@ a	b
 DROP TABLE t3;
 FLUSH NO_WRITE_TO_BINLOG LOGS;
 STOP SLAVE;
-SET GLOBAL replicate_ignore_do_not_replicate=0;
+SET GLOBAL replicate_events_marked_for_skip=1;
 START SLAVE;
 CREATE TABLE t3 (a INT PRIMARY KEY, b INT) ENGINE=myisam;
 INSERT INTO t3(a) VALUES(2);
@@ -44,11 +44,11 @@ a	b
 DROP TABLE t3;
 TRUNCATE t1;
 RESET MASTER;
-SET do_not_replicate=0;
+SET skip_replication=0;
 INSERT INTO t1 VALUES (1,0);
-SET do_not_replicate=1;
+SET skip_replication=1;
 INSERT INTO t1 VALUES (2,0);
-SET do_not_replicate=0;
+SET skip_replication=0;
 INSERT INTO t1 VALUES (3,0);
 SELECT * FROM t1 ORDER by a;
 a       b
@@ -56,7 +56,7 @@ a	b
 2       0
 3       0
 STOP SLAVE;
-SET GLOBAL replicate_ignore_do_not_replicate=1;
+SET GLOBAL replicate_events_marked_for_skip=0;
 TRUNCATE t1;
 SELECT * FROM t1 ORDER by a;
 a       b
@@ -71,15 +71,15 @@ a	b
 TRUNCATE t1;
 STOP SLAVE;
 SET GLOBAL sql_slave_skip_counter=2;
-SET GLOBAL replicate_ignore_do_not_replicate=1;
+SET GLOBAL replicate_events_marked_for_skip=0;
 START SLAVE;
 SET @old_binlog_format= @@binlog_format;
 SET binlog_format= statement;
-SET do_not_replicate=0;
+SET skip_replication=0;
 INSERT INTO t1 VALUES (1,5);
-SET do_not_replicate=1;
+SET skip_replication=1;
 INSERT INTO t1 VALUES (2,5);
-SET do_not_replicate=0;
+SET skip_replication=0;
 INSERT INTO t1 VALUES (3,5);
 INSERT INTO t1 VALUES (4,5);
 SET binlog_format= @old_binlog_format;
@@ -100,29 +100,29 @@ a	b
 SELECT * FROM t1 ORDER by a;
 a       b
 2       8
-SET do_not_replicate=0;
+SET skip_replication=0;
 BEGIN;
-SET do_not_replicate=0;
+SET skip_replication=0;
 ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
-SET do_not_replicate=1;
+SET skip_replication=1;
 ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
 ROLLBACK;
-SET do_not_replicate=1;
+SET skip_replication=1;
 BEGIN;
-SET do_not_replicate=0;
+SET skip_replication=0;
 ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
-SET do_not_replicate=1;
+SET skip_replication=1;
 ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
 COMMIT;
 SET autocommit=0;
 INSERT INTO t2(a) VALUES(100);
-SET do_not_replicate=1;
+SET skip_replication=1;
 ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
 ROLLBACK;
 SET autocommit=1;
-SET do_not_replicate=1;
-CREATE FUNCTION foo (x INT) RETURNS INT BEGIN SET SESSION do_not_replicate=x; RETURN x; END|
-CREATE PROCEDURE bar(x INT) BEGIN SET SESSION do_not_replicate=x; END|
+SET skip_replication=1;
+CREATE FUNCTION foo (x INT) RETURNS INT BEGIN SET SESSION skip_replication=x; RETURN x; END|
+CREATE PROCEDURE bar(x INT) BEGIN SET SESSION skip_replication=x; END|
 CREATE FUNCTION baz (x INT) RETURNS INT BEGIN CALL bar(x); RETURN x; END|
 SELECT foo(0);
 ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
@@ -140,23 +140,23 @@ INSERT INTO t1 VALUES (101, foo(1));
 ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
 INSERT INTO t1 VALUES (101, baz(0));
 ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
-SELECT @@do_not_replicate;
-@@do_not_replicate
+SELECT @@skip_replication;
+@@skip_replication
 1
 CALL bar(0);
-SELECT @@do_not_replicate;
-@@do_not_replicate
+SELECT @@skip_replication;
+@@skip_replication
 0
 CALL bar(1);
-SELECT @@do_not_replicate;
-@@do_not_replicate
+SELECT @@skip_replication;
+@@skip_replication
 1
 DROP FUNCTION foo;
 DROP PROCEDURE bar;
 DROP FUNCTION baz;
-SET do_not_replicate=0;
+SET skip_replication=0;
 DROP TABLE t1,t2;
 STOP SLAVE;
-SET GLOBAL replicate_ignore_do_not_replicate=0;
+SET GLOBAL replicate_events_marked_for_skip=1;
 START SLAVE;
 include/rpl_end.inc

=== renamed file 'mysql-test/suite/rpl/t/rpl_do_not_replicate.test' => 'mysql-test/suite/rpl/t/rpl_skip_replication.test'
--- a/mysql-test/suite/rpl/t/rpl_do_not_replicate.test	2011-08-11 09:38:52 +0000
+++ b/mysql-test/suite/rpl/t/rpl_skip_replication.test	2011-08-12 11:18:34 +0000
@@ -2,33 +2,33 @@
 --source include/have_innodb.inc
 
 connection slave;
-# Test that SUPER is required to change @@replicate_ignore_do_not_replicate.
+# Test that SUPER is required to change @@replicate_events_marked_for_skip.
 CREATE USER 'nonsuperuser'@'127.0.0.1';
 GRANT ALTER,CREATE,DELETE,DROP,EVENT,INSERT,PROCESS,REPLICATION SLAVE,
       SELECT,UPDATE ON *.* TO 'nonsuperuser'@'127.0.0.1';
 connect(nonpriv, 127.0.0.1, nonsuperuser,, test, $SLAVE_MYPORT,);
 connection nonpriv;
 --error ER_SPECIFIC_ACCESS_DENIED_ERROR
-SET GLOBAL replicate_ignore_do_not_replicate=1;
+SET GLOBAL replicate_events_marked_for_skip=0;
 disconnect nonpriv;
 connection slave;
 DROP USER'nonsuperuser'@'127.0.0.1';
 
 --error ER_SLAVE_MUST_STOP
-SET GLOBAL replicate_ignore_do_not_replicate=1;
+SET GLOBAL replicate_events_marked_for_skip=0;
 STOP SLAVE;
-SET GLOBAL replicate_ignore_do_not_replicate=1;
+SET GLOBAL replicate_events_marked_for_skip=0;
 START SLAVE;
 
 connection master;
-SET do_not_replicate=0;
+SET skip_replication=0;
 
 CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ENGINE=myisam;
 CREATE TABLE t2 (a INT PRIMARY KEY, b INT) ENGINE=innodb;
 INSERT INTO t1(a) VALUES (1);
 INSERT INTO t2(a) VALUES (1);
 
-SET do_not_replicate=1;
+SET skip_replication=1;
 
 CREATE TABLE t3 (a INT PRIMARY KEY, b INT) ENGINE=myisam;
 INSERT INTO t1(a) VALUES (2);
@@ -52,7 +52,7 @@ FLUSH NO_WRITE_TO_BINLOG LOGS;
 sync_slave_with_master;
 connection slave;
 STOP SLAVE;
-SET GLOBAL replicate_ignore_do_not_replicate=0;
+SET GLOBAL replicate_events_marked_for_skip=1;
 START SLAVE;
 
 connection master;
@@ -65,7 +65,7 @@ connection master;
 DROP TABLE t3;
 
 #
-# Test that the slave will preserve the @@do_not_replicate flag in its
+# Test that the slave will preserve the @@skip_replication flag in its
 # own binlog.
 #
 
@@ -75,36 +75,36 @@ connection slave;
 RESET MASTER;
 
 connection master;
-SET do_not_replicate=0;
+SET skip_replication=0;
 INSERT INTO t1 VALUES (1,0);
-SET do_not_replicate=1;
+SET skip_replication=1;
 INSERT INTO t1 VALUES (2,0);
-SET do_not_replicate=0;
+SET skip_replication=0;
 INSERT INTO t1 VALUES (3,0);
 
 sync_slave_with_master;
 connection slave;
-# Since slave has @@replicate_ignore_do_not_replicate=0, it should have
+# Since slave has @@replicate_events_marked_for_skip=1, it should have
 # applied all events.
 SELECT * FROM t1 ORDER by a;
 
 STOP SLAVE;
-SET GLOBAL replicate_ignore_do_not_replicate=1;
+SET GLOBAL replicate_events_marked_for_skip=0;
 let $SLAVE_DATADIR= `select @@datadir`;
 
 connection master;
 TRUNCATE t1;
 
 # Now apply the slave binlog to the master, to check that both the slave
-# and mysqlbinlog will preserve the @@do_not_replicate flag.
---exec $MYSQL_BINLOG $SLAVE_DATADIR/slave-bin.000001 > $MYSQLTEST_VARDIR/tmp/rpl_do_not_replicate.binlog
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/rpl_do_not_replicate.binlog
+# and mysqlbinlog will preserve the @@skip_replication flag.
+--exec $MYSQL_BINLOG $SLAVE_DATADIR/slave-bin.000001 > $MYSQLTEST_VARDIR/tmp/rpl_skip_replication.binlog
+--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/rpl_skip_replication.binlog
 
 # The master should have all three events.
 SELECT * FROM t1 ORDER by a;
 
 # The slave should be missing event 2, which is marked with the
-# @@do_not_replicate flag.
+# @@skip_replication flag.
 
 connection slave;
 START SLAVE;
@@ -116,7 +116,7 @@ connection slave;
 SELECT * FROM t1 ORDER by a;
 
 #
-# Test that @@sql_slave_skip_counter does not count skipped @@do_not_replicate
+# Test that @@sql_slave_skip_counter does not count skipped @@skip_replication
 # events.
 #
 
@@ -127,18 +127,18 @@ sync_slave_with_master;
 connection slave;
 STOP SLAVE;
 SET GLOBAL sql_slave_skip_counter=2;
-SET GLOBAL replicate_ignore_do_not_replicate=1;
+SET GLOBAL replicate_events_marked_for_skip=0;
 START SLAVE;
 
 connection master;
 # Need to fix @@binlog_format to get consistent event count.
 SET @old_binlog_format= @@binlog_format;
 SET binlog_format= statement;
-SET do_not_replicate=0;
+SET skip_replication=0;
 INSERT INTO t1 VALUES (1,5);
-SET do_not_replicate=1;
+SET skip_replication=1;
 INSERT INTO t1 VALUES (2,5);
-SET do_not_replicate=0;
+SET skip_replication=0;
 INSERT INTO t1 VALUES (3,5);
 INSERT INTO t1 VALUES (4,5);
 SET binlog_format= @old_binlog_format;
@@ -148,12 +148,12 @@ connection slave;
 
 # The slave should have skipped the first three inserts (number 1 and 3 due
 # to @@sql_slave_skip_counter=2, number 2 due to
-# @@replicate_ignore_do_not_replicate=1). So only number 4 should be left.
+# @@replicate_events_marked_for_skip=0). So only number 4 should be left.
 SELECT * FROM t1;
 
 
 #
-# Check that BINLOG statement preserves the @@do_not_replicate flag.
+# Check that BINLOG statement preserves the @@skip_replication flag.
 #
 connection master;
 TRUNCATE t1;
@@ -161,10 +161,10 @@ TRUNCATE t1;
 # Format description log event.
 BINLOG '66I6Tg8BAAAAZgAAAGoAAAABAAQANS40LjAtTWFyaWFEQi12YWxncmluZC1tYXgtZGVidWctbG9n
 AAAAAAAAAAAAAAAAAADrojpOEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC';
-# INSERT INTO t1 VALUES (1,8)  # with @@do_not_replicate=1
+# INSERT INTO t1 VALUES (1,8)  # with @@skip_replication=1
 BINLOG 'HaM6ThMBAAAAKgAAANgAAAAAgA8AAAAAAAEABHRlc3QAAnQxAAIDAwAC
 HaM6ThcBAAAAJgAAAP4AAAAAgA8AAAAAAAEAAv/8AQAAAAgAAAA=';
-# INSERT INTO t1 VALUES (2,8)  # with @@do_not_replicate=0
+# INSERT INTO t1 VALUES (2,8)  # with @@skip_replication=0
 BINLOG 'JqM6ThMBAAAAKgAAALEBAAAAAA8AAAAAAAEABHRlc3QAAnQxAAIDAwAC
 JqM6ThcBAAAAJgAAANcBAAAAAA8AAAAAAAEAAv/8AgAAAAgAAAA=';
 
@@ -172,40 +172,40 @@ SELECT * FROM t1 ORDER BY a;
 sync_slave_with_master;
 connection slave;
 # Slave should have only the second insert, the first should be ignored due to
-# the @@do_not_replicate flag.
+# the @@skip_replication flag.
 SELECT * FROM t1 ORDER by a;
 
 
-# Test that it is not possible to d change @@do_not_replicate inside a
+# Test that it is not possible to d change @@skip_replication inside a
 # transaction or statement, thereby replicating only parts of statements
 # or transactions.
 connection master;
-SET do_not_replicate=0;
+SET skip_replication=0;
 
 BEGIN;
 --error ER_LOCK_OR_ACTIVE_TRANSACTION
-SET do_not_replicate=0;
+SET skip_replication=0;
 --error ER_LOCK_OR_ACTIVE_TRANSACTION
-SET do_not_replicate=1;
+SET skip_replication=1;
 ROLLBACK;
-SET do_not_replicate=1;
+SET skip_replication=1;
 BEGIN;
 --error ER_LOCK_OR_ACTIVE_TRANSACTION
-SET do_not_replicate=0;
+SET skip_replication=0;
 --error ER_LOCK_OR_ACTIVE_TRANSACTION
-SET do_not_replicate=1;
+SET skip_replication=1;
 COMMIT;
 SET autocommit=0;
 INSERT INTO t2(a) VALUES(100);
 --error ER_LOCK_OR_ACTIVE_TRANSACTION
-SET do_not_replicate=1;
+SET skip_replication=1;
 ROLLBACK;
 SET autocommit=1;
 
-SET do_not_replicate=1;
+SET skip_replication=1;
 --delimiter |
-CREATE FUNCTION foo (x INT) RETURNS INT BEGIN SET SESSION do_not_replicate=x; RETURN x; END|
-CREATE PROCEDURE bar(x INT) BEGIN SET SESSION do_not_replicate=x; END|
+CREATE FUNCTION foo (x INT) RETURNS INT BEGIN SET SESSION skip_replication=x; RETURN x; END|
+CREATE PROCEDURE bar(x INT) BEGIN SET SESSION skip_replication=x; END|
 CREATE FUNCTION baz (x INT) RETURNS INT BEGIN CALL bar(x); RETURN x; END|
 --delimiter ;
 --error ER_LOCK_OR_ACTIVE_TRANSACTION
@@ -224,22 +224,22 @@ UPDATE t2 SET b=baz(0);
 INSERT INTO t1 VALUES (101, foo(1));
 --error ER_LOCK_OR_ACTIVE_TRANSACTION
 INSERT INTO t1 VALUES (101, baz(0));
-SELECT @@do_not_replicate;
+SELECT @@skip_replication;
 CALL bar(0);
-SELECT @@do_not_replicate;
+SELECT @@skip_replication;
 CALL bar(1);
-SELECT @@do_not_replicate;
+SELECT @@skip_replication;
 DROP FUNCTION foo;
 DROP PROCEDURE bar;
 DROP FUNCTION baz;
 
 # Clean up.
 connection master;
-SET do_not_replicate=0;
+SET skip_replication=0;
 DROP TABLE t1,t2;
 connection slave;
 STOP SLAVE;
-SET GLOBAL replicate_ignore_do_not_replicate=0;
+SET GLOBAL replicate_events_marked_for_skip=1;
 START SLAVE;
 
 --source include/rpl_end.inc

=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc	2011-08-11 09:38:52 +0000
+++ b/sql/log_event.cc	2011-08-12 11:18:34 +0000
@@ -671,7 +671,7 @@ Log_event::Log_event(THD* thd_arg, uint1
   when=         thd->start_time;
   cache_stmt=   using_trans;
   flags= flags_arg |
-    (thd->options & OPTION_DO_NOT_REPLICATE ? LOG_EVENT_DO_NOT_REPLICATE_F : 0);
+    (thd->options & OPTION_SKIP_REPLICATION ? LOG_EVENT_SKIP_REPLICATION_F : 0);
 }
 
 
@@ -828,8 +828,8 @@ Log_event::do_shall_skip(Relay_log_info
                       rli->slave_skip_counter));
   if ((server_id == ::server_id && !rli->replicate_same_server_id) ||
       (rli->slave_skip_counter == 1 && rli->is_in_group()) ||
-      (flags & LOG_EVENT_DO_NOT_REPLICATE_F
-       && opt_replicate_ignore_do_not_replicate))
+      (flags & LOG_EVENT_SKIP_REPLICATION_F
+       && !opt_replicate_events_marked_for_skip))
     return EVENT_SKIP_IGNORE;
   if (rli->slave_skip_counter > 0)
     return EVENT_SKIP_COUNT;
@@ -3488,11 +3488,11 @@ Query_log_event::do_shall_skip(Relay_log
   DBUG_ASSERT(query && q_len > 0);
 
   /*
-    An event skipped due to @@do_not_replicate must not be counted towards the
+    An event skipped due to @@skip_replication must not be counted towards the
     number of events to be skipped due to @@sql_slave_skip_counter.
   */
-  if (flags & LOG_EVENT_DO_NOT_REPLICATE_F &&
-      opt_replicate_ignore_do_not_replicate)
+  if (flags & LOG_EVENT_SKIP_REPLICATION_F &&
+      !opt_replicate_events_marked_for_skip)
     DBUG_RETURN(Log_event::EVENT_SKIP_IGNORE);
 
   if (rli->slave_skip_counter > 0)
@@ -9792,7 +9792,7 @@ st_print_event_info::st_print_event_info
    auto_increment_increment(0),auto_increment_offset(0), charset_inited(0),
    lc_time_names_number(~0),
    charset_database_number(ILLEGAL_CHARSET_INFO_NUMBER),
-   thread_id(0), thread_id_printed(false), do_not_replicate(0),
+   thread_id(0), thread_id_printed(false), skip_replication(0),
    base64_output_mode(BASE64_OUTPUT_UNSPEC), printed_fd_event(FALSE)
 {
   /*

=== modified file 'sql/log_event.h'
--- a/sql/log_event.h	2011-08-11 09:38:52 +0000
+++ b/sql/log_event.h	2011-08-12 11:18:34 +0000
@@ -491,16 +491,16 @@ struct sql_ex_info
 #define LOG_EVENT_RELAY_LOG_F 0x40
 
 /**
-   @def LOG_EVENT_DO_NOT_REPLICATE_F
+   @def LOG_EVENT_SKIP_REPLICATION_F
 
-   Flag set by application creating the event (with @@do_not_replicate); the
+   Flag set by application creating the event (with @@skip_replication); the
    slave will skip replication of such events if
-   --replicate-ignore-do-not-replicate is set.
+   --replicate-events-marked-for-skip is false.
 
    This is a MariaDB flag; we allocate it from the end of the available
    values to reduce risk of conflict with new MySQL flags.
 */
-#define LOG_EVENT_DO_NOT_REPLICATE_F 0x8000
+#define LOG_EVENT_SKIP_REPLICATION_F 0x8000
 
 
 /**
@@ -670,10 +670,10 @@ typedef struct st_print_event_info
   uint thread_id;
   bool thread_id_printed;
   /*
-    Track when @@do_not_replicate changes so we need to output a SET
+    Track when @@skip_replication changes so we need to output a SET
     statement for it.
   */
-  int do_not_replicate;
+  int skip_replication;
 
   st_print_event_info();
 
@@ -929,7 +929,7 @@ public:
   /**
     Some 16 flags. See the definitions above for LOG_EVENT_TIME_F,
     LOG_EVENT_FORCED_ROTATE_F, LOG_EVENT_THREAD_SPECIFIC_F,
-    LOG_EVENT_SUPPRESS_USE_F, and LOG_EVENT_DO_NOT_REPLICATE_F for notes.
+    LOG_EVENT_SUPPRESS_USE_F, and LOG_EVENT_SKIP_REPLICATION_F for notes.
   */
   uint16 flags;
 
@@ -3933,8 +3933,8 @@ public:
     DBUG_PRINT("enter", ("m_incident: %d", m_incident));
     m_message.str= NULL;                    /* Just as a precaution */
     m_message.length= 0;
-    /* Replicate the incident irregardless of @@do_not_replicate. */
-    flags&= ~LOG_EVENT_DO_NOT_REPLICATE_F;
+    /* Replicate the incident irregardless of @@skip_replication. */
+    flags&= ~LOG_EVENT_SKIP_REPLICATION_F;
     DBUG_VOID_RETURN;
   }
 
@@ -3944,8 +3944,8 @@ public:
     DBUG_ENTER("Incident_log_event::Incident_log_event");
     DBUG_PRINT("enter", ("m_incident: %d", m_incident));
     m_message= msg;
-    /* Replicate the incident irregardless of @@do_not_replicate. */
-    flags&= ~LOG_EVENT_DO_NOT_REPLICATE_F;
+    /* Replicate the incident irregardless of @@skip_replication. */
+    flags&= ~LOG_EVENT_SKIP_REPLICATION_F;
     DBUG_VOID_RETURN;
   }
 #endif

=== modified file 'sql/mysql_priv.h'
--- a/sql/mysql_priv.h	2011-08-11 09:38:52 +0000
+++ b/sql/mysql_priv.h	2011-08-12 11:18:34 +0000
@@ -504,7 +504,7 @@ protected:
 */
 #define TMP_TABLE_FORCE_MYISAM          (ULL(1) << 32)
 #define OPTION_PROFILING                (ULL(1) << 33)
-#define OPTION_DO_NOT_REPLICATE         (ULL(1) << 34) // THD, user
+#define OPTION_SKIP_REPLICATION         (ULL(1) << 34) // THD, user
 
 
 
@@ -2065,7 +2065,7 @@ extern my_bool opt_old_style_user_limits
 extern uint opt_crash_binlog_innodb;
 extern char *shared_memory_base_name, *mysqld_unix_port;
 extern my_bool opt_enable_shared_memory;
-extern my_bool opt_replicate_ignore_do_not_replicate;
+extern my_bool opt_replicate_events_marked_for_skip;
 extern char *default_tz_name;
 #endif /* MYSQL_SERVER */
 #if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS

=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc	2011-08-11 09:38:52 +0000
+++ b/sql/mysqld.cc	2011-08-12 11:18:34 +0000
@@ -553,7 +553,7 @@ uint    opt_large_page_size= 0;
 uint    opt_debug_sync_timeout= 0;
 #endif /* defined(ENABLED_DEBUG_SYNC) */
 my_bool opt_old_style_user_limits= 0, trust_function_creators= 0;
-my_bool opt_replicate_ignore_do_not_replicate;
+my_bool opt_replicate_events_marked_for_skip;
 
 /*
   True if there is at least one per-hour limit for some user, so we should
@@ -5935,6 +5935,7 @@ enum options_mysqld
   OPT_SAFEMALLOC_MEM_LIMIT,    OPT_REPLICATE_DO_TABLE,
   OPT_REPLICATE_IGNORE_TABLE,  OPT_REPLICATE_WILD_DO_TABLE,
   OPT_REPLICATE_WILD_IGNORE_TABLE, OPT_REPLICATE_SAME_SERVER_ID,
+  OPT_REPLICATE_EVENTS_MARKED_FOR_SKIP,
   OPT_DISCONNECT_SLAVE_EVENT_COUNT, OPT_TC_HEURISTIC_RECOVER,
   OPT_ABORT_SLAVE_EVENT_COUNT,
   OPT_LOG_BIN_TRUST_FUNCTION_CREATORS,
@@ -6087,8 +6088,7 @@ enum options_mysqld
   OPT_IGNORE_BUILTIN_INNODB,
   OPT_BINLOG_DIRECT_NON_TRANS_UPDATE,
   OPT_DEFAULT_CHARACTER_SET_OLD,
-  OPT_MAX_LONG_DATA_SIZE,
-  OPT_REPLICATE_IGNORE_DO_NOT_REPLICATE
+  OPT_MAX_LONG_DATA_SIZE
 };
 
 
@@ -6785,11 +6785,12 @@ each time the SQL thread starts.",
    "cross database updates. If you need cross database updates to work, "
    "make sure you have 3.23.28 or later, and use replicate-wild-ignore-"
    "table=db_name.%. ", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
-  {"replicate-ignore-do-not-replicate", OPT_REPLICATE_IGNORE_DO_NOT_REPLICATE,
-   "Tells the slave thread not to replicate events that were created with"
-   "@@do_not_replicat=1.", &opt_replicate_ignore_do_not_replicate,
-   &opt_replicate_ignore_do_not_replicate, 0, GET_BOOL, NO_ARG,
-   0, 0, 0 ,0, 0, 0},
+  {"replicate-events-marked-for-skip", OPT_REPLICATE_EVENTS_MARKED_FOR_SKIP,
+   "Tells the slave thread to replicate events that were created with"
+   "@@skip_replication=1. Default true. If set to false, such events will not"
+   "be replicated.", &opt_replicate_events_marked_for_skip,
+   &opt_replicate_events_marked_for_skip, 0, GET_BOOL, NO_ARG,
+   1, 0, 0 ,0, 0, 0},
   {"replicate-ignore-table", OPT_REPLICATE_IGNORE_TABLE,
    "Tells the slave thread to not replicate to the specified table. To specify "
    "more than one table to ignore, use the directive multiple times, once for "

=== modified file 'sql/set_var.cc'
--- a/sql/set_var.cc	2011-08-11 09:38:52 +0000
+++ b/sql/set_var.cc	2011-08-12 11:18:34 +0000
@@ -117,7 +117,7 @@ static bool set_option_log_bin_bit(THD *
 static bool set_option_autocommit(THD *thd, set_var *var);
 static int  check_log_update(THD *thd, set_var *var);
 static bool set_log_update(THD *thd, set_var *var);
-static int check_do_not_replicate(THD *thd, set_var *var);
+static int check_skip_replication(THD *thd, set_var *var);
 static int  check_pseudo_thread_id(THD *thd, set_var *var);
 void fix_binlog_format_after_update(THD *thd, enum_var_type type);
 static void fix_low_priority_updates(THD *thd, enum_var_type type);
@@ -831,10 +831,20 @@ static sys_var_thd_bit  sys_profiling(&v
 static sys_var_thd_ulong        sys_profiling_history_size(&vars, "profiling_history_size",
                                               &SV::profiling_history_size);
 #endif
-static sys_var_thd_bit  sys_do_not_replicate(&vars, "do_not_replicate",
-                                             check_do_not_replicate,
+/*
+  When this is set by a connection, binlogged events will be marked with a
+  corresponding flag. The slave can be configured to not replicate events
+  so marked.
+  In the binlog dump thread on the master, this variable is re-used for a
+  related purpose: The slave sets this flag when connecting to the master to
+  request that the master filter out (ie. not send) any events with the flag
+  set, thus saving network traffic on events that would be ignored by the
+  slave anyway.
+*/
+static sys_var_thd_bit  sys_skip_replication(&vars, "skip_replication",
+                                             check_skip_replication,
                                              set_option_bit,
-                                             OPTION_DO_NOT_REPLICATE);
+                                             OPTION_SKIP_REPLICATION);
 
 /* Local state variables */
 
@@ -912,10 +922,10 @@ static sys_var_thd_set sys_log_slow_verb
                                               &SV::log_slow_verbosity,
                                               &log_slow_verbosity_typelib);
 #ifdef HAVE_REPLICATION
-static sys_var_replicate_ignore_do_not_replicate
-  sys_replicate_ignore_do_not_replicate(&vars,
-                                        "replicate_ignore_do_not_replicate",
-                                        &opt_replicate_ignore_do_not_replicate);
+static sys_var_replicate_events_marked_for_skip
+  sys_replicate_events_marked_for_skip(&vars,
+                                       "replicate_events_marked_for_skip",
+                                       &opt_replicate_events_marked_for_skip);
 #endif
 
 /* Global read-only variable containing hostname */
@@ -3279,10 +3289,10 @@ static bool set_log_update(THD *thd, set
 }
 
 
-static int check_do_not_replicate(THD *thd, set_var *var)
+static int check_skip_replication(THD *thd, set_var *var)
 {
   /*
-    We must not change @@do_not_replicate in the middle of a transaction or
+    We must not change @@skip_replication in the middle of a transaction or
     statement, as that could result in only part of the transaction / statement
     being replicated.
     (This would be particularly serious if we were to replicate eg.
@@ -4443,11 +4453,11 @@ sys_var_event_scheduler::update(THD *thd
 
 
 #ifdef HAVE_REPLICATION
-bool sys_var_replicate_ignore_do_not_replicate::update(THD *thd, set_var *var)
+bool sys_var_replicate_events_marked_for_skip::update(THD *thd, set_var *var)
 {
   bool result;
   int thread_mask;
-  DBUG_ENTER("sys_var_replicate_ignore_do_not_replicate::update");
+  DBUG_ENTER("sys_var_replicate_events_marked_for_skip::update");
 
   /* Slave threads must be stopped to change the variable. */
   pthread_mutex_lock(&LOCK_active_mi);

=== modified file 'sql/set_var.h'
--- a/sql/set_var.h	2011-08-11 09:38:52 +0000
+++ b/sql/set_var.h	2011-08-12 11:18:34 +0000
@@ -1286,17 +1286,17 @@ public:
 
 #ifdef HAVE_REPLICATION
 /**
-  Handler for setting the system variable --replicate-ignore-do-not-replicate.
+  Handler for setting the system variable --replicate-events-marked-for-skip.
 */
 
-class sys_var_replicate_ignore_do_not_replicate :public sys_var_bool_ptr
+class sys_var_replicate_events_marked_for_skip :public sys_var_bool_ptr
 {
 public:
-  sys_var_replicate_ignore_do_not_replicate(sys_var_chain *chain,
-                                            const char *name_arg,
-                                            my_bool *value_arg) :
+  sys_var_replicate_events_marked_for_skip(sys_var_chain *chain,
+                                           const char *name_arg,
+                                           my_bool *value_arg) :
     sys_var_bool_ptr(chain, name_arg, value_arg) {};
-  ~sys_var_replicate_ignore_do_not_replicate() {};
+  ~sys_var_replicate_events_marked_for_skip() {};
   bool update(THD *thd, set_var *var);
 };
 #endif

=== modified file 'sql/slave.cc'
--- a/sql/slave.cc	2011-08-11 09:38:52 +0000
+++ b/sql/slave.cc	2011-08-12 11:18:34 +0000
@@ -1177,18 +1177,18 @@ when it try to get the value of TIME_ZON
   }
 
   /*
-    Request the master to filter away events with the @@do_not_replicate flag
-    set, if we are running with --replicate-ignore-do_not_replicate=1.
+    Request the master to filter away events with the @@skip_replication flag
+    set, if we are running with --replicate-events-marked-for-skip=0.
   */
-  if (opt_replicate_ignore_do_not_replicate)
+  if (!opt_replicate_events_marked_for_skip)
   {
-    if (!mysql_real_query(mysql, STRING_WITH_LEN("SET do_not_replicate=1")))
+    if (mysql_real_query(mysql, STRING_WITH_LEN("SET skip_replication=1")))
     {
       err_code= mysql_errno(mysql);
       if (is_network_error(err_code))
       {
         mi->report(ERROR_LEVEL, err_code,
-                   "Setting master-side filtering of @@do_not_replicate failed "
+                   "Setting master-side filtering of @@skip_replication failed "
                    "with error: %s", mysql_error(mysql));
         goto network_err;
       }
@@ -1196,15 +1196,24 @@ when it try to get the value of TIME_ZON
       {
         /*
           The master is older than the slave and does not support the
-          @@do_not_replicate feature.
+          @@skip_replication feature.
           This is not a problem, as such master will not generate events with
-          the @@do_not_replicate flag set in the first place. We will still
+          the @@skip_replication flag set in the first place. We will still
           do slave-side filtering of such events though, to handle the (rare)
           case of downgrading a master and receiving old events generated from
-          before the downgrade with the @@do_not_replicate flag set.
+          before the downgrade with the @@skip_replication flag set.
         */
         DBUG_PRINT("info", ("Old master does not support master-side filtering "
-                            "of @@do_not_replicate events."));
+                            "of @@skip_replication events."));
+      }
+      else
+      {
+        /* Fatal error */
+        errmsg= "The slave I/O thread stops because a fatal error is "
+          "encountered when it tries to request filtering of events marked "
+          "with the @@skip_replication flag.";
+        sprintf(err_buff, "%s Error: %s", errmsg, mysql_error(mysql));
+        goto err;
       }
     }
   }
@@ -2146,8 +2155,8 @@ int apply_event_and_update_pos(Log_event
   thd->lex->current_select= 0;
   if (!ev->when)
     ev->when= my_time(0);
-  thd->options= (thd->options & ~OPTION_DO_NOT_REPLICATE) |
-    (ev->flags & LOG_EVENT_DO_NOT_REPLICATE_F ? OPTION_DO_NOT_REPLICATE : 0);
+  thd->options= (thd->options & ~OPTION_SKIP_REPLICATION) |
+    (ev->flags & LOG_EVENT_SKIP_REPLICATION_F ? OPTION_SKIP_REPLICATION : 0);
   ev->thd = thd; // because up to this point, ev->thd == 0
 
   int reason= ev->shall_skip(rli);
@@ -3627,7 +3636,6 @@ static int queue_event(Master_info* mi,c
       buf[EVENT_TYPE_OFFSET] != FORMAT_DESCRIPTION_EVENT /* a way to escape */)
     DBUG_RETURN(queue_old_event(mi,buf,event_len));
 
-  LINT_INIT(inc_pos);
   pthread_mutex_lock(&mi->data_lock);
 
   switch (buf[EVENT_TYPE_OFFSET]) {
@@ -3702,7 +3710,7 @@ static int queue_event(Master_info* mi,c
   }
 
   /*
-    If we filter events master-side (eg. @@do_not_replicate), we will see holes
+    If we filter events master-side (eg. @@skip_replication), we will see holes
     in the event positions from the master. If we see such a hole, adjust
     mi->master_log_pos accordingly so we maintain the correct position (for
     reconnect, MASTER_POS_WAIT(), etc.)

=== modified file 'sql/sql_binlog.cc'
--- a/sql/sql_binlog.cc	2011-08-11 09:38:52 +0000
+++ b/sql/sql_binlog.cc	2011-08-12 11:18:34 +0000
@@ -33,7 +33,7 @@
 
 void mysql_client_binlog_statement(THD* thd)
 {
-  ulonglong save_do_not_replicate;
+  ulonglong save_skip_replication;
   DBUG_ENTER("mysql_client_binlog_statement");
   DBUG_PRINT("info",("binlog base64: '%*s'",
                      (int) (thd->lex->comment.length < 2048 ?
@@ -214,15 +214,15 @@ void mysql_client_binlog_statement(THD*
         reporting.
       */
 #if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-      save_do_not_replicate= thd->options & OPTION_DO_NOT_REPLICATE;
-      thd->options= (thd->options & ~OPTION_DO_NOT_REPLICATE) |
-        (ev->flags & LOG_EVENT_DO_NOT_REPLICATE_F ?
-         OPTION_DO_NOT_REPLICATE : 0);
+      save_skip_replication= thd->options & OPTION_SKIP_REPLICATION;
+      thd->options= (thd->options & ~OPTION_SKIP_REPLICATION) |
+        (ev->flags & LOG_EVENT_SKIP_REPLICATION_F ?
+         OPTION_SKIP_REPLICATION : 0);
 
       err= ev->apply_event(rli);
 
-      thd->options= (thd->options & ~OPTION_DO_NOT_REPLICATE) |
-        save_do_not_replicate;
+      thd->options= (thd->options & ~OPTION_SKIP_REPLICATION) |
+        save_skip_replication;
 #else
       err= 0;
 #endif

=== modified file 'sql/sql_repl.cc'
--- a/sql/sql_repl.cc	2011-08-11 09:38:52 +0000
+++ b/sql/sql_repl.cc	2011-08-12 11:18:34 +0000
@@ -349,13 +349,17 @@ send_event_to_slave(THD *thd, NET *net,
   thd_proc_info(thd, "Sending binlog event to slave");
 
   /*
-    Skip events with the @@do_not_replicate flag set, if slave requested
+    Skip events with the @@skip_replication flag set, if slave requested
     skipping of such events.
   */
-  if (thd->options & OPTION_DO_NOT_REPLICATE)
+  if (thd->options & OPTION_SKIP_REPLICATION)
   {
+    /*
+      The first byte of the packet is a '\0' to distinguish it from an error
+      packet. So the actual event starts at offset +1.
+    */
     uint16 flags= uint2korr(&((*packet)[FLAGS_OFFSET+1]));
-    if (flags & LOG_EVENT_DO_NOT_REPLICATE_F)
+    if (flags & LOG_EVENT_SKIP_REPLICATION_F)
       return NULL;
   }
 



More information about the commits mailing list