List:Commits« Previous MessageNext Message »
From:Alfranio Correia Date:December 29 2010 10:57am
Subject:bzr commit into mysql-trunk-bugfixing branch (alfranio.correia:3423)
Bug#58897
View as plain text  
#At file:///home/acorreia/workspace.oracle/repository.mysql/bzrwork/bug-58897/mysql-trunk-bugfixing/ based on revid:sergey.glukhov@stripped

 3423 Alfranio Correia	2010-12-29 [merge]
      BUG#58897 Rpl_info_table::do_is_transactional causes too much overhead
      
      After WL#2775, Slave's information,i.e. IO Thread and SQL Thread's information, can be
      stored into different types of repositories. The current implementation provides two
      repositories, i.e. FILE or TABLE, and any type of engine can be used.
      
      However, only transactional engines, such as Innodb, can provide a crash-safe behaviour
      in the sense that a slave can continue operating after a crash without requiring any
      manual-intervention.
      
      If a transactional table is in use, a different execution path is called to provide a
      crash-safe behaviour. Testing if a transactional engine is in use, unfortunately,
      requires to open and close the table, slave_relay_log_info, and this has a negative
      impact on performance.
      
      To fix this, we configure the engine in use while starting the server and and the
      routine that checks if a transactional engine is in use accesses a variable.
     @ mysql-test/extra/rpl_tests/rpl_crash_safe.inc
        Removed ALTER TABLE as it is forbidden now.
     @ mysql-test/suite/rpl/r/rpl_mixed_crash_safe.result
        Removed ALTER TABLE as it is forbidden now.
     @ mysql-test/suite/rpl/r/rpl_row_crash_safe.result
        Removed ALTER TABLE as it is forbidden now.
     @ mysql-test/suite/rpl/r/rpl_stm_crash_safe.result
        Removed ALTER TABLE as it is forbidden now.
     @ mysql-test/suite/rpl/t/rpl_mixed_crash_safe-slave.opt
        Changed the test case to set the engine in use for the relay log repository.
     @ mysql-test/suite/rpl/t/rpl_row_crash_safe-slave.opt
        Changed the test case to set the engine in use for the relay log repository.
     @ mysql-test/suite/rpl/t/rpl_stm_crash_safe-slave.opt
        Changed the test case to set the engine in use for the relay log repository.
     @ scripts/mysql_install_db.pl.in
        Removed the option --rpl-engine.
     @ scripts/mysql_install_db.sh
        Removed the option --rpl-engine.
     @ sql/lock.cc
        Added code to avoid printing out an error message if a slave is trying
        to execute ALTER TABLE on a rpl info table although a regular user
        cannot do the same.
     @ sql/mysqld.cc
        Added options to define the type of engine used by rpl into tables.
     @ sql/mysqld.h
        Added options to define the type of engine used by rpl into tables.
     @ sql/rpl_info_factory.cc
        Removed defines that were used to simulate options.
     @ sql/rpl_info_table.cc
        Changed do do_is_transactional() and implemented change_engine().
        
        do_is_transactional returns is_transactional which is initialized after
        calling change_engine during startup.
     @ sql/rpl_info_table.h
        Introduced the member variable is_transactional that identifies
        if the table used as repository is transactional or not.
        
        The variable is initialized after calling change_engine().
     @ sql/rpl_info_table_access.cc
        Skipped security validation if doing updates through the Rpl_info_table_access.
     @ sql/sql_parse.cc
        Disabled the possibility of directly executing an alter table on
        rpl info tables.

    modified:
      mysql-test/extra/rpl_tests/rpl_crash_safe.inc
      mysql-test/suite/rpl/r/rpl_mixed_crash_safe.result
      mysql-test/suite/rpl/r/rpl_row_crash_safe.result
      mysql-test/suite/rpl/r/rpl_stm_crash_safe.result
      mysql-test/suite/rpl/t/rpl_mixed_crash_safe-slave.opt
      mysql-test/suite/rpl/t/rpl_row_crash_safe-slave.opt
      mysql-test/suite/rpl/t/rpl_stm_crash_safe-slave.opt
      scripts/mysql_install_db.pl.in
      scripts/mysql_install_db.sh
      sql/lock.cc
      sql/mysqld.cc
      sql/mysqld.h
      sql/rpl_info_factory.cc
      sql/rpl_info_table.cc
      sql/rpl_info_table.h
      sql/rpl_info_table_access.cc
      sql/sql_class.h
      sql/sql_parse.cc
