Loading mysql-test/t/rpl_get_lock.test +3 −4 Original line number Diff line number Diff line source include/master-slave.inc; connection master; create table t1(n int); create table t2(n int); insert into t1 values(get_lock("lock",2)); dirty_close master; connection master1; select get_lock("lock",2); select release_lock("lock"); let $1=20000; let $1=2000; while ($1) { select get_lock("lock",2); select release_lock("lock"); do get_lock("lock",2); do release_lock("lock"); dec $1; } save_master_pos; Loading sql/sql_parse.cc +17 −4 Original line number Diff line number Diff line Loading @@ -1071,10 +1071,23 @@ mysql_execute_command(void) TABLE_LIST *tables=(TABLE_LIST*) lex->table_list.first; DBUG_ENTER("mysql_execute_command"); if(table_rules_on && thd->slave_thread && tables && !tables_ok(thd,tables)) DBUG_VOID_RETURN; // skip if we are in the slave thread, some table if (thd->slave_thread) { // skip if we are in the slave thread, some table // rules have been given and the table list says the query should not be // replicated if(table_rules_on && tables && !tables_ok(thd,tables)) DBUG_VOID_RETURN; // this is a workaround to deal with the shortcoming // in 3.23.44-3.23.46 masters // in RELEASE_LOCK() logging. We re-write SELECT RELEASE_LOCK() as // DO RELEASE_LOCK() if (lex->sql_command == SQLCOM_SELECT) { lex->sql_command = SQLCOM_DO; lex->insert_list = &lex->item_list; } } thread_safe_increment(com_stat[lex->sql_command],&LOCK_thread_count); switch (lex->sql_command) { Loading Loading
mysql-test/t/rpl_get_lock.test +3 −4 Original line number Diff line number Diff line source include/master-slave.inc; connection master; create table t1(n int); create table t2(n int); insert into t1 values(get_lock("lock",2)); dirty_close master; connection master1; select get_lock("lock",2); select release_lock("lock"); let $1=20000; let $1=2000; while ($1) { select get_lock("lock",2); select release_lock("lock"); do get_lock("lock",2); do release_lock("lock"); dec $1; } save_master_pos; Loading
sql/sql_parse.cc +17 −4 Original line number Diff line number Diff line Loading @@ -1071,10 +1071,23 @@ mysql_execute_command(void) TABLE_LIST *tables=(TABLE_LIST*) lex->table_list.first; DBUG_ENTER("mysql_execute_command"); if(table_rules_on && thd->slave_thread && tables && !tables_ok(thd,tables)) DBUG_VOID_RETURN; // skip if we are in the slave thread, some table if (thd->slave_thread) { // skip if we are in the slave thread, some table // rules have been given and the table list says the query should not be // replicated if(table_rules_on && tables && !tables_ok(thd,tables)) DBUG_VOID_RETURN; // this is a workaround to deal with the shortcoming // in 3.23.44-3.23.46 masters // in RELEASE_LOCK() logging. We re-write SELECT RELEASE_LOCK() as // DO RELEASE_LOCK() if (lex->sql_command == SQLCOM_SELECT) { lex->sql_command = SQLCOM_DO; lex->insert_list = &lex->item_list; } } thread_safe_increment(com_stat[lex->sql_command],&LOCK_thread_count); switch (lex->sql_command) { Loading