List:Commits« Previous MessageNext Message »
From:Andrei Elkin Date:October 30 2007 11:49am
Subject:bk commit into 5.1 tree (aelkin:1.2603) BUG#12691
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of elkin. When elkin does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-10-30 13:49:42+02:00, aelkin@stripped +6 -0
  Manual merge 5.0-rpl -> 5.1-rpl.
  
  involved bug#12691, bug#27571

  mysql-test/suite/rpl/r/rpl_sp_effects.result@stripped, 2007-10-30 13:49:34+02:00, aelkin@stripped +41 -0
    results changed

  sql/slave.cc@stripped, 2007-10-30 13:49:35+02:00, aelkin@stripped +9 -70
    pended manual merge done (mats)

  sql/sql_delete.cc@stripped, 2007-10-30 13:49:35+02:00, aelkin@stripped +2 -23
    manual merge

  sql/sql_insert.cc@stripped, 2007-10-30 13:49:35+02:00, aelkin@stripped +1 -25
    manual merge

  sql/sql_load.cc@stripped, 2007-10-30 13:49:36+02:00, aelkin@stripped +5 -44
    manual merge

  sql/sql_update.cc@stripped, 2007-10-30 13:49:36+02:00, aelkin@stripped +13 -132
    manual merge.

diff -Nrup a/mysql-test/suite/rpl/r/rpl_sp_effects.result b/mysql-test/suite/rpl/r/rpl_sp_effects.result
--- a/mysql-test/suite/rpl/r/rpl_sp_effects.result	2007-10-30 10:55:45 +02:00
+++ b/mysql-test/suite/rpl/r/rpl_sp_effects.result	2007-10-30 13:49:34 +02:00
@@ -235,4 +235,45 @@ drop table t1;
 drop function f1;
 drop function f2;
 drop procedure p1;
+create table t2 (b BIT(7));
+create procedure sp_bug26199(bitvalue BIT(7))
+begin
+insert into t2 set b = bitvalue;
+end //
+create function sf_bug26199(b BIT(7)) returns int
+begin
+insert into t2 values(b);
+return 0;
+end//
+call   sp_bug26199(b'1110');
+call   sp_bug26199('\0');
+select sf_bug26199(b'1111111');
+sf_bug26199(b'1111111')
+0
+select sf_bug26199(b'101111111');
+sf_bug26199(b'101111111')
+0
+Warnings:
+Warning	1264	Out of range value for column 'b' at row 1
+select sf_bug26199('\'');
+sf_bug26199('\'')
+0
+select hex(b) from t2;
+hex(b)
+E
+0
+7F
+7F
+27
+select hex(b) from t2;
+hex(b)
+E
+0
+7F
+7F
+27
+drop table t2;
+drop procedure sp_bug26199;
+drop function sf_bug26199;
 SET GLOBAL log_bin_trust_function_creators = 0;
