summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Nozdrin <alik@sun.com>2010-01-31 00:12:29 +0300
committerAlexander Nozdrin <alik@sun.com>2010-01-31 00:12:29 +0300
commit2cdad6c3eb353cc4d986c274caad2dad5eaa6494 (patch)
treef2eeac784b7db952ba98d0ce33063cd5fdcf1b2f
parent7e4234b4f5c60747fecf17a2ffcd4d11199fca04 (diff)
parent5aa4c33e3233e2c1cac9f3bb0b17379a56503666 (diff)
downloadmariadb-git-2cdad6c3eb353cc4d986c274caad2dad5eaa6494.tar.gz
Manual merge from mysql-trunk-merge.
Conflicts: - mysql-test/suite/binlog/t/binlog_write_error.test - sql/log.cc - sql/log_event.cc - sql/log_event_old.cc - sql/mysql_priv.h - sql/sp.cc - sql/sql_acl.cc - sql/sql_base.cc - sql/sql_delete.cc - sql/sql_insert.cc - sql/sql_load.cc - sql/sql_table.cc - sql/sql_udf.cc - sql/sql_update.cc - sql/sql_view.cc
-rw-r--r--sql/log.cc2
-rw-r--r--sql/sql_udf.cc10
-rw-r--r--sql/sql_update.cc1
3 files changed, 10 insertions, 3 deletions
diff --git a/sql/log.cc b/sql/log.cc
index 35a5885ca0f..26cfdb615fe 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -1753,7 +1753,7 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
*/
if (cache_mngr->stmt_cache.has_incident())
{
- mysql_bin_log.write_incident(thd, TRUE);
+ error= mysql_bin_log.write_incident(thd, TRUE);
cache_mngr->reset_cache(&cache_mngr->stmt_cache);
}
else if (!cache_mngr->stmt_cache.empty())
diff --git a/sql/sql_udf.cc b/sql/sql_udf.cc
index 57c9110405a..d0e446fb157 100644
--- a/sql/sql_udf.cc
+++ b/sql/sql_udf.cc
@@ -531,8 +531,11 @@ int mysql_create_function(THD *thd,udf_func *udf)
/* Binlog the create function. */
if (write_bin_log(thd, TRUE, thd->query(), thd->query_length()))
+ {
+ /* Restore the state of binlog format */
+ thd->current_stmt_binlog_row_based= save_binlog_row_based;
DBUG_RETURN(1);
-
+ }
/* Restore the state of binlog format */
thd->current_stmt_binlog_row_based= save_binlog_row_based;
DBUG_RETURN(0);
@@ -612,8 +615,11 @@ int mysql_drop_function(THD *thd,const LEX_STRING *udf_name)
/* Binlog the drop function. */
if (write_bin_log(thd, TRUE, thd->query(), thd->query_length()))
+ {
+ /* Restore the state of binlog format */
+ thd->current_stmt_binlog_row_based= save_binlog_row_based;
DBUG_RETURN(1);
-
+ }
/* Restore the state of binlog format */
thd->current_stmt_binlog_row_based= save_binlog_row_based;
DBUG_RETURN(0);
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index 4e5941a87a0..97abf2cd89b 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -1868,6 +1868,7 @@ void multi_update::abort()
into repl event.
*/
int errcode= query_error_code(thd, thd->killed == THD::NOT_KILLED);
+ /* the error of binary logging is ignored */
(void)thd->binlog_query(THD::ROW_QUERY_TYPE,
thd->query(), thd->query_length(),
transactional_tables, FALSE, FALSE, errcode);