1. 18 Oct, 2012 2 commits
    • Mattias Jonsson's avatar
      134c8cb7
    • Mattias Jonsson's avatar
      Bug#14589559: ASSERTION `FILE_ENTRY_BUF[2] == 0' · 60f5f314
      Mattias Jonsson authored
      FAILED IN DEACTIVATE_DDL_LOG_ENTRY
      
      deallocate_ddl_log_entry() can be called without having
      locked LOCK_gdl. It uses a global buffer for reading and
      writing entries in the ddl_log, and since it is not protected
      by any mutex, two concurrent threads can overwrite the
      content in the global buffer, so it can be different from
      what was read.
      Thread a reads from entry 1 into global
      buffer, thread b reads from entry 2 into global buffer,
      thread a writes from global buffer into entry 1
      -> entry 1 is not the content of entry 2.
      
      This is especially bad for replace entries, which uses
      two phases, and does not deactivate the whole entry
      after the first phase, but increases the phase instead.
      
      Fixed by using thread local storage (stack) instead of global
      storage (global buffer).
      
      Also added buffer and size arguments to
      read/write_ddl_log_file_entry.
      
      Also only read/write first bytes in entries in
      deactivate_ddl_log_entry.
      
      Also fixed the scenario where it will try to recover from a server
      compiled with a different value of IO_SIZE (very uncommon!)
      
      updated patch with set_ddl_log_entry_from_buf
      and removed read_ddl_log_entry.
      
      Manually tested, no test case included.
      60f5f314
  2. 17 Oct, 2012 9 commits
  3. 16 Oct, 2012 5 commits
    • Neeraj Bisht's avatar
      Bug#11745891 - LAST_INSERT(ID) DOES NOT SUPPORT BIGINT UNSIGNED · d974ea7f
      Neeraj Bisht authored
      Problem:-
      using last_insert_id() on an auto_incremented bigint unsigned does
      not work for values which are greater than max-bigint-signed.
      
      Analysis:-
      last_insert_id() returns the first auto_incremented value for a column
      and an auto_incremented value can have only positive values.
      
      In our code, when we are initializing a last_insert_id object, we are
      taking it as a signed BIGINT, So when the auto_incremented value reaches
      greater than max signed bigint, last_insert_id gives negative result.
      
      Solution:
      When we are fetching the value from last_insert_id, We are setting the 
      unsigned_flag, so that it take only unsigned BIGINT value.
      d974ea7f
    • Neeraj Bisht's avatar
      Bug#11745891 - LAST_INSERT(ID) DOES NOT SUPPORT BIGINT UNSIGNED · c55dd6bd
      Neeraj Bisht authored
      Problem:-
      using last_insert_id() on an auto_incremented bigint unsigned does
      not work for values which are greater than max-bigint-signed.
      
      Analysis:-
      last_insert_id() returns the first auto_incremented value for a column
      and an auto_incremented value can have only positive values.
      
      In our code, when we are initializing a last_insert_id object, we are
      taking it as a signed BIGINT, So when the auto_incremented value reaches
      greater than max signed bigint, last_insert_id gives negative result.
      
      Solution:
      When we are fetching the value from last_insert_id, We are setting the 
      unsigned_flag, so that it take only unsigned BIGINT value.
      c55dd6bd
    • mysql-builder@oracle.com's avatar
      No commit message · 6e8d0f3a
      mysql-builder@oracle.com authored
      No commit message
      6e8d0f3a
    • Marko Mäkelä's avatar
      Merge mysql-5.1 to mysql-5.5. · 5a847fa9
      Marko Mäkelä authored
      5a847fa9
    • Marko Mäkelä's avatar
      Bug#14729221 IN-PLACE ALTER TABLE REPORTS '' INSTEAD OF · b10ab56d
      Marko Mäkelä authored
      REAL DUPLICATE VALUE FOR PREFIX KEYS
      
      innobase_rec_to_mysql(): Invoke dict_index_get_nth_col_or_prefix_pos()
      instead of dict_index_get_nth_col_pos() to find the column.
      b10ab56d
  4. 15 Oct, 2012 3 commits
    • Krunal Bauskar krunal.bauskar@oracle.com's avatar
      removed warning message as they have changed in mysql-5.6 and mysql-trunk and... · 970ea4db
      removed warning message as they have changed in mysql-5.6 and mysql-trunk and this is left over from changes that got up-merged 
      970ea4db
    • Krunal Bauskar krunal.bauskar@oracle.com's avatar
      · dcf8d048
      bug#14704286
      SECONDARY INDEX UPDATES MAKE CONSISTENT READS DO O(N^2) UNDO PAGE
      LOOKUPS (honoring kill query while accessing sec_index)
      
      If secondary index is being used for select query evaluation and this
      query is operating with consistent read snapshot it might take good time for
      secondary index to return back control to mysql as MVCC would kick in.
      
      If user issues "kill query <id>" while query is actively accessing
      secondary index it will not be honored as there is no hook to check
      for this condition. Added hook for this check.
      
      -----
      Parallely secondary index taking too long to evaluate for consistent
      read snapshot case is being examined for performance improvement. WL#6540.
      dcf8d048
    • Krunal Bauskar krunal.bauskar@oracle.com's avatar
      · c8cebffd
      bug#14704286
      SECONDARY INDEX UPDATES MAKE CONSISTENT READS DO O(N^2) UNDO PAGE
      LOOKUPS (honoring kill query while accessing sec_index)
      
      If secondary index is being used for select query evaluation and this
      query is operating with consistent read snapshot it might take good time for
      secondary index to return back control to mysql as MVCC would kick in.
      
      If user issues "kill query <id>" while query is actively accessing
      secondary index it will not be honored as there is no hook to check
      for this condition. Added hook for this check.
      
      -----
      Parallely secondary index taking too long to evaluate for consistent
      read snapshot case is being examined for performance improvement. WL#6540.
      c8cebffd
  5. 12 Oct, 2012 2 commits
  6. 10 Oct, 2012 2 commits
  7. 09 Oct, 2012 6 commits
  8. 08 Oct, 2012 4 commits
    • Praveenkumar Hulakund's avatar
      Bug#11756600 - SLAVE THREAD CAN CRASH IF EVENT SCHEDULER · 280e3e41
      Praveenkumar Hulakund authored
                     FAILS TO READ EVENT TABLE AT STARTUP.
      
      This issue is fixed in 5.5+ versions. This patch adds a test
      case for this scenario.
      280e3e41
    • Annamalai Gurusami's avatar
      Bug #14036214 MYSQLD CRASHES WHEN EXECUTING UPDATE IN TRX WITH · bd7c9815
      Annamalai Gurusami authored
      CONSISTENT SNAPSHOT OPTION
      
      A transaction is started with a consistent snapshot.  After 
      the transaction is started new indexes are added to the 
      table.  Now when we issue an update statement, the optimizer
      chooses an index.  When the index scan is being initialized
      via ha_innobase::change_active_index(), InnoDB reports 
      the error code HA_ERR_TABLE_DEF_CHANGED, with message 
      stating that "insufficient history for index".
      
      This error message is propagated up to the SQL layer.  But
      the my_error() api is never called.  The statement level
      diagnostics area is not updated with the correct error 
      status (it remains in Diagnostics_area::DA_EMPTY).  
      
      Hence the following check in the Protocol::end_statement()
      fails.
      
       516   case Diagnostics_area::DA_EMPTY:
       517   default:
       518     DBUG_ASSERT(0);
       519     error= send_ok(thd->server_status, 0, 0, 0, NULL);
       520     break;
      
      The fix is to backport the fix of bugs 14365043, 11761652 
      and 11746399. 
      
      14365043 PROTOCOL::END_STATEMENT(): ASSERTION `0' FAILED
      11761652 HA_RND_INIT() RESULT CODE NOT CHECKED
      11746399 RETURN VALUES OF HA_INDEX_INIT() AND INDEX_INIT() IGNORED
      
      rb://1227 approved by guilhem and mattiasj.
      bd7c9815
    • Marko Mäkelä's avatar
      Merge mysql-5.1 to mysql-5.5. · 5d9e863f
      Marko Mäkelä authored
      Also, add debug check for trx_id sanity to row_upd_rec_sys_fields().
      5d9e863f
    • Marko Mäkelä's avatar
      Bug#14731482 UPDATE OR DELETE CORRUPTS A RECORD WITH A LONG PRIMARY KEY · be509b41
      Marko Mäkelä authored
      We did not allocate enough bits for index->trx_id_offset, causing an
      UPDATE or DELETE of a table with a PRIMARY KEY longer than 1024 bytes
      to corrupt the PRIMARY KEY.
      
      dict_index_t: Allocate enough bits.
      
      dict_index_build_internal_clust(): Check for overflow of
      index->trx_id_offset. Trip a debug assertion when overflow occurs.
      
      rb:1380 approved by Jimmy Yang
      be509b41
  9. 04 Oct, 2012 1 commit
    • Jon Olav Hauglid's avatar
      Bug#14640599 MEMORY LEAK WHEN EXECUTING STORED ROUTINE EXCEPTION HANDLER · 6c0b2065
      Jon Olav Hauglid authored
      When a SP handler is activated, memory is allocated to hold the
      MESSAGE_TEXT for the condition that caused the activation.
      
      The problem was that this memory was allocated on the MEM_ROOT belonging
      to the stored program. Since this MEM_ROOT is not freed until the
      stored program ends, a stored program that causes lots of handler
      activations can start using lots of memory. In 5.1 and earlier the
      problem did not exist as no MESSAGE_TEXT was allocated if a condition
      was raised with a handler present. However, this behavior lead to
      a number of other issues such as Bug#23032.
      
      This patch fixes the problem by allocating enough memory for the
      necessary MESSAGE_TEXTs in the SP MEM_ROOT when the SP starts and
      then re-using this memory each time a handler is activated.
            
      This is the 5.5 version of the patch.
      6c0b2065
  10. 03 Oct, 2012 2 commits
    • Tor Didriksen's avatar
      Bug#13713525 CREATE_INITIAL_DB.CMAKE IS FAILING ON WINDOWS, STILL "DEVENV" RETURNS 0 · d68d3031
      Tor Didriksen authored
      This bug depends on cmake version.
      
      For cmake 2.6 (which is still in use for some pushbuild trees)
      the main build would succeed, even if create_initial_db failed.
      
      The problem was the chaining of commands in the CUSTOM_COMMAND
      to produce 'initdb.dep'. It first invokes cmake to run mysqld,
      then invokes 'touch' to create the file. Moving the 'touch'
      command makes the error propagate properly for both cmake 2.6 and 2.8
      d68d3031
    • Jon Olav Hauglid's avatar
      Bug#14495351: CRASH IN HA_PARTITION::HANDLE_UNORDERED_NEXT · 5ba127e1
      Jon Olav Hauglid authored
      Follow-up patch - Fix broken build:
      error: format ‘%u’ expects argument of type ‘unsigned int’,
      but argument 2 has type ‘key_part_map {aka long unsigned int}’
      [-Werror=format]
      5ba127e1
  11. 01 Oct, 2012 2 commits
  12. 28 Sep, 2012 1 commit
    • Annamalai Gurusami's avatar
      Bug #13249921 ASSERT !BPAGE->FILE_PAGE_WAS_FREED, USUALLY IN · 91c8a65a
      Annamalai Gurusami authored
      TRANSACTION ROLLBACK
      
      Description:  During the rollback operation, a blob page 
      is removed earlier than desired.  Consider following scenario:
      
      1. create table t1(a int primary key,b blob) engine=innodb;
      2. insert into t1 values (1,repeat('b',9000));
      3. begin;
      4. update t1 set b=concat(b,'b');
      5. update t1 set a=a+1;
      6. insert into t1 values (1,repeat('b',9000));
      7. rollback;
      
      The update operation in line 5 produces 2 undo log record. The first
      undo record (TRX_UNDO_DEL_MARK_REC) goes to trx->update_undo and the
      second undo record (TRX_UNDO_INSERT_REC) goes to trx->insert_undo.
      During rollback, they are executed out of order.
      
      When the undo record TRX_UNDO_DEL_MARK_REC is applied/executed,
      the blob ownership is also reset.  Because of this the blob page
      is released earlier than desired.  This blob page must have been
      freed only as part of applying/executing the undo record
      TRX_UNDO_INSERT_REC.
      
      This problem can be avoided by executing the undo records in
      order.  This patch will make innodb to execute the undo records
      in order.
      
      rb://1125 approved by Marko.
      91c8a65a
  13. 26 Sep, 2012 1 commit