+end of the tests
diff -Nrup a/sql/slave.cc b/sql/slave.cc
--- a/sql/slave.cc	2007-10-30 11:30:59 +02:00
+++ b/sql/slave.cc	2007-10-30 13:49:35 +02:00
@@ -1805,70 +1805,6 @@ static int exec_relay_log_event(THD* thd
     int exec_res= 0;
 
     /*
-    */
-
-<<<<<<< gca sql/slave.cc 1.241.1.61
-    DBUG_PRINT("info",("type_code=%d, server_id=%d",type_code,ev->server_id));
-
-    if ((ev->server_id == (uint32) ::server_id &&
-         !replicate_same_server_id &&
-         type_code != FORMAT_DESCRIPTION_EVENT) ||
-        (rli->slave_skip_counter &&
-         type_code != ROTATE_EVENT && type_code != STOP_EVENT &&
-         type_code != START_EVENT_V3 && type_code!= FORMAT_DESCRIPTION_EVENT))
-    {
-      DBUG_PRINT("info", ("event skipped"));
-      if (thd->options & OPTION_BEGIN)
-        rli->inc_event_relay_log_pos();
-      else
-      {
-        rli->inc_group_relay_log_pos((type_code == ROTATE_EVENT ||
-                                      type_code == STOP_EVENT ||
-                                      type_code == FORMAT_DESCRIPTION_EVENT) ?
-                                     LL(0) : ev->log_pos,
-                                     1/* skip lock*/);
-        flush_relay_log_info(rli);
-      }
-
-      /*
-        Protect against common user error of setting the counter to 1
-        instead of 2 while recovering from an insert which used auto_increment,
-        rand or user var.
-      */
-      if (rli->slave_skip_counter &&
-          !((type_code == INTVAR_EVENT ||
-             type_code == RAND_EVENT ||
-             type_code == USER_VAR_EVENT) &&
-            rli->slave_skip_counter == 1) &&
-          /*
-            The events from ourselves which have something to do with the relay
-            log itself must be skipped, true, but they mustn't decrement
-            rli->slave_skip_counter, because the user is supposed to not see
-            these events (they are not in the master's binlog) and if we
-            decremented, START SLAVE would for example decrement when it sees
-            the Rotate, so the event which the user probably wanted to skip
-            would not be skipped.
-          */
-          !(ev->server_id == (uint32) ::server_id &&
-            (type_code == ROTATE_EVENT || type_code == STOP_EVENT ||
-             type_code == START_EVENT_V3 || type_code == FORMAT_DESCRIPTION_EVENT)))
-        --rli->slave_skip_counter;
-      pthread_mutex_unlock(&rli->data_lock);
-      delete ev;
-      return 0;                                 // avoid infinite update loops
-    }
-    pthread_mutex_unlock(&rli->data_lock);
-<<<<<<< local sql/slave.cc 1.321
-    DBUG_PRINT("exec_event",("%s(type_code: %d; server_id: %d)",
-                       ev->get_type_str(), type_code, ev->server_id));
-    DBUG_PRINT("info", ("thd->options: %s%s; rli->last_event_start_time: %lu",
-                        FLAGSTR(thd->options, OPTION_NOT_AUTOCOMMIT),
-                        FLAGSTR(thd->options, OPTION_BEGIN),
-                        rli->last_event_start_time));
-
-
-
-    /*
       Execute the event to change the database and update the binary
       log coordinates, but first we set some data that is needed for
       the thread.
@@ -1891,10 +1827,15 @@ static int exec_relay_log_event(THD* thd
       log (remember that now the relay log starts with its Format_desc,
       has a Rotate etc).
     */
-<<<<<<< remote sql/slave.cc 1.241.1.62
+
     DBUG_PRINT("info",("type_code: %d; server_id: %d; slave_skip_counter: %d",
                        type_code, ev->server_id, rli->slave_skip_counter));
 
+    DBUG_PRINT("info", ("thd->options: %s%s; rli->last_event_start_time: %lu",
+                        FLAGSTR(thd->options, OPTION_NOT_AUTOCOMMIT),
+                        FLAGSTR(thd->options, OPTION_BEGIN),
+                        rli->last_event_start_time));
+
     /*
       If the slave skip counter is positive, we still need to set the
       OPTION_BEGIN flag correctly and not skip the log events that
@@ -1951,7 +1892,7 @@ static int exec_relay_log_event(THD* thd
       }
 
       DBUG_PRINT("info", ("thd->options: %s",
-                          (thd->options & OPTION_BEGIN) ? "OPTION_BEGIN" : ""))
+                          (thd->options & OPTION_BEGIN) ? "OPTION_BEGIN" : ""));
 
       /*
         Protect against common user error of setting the counter to 1
@@ -1991,8 +1932,6 @@ static int exec_relay_log_event(THD* thd
       delete ev;
       return 0;                                 // avoid infinite update loops
     }
-    pthread_mutex_unlock(&rli->data_lock);
->>>>>>>
 
     thd->server_id = ev->server_id; // use the original server id for logging
     thd->set_time();                            // time the query
@@ -2132,7 +2071,7 @@ static int exec_relay_log_event(THD* thd
           non-transient error, the slave will stop with an error.
          */
         rli->trans_retries= 0; // restart from fresh
-        DBUG_PRINT("info", ("Resetting retry counter, rli->trans_retries: %d",
+        DBUG_PRINT("info", ("Resetting retry counter, rli->trans_retries: %lu",
                             rli->trans_retries));
       }
     }
@@ -2622,7 +2561,7 @@ pthread_handler_t handle_slave_sql(void 
   rli->ignore_log_space_limit= 0;
   pthread_mutex_unlock(&rli->log_space_lock);
   rli->trans_retries= 0; // start from "no error"
-  DBUG_PRINT("info", ("rli->trans_retries: %d", rli->trans_retries));
+  DBUG_PRINT("info", ("rli->trans_retries: %lu", rli->trans_retries));
 
   if (init_relay_log_pos(rli,
                          rli->group_relay_log_name,
diff -Nrup a/sql/sql_delete.cc b/sql/sql_delete.cc
--- a/sql/sql_delete.cc	2007-10-30 11:30:59 +02:00
+++ b/sql/sql_delete.cc	2007-10-30 13:49:35 +02:00
@@ -352,12 +352,6 @@ cleanup:
     {
       if (error < 0)
         thd->clear_error();
-<<<<<<< gca sql/sql_delete.cc 1.144.1.57
-      Query_log_event qinfo(thd, thd->query, thd->query_length,
-			    transactional_table, FALSE);
-      if (mysql_bin_log.write(&qinfo) && transactional_table)
-<<<<<<< local sql/sql_delete.cc 1.230
-
       /*
         [binlog]: If 'handler::delete_all_rows()' was called and the
         storage engine does not inject the rows itself, we replicate
@@ -366,15 +360,10 @@ cleanup:
       */
       int log_result= thd->binlog_query(THD::ROW_QUERY_TYPE,
                                         thd->query, thd->query_length,
-                                        transactional_table, FALSE);
+                                        transactional_table, FALSE, killed_status);
 
       if (log_result && transactional_table)
       {
-<<<<<<< remote sql/sql_delete.cc 1.144.1.58
-      Query_log_event qinfo(thd, thd->query, thd->query_length,
-			    transactional_table, FALSE, killed_status);
-      if (mysql_bin_log.write(&qinfo) && transactional_table)
->>>>>>>
 	error=1;
       }
     }
@@ -902,21 +891,11 @@ bool multi_delete::send_eof()
     {
       if (local_error == 0)
         thd->clear_error();
-<<<<<<< gca sql/sql_delete.cc 1.144.1.57
-      Query_log_event qinfo(thd, thd->query, thd->query_length,
-			    transactional_tables, FALSE);
-      if (mysql_bin_log.write(&qinfo) && !normal_tables)
-<<<<<<< local sql/sql_delete.cc 1.230
       if (thd->binlog_query(THD::ROW_QUERY_TYPE,
                             thd->query, thd->query_length,
-                            transactional_tables, FALSE) &&
+                            transactional_tables, FALSE, killed_status) &&
           !normal_tables)
       {
-<<<<<<< remote sql/sql_delete.cc 1.144.1.58
-      Query_log_event qinfo(thd, thd->query, thd->query_length,
-			    transactional_tables, FALSE, killed_status);
-      if (mysql_bin_log.write(&qinfo) && !normal_tables)
->>>>>>>
 	local_error=1;  // Log write failed: roll back the SQL statement
       }
     }
diff -Nrup a/sql/sql_insert.cc b/sql/sql_insert.cc
--- a/sql/sql_insert.cc	2007-10-30 11:30:59 +02:00
+++ b/sql/sql_insert.cc	2007-10-30 13:49:35 +02:00
@@ -3084,19 +3084,11 @@ void select_insert::send_error(uint errc
 
 bool select_insert::send_eof()
 {
-<<<<<<< gca sql/sql_insert.cc 1.146.1.105
-  int error, error2;
-  bool changed, transactional_table= table->file->has_transactions();
-<<<<<<< local sql/sql_insert.cc 1.300
   int error;
   bool const trans_table= table->file->has_transactions();
   ulonglong id;
   bool changed;
-<<<<<<< remote sql/sql_insert.cc 1.146.1.106
-  int error, error2;
-  bool changed, transactional_table= table->file->has_transactions();
   THD::killed_state killed_status= thd->killed;
->>>>>>>
   DBUG_ENTER("select_insert::send_eof");
   DBUG_PRINT("enter", ("trans_table=%d, table_type='%s'",
                        trans_table, table->file->table_type()));
@@ -3129,17 +3121,9 @@ bool select_insert::send_eof()
   {
     if (!error)
       thd->clear_error();
-<<<<<<< gca sql/sql_insert.cc 1.146.1.105
-    Query_log_event qinfo(thd, thd->query, thd->query_length,
-			  transactional_table, FALSE);
-    mysql_bin_log.write(&qinfo);
-  }
-  if ((error2=ha_autocommit_or_rollback(thd,error)) && ! error)
-    error=error2;
-<<<<<<< local sql/sql_insert.cc 1.300
     thd->binlog_query(THD::ROW_QUERY_TYPE,
                       thd->query, thd->query_length,
-                      trans_table, FALSE);
+                      trans_table, FALSE, killed_status);
   }
   /*
     We will call ha_autocommit_or_rollback() also for
@@ -3155,14 +3139,6 @@ bool select_insert::send_eof()
   }
   table->file->ha_release_auto_increment();
 
-<<<<<<< remote sql/sql_insert.cc 1.146.1.106
-    Query_log_event qinfo(thd, thd->query, thd->query_length,
-			  transactional_table, FALSE, killed_status);
-    mysql_bin_log.write(&qinfo);
-  }
-  if ((error2=ha_autocommit_or_rollback(thd,error)) && ! error)
-    error=error2;
->>>>>>>
   if (error)
   {
     table->file->print_error(error,MYF(0));
diff -Nrup a/sql/sql_load.cc b/sql/sql_load.cc
--- a/sql/sql_load.cc	2007-10-30 11:30:59 +02:00
+++ b/sql/sql_load.cc	2007-10-30 13:49:36 +02:00
@@ -430,12 +430,6 @@ bool mysql_load(THD *thd,sql_exchange *e
     if (mysql_bin_log.is_open())
     {
       {
-<<<<<<< gca sql/sql_load.cc 1.78.1.39
-	if (thd->transaction.stmt.modified_non_trans_table)
-	  write_execute_load_query_log_event(thd, handle_duplicates,
-					     ignore, transactional_table);
-	else
-<<<<<<< local sql/sql_load.cc 1.131
 	/*
 	  Make sure last block (the one which caused the error) gets
 	  logged.  This is needed because otherwise after write of (to
@@ -461,17 +455,11 @@ bool mysql_load(THD *thd,sql_exchange *e
 	read_info.end_io_cache();
 	/* If the file was not empty, wrote_create_file is true */
 	if (lf_info.wrote_create_file)
-<<<<<<< remote sql/sql_load.cc 1.78.1.40
-	if (thd->transaction.stmt.modified_non_trans_table)
-	  write_execute_load_query_log_event(thd, handle_duplicates,
-					     ignore, transactional_table,
-                                             killed_status);
-	else
->>>>>>>
 	{
 	  if (thd->transaction.stmt.modified_non_trans_table)
 	    write_execute_load_query_log_event(thd, handle_duplicates,
-					       ignore, transactional_table);
+					       ignore, transactional_table,
+                                               killed_status);
 	  else
 	  {
 	    Delete_file_log_event d(thd, db, transactional_table);
@@ -497,16 +485,6 @@ bool mysql_load(THD *thd,sql_exchange *e
   if (mysql_bin_log.is_open())
   {
     /*
-<<<<<<< gca sql/sql_load.cc 1.78.1.39
-      As already explained above, we need to call end_io_cache() or the last
-      block will be logged only after Execute_load_query_log_event (which is
-      wrong), when read_info is destroyed.
-    */
-    read_info.end_io_cache();
-    if (lf_info.wrote_create_file)
-      write_execute_load_query_log_event(thd, handle_duplicates,
-					 ignore, transactional_table);
-<<<<<<< local sql/sql_load.cc 1.131
       We need to do the job that is normally done inside
       binlog_query() here, which is to ensure that the pending event
       is written before tables are unlocked and before any other
@@ -526,21 +504,10 @@ bool mysql_load(THD *thd,sql_exchange *e
       read_info.end_io_cache();
       if (lf_info.wrote_create_file)
       {
-        write_execute_load_query_log_event(thd, handle_duplicates,
-                                           ignore, transactional_table);
+        write_execute_load_query_log_event(thd, handle_duplicates, ignore,
+                                           transactional_table,killed_status);
       }
     }
-<<<<<<< remote sql/sql_load.cc 1.78.1.40
-      As already explained above, we need to call end_io_cache() or the last
-      block will be logged only after Execute_load_query_log_event (which is
-      wrong), when read_info is destroyed.
-    */
-    read_info.end_io_cache();
-    if (lf_info.wrote_create_file)
-      write_execute_load_query_log_event(thd, handle_duplicates,
-					 ignore, transactional_table,
-                                         killed_status);
->>>>>>>
   }
 #endif /*!EMBEDDED_LIBRARY*/
   if (transactional_table)
@@ -577,14 +544,8 @@ static bool write_execute_load_query_log
       (char*)thd->lex->fname_end - (char*)thd->query,
       (duplicates == DUP_REPLACE) ? LOAD_DUP_REPLACE :
       (ignore ? LOAD_DUP_IGNORE : LOAD_DUP_ERROR),
-<<<<<<< gca sql/sql_load.cc 1.78.1.39
-      transactional_table, FALSE);
-<<<<<<< local sql/sql_load.cc 1.131
-      transactional_table, FALSE);
-  e.flags|= LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F;
-<<<<<<< remote sql/sql_load.cc 1.78.1.40
       transactional_table, FALSE, killed_err_arg);
->>>>>>>
+  e.flags|= LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F;
   return mysql_bin_log.write(&e);
 }
 