=== modified file 'mysql-test/extra/rpl_tests/rpl_crash_safe.inc'
--- a/mysql-test/extra/rpl_tests/rpl_crash_safe.inc	2010-10-27 11:50:22 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_crash_safe.inc	2010-12-13 18:18:56 +0000
@@ -11,8 +11,6 @@ if (`SELECT HEX(@commands) = HEX('config
 {
   --sync_slave_with_master
   SHOW CREATE TABLE mysql.slave_relay_log_info;
-  ALTER TABLE mysql.slave_relay_log_info ENGINE= Innodb;
-  SHOW CREATE TABLE mysql.slave_relay_log_info;
 
   connection master;
   --source extra/rpl_tests/rpl_mixing_engines.inc

=== modified file 'mysql-test/suite/rpl/r/rpl_mixed_crash_safe.result'
--- a/mysql-test/suite/rpl/r/rpl_mixed_crash_safe.result	2010-11-16 12:48:25 +0000
+++ b/mysql-test/suite/rpl/r/rpl_mixed_crash_safe.result	2010-12-13 18:18:56 +0000
@@ -25,19 +25,6 @@ slave_relay_log_info	CREATE TABLE `slave
   `Master_log_pos` bigint(20) unsigned NOT NULL,
   `Sql_delay` int(11) NOT NULL,
   PRIMARY KEY (`Master_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Relay Log Information'
-ALTER TABLE mysql.slave_relay_log_info ENGINE= Innodb;
-SHOW CREATE TABLE mysql.slave_relay_log_info;
-Table	Create Table
-slave_relay_log_info	CREATE TABLE `slave_relay_log_info` (
-  `Master_id` int(10) unsigned NOT NULL,
-  `Number_of_lines` int(10) unsigned NOT NULL,
-  `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
-  `Relay_log_pos` bigint(20) unsigned NOT NULL,
-  `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
-  `Master_log_pos` bigint(20) unsigned NOT NULL,
-  `Sql_delay` int(11) NOT NULL,
-  PRIMARY KEY (`Master_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Relay Log Information'
 SET SQL_LOG_BIN=0;
 CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;

=== modified file 'mysql-test/suite/rpl/r/rpl_row_crash_safe.result'
--- a/mysql-test/suite/rpl/r/rpl_row_crash_safe.result	2010-11-16 12:48:25 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_crash_safe.result	2010-12-13 18:18:56 +0000
@@ -25,19 +25,6 @@ slave_relay_log_info	CREATE TABLE `slave
   `Master_log_pos` bigint(20) unsigned NOT NULL,
   `Sql_delay` int(11) NOT NULL,
   PRIMARY KEY (`Master_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Relay Log Information'
-ALTER TABLE mysql.slave_relay_log_info ENGINE= Innodb;
-SHOW CREATE TABLE mysql.slave_relay_log_info;
-Table	Create Table
-slave_relay_log_info	CREATE TABLE `slave_relay_log_info` (
-  `Master_id` int(10) unsigned NOT NULL,
-  `Number_of_lines` int(10) unsigned NOT NULL,
-  `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
-  `Relay_log_pos` bigint(20) unsigned NOT NULL,
-  `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
-  `Master_log_pos` bigint(20) unsigned NOT NULL,
-  `Sql_delay` int(11) NOT NULL,
-  PRIMARY KEY (`Master_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Relay Log Information'
 SET SQL_LOG_BIN=0;
 CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;

=== modified file 'mysql-test/suite/rpl/r/rpl_stm_crash_safe.result'
--- a/mysql-test/suite/rpl/r/rpl_stm_crash_safe.result	2010-11-16 12:48:25 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stm_crash_safe.result	2010-12-13 18:18:56 +0000
@@ -25,19 +25,6 @@ slave_relay_log_info	CREATE TABLE `slave
   `Master_log_pos` bigint(20) unsigned NOT NULL,
   `Sql_delay` int(11) NOT NULL,
   PRIMARY KEY (`Master_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Relay Log Information'
-ALTER TABLE mysql.slave_relay_log_info ENGINE= Innodb;
-SHOW CREATE TABLE mysql.slave_relay_log_info;
-Table	Create Table
-slave_relay_log_info	CREATE TABLE `slave_relay_log_info` (
-  `Master_id` int(10) unsigned NOT NULL,
-  `Number_of_lines` int(10) unsigned NOT NULL,
-  `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
-  `Relay_log_pos` bigint(20) unsigned NOT NULL,
-  `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
-  `Master_log_pos` bigint(20) unsigned NOT NULL,
-  `Sql_delay` int(11) NOT NULL,
-  PRIMARY KEY (`Master_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Relay Log Information'
 SET SQL_LOG_BIN=0;
 CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;

=== modified file 'mysql-test/suite/rpl/t/rpl_mixed_crash_safe-slave.opt'
--- a/mysql-test/suite/rpl/t/rpl_mixed_crash_safe-slave.opt	2010-10-27 11:50:22 +0000
+++ b/mysql-test/suite/rpl/t/rpl_mixed_crash_safe-slave.opt	2010-12-13 18:18:56 +0000
@@ -1 +1 @@
---skip-core-file --skip-slave-start --relay-log-info-repository=TABLE --relay-log-recovery=1
+--skip-core-file --skip-slave-start --relay-log-info-repository=TABLE --relay-log-info-engine=innodb --relay-log-recovery=1

=== modified file 'mysql-test/suite/rpl/t/rpl_row_crash_safe-slave.opt'
--- a/mysql-test/suite/rpl/t/rpl_row_crash_safe-slave.opt	2010-10-27 11:50:22 +0000
+++ b/mysql-test/suite/rpl/t/rpl_row_crash_safe-slave.opt	2010-12-13 18:18:56 +0000
@@ -1 +1 @@
---skip-core-file --skip-slave-start --relay-log-info-repository=TABLE --relay-log-recovery=1
+--skip-core-file --skip-slave-start --relay-log-info-repository=TABLE --relay-log-info-engine=innodb --relay-log-recovery=1

=== modified file 'mysql-test/suite/rpl/t/rpl_stm_crash_safe-slave.opt'
--- a/mysql-test/suite/rpl/t/rpl_stm_crash_safe-slave.opt	2010-10-27 11:50:22 +0000
+++ b/mysql-test/suite/rpl/t/rpl_stm_crash_safe-slave.opt	2010-12-13 18:18:56 +0000
@@ -1 +1 @@
---skip-core-file --skip-slave-start --relay-log-info-repository=TABLE --relay-log-recovery=1
+--skip-core-file --skip-slave-start --relay-log-info-repository=TABLE --relay-log-info-engine=innodb --relay-log-recovery=1

=== modified file 'scripts/mysql_install_db.pl.in'
--- a/scripts/mysql_install_db.pl.in	2010-10-25 10:39:01 +0000
+++ b/scripts/mysql_install_db.pl.in	2010-12-13 18:18:56 +0000
@@ -79,11 +79,6 @@ Usage: $0 [OPTIONS]
                        user.  You must be root to use this option.  By default
                        mysqld runs using your current login name and files and
                        directories that it creates will be owned by you.
-  --rpl-engine=engine  The storage engine used for the mysql.slave_master_info and
-                       mysql.slave_relay_log_info tables. By default, both tables are
-                       created using the MyISAM storage engine. However, any storage
-                       engine available to the server may be used. If a crash-safe
-                       slave is required, the storage engine must be transactional.
 
 All other options are passed to the mysqld program
 
@@ -122,7 +117,6 @@ sub parse_arguments
              "builddir=s",      # FIXME not documented
              "srcdir=s",
              "ldata|datadir=s",
-             "rpl-engine=s",
 
              # Note that the user will be passed to mysqld so that it runs
              # as 'user' (crucial e.g. if log-bin=/some_other_path/
@@ -459,29 +453,6 @@ if ( open(PIPE, "| $mysqld_install_cmd_l
   report_verbose($opt,"OK");
 
   # ----------------------------------------------------------------------
-  # Pipe ALTER TABLE mysql.slave_master_info|slave_relay_log_info to "mysqld --bootstrap"
-  # ----------------------------------------------------------------------
-
-  if ($opt->{'rpl-engine'})
-  {
-    report_verbose_wait($opt,"Setting engine for mysql.slave_master_info mysql.slave_relay_log_info tables...");
-    if ( open(PIPE, "| $mysqld_install_cmd_line") )
-    {
-      print PIPE "use mysql;\n";
-      print PIPE "ALTER TABLE mysql.slave_master_info ENGINE= " . $opt->{'rpl-engine'} . ";\n";
-      print PIPE "ALTER TABLE mysql.slave_relay_log_info ENGINE= " . $opt->{'$rpl-engine'} . ";\n";
-      close PIPE;
-
-      report_verbose($opt,"OK");
-    }
-    else
-    {
-      warning($opt,"CRASH-SAFE SLAVE IS NOT COMPLETELY CONFIGURED!",
-                   "The \"CRASH-SAFE SLAVE\" might not work properly.");
-    }
-  }
-
-  # ----------------------------------------------------------------------
   # Pipe fill_help_tables.sql to "mysqld --bootstrap"
   # ----------------------------------------------------------------------
 

=== modified file 'scripts/mysql_install_db.sh'
--- a/scripts/mysql_install_db.sh	2010-10-25 10:39:01 +0000
+++ b/scripts/mysql_install_db.sh	2010-12-13 18:18:56 +0000
@@ -63,11 +63,6 @@ Usage: $0 [OPTIONS]
                        user.  You must be root to use this option.  By default
                        mysqld runs using your current login name and files and
                        directories that it creates will be owned by you.
-  --rpl-engine=engine  The storage engine used for the mysql.slave_master_info and
-                       mysql.slave_relay_log_info tables. By default, both tables are
-                       created using the MyISAM storage engine. However, any storage
-                       engine available to the server may be used. If a crash-safe
-                       slave is required, the storage engine must be transactional.
 
 All other options are passed to the mysqld program
 
@@ -120,8 +115,6 @@ parse_arguments()
       --no-defaults|--defaults-file=*|--defaults-extra-file=*)
         defaults="$arg" ;;
 
-      --rpl-engine=*) rpl_engine=`parse_arg "$arg"` ;;
-
       --cross-bootstrap|--windows)
         # Used when building the MySQL system tables on a different host than
         # the target. The platform-independent files that are created in
@@ -434,19 +427,6 @@ else
   exit 1
 fi
 
-if test -n "$rpl_engine"
-then
-  s_echo "Setting engine for mysql.slave_master_info mysql.slave_relay_log_info tables..."
-  if { echo "use mysql;"; echo "ALTER TABLE mysql.slave_master_info ENGINE= $rpl_engine;"; echo "ALTER TABLE mysql.slave_relay_log_info ENGINE= $rpl_engine;"; } | $mysqld_install_cmd_line > /dev/null
-  then
-    s_echo "OK"
-  else
-    echo
-    echo "WARNING: CRASH-SAFE SLAVE IS NOT COMPLETELY CONFIGURED!"
-    echo "The \"CRASH-SAFE SLAVE\" might not work properly."
-  fi
-fi
-
 s_echo "Filling help tables..."
 if { echo "use mysql;"; cat $fill_help_tables; } | $mysqld_install_cmd_line > /dev/null
 then

=== modified file 'sql/lock.cc'
--- a/sql/lock.cc	2010-11-23 22:37:59 +0000
+++ b/sql/lock.cc	2010-12-29 10:56:55 +0000
@@ -130,7 +130,8 @@ lock_tables_check(THD *thd, TABLE **tabl
   log_table_write_query=
      is_log_table_write_query(thd->lex->sql_command);
   rpl_info_table_write_query=
-     is_rpl_info_table_write_query(thd->lex->sql_command);
+     (is_rpl_info_table_write_query(thd->lex->sql_command)) ||
+     (thd->system_thread == SYSTEM_THREAD_INFO_REPOSITORY);
 
   for (i=0 ; i<count; i++)
   {

=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc	2010-12-07 18:11:49 +0000
+++ b/sql/mysqld.cc	2010-12-13 18:18:56 +0000
@@ -339,6 +339,8 @@ static char *lc_time_names_name;
 char *my_bind_addr_str;
 static char *default_collation_name;
 char *default_storage_engine;
+char *master_info_engine= 0;
+char *relay_log_info_engine= 0;
 static char compiled_default_collation_name[]= MYSQL_DEFAULT_COLLATION_NAME;
 static I_List<THD> thread_cache;
 static bool binlog_format_used= false;
@@ -5961,6 +5963,12 @@ struct my_option my_long_options[]=
   {"default-storage-engine", 0, "The default storage engine for new tables",
    &default_storage_engine, 0, 0, GET_STR, REQUIRED_ARG,
    0, 0, 0, 0, 0, 0 },
+  {"master-info-engine", 0, "The storage engine for the master info repository",
+   &master_info_engine, 0, 0, GET_STR, REQUIRED_ARG,
+   0, 0, 0, 0, 0, 0 },
+  {"relay-log-info-engine", 0, "The storage engine for the relay info repository",
+   &relay_log_info_engine, 0, 0, GET_STR, REQUIRED_ARG,
+   0, 0, 0, 0, 0, 0 },
   {"default-time-zone", 0, "Set the default time zone.",
    &default_tz_name, &default_tz_name,
    0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },

=== modified file 'sql/mysqld.h'
--- a/sql/mysqld.h	2010-12-07 18:11:49 +0000
+++ b/sql/mysqld.h	2010-12-13 18:18:56 +0000
@@ -123,6 +123,8 @@ extern my_bool opt_enable_shared_memory;
 extern char *default_tz_name;
 extern Time_zone *default_tz;
 extern char *default_storage_engine;
+extern char *master_info_engine;
+extern char *relay_log_info_engine;
 extern bool opt_endinfo, using_udf_functions;
 extern my_bool locked_in_memory;
 extern bool opt_using_transactions;

=== modified file 'sql/rpl_info_factory.cc'
--- a/sql/rpl_info_factory.cc	2010-10-29 18:16:48 +0000
+++ b/sql/rpl_info_factory.cc	2010-12-29 10:56:55 +0000
@@ -18,13 +18,6 @@
 #include "rpl_slave.h"
 #include "rpl_info_factory.h"
 
-/*
-  We need to replace these definitions by an option that states the
-  engine one wants to use in the master info repository.
-*/
-#define master_info_engine NULL
-#define relay_log_info_engine NULL
-
 /**
   Creates both a Master info and a Relay log info repository whose types are
   defined as parameters.

=== modified file 'sql/rpl_info_table.cc'
--- a/sql/rpl_info_table.cc	2010-12-03 00:15:40 +0000
+++ b/sql/rpl_info_table.cc	2010-12-29 10:56:55 +0000
@@ -15,12 +15,13 @@
 
 #include "rpl_info_table.h"
 #include "rpl_utility.h"
-#include "sql_parse.h"
+#include "sql_prepare.h"
 
 Rpl_info_table::Rpl_info_table(uint nparam, uint param_field_idx,
                                const char* param_schema,
                                const char *param_table)
-:Rpl_info_handler(nparam), field_idx(param_field_idx)
+:Rpl_info_handler(nparam), field_idx(param_field_idx),
+ is_transactional(FALSE)
 {
   str_schema.str= str_table.str= NULL;
   str_schema.length= str_table.length= 0;
@@ -447,16 +448,37 @@ char* Rpl_info_table::do_get_description
 
 bool Rpl_info_table::do_is_transactional()
 {
+  return is_transactional;
+}
+
+bool Rpl_info_table::change_engine(const char *engine)
+{
+  bool error= TRUE;
   ulong saved_mode;
   TABLE *table= NULL;
   Open_tables_backup backup;
-  bool is_trans= FALSE;
-
-  DBUG_ENTER("Rpl_info_table::do_is_transactional");
+  String query;
+  LEX_STRING lex;
+ 
+  DBUG_ENTER("Rpl_info_table::do_check_info");
 
   THD *thd= access->create_thd();
-
+  Ed_connection conn(thd);
   saved_mode= thd->variables.sql_mode;
+  tmp_disable_binlog(thd);
+
+  if (query.append(STRING_WITH_LEN("ALTER TABLE ")) ||
+      query.append(description) ||
+      query.append(STRING_WITH_LEN(" ENGINE= ")) ||
+      query.append(engine) ||
+      query.append(";"))
+     goto err;
+
+  lex.str= query.c_ptr_safe();
+  lex.length= query.length();
+
+  if ((error= conn.execute_direct(lex)))
+    goto err;
 
   /*
     Opens and locks the rpl_info table before accessing it.
@@ -464,30 +486,11 @@ bool Rpl_info_table::do_is_transactional
   if (!access->open_table(thd, str_schema, str_table,
                           get_number_info(), TL_READ,
                           &table, &backup))
-    is_trans= table->file->has_transactions();
+    is_transactional= table->file->has_transactions();
 
   access->close_table(thd, table, &backup, 0);
-  thd->variables.sql_mode= saved_mode;
-  access->drop_thd(thd);
-  DBUG_RETURN(is_trans);
-}
-
-bool Rpl_info_table::change_engine(const char *engine)
-{
-  bool error= TRUE;
-  ulong saved_mode;
-
-  DBUG_ENTER("Rpl_info_table::do_check_info");
-
-  THD *thd= access->create_thd();
-
-  saved_mode= thd->variables.sql_mode;
-  tmp_disable_binlog(thd);
-
-  /* TODO: Change the engine using internal functions */
-
-  error= FALSE;
 
+err:
   reenable_binlog(thd);
   thd->variables.sql_mode= saved_mode;
   access->drop_thd(thd);

=== modified file 'sql/rpl_info_table.h'
--- a/sql/rpl_info_table.h	2010-10-25 10:39:01 +0000
+++ b/sql/rpl_info_table.h	2010-12-29 10:56:55 +0000
@@ -65,6 +65,12 @@ private:
   */
   Rpl_info_table_access *access;
 
+  /*
+    Identifies if a table is transactional or non-transactional.
+    This is used to provide a crash-safe behaviour.
+  */
+  bool is_transactional;
+
   int do_init_info();
   int do_check_info();
   void do_end_info();

=== modified file 'sql/rpl_info_table_access.cc'
--- a/sql/rpl_info_table_access.cc	2010-10-27 11:20:32 +0000
+++ b/sql/rpl_info_table_access.cc	2010-12-29 10:56:55 +0000
@@ -288,6 +288,8 @@ THD *Rpl_info_table_access::create_thd()
     thd= new THD;
     thd->thread_stack= (char*) &thd;
     thd->store_globals();
+    thd->security_ctx->skip_grants();
+    thd->system_thread= SYSTEM_THREAD_INFO_REPOSITORY;
   }
   else
     thd= current_thd;

=== modified file 'sql/sql_class.h'
--- a/sql/sql_class.h	2010-11-29 16:27:58 +0000
+++ b/sql/sql_class.h	2010-12-29 10:56:55 +0000
@@ -1166,7 +1166,8 @@ enum enum_thread_type
   SYSTEM_THREAD_SLAVE_SQL= 4,
   SYSTEM_THREAD_NDBCLUSTER_BINLOG= 8,
   SYSTEM_THREAD_EVENT_SCHEDULER= 16,
-  SYSTEM_THREAD_EVENT_WORKER= 32
+  SYSTEM_THREAD_EVENT_WORKER= 32,
+  SYSTEM_THREAD_INFO_REPOSITORY= 64
 };
 
 inline char const *
@@ -1182,6 +1183,7 @@ show_system_thread(enum_thread_type thre
     RETURN_NAME_AS_STRING(SYSTEM_THREAD_NDBCLUSTER_BINLOG);
     RETURN_NAME_AS_STRING(SYSTEM_THREAD_EVENT_SCHEDULER);
     RETURN_NAME_AS_STRING(SYSTEM_THREAD_EVENT_WORKER);
+    RETURN_NAME_AS_STRING(SYSTEM_THREAD_INFO_REPOSITORY);
   default:
     sprintf(buf, "<UNKNOWN SYSTEM THREAD: %d>", thread);
     return buf;

=== modified file 'sql/sql_parse.cc'
--- a/sql/sql_parse.cc	2010-11-29 11:28:55 +0000
+++ b/sql/sql_parse.cc	2010-12-13 18:18:56 +0000
@@ -298,8 +298,7 @@ void init_update_queries(void)
                                             CF_CAN_GENERATE_ROW_EVENTS;
   sql_command_flags[SQLCOM_CREATE_INDEX]=   CF_CHANGES_DATA | CF_AUTO_COMMIT_TRANS;
   sql_command_flags[SQLCOM_ALTER_TABLE]=    CF_CHANGES_DATA | CF_WRITE_LOGS_COMMAND |
-                                            CF_AUTO_COMMIT_TRANS |
-                                            CF_WRITE_RPL_INFO_COMMAND;
+                                            CF_AUTO_COMMIT_TRANS;
   sql_command_flags[SQLCOM_TRUNCATE]=       CF_CHANGES_DATA | CF_WRITE_LOGS_COMMAND |
                                             CF_AUTO_COMMIT_TRANS;
   sql_command_flags[SQLCOM_DROP_TABLE]=     CF_CHANGES_DATA | CF_AUTO_COMMIT_TRANS;

No bundle (reason: revision is a merge).
Thread
bzr commit into mysql-trunk-bugfixing branch (alfranio.correia:3423)Bug#58897Alfranio Correia29 Dec
  • Re: bzr commit into mysql-trunk-bugfixing branch(alfranio.correia:3423) Bug#58897He Zhenxing31 Dec
    • Re: bzr commit into mysql-trunk-bugfixing branch (alfranio.correia:3423)Bug#58897Alfranio Correia31 Dec
      • Re: bzr commit into mysql-trunk-bugfixing branch(alfranio.correia:3423) Bug#58897He Zhenxing31 Dec
        • Re: bzr commit into mysql-trunk-bugfixing branch (alfranio.correia:3423)Bug#58897Alfranio Correia3 Jan