Loading mysql-test/t/rpl_get_lock.test +7 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,13 @@ dirty_close master; connection master1; select get_lock("lock",2); select release_lock("lock"); let $1=2000; while ($1) { do get_lock("lock",2); do release_lock("lock"); dec $1; } save_master_pos; connection slave; sync_with_master; Loading sql/sql_parse.cc +23 −0 Original line number Diff line number Diff line Loading @@ -1100,6 +1100,29 @@ mysql_execute_command(void) SELECT_LEX *select_lex = lex->select; DBUG_ENTER("mysql_execute_command"); 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; #ifndef TO_BE_DELETED /* 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; } #endif } thread_safe_increment(com_stat[lex->sql_command],&LOCK_thread_count); /* 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 Loading Loading
mysql-test/t/rpl_get_lock.test +7 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,13 @@ dirty_close master; connection master1; select get_lock("lock",2); select release_lock("lock"); let $1=2000; while ($1) { do get_lock("lock",2); do release_lock("lock"); dec $1; } save_master_pos; connection slave; sync_with_master; Loading
sql/sql_parse.cc +23 −0 Original line number Diff line number Diff line Loading @@ -1100,6 +1100,29 @@ mysql_execute_command(void) SELECT_LEX *select_lex = lex->select; DBUG_ENTER("mysql_execute_command"); 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; #ifndef TO_BE_DELETED /* 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; } #endif } thread_safe_increment(com_stat[lex->sql_command],&LOCK_thread_count); /* 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 Loading