1. 20 Jan, 2010 1 commit
    • Alfranio Correia's avatar
      BUG#46364 MyISAM transbuffer problems (NTM problem) · 0aa3aee0
      Alfranio Correia authored
      It is well-known that due to concurrency issues, a slave can become
      inconsistent when a transaction contains updates to both transaction and
      non-transactional tables in statement and mixed modes.
      
      In a nutshell, the current code-base tries to preserve causality among the
      statements by writing non-transactional statements to the txn-cache which
      is flushed upon commit. However, modifications done to non-transactional
      tables on behalf of a transaction become immediately visible to other
      connections but may not immediately get into the binary log and therefore
      consistency may be broken.
      
      In general, it is impossible to automatically detect causality/dependency
      among statements by just analyzing the statements sent to the server. This
      happen because dependency may be hidden in the application code and it is
      necessary to know a priori all the statements processed in the context of
      a transaction such as in a procedure. Moreover, even for the few cases that
      we could automatically address in the server, the computation effort
      required could make the approach infeasible.
      
      So, in this patch we introduce the option
          - "--binlog-direct-non-transactional-updates" that can be used to bypass
          the current behavior in order to write directly to binary log statements
          that change non-transactional tables.
      0aa3aee0
  2. 19 Jan, 2010 1 commit
  3. 23 Dec, 2009 1 commit
    • Georgi Kodinov's avatar
      Bug #49512 : subquery with aggregate function crash · c968fd48
      Georgi Kodinov authored
        subselect_single_select_engine::exec()
      
      When a subquery doesn't need to be evaluated because
      it returns only aggregate functions and these aggregates
      can be calculated from the metadata about the table it
      was not updating all the relevant members of the JOIN 
      structure to reflect that this is a constant query.
      This caused problems to the enclosing subquery 
      ('<> SOME' in the test case above) trying to read some
      data about the tables.
      
      Fixed by setting const_tables to the number of tables 
      when the SELECT is optimized away.
      c968fd48
  4. 19 Jan, 2010 5 commits
  5. 18 Jan, 2010 2 commits
    • Mattias Jonsson's avatar
      Bug#47343: InnoDB fails to clean-up after lock wait timeout on · b1987bdc
      Mattias Jonsson authored
                 REORGANIZE PARTITION
      
      There were several problems which lead to this this,
      all related to bad error handling.
      
      1) There was several bugs preventing the ddl-log to be used for
         cleaning up created files on error.
      
      2) The error handling after the copy partition rows did not close
         and unlock the tables, resulting in deletion of partitions
         which were in use, which lead InnoDB to put the partition to
         drop in a background queue.
      b1987bdc
    • Georgi Kodinov's avatar
      Bug #45989 take 2 : memory leak after explain encounters an · a3b4065d
      Georgi Kodinov authored
      error in the query.
      
      Fixes a leak after materializing a GROUP BY subquery to a 
      temp table when the subquery has a blob column in the SELECT
      list.
      Fixed by correctly destructing temporary buffers after doing
      the conversion.
      a3b4065d
  6. 17 Jan, 2010 1 commit
  7. 16 Jan, 2010 1 commit
    • 's avatar
      BUG#47418 RBR fails, failure with mixup of base/temporary/view · 6f380d16
      authored
      'CREATE TABLE IF NOT EXISTS ... SELECT' statement were causing 'CREATE
      TEMPORARY TABLE ...' to be written to the binary log in row-based 
      mode (a.k.a. RBR), when there was a temporary table with the same name.
      Because the 'CREATE TABLE ... SELECT' statement was executed as 
      'INSERT ... SELECT' into the temporary table. Since in RBR mode no 
      other statements related to temporary tables are written into binary log,
      this sometimes broke replication.
      
      This patch changes behavior of 'CREATE TABLE [IF NOT EXISTS] ... SELECT ...'.
      it ignores existence of temporary table with the 
      same name as table being created and is interpreted
      as attempt to create/insert into base table. This makes behavior of
      'CREATE TABLE [IF NOT EXISTS] ... SELECT' consistent with
      how ordinary 'CREATE TABLE' and 'CREATE TABLE ... LIKE' behave.
      6f380d16
  8. 15 Jan, 2010 3 commits
    • Georgi Kodinov's avatar
      Bug #46175: NULL read_view and consistent read assertion · 440f5a9c
      Georgi Kodinov authored
      The optimizer must not continue executing the current query
      if e.g. the storage engine reports an error.
      This is somewhat hard to implement with Item::val_xxx()
      because they do not have means to return error code.
      This is why we need to check the thread's error state after
      a call to one of the Item::val_xxx() methods.
      
      Fixed store_key_item::copy_inner() to return an error state 
      if an error happened during the call to Item::save_in_field() 
      because it calls Item::val_xxx().
      Also added similar checks to related places.
      440f5a9c
    • Georgi Kodinov's avatar
      merge · 6d66e660
      Georgi Kodinov authored
      6d66e660
    • Georgi Kodinov's avatar
      merge of version change. · 30a8c53a
      Georgi Kodinov authored
      Added not_embedded to the new dbug_sync test file.
      30a8c53a
  9. 14 Jan, 2010 4 commits
    • Luis Soares's avatar
      Fix for BUG#49481 and BUG#49482. · a0a5152f
      Luis Soares authored
      BUG#49481: RBR: MyISAM and bit fields may cause slave to stop on delete: 
      cant find record
            
      BUG#49482: RBR: Replication may break on deletes when MyISAM tables + 
      char field are used
      
      When using MyISAM tables, despite the fact that the null bit is
      set for some fields, their old value is still in the row. This
      can cause the comparison of records to fail when the slave is
      doing an index or range scan.
      
      We fix this by avoiding memcmp for MyISAM tables when comparing
      records. Additionally, when comparing field by field, we first
      check if both fields are not null and if so, then we compare
      them. If just one field is null we return failure immediately. If
      both fields are null, we move on to the next field.
      a0a5152f
    • Luis Soares's avatar
      BUG#50018: binlog corruption when table has many columns · c374c2bd
      Luis Soares authored
      Small fix in the test case. Changed the UNLOCK tables 
      to happen after each insert.
      c374c2bd
    • Luis Soares's avatar
    • Georgi Kodinov's avatar
      version change · c00701a4
      Georgi Kodinov authored
      c00701a4
  10. 13 Jan, 2010 13 commits
    • Kristofer Pettersson's avatar
      automerge · 48db75d8
      Kristofer Pettersson authored
      48db75d8
    • Kristofer Pettersson's avatar
      Bug#33982 debug assertion and crash reloading grant tables after sighup or kill · da877f64
      Kristofer Pettersson authored
      In certain rare cases when a process was interrupted
      during a FLUSH PRIVILEGES operation the diagnostic
      area would be set to an error state but the function
      responsible for the operation would still signal
      success. This would lead to a debug assertion error
      later on when the server would attempt to reset the
      DA before sending the error message.
      
      This patch fixes the issue by assuring that
      reload_acl_and_cache() always fails if an error
      condition is raised.
      
      The second issue was that a KILL could cause
      a console error message which referred to a DA
      state without first making sure that such a
      state existed.
      
      This patch fixes this issue in two different
      palces by first checking DA state before
      fetching the error message.
      
       
      da877f64
    • Martin Hansson's avatar
      Merge of fix for Bug#48157. · b9d37b83
      Martin Hansson authored
      b9d37b83
    • Ramil Kalimullin's avatar
      Auto-merge. · 18be529b
      Ramil Kalimullin authored
      18be529b
    • Ramil Kalimullin's avatar
      Auto-merge. · 032822a6
      Ramil Kalimullin authored
      032822a6
    • Georgi Kodinov's avatar
      merge · 748ff84e
      Georgi Kodinov authored
      748ff84e
    • Georgi Kodinov's avatar
      version change · b433f7f2
      Georgi Kodinov authored
      b433f7f2
    • Joerg Bruehe's avatar
      Automerge from parent - no conflicts. · 1e5d0f08
      Joerg Bruehe authored
      1e5d0f08
    • Georgi Kodinov's avatar
      merge 5.1-main to 5.1-bugteam · c3ba50ad
      Georgi Kodinov authored
      c3ba50ad
    • Ramil Kalimullin's avatar
      Auto-merge. · 14afe5c4
      Ramil Kalimullin authored
      14afe5c4
    • Sven Sandberg's avatar
      BUG#49222: Mark RAND() as unsafe · 94946c68
      Sven Sandberg authored
      Problem: When RAND() is binlogged in statement mode, the seed is
      binlogged too, so the replication slave generates the same
      sequence of random numbers. This makes replication work in many
      cases, but not in all cases: the order of rows is not guaranteed
      for, e.g., UPDATE or INSERT...SELECT statements, so the row data
      will be different if master and slave retrieve the rows in
      different orders.
      Fix: Mark RAND() as unsafe. It will generate a warning if
      binlog_format=STATEMENT and switch to row-logging if
      binlog_format=ROW.
      94946c68
    • Ramil Kalimullin's avatar
      Fix for bug#50227: Pre-auth buffer-overflow in mySQL through yaSSL · 5622b586
      Ramil Kalimullin authored
      Problem: copying issuer's (or subject's) name tags into an internal
      buffer from incoming stream we didn't check the buffer overflow. 
      That may lead to memory overrun, crash etc.
      
      Fix: ensure we don't overrun the buffer.
      
      Note: there's no simple test case (exploit needed).
      5622b586
    • Gleb Shchepa's avatar
      Bug #50096: CONCAT_WS inside procedure returning wrong data · 30212033
      Gleb Shchepa authored
      Selecting of the CONCAT_WS(...<PS parameter>...) result into
      a user variable may return wrong data.
      
      Item_func_concat_ws::val_str contains a number of memory
      allocation-saving optimization tricks. After the fix
      for bug 46815 the control flow has been changed to a
      branch that is commented as "This is quite uncommon!":
      one of places where we are trying to concatenate
      strings inplace. However, that "uncommon" place
      didn't care about PS parameters, that have another
      trick in Item_sp_variable::val_str(): they use the
      intermediate Item_sp_variable::str_value field,
      where they may store a reference to an external
      argument's buffer.
      
      The Item_func_concat_ws::val_str function has been
      modified to take into account val_str functions
      (such as Item_sp_variable::val_str) that return a
      pointer to an internal Item member variable that
      may reference to a buffer provided.
      30212033
  11. 12 Jan, 2010 4 commits
    • Martin Hansson's avatar
      Bug#48157: crash in Item_field::used_tables · e57ea46d
      Martin Hansson authored
      MySQL handles the join syntax "JOIN ... USING( field1,
      ... )" and natural joins by building the same parse tree as
      a corresponding join with an "ON t1.field1 = t2.field1 ..."
      expression would produce. This parse tree was not cleaned up
      properly in the following scenario. If a thread tries to
      lock some tables and finds that the tables were dropped and
      re-created while waiting for the lock, it cleans up column
      references in the statement by means a per-statement free
      list. But if the statement was part of a stored procedure,
      column references on the stored procedure's free list weren't
      cleaned up and thus contained pointers to freed objects.
      
      Fixed by adding a call to clean up the current prepared
      statement's free list.
      e57ea46d
    • Joerg Bruehe's avatar
      Upmerge the changes for RPM versioning/naming from 5.0 to 5.1. · b0dad6ed
      Joerg Bruehe authored
      This includes "MYSQL_U_SCORE_VERSION" in "configure.in".
      b0dad6ed
    • Joerg Bruehe's avatar
      Implement the change of RPM versioning and file naming: · 789352e8
      Joerg Bruehe authored
      - "release" starts from 1
      - "level" ("m2", "rc", ...) is included in the RPM version.
      789352e8
    • Joerg Bruehe's avatar
      Merge from main tree, · 685166a5
      Joerg Bruehe authored
      but don't take the "tree name" change.
      685166a5
  12. 11 Jan, 2010 3 commits
  13. 08 Jan, 2010 1 commit
    • 's avatar
      Postfix · 2ae528aa
      authored
      Recover the right contents of the index file at the end of the test case.
      2ae528aa