List:Commits« Previous MessageNext Message »
From:Sergey Vojtovich Date:July 31 2007 4:40pm
Subject:bk commit into 5.0 tree (svoj:1.2487) BUG#29152
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of svoj. When svoj 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-07-31 19:40:36+05:00, svoj@stripped +1 -0
  BUG#29152 - INSERT DELAYED does not use concurrent_insert on slave
  
  INSERT DELAYED on a replication slave was converted to regular INSERT,
  whereas it should try concurrent INSERT first.
  
  With this patch we try to convert delayed insert to concurrent insert on
  a replication slave. If it is impossible for some reason, we fall back to
  regular insert.
  
  No test case for this fix. I do not see anything indicating this is
  regression - we behave this way since Nov 2000.

  sql/sql_insert.cc@stripped, 2007-07-31 19:40:32+05:00, svoj@stripped +8 -1
    If we're executing INSERT DELAYED on a replication slave, we're upgrading
    lock type to TL_WRITE as we need to ensure serial execution of queries on
    the slave.
    
    OTOH if we're executing regular INSERT on a replication slave, we're
    trying TL_WRITE_CONCURRENT_INSERT first, and if we may not use it, we
    fall back to TL_WRITE.
    
    Fixed INSERT DELAYED on a replication slave to behave the same way as
    regular INSERT, that is to try TL_WRITE_CONCURRENT_INSERT first.

diff -Nrup a/sql/sql_insert.cc b/sql/sql_insert.cc
--- a/sql/sql_insert.cc	2007-07-19 20:36:51 +05:00
+++ b/sql/sql_insert.cc	2007-07-31 19:40:32 +05:00
@@ -446,7 +446,6 @@ void upgrade_lock_type(THD *thd, thr_loc
         client connection and the delayed thread.
     */
     if (specialflag & (SPECIAL_NO_NEW_FUNC | SPECIAL_SAFE_MODE) ||
-        thd->slave_thread ||
         thd->variables.max_insert_delayed_threads == 0 ||
         thd->prelocked_mode ||
         thd->lex->uses_stored_routines())
@@ -454,6 +453,14 @@ void upgrade_lock_type(THD *thd, thr_loc
       *lock_type= TL_WRITE;
       return;
     }
+    if (thd->slave_thread)
+    {
+      /* Try concurrent insert */
+      *lock_type= (duplic == DUP_UPDATE || duplic == DUP_REPLACE) ?
+                  TL_WRITE : TL_WRITE_CONCURRENT_INSERT;
+      return;
+    }
+
     bool log_on= (thd->options & OPTION_BIN_LOG ||
                   ! (thd->security_ctx->master_access & SUPER_ACL));
     if (log_on && mysql_bin_log.is_open() && is_multi_insert)
Thread
bk commit into 5.0 tree (svoj:1.2487) BUG#29152Sergey Vojtovich31 Jul
  • Re: bk commit into 5.0 tree (svoj:1.2487) BUG#29152Konstantin Osipov31 Jul
  • Re: bk commit into 5.0 tree (svoj:1.2487) BUG#29152Ingo Strüwing2 Aug
Re: bk commit into 5.0 tree (svoj:1.2487) BUG#29152Konstantin Osipov31 Jul