summaryrefslogtreecommitdiff
path: root/sql/sql_insert.cc
diff options
context:
space:
mode:
authorAndrei Elkin <aelkin@mysql.com>2008-08-29 17:20:08 +0300
committerAndrei Elkin <aelkin@mysql.com>2008-08-29 17:20:08 +0300
commitc0de944fdb2cff16b1ca9cc344e356f68c38d90a (patch)
tree81888e02df54e70391288ffe3c71e10a8c6a9c0b /sql/sql_insert.cc
parent267c94c7ce5c6797c4e38f66e286b2331ae14fa6 (diff)
downloadmariadb-git-c0de944fdb2cff16b1ca9cc344e356f68c38d90a.tar.gz
Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos()
The assert is about binlogging must have been activated, but it was not actually according to the reported how-to-repeat instuctions. Analysis revealed that binlog_start_trans_and_stmt() was called without prior testing if binlogging is ON. Fixed with avoing entering binlog_start_trans_and_stmt() if binlog is not activated. mysql-test/r/skip_log_bin.result: new results. mysql-test/t/skip_log_bin-master.opt: the option to deactivate binlogging. mysql-test/t/skip_log_bin.test: regression test for the bug. sql/sql_insert.cc: avoing entering binlog_start_trans_and_stmt() if binlog is not activated.
Diffstat (limited to 'sql/sql_insert.cc')
-rw-r--r--sql/sql_insert.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index 9e3c591ae2a..7d66ab487f4 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -3523,7 +3523,8 @@ select_create::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
temporary table, we need to start a statement transaction.
*/
if ((thd->lex->create_info.options & HA_LEX_CREATE_TMP_TABLE) == 0 &&
- thd->current_stmt_binlog_row_based)
+ thd->current_stmt_binlog_row_based &&
+ mysql_bin_log.is_open())
{
thd->binlog_start_trans_and_stmt();
}
@@ -3619,10 +3620,11 @@ select_create::binlog_show_create_table(TABLE **tables, uint count)
result= store_create_info(thd, &tmp_table_list, &query, create_info);
DBUG_ASSERT(result == 0); /* store_create_info() always return 0 */
- thd->binlog_query(THD::STMT_QUERY_TYPE,
- query.ptr(), query.length(),
- /* is_trans */ TRUE,
- /* suppress_use */ FALSE);
+ if (mysql_bin_log.is_open())
+ thd->binlog_query(THD::STMT_QUERY_TYPE,
+ query.ptr(), query.length(),
+ /* is_trans */ TRUE,
+ /* suppress_use */ FALSE);
}
void select_create::store_values(List<Item> &values)