From: Martin Zaun Date: March 30 2012 7:00am Subject: bzr push into mysql-5.1-telco-7.1 branch (martin.zaun:4509 to 4511) List-Archive: http://lists.mysql.com/commits/143369 Message-Id: <201203300700.q2U70VI0023056@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 4511 Martin Zaun 2012-03-29 [merge] merge from 70 to 71 4510 Martin Zaun 2012-03-29 [merge] Bug54854 - merge from ndb-7.1-ddl-exist-errors to ndb-7.1 modified: sql/mysqld.cc sql/slave.cc sql/slave.h 4509 Craig L Russell 2012-03-29 Bump clusterj version to 7.1.22 modified: storage/ndb/clusterj/clusterj-api/pom.xml storage/ndb/clusterj/clusterj-bindings/pom.xml storage/ndb/clusterj/clusterj-core/pom.xml storage/ndb/clusterj/clusterj-jdbc/pom.xml storage/ndb/clusterj/clusterj-jpatest/pom.xml storage/ndb/clusterj/clusterj-openjpa/pom.xml storage/ndb/clusterj/clusterj-test/pom.xml storage/ndb/clusterj/clusterj-tie/pom.xml storage/ndb/clusterj/pom.xml === modified file 'sql/mysqld.cc' --- a/sql/mysqld.cc 2012-03-26 20:13:32 +0000 +++ b/sql/mysqld.cc 2012-03-30 05:19:18 +0000 @@ -8048,6 +8048,8 @@ mysqld_get_one_option(int optid, case OPT_SLAVE_SKIP_ERRORS: #ifndef MCP_BUG54854 add_slave_skip_errors(argument); +#else + init_slave_skip_errors(argument); #endif // MCP_BUG54854 break; case OPT_SLAVE_EXEC_MODE: === modified file 'sql/slave.cc' --- a/sql/slave.cc 2012-03-26 20:13:32 +0000 +++ b/sql/slave.cc 2012-03-30 05:19:18 +0000 @@ -131,6 +131,10 @@ static bool wait_for_relay_log_space(Rel static inline bool io_slave_killed(THD* thd,Master_info* mi); static inline bool sql_slave_killed(THD* thd,Relay_log_info* rli); static int init_slave_thread(THD* thd, SLAVE_THD_TYPE thd_type); +#ifndef MCP_BUG54854 +#else +static void print_slave_skip_errors(void); +#endif // MCP_BUG54854 static int safe_connect(THD* thd, MYSQL* mysql, Master_info* mi); static int safe_reconnect(THD* thd, MYSQL* mysql, Master_info* mi, bool suppress_warnings); @@ -234,6 +238,18 @@ int init_slave() */ active_mi= new Master_info; +#ifndef MCP_BUG54854 +#else + /* + If --slave-skip-errors=... was not used, the string value for the + system variable has not been set up yet. Do it now. + */ + if (!use_slave_mask) + { + print_slave_skip_errors(); + } +#endif // MCP_BUG54854 + /* If master_host is not specified, try to read it from the master_info file. If master_host is specified, create the master_info file if it doesn't @@ -285,6 +301,8 @@ err: #ifndef MCP_BUG54854 void print_slave_skip_errors() +#else +static void print_slave_skip_errors(void) #endif // MCP_BUG54854 { /* @@ -356,9 +374,7 @@ static void init_slave_skip_errors() use_slave_mask = 1; DBUG_VOID_RETURN; } -#endif // MCP_BUG54854 -#ifndef MCP_BUG54854 static void add_slave_skip_errors(const uint* errors, uint n_errors) { DBUG_ENTER("add_slave_skip_errors"); @@ -373,9 +389,7 @@ static void add_slave_skip_errors(const } DBUG_VOID_RETURN; } -#endif // MCP_BUG54854 -#ifndef MCP_BUG54854 /* Add errors that should be skipped for slave @@ -386,7 +400,6 @@ static void add_slave_skip_errors(const NOTES Called from get_options() in mysqld.cc on start-up */ - void add_slave_skip_errors(const char* arg) { const char *p= NULL; @@ -450,6 +463,51 @@ void add_slave_skip_errors(const char* a } DBUG_VOID_RETURN; } +#else +/* + Init function to set up array for errors that should be skipped for slave + + SYNOPSIS + init_slave_skip_errors() + arg List of errors numbers to skip, separated with ',' + + NOTES + Called from get_options() in mysqld.cc on start-up +*/ + +void init_slave_skip_errors(const char* arg) +{ + const char *p; + DBUG_ENTER("init_slave_skip_errors"); + + if (bitmap_init(&slave_error_mask,0,MAX_SLAVE_ERROR,0)) + { + fprintf(stderr, "Badly out of memory, please check your system status\n"); + exit(1); + } + use_slave_mask = 1; + for (;my_isspace(system_charset_info,*arg);++arg) + /* empty */; + if (!my_strnncoll(system_charset_info,(uchar*)arg,4,(const uchar*)"all",4)) + { + bitmap_set_all(&slave_error_mask); + print_slave_skip_errors(); + DBUG_VOID_RETURN; + } + for (p= arg ; *p; ) + { + long err_code; + if (!(p= str2int(p, 10, 0, LONG_MAX, &err_code))) + break; + if (err_code < MAX_SLAVE_ERROR) + bitmap_set_bit(&slave_error_mask,(uint)err_code); + while (!my_isdigit(system_charset_info,*p) && *p) + p++; + } + /* Convert slave skip errors bitmap into a printable string. */ + print_slave_skip_errors(); + DBUG_VOID_RETURN; +} #endif // MCP_BUG54854 static void set_thd_in_use_temporary_tables(Relay_log_info *rli) === modified file 'sql/slave.h' --- a/sql/slave.h 2012-03-26 20:13:32 +0000 +++ b/sql/slave.h 2012-03-30 05:19:18 +0000 @@ -152,6 +152,8 @@ int init_slave(); #ifndef MCP_BUG54854 void add_slave_skip_errors(const char* arg); void print_slave_skip_errors(); +#else +void init_slave_skip_errors(const char* arg); #endif // MCP_BUG54854 bool flush_relay_log_info(Relay_log_info* rli); int register_slave_on_master(MYSQL* mysql); No bundle (reason: useless for push emails).