diff -Nrup a/sql/sql_update.cc b/sql/sql_update.cc
--- a/sql/sql_update.cc	2007-10-30 11:30:59 +02:00
+++ b/sql/sql_update.cc	2007-10-30 13:49:36 +02:00
@@ -200,18 +200,10 @@ int mysql_update(THD *thd,
   SQL_SELECT	*select;
   READ_RECORD	info;
   SELECT_LEX    *select_lex= &thd->lex->select_lex;
-<<<<<<< gca sql/sql_update.cc 1.154.2.70
-  bool need_reopen;
-  List<Item> all_fields;
-<<<<<<< local sql/sql_update.cc 1.258
   bool          need_reopen;
   ulonglong     id;
   List<Item> all_fields;
-<<<<<<< remote sql/sql_update.cc 1.154.2.71
-  bool need_reopen;
-  List<Item> all_fields;
   THD::killed_state killed_status= THD::NOT_KILLED;
->>>>>>>
   DBUG_ENTER("mysql_update");
 
   for ( ; ; )
@@ -722,10 +714,7 @@ int mysql_update(THD *thd,
       table->file->unlock_row();
     thd->row_count++;
   }
-<<<<<<< gca sql/sql_update.cc 1.154.2.70
-<<<<<<< local sql/sql_update.cc 1.258
   dup_key_found= 0;
-<<<<<<< remote sql/sql_update.cc 1.154.2.71
   /*
     Caching the killed status to pass as the arg to query event constuctor;
     The cached value can not change whereas the killed status can
@@ -742,81 +731,9 @@ int mysql_update(THD *thd,
                   };);
   error= (killed_status == THD::NOT_KILLED)?  error : 1;
   
->>>>>>>
-
-  if (!transactional_table && updated > 0)
-    thd->transaction.stmt.modified_non_trans_table= TRUE;
-
-<<<<<<< gca sql/sql_update.cc 1.154.2.70
-
-  /*
-    todo bug#27571: to avoid asynchronization of `error' and
-    `error_code' of binlog event constructor
-
-    The concept, which is a bit different for insert(!), is to
-    replace `error' assignment with the following lines
-
-       killed_status= thd->killed; // get the status of the volatile 
-    
-    Notice: thd->killed is type of "state" whereas the lhs has
-    "status" the suffix which translates according to WordNet: a state
-    at a particular time - at the time of the end of per-row loop in
-    our case. Binlogging ops are conducted with the status.
-
-       error= (killed_status == THD::NOT_KILLED)?  error : 1;
-    
-    which applies to most mysql_$query functions.
-    Event's constructor will accept `killed_status' as an argument:
-    
-       Query_log_event qinfo(..., killed_status);
-    
-    thd->killed might be changed after killed_status had got cached and this
-    won't affect binlogging event but other effects remain.
-
-    Open issue: In a case the error happened not because of KILLED -
-    and then KILLED was caught later still within the loop - we shall
-    do something to avoid binlogging of incorrect ER_SERVER_SHUTDOWN
-    error_code.
-  */
-
-  if (thd->killed && !error)
-    error= 1;					// Aborted
-<<<<<<< local sql/sql_update.cc 1.258
-
-  /*
-    todo bug#27571: to avoid asynchronization of `error' and
-    `error_code' of binlog event constructor
-
-    The concept, which is a bit different for insert(!), is to
-    replace `error' assignment with the following lines
-
-       killed_status= thd->killed; // get the status of the volatile 
-    
-    Notice: thd->killed is type of "state" whereas the lhs has
-    "status" the suffix which translates according to WordNet: a state
-    at a particular time - at the time of the end of per-row loop in
-    our case. Binlogging ops are conducted with the status.
-
-       error= (killed_status == THD::NOT_KILLED)?  error : 1;
-    
-    which applies to most mysql_$query functions.
-    Event's constructor will accept `killed_status' as an argument:
-    
-       Query_log_event qinfo(..., killed_status);
-    
-    thd->killed might be changed after killed_status had got cached and this
-    won't affect binlogging event but other effects remain.
-
-    Open issue: In a case the error happened not because of KILLED -
-    and then KILLED was caught later still within the loop - we shall
-    do something to avoid binlogging of incorrect ER_SERVER_SHUTDOWN
-    error_code.
-  */
-
-  if (thd->killed && !error)
-    error= 1;					// Aborted
-  else if (will_batch &&
-           (loc_error= table->file->exec_bulk_update(&dup_key_found)))
+  if (error &&
+      will_batch &&
+      (loc_error= table->file->exec_bulk_update(&dup_key_found)))
     /*
       An error has occurred when a batched update was performed and returned
       an error indication. It cannot be an allowed duplicate key error since
@@ -838,8 +755,10 @@ int mysql_update(THD *thd,
   if (will_batch)
     table->file->end_bulk_update();
   table->file->try_semi_consistent_read(0);
-<<<<<<< remote sql/sql_update.cc 1.154.2.71
->>>>>>>
+
+  if (!transactional_table && updated > 0)
+    thd->transaction.stmt.modified_non_trans_table= TRUE;
+
   end_read_record(&info);
   delete select;
   thd->proc_info= "end";
@@ -869,25 +788,13 @@ int mysql_update(THD *thd,
     {
       if (error < 0)
         thd->clear_error();
-<<<<<<< gca sql/sql_update.cc 1.154.2.70
-      Query_log_event qinfo(thd, thd->query, thd->query_length,
-			    transactional_table, FALSE);
-      if (mysql_bin_log.write(&qinfo) && transactional_table)
-	error=1;				// Rollback update
-<<<<<<< local sql/sql_update.cc 1.258
       if (thd->binlog_query(THD::ROW_QUERY_TYPE,
                             thd->query, thd->query_length,
-                            transactional_table, FALSE) &&
+                            transactional_table, FALSE, killed_status) &&
           transactional_table)
       {
         error=1;				// Rollback update
       }
-<<<<<<< remote sql/sql_update.cc 1.154.2.71
-      Query_log_event qinfo(thd, thd->query, thd->query_length,
-			    transactional_table, FALSE, killed_status);
-      if (mysql_bin_log.write(&qinfo) && transactional_table)
-	error=1;				// Rollback update
->>>>>>>
     }
     if (thd->transaction.stmt.modified_non_trans_table)
       thd->transaction.all.modified_non_trans_table= TRUE;
@@ -1829,24 +1736,14 @@ void multi_update::send_error(uint errco
     */
     if (mysql_bin_log.is_open())
     {
-<<<<<<< gca sql/sql_update.cc 1.154.2.70
-      Query_log_event qinfo(thd, thd->query, thd->query_length,
-                            transactional_tables, FALSE);
-      mysql_bin_log.write(&qinfo);
-<<<<<<< local sql/sql_update.cc 1.258
-      thd->binlog_query(THD::ROW_QUERY_TYPE,
-                        thd->query, thd->query_length,
-                        transactional_tables, FALSE);
-<<<<<<< remote sql/sql_update.cc 1.154.2.71
       /*
         THD::killed status might not have been set ON at time of an error
         got caught and if happens later the killed error is written
         into repl event.
       */
-      Query_log_event qinfo(thd, thd->query, thd->query_length,
-                            transactional_tables, FALSE);
-      mysql_bin_log.write(&qinfo);
->>>>>>>
+      thd->binlog_query(THD::ROW_QUERY_TYPE,
+                        thd->query, thd->query_length,
+                        transactional_tables, FALSE);
     }
     thd->transaction.all.modified_non_trans_table= TRUE;
   }
@@ -2039,13 +1936,9 @@ err2:
 bool multi_update::send_eof()
 {
   char buff[STRING_BUFFER_USUAL_SIZE];
-<<<<<<< gca sql/sql_update.cc 1.154.2.70
-<<<<<<< local sql/sql_update.cc 1.258
   ulonglong id;
-  DBUG_ENTER("multi_update::send_eof");
-<<<<<<< remote sql/sql_update.cc 1.154.2.71
   THD::killed_state killed_status= THD::NOT_KILLED;
->>>>>>>
+  DBUG_ENTER("multi_update::send_eof");
   thd->proc_info="updating reference tables";
 
   /* 
@@ -2084,25 +1977,13 @@ bool multi_update::send_eof()
     {
       if (local_error == 0)
         thd->clear_error();
-<<<<<<< gca sql/sql_update.cc 1.154.2.70
-      Query_log_event qinfo(thd, thd->query, thd->query_length,
-			    transactional_tables, FALSE);
-      if (mysql_bin_log.write(&qinfo) && trans_safe)
-        local_error= 1;				// Rollback update
-<<<<<<< local sql/sql_update.cc 1.258
       if (thd->binlog_query(THD::ROW_QUERY_TYPE,
                             thd->query, thd->query_length,
-                            transactional_tables, FALSE) &&
+                            transactional_tables, FALSE, killed_status) &&
           trans_safe)
       {
 	local_error= 1;				// Rollback update
       }
-<<<<<<< remote sql/sql_update.cc 1.154.2.71
-      Query_log_event qinfo(thd, thd->query, thd->query_length,
-			    transactional_tables, FALSE, killed_status);
-      if (mysql_bin_log.write(&qinfo) && trans_safe)
-        local_error= 1;				// Rollback update
->>>>>>>
     }
     if (thd->transaction.stmt.modified_non_trans_table)
       thd->transaction.all.modified_non_trans_table= TRUE;
Thread
bk commit into 5.1 tree (aelkin:1.2603) BUG#12691Andrei Elkin30 Oct