1. 30 Jul, 2009 1 commit
    • V Narayanan's avatar
      Bug#45800 crash when replacing into a merge table and there is a duplicate · 5a5b5c82
      V Narayanan authored
            
      A REPLACE in the MERGE engine is actually a REPLACE
      into one (FIRST or LAST) of the underlying MyISAM
      tables. So in effect the server works on the meta
      data of the MERGE table, while the real insert happens
      in the MyISAM table.
      
      The MERGE table has no index, while MyISAM has a
      unique index. When a REPLACE into a MERGE table (
      and the REPLACE conflicts with a duplicate in a
      child table) is done, we try to access the duplicate
      key information for the MERGE table. This information
      actually does not exist, hence this results in a crash.
      
      The problem can be resolved by modifying the MERGE
      engine to provide us the duplicate key information
      directly, instead of just returning the MyISAM index
      number as the error key. Then the SQL layer (or "the
      server") does not try to access the key_info of the
      MERGE table, which does not exist.
      
      The current patch modifies the MERGE engine to provide
      the position for a record where a unique key violation
      occurs.
      5a5b5c82
  2. 29 Jul, 2009 7 commits
  3. 28 Jul, 2009 8 commits
  4. 27 Jul, 2009 7 commits
  5. 26 Jul, 2009 1 commit
    • Luis Soares's avatar
      BUG#43046: mixed mode switch to row format with temp table lead · 6b2c3ff5
      Luis Soares authored
                 to wrong result
            
      When using MIXED mode and issuing 'CREATE TEMPORARY TABLE t_tmp',
      the statement is logged if the current binlogging mode is
      STATEMENT. This causes the slave to replay the instruction and
      create the temporary table as well. If there is no switch to ROW
      mode, and later on a 'DROP TEMPORARY TABLE t_tmp' is issued, then
      this statement will also be logged and the slave will
      remove/close the temporary table.
            
      However, if there is a switch to ROW mode between the CREATE and
      DROP TEMPORARY table, the DROP statement will not be logged,
      leaving the slave with a dangling temporary table.
            
      This patch addresses this, by always logging a DROP TEMPORARY
      TABLE IF EXISTS when in mixed mode and a drop statement is issued
      for temporary table(s).
      6b2c3ff5
  6. 24 Jul, 2009 16 commits