mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Backport Bug #45827 Stmt using two autoinc values does not produce unsafe warning
One statement that have more than one different tables to update with autoinc columns just was marked as unsafe in mixed mode, so the unsafe warning can't be produced in statement mode. To fix the problem, mark the statement as unsafe in statement mode too. mysql-test/extra/rpl_tests/rpl_insert_id.test: The test case is updated due to the patch of bug#45827. mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result: The test result is updated due to the patch of bug#45827. mysql-test/suite/binlog/r/binlog_unsafe.result: Test result for bug#45827. mysql-test/suite/binlog/t/binlog_unsafe.test: Added test to verify if stmt that have more than one different tables to update with autoinc columns will produce unsafe warning mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result: The test result is updated due to the patch of bug#45827. mysql-test/suite/rpl/t/rpl_trigger.test: The test case is updated due to the patch of bug#45827. mysql-test/suite/rpl/t/rpl_variables_stm.test: The test case is updated due to the patch of bug#45827. sql/sql_base.cc: Reomved the 'set_current_stmt_binlog_row_based_if_mixed' function for producing unsafe warnings by executing 'decide_logging_format' function later in statement mode
This commit is contained in:
@ -5286,9 +5286,7 @@ int lock_tables(THD *thd, TABLE_LIST *tables, uint count, bool *need_reopen)
|
||||
We can solve these problems in mixed mode by switching to binlogging
|
||||
if at least one updated table is used by sub-statement
|
||||
*/
|
||||
/* The BINLOG_FORMAT_MIXED judgement is saved for suppressing
|
||||
warnings, but it will be removed by fixing bug#45827 */
|
||||
if (thd->variables.binlog_format == BINLOG_FORMAT_MIXED && tables &&
|
||||
if (thd->variables.binlog_format != BINLOG_FORMAT_ROW && tables &&
|
||||
has_write_table_with_auto_increment(thd->lex->first_not_own_table()))
|
||||
{
|
||||
thd->lex->set_stmt_unsafe();
|
||||
|
Reference in New Issue
Block a user