mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-7640: CHANGE MASTER TO doesn't work with prepared statements
When CHANGE MASTER was executed as a PS, its attributes were wrongly getting reset toward the end of PREPARE. As a result, the subsequent executions had no effect. Fixed by making sure that the CHANGE MASTER attributes are preserved during the lifetime of the PS.
This commit is contained in:
@ -3456,7 +3456,8 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len)
|
||||
thd->mdl_context.release_transactional_locks();
|
||||
}
|
||||
|
||||
lex_end(lex);
|
||||
/* Preserve CHANGE MASTER attributes */
|
||||
lex_end_stage1(lex);
|
||||
cleanup_stmt();
|
||||
thd->restore_backup_statement(this, &stmt_backup);
|
||||
thd->stmt_arena= old_stmt_arena;
|
||||
@ -4056,6 +4057,10 @@ void Prepared_statement::deallocate()
|
||||
{
|
||||
/* We account deallocate in the same manner as mysqld_stmt_close */
|
||||
status_var_increment(thd->status_var.com_stmt_close);
|
||||
|
||||
/* It should now be safe to reset CHANGE MASTER parameters */
|
||||
lex_end_stage2(lex);
|
||||
|
||||
/* Statement map calls delete stmt on erase */
|
||||
thd->stmt_map.erase(this);
|
||||
}
|
||||
|
Reference in New Issue
Block a user