mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fixed bug mdev-463.
RBR should be turned off when an ANALYZE TABLE command is executed.
This commit is contained in:
10
mysql-test/r/stat_tables_rbr.result
Normal file
10
mysql-test/r/stat_tables_rbr.result
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#
|
||||||
|
# Bug mdev-463: assertion failure when running ANALYZE with RBR on
|
||||||
|
#
|
||||||
|
SET GLOBAL use_stat_tables = PREFERABLY;
|
||||||
|
CREATE TABLE t1 (i INT) ENGINE=InnoDB;
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL use_stat_tables = DEFAULT;
|
18
mysql-test/t/stat_tables_rbr.test
Normal file
18
mysql-test/t/stat_tables_rbr.test
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
--source include/have_binlog_format_row.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug mdev-463: assertion failure when running ANALYZE with RBR on
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET GLOBAL use_stat_tables = PREFERABLY;
|
||||||
|
|
||||||
|
--connect (con1,localhost,root,,)
|
||||||
|
CREATE TABLE t1 (i INT) ENGINE=InnoDB;
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL use_stat_tables = DEFAULT;
|
||||||
|
--disconnect con1
|
||||||
|
|
@ -322,6 +322,8 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
|||||||
int result_code;
|
int result_code;
|
||||||
int compl_result_code;
|
int compl_result_code;
|
||||||
bool need_repair_or_alter= 0;
|
bool need_repair_or_alter= 0;
|
||||||
|
bool save_binlog_row_based= 0;
|
||||||
|
|
||||||
DBUG_ENTER("mysql_admin_table");
|
DBUG_ENTER("mysql_admin_table");
|
||||||
DBUG_PRINT("enter", ("extra_open_options: %u", extra_open_options));
|
DBUG_PRINT("enter", ("extra_open_options: %u", extra_open_options));
|
||||||
|
|
||||||
@ -415,6 +417,11 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
open_error= open_and_lock_tables(thd, table, TRUE, 0);
|
open_error= open_and_lock_tables(thd, table, TRUE, 0);
|
||||||
|
if (lex->sql_command == SQLCOM_ANALYZE)
|
||||||
|
{
|
||||||
|
if ((save_binlog_row_based= thd->is_current_stmt_binlog_format_row()))
|
||||||
|
thd->clear_current_stmt_binlog_format_row();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
thd->prepare_derived_at_open= FALSE;
|
thd->prepare_derived_at_open= FALSE;
|
||||||
|
|
||||||
@ -954,6 +961,8 @@ send_result_message:
|
|||||||
trans_commit_stmt(thd);
|
trans_commit_stmt(thd);
|
||||||
trans_commit_implicit(thd);
|
trans_commit_implicit(thd);
|
||||||
close_thread_tables(thd);
|
close_thread_tables(thd);
|
||||||
|
if (save_binlog_row_based)
|
||||||
|
thd->set_current_stmt_binlog_format_row();
|
||||||
thd->mdl_context.release_transactional_locks();
|
thd->mdl_context.release_transactional_locks();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -986,6 +995,8 @@ err:
|
|||||||
trans_rollback_stmt(thd);
|
trans_rollback_stmt(thd);
|
||||||
trans_rollback(thd);
|
trans_rollback(thd);
|
||||||
close_thread_tables(thd); // Shouldn't be needed
|
close_thread_tables(thd); // Shouldn't be needed
|
||||||
|
if (save_binlog_row_based)
|
||||||
|
thd->set_current_stmt_binlog_format_row();
|
||||||
thd->mdl_context.release_transactional_locks();
|
thd->mdl_context.release_transactional_locks();
|
||||||
if (table)
|
if (table)
|
||||||
table->table=0;
|
table->table=0;
|
||||||
|
Reference in New Issue
Block a user