1. 16 Nov, 2012 6 commits
  2. 15 Nov, 2012 5 commits
    • Marko Mäkelä's avatar
      Merge mysql-5.1 to mysql-5.5. · 7d04b04a
      Marko Mäkelä authored
      7d04b04a
    • Marko Mäkelä's avatar
      Bug#15872736 FAILING ASSERTION · fb189671
      Marko Mäkelä authored
      Remove a bogus debug assertion.
      fb189671
    • Marko Mäkelä's avatar
      Merge mysql-5.1 to mysql-5.5. · b5fcf510
      Marko Mäkelä authored
      b5fcf510
    • Marko Mäkelä's avatar
      Bug#15874001 CREATE INDEX ON A UTF8 CHAR COLUMN FAILS WITH ROW_FORMAT=REDUNDANT · ffb044a9
      Marko Mäkelä authored
      CHAR(n) in ROW_FORMAT=REDUNDANT tables is always fixed-length
      (n*mbmaxlen bytes), but in the temporary file it is variable-length
      (n*mbminlen to n*mbmaxlen bytes) for variable-length character sets,
      such as UTF-8.
      
      The temporary file format used during index creation and online ALTER
      TABLE is based on ROW_FORMAT=COMPACT. Thus, it should use the
      variable-length encoding even if the base table is in
      ROW_FORMAT=REDUNDNAT.
      
      dtype_get_fixed_size_low(): Replace an assertion-like check with a
      debug assertion.
      
      rec_init_offsets_comp_ordinary(), rec_convert_dtuple_to_rec_comp():
      Make this an inline function.  Replace 'ulint extra' with 'bool temp'.
      
      rec_get_converted_size_comp_prefix_low(): Renamed from
      rec_get_converted_size_comp_prefix(), and made inline. Add the
      parameter 'bool temp'. If temp=true, do not add REC_N_NEW_EXTRA_BYTES.
      
      rec_get_converted_size_comp_prefix(): Remove the comment about
      dict_table_is_comp(). This function is only to be called for other
      than ROW_FORMAT=REDUNDANT records.
      
      rec_get_converted_size_temp(): New function for computing temporary
      file record size. Omit REC_N_NEW_EXTRA_BYTES from the sizes.
      
      rec_init_offsets_temp(), rec_convert_dtuple_to_temp(): New functions,
      for operating on temporary file records.
      
      rb:1559 approved by Jimmy Yang
      ffb044a9
    • unknown's avatar
      No commit message · 8b46aa9f
      unknown authored
      No commit message
      8b46aa9f
  3. 14 Nov, 2012 8 commits
    • Nuno Carvalho's avatar
      BUG#12669186: AUTOINC VALUE PERSISTENCY BREAKS CERTAIN REPLICATION SCENARIOS · 6800689c
      Nuno Carvalho authored
      When master and slave have different schemas, in particular different
      AUTO_INCREMENT columns, INSERT_ID events logged for a given table on
      master may be applied to a different table on slave on SBR, e.g.:
        master has one table (t1) with one auto-inc column and another table
        (t2) without auto-inc column, on slave t1 does not have auto-inc
        column (despite having the same columns) and t2 has a auto-inc
        column. The INSERT_ID that is intended for t1, since t1 on slave
        doesn't have auto-inc column is used on t2, causing consistency
        problems.
      
      To fix this incorrect behaviour, auto-inc interval allocation via
      INSERT_ID is made effectively terminated at the end of top-level
      statements on slave and binlog replay.
      6800689c
    • Venkata Sidagam's avatar
      BUG#13556107: CHECK AND REPAIR TABLE SHOULD BE MORE ROBUST [3] · 329afcb6
      Venkata Sidagam authored
      Problem description: Incorrect key file. Key file is corrupted,
      while reading the keys from the file. The problem here is that 
      keyseg->start (which should point to the beginning of a field) 
      is pointing beyond total record length.
      
      Fix: If keyseg->start is greater than total record length then 
      return error.
      329afcb6
    • unknown's avatar
      No commit message · ed7ccdb0
      unknown authored
      No commit message
      ed7ccdb0
    • unknown's avatar
      No commit message · 0aa53d9e
      unknown authored
      No commit message
      0aa53d9e
    • unknown's avatar
      No commit message · 682d23a3
      unknown authored
      No commit message
      682d23a3
    • Jimmy Yang's avatar
      Fix Bug #14753402 - FAILING ASSERTION: LEN == IFIELD->FIXED_LEN · a1c66ae2
      Jimmy Yang authored
      rb://1411 approved by Marko
      a1c66ae2
    • unknown's avatar
      No commit message · f6af85d9
      unknown authored
      No commit message
      f6af85d9
    • unknown's avatar
      No commit message · e8df5a7c
      unknown authored
      No commit message
      e8df5a7c
  4. 13 Nov, 2012 4 commits
    • unknown's avatar
      Merge · efea6983
      unknown authored
      efea6983
    • Mattias Jonsson's avatar
      a1c7d052
    • Mattias Jonsson's avatar
      Bug#14845133: · 39690893
      Mattias Jonsson authored
      The problem is related to the changes made in bug#13025132.
      get_partition_set can do dynamic pruning which limits the partitions
      to scan even further. This is not accounted for when setting
      the correct start of the preallocated record buffer used in
      the priority queue, thus leading to wrong buffer is used
      (including wrong preset partitioning id, connected to that buffer).
      
      Solution is to fast forward the buffer pointer to point to the correct
      partition record buffer.
      39690893
    • Mattias Jonsson's avatar
      Bug#14845133: · ab161b7d
      Mattias Jonsson authored
      The problem is related to the changes made in bug#13025132.
      get_partition_set can do dynamic pruning which limits the partitions
      to scan even further. This is not accounted for when setting
      the correct start of the preallocated record buffer used in
      the priority queue, thus leading to wrong buffer is used
      (including wrong preset partitioning id, connected to that buffer).
      
      Solution is to fast forward the buffer pointer to point to the correct
      partition record buffer.
      ab161b7d
  5. 12 Nov, 2012 3 commits
  6. 09 Nov, 2012 8 commits
    • unknown's avatar
      No commit message · 309ee86a
      unknown authored
      No commit message
      309ee86a
    • Venkata Sidagam's avatar
      Bug#13556000: CHECK AND REPAIR TABLE SHOULD BE MORE ROBUST[2] · 3578e26e
      Venkata Sidagam authored
      Problem description: Corrupt key file for the table. Size of the 
      key is greater than the maximum specified size. This results in 
      the overflow of the key buffer while reading the key from key 
      file.
      
      Fix: If size of key is greater than the maximum size it returns 
      an error before writing it into the key buffer. Gives error as 
      corrupt file but no stack overflow.
      3578e26e
    • Annamalai Gurusami's avatar
      2859f02a
    • Annamalai Gurusami's avatar
      Bug #14669848 CRASH DURING ALTER MAKES ORIGINAL TABLE INACCESSIBLE · dd634761
      Annamalai Gurusami authored
      When a new primary key is added to an InnoDB table, then the following
      steps are taken by InnoDB plugin:
      
      .  let t1 be the original table.
      .  a temporary table t1@00231 will be created by cloning t1.
      .  all data will be copied from t1 to t1@00231.
      .  rename t1 to t1@00232.
      .  rename t1@00231 to t1.
      .  drop t1@00232.
      
      The rename and drop operations involve file operations.  But file operations
      cannot be rolled back.  So in row_merge_rename_tables(), just after doing data
      dictionary update and before doing any file operations, generate redo logs
      for file operations and commit the transaction.  This will ensure that any
      crash after this commit, the table is still recoverable by moving .ibd and
      .frm files.  Manual recovery is required.
      
      During recovery, the rename file operation redo logs are processed.
      Previously this was being ignored.
      
      rb://1460 approved by Marko Makela.
      dd634761
    • Annamalai Gurusami's avatar
      a6ac4b23
    • Anirudh Mangipudi's avatar
      BUG#11762933: MYSQLDUMP WILL SILENTLY SKIP THE `EVENT` · 7f5089aa
      Anirudh Mangipudi authored
                    TABLE DATA IF DUMPS MYSQL DATABA
      Problem: If mysqldump is run without --events (or with --skip-events)
      it will not dump the mysql.event table's data. This behaviour is inconsistent
      with that of --routines option, which does not affect the dumping of
      mysql.proc table. According to the Manual, --events (--skip-events) defines,
      if the Event Scheduler events for the dumped databases should be included
      in the mysqldump output and this has nothing to do with the mysql.event table
      itself.
      Solution: A warning has been added when mysqldump is used without --events 
      (or with --skip-events) and a separate patch with the behavioral change 
      will be prepared for 5.6/trunk.
      7f5089aa
    • Anirudh Mangipudi's avatar
      BUG#11762933: MYSQLDUMP WILL SILENTLY SKIP THE `EVENT` · 9da00176
      Anirudh Mangipudi authored
                    TABLE DATA IF DUMPS MYSQL DATABA
      Problem: If mysqldump is run without --events (or with --skip-events)
      it will not dump the mysql.event table's data. This behaviour is inconsistent
      with that of --routines option, which does not affect the dumping of
      mysql.proc table. According to the Manual, --events (--skip-events) defines,
      if the Event Scheduler events for the dumped databases should be included
      in the mysqldump output and this has nothing to do with the mysql.event table
      itself.
      Solution: A warning has been added when mysqldump is used without --events 
      (or with --skip-events) and a separate patch with the behavioral change 
      will be prepared for 5.6/trunk.
      9da00176
    • Thayumanavar's avatar
      BUG#14458232 - CRASH IN THD_IS_TRANSACTION_ACTIVE DURING · 7d012fc2
      Thayumanavar authored
                     THREAD POOLING STRESS TEST
      PROBLEM:
      Connection stress tests which consists of concurrent
      kill connections interleaved with mysql ping queries
      cause the mysqld server which uses thread pool scheduler
      to crash.
      FIX:
      Killing a connection involves shutdown and close of client
      socket and this can cause EPOLLHUP(or EPOLLERR) events to be
      to be queued and handled after disarming and cleanup of 
      of the connection object (THD) is being done.We disarm the 
      the connection by modifying the epoll mask to zero which
      ensure no events come and release the ownership of waiting 
      thread that collect events and then do the cleanup of THD.
      object.As per the linux kernel epoll source code (               
      http://lxr.linux.no/linux+*/fs/eventpoll.c#L1771), EPOLLHUP
      (or EPOLLERR) can't be masked even if we set EPOLL mask
      to zero. So we disarm the connection and thus prevent 
      execution of any query processing handler/queueing to 
      client ctx. queue by removing the client fd from the epoll        
      set via EPOLL_CTL_DEL. Also there is a race condition which
      involve the following threads:
      1) Thread X executing KILL CONNECTION Y and is in THD::awake
      and using mysys_var (holding LOCK_thd_data).
      2) Thread Y in tp_process_event executing and is being killed.
      3) Thread Z receives KILL flag internally and possible call
      the tp_thd_cleanup function which set thread session variable
      and changing mysys_var.
      The fix for the above race is to set thread session variable
      under LOCK_thd_data.
      We also do not call THD::awake if we found the thread in the
      thread list that is to be killed but it's KILL_CONNECTION flag
      set thus avoiding any possible concurrent cleanup. This patch
      is approved by Mikael Ronstrom via email review.
      7d012fc2
  7. 08 Nov, 2012 6 commits
    • Joerg Bruehe's avatar
      Merge the ULN RPM fix into main. · 99bbd96e
      Joerg Bruehe authored
      99bbd96e
    • Joerg Bruehe's avatar
      Building RPMs for ULN: · 561a9ca4
      Joerg Bruehe authored
      The patch "mysql-chain-certs.patch" needs to be adapted
      to code changes in "vio/viosslfactories.c" which were
      done in MySQL 5.5.
      
      Then, the patch can be re-enabled in the spec file.
      561a9ca4
    • Annamalai Gurusami's avatar
      Bug #14669848 CRASH DURING ALTER MAKES ORIGINAL TABLE INACCESSIBLE · 80948e84
      Annamalai Gurusami authored
      When a new primary key is added to an InnoDB table, then the following
      steps are taken by InnoDB plugin:
      
      .  let t1 be the original table.
      .  a temporary table t1@00231 will be created by cloning t1.
      .  all data will be copied from t1 to t1@00231.
      .  rename t1 to t1@00232.
      .  rename t1@00231 to t1.
      .  drop t1@00232.
      
      The rename and drop operations involve file operations.  But file operations
      cannot be rolled back.  So in row_merge_rename_tables(), just after doing data
      dictionary update and before doing any file operations, generate redo logs
      for file operations and commit the transaction.  This will ensure that any
      crash after this commit, the table is still recoverable by moving .ibd and
      .frm files.  Manual recovery is required.
      
      During recovery, the rename file operation redo logs are processed.
      Previously this was being ignored.
      
      rb://1460 approved by Marko Makela.
      80948e84
    • Aditya A's avatar
      Bug#14234028 - CRASH DURING SHUTDOWN WITH BACKGROUND PURGE THREAD · 3c40608c
      Aditya A authored
       
       Analysis
       --------- 
       
       my_stat() calls stat() and if the stat() call fails we try to set 
       the variable  my_errno which is actually a thread specific data .
       We try to get the  address of this thread specific data using
       my_pthread_getspecifc(),but for the purge thread we have not defined 
       any thread specific data so it returns null and when dereferencing 
       null we get a segmentation fault.
              init_available_charsets() seen in the core stack is invoked 
       through  pthread_once() .pthread_once is used for one time 
       initialization.Since free_charsets() is called before innodb plugin 
       shutdown ,purge thread calls init_avaliable_charsets() which leads 
       to the crash.
      
       Fix
       ---
       Call free_charsets() after the innodb plugin shutdown,since purge 
       threads are still using the charsets. 
      3c40608c
    • Aditya A's avatar
      Bug#14234028 - CRASH DURING SHUTDOWN WITH BACKGROUND PURGE THREAD · e29f51f7
      Aditya A authored
       
       Analysis
       --------- 
       
       my_stat() calls stat() and if the stat() call fails we try to set 
       the variable  my_errno which is actually a thread specific data .
       We try to get the  address of this thread specific data using
       my_pthread_getspecifc(),but for the purge thread we have not defined 
       any thread specific data so it returns null and when dereferencing 
       null we get a segmentation fault.
              init_available_charsets() seen in the core stack is invoked 
       through  pthread_once() .pthread_once is used for one time 
       initialization.Since free_charsets() is called before innodb plugin 
       shutdown ,purge thread calls init_avaliable_charsets() which leads 
       to the crash.
      
       Fix
       ---
       Call free_charsets() after the innodb plugin shutdown,since purge 
       threads are still using the charsets. 
      e29f51f7
    • Aditya A's avatar
      Bug#11751825 - OPTIMIZE PARTITION RECREATES FULL TABLE INSTEAD JUST PARTITION · b8ee29f7
      Aditya A authored
      Follow up patch to address the pb2 failures.
      b8ee29f7