1. 30 Mar, 2012 1 commit
    • Rohit Kalhans's avatar
      BUG#11765650 - 58637: MARK UPDATES THAT DEPEND ON ORDER OF TWO KEYS UNSAFE · 1a02c266
      Rohit Kalhans authored
            
       Description: When the table has more than one unique or primary key, 
       INSERT... ON DUP KEY UPDATE statement is sensitive to the order in which
       the storage engines checks the keys. Depending on this order, the storage
       engine may determine different rows to mysql, and hence mysql can update
       different rows on master and slave.
            
       Solution: We mark INSERT...ON DUP KEY UPDATE on a table with more than on unique
       key as unsafe therefore the event will be logged in row format if it is available
       (ROW/MIXED). If only STATEMENT format is available, a warning will be thrown. 
      
      mysql-test/suite/binlog/r/binlog_unsafe.result:
        Updated result file
      mysql-test/suite/binlog/t/binlog_unsafe.test:
        Added test to check  for warning being thrown when the unsafe statement is executed
      mysql-test/suite/rpl/r/rpl_known_bugs_detection.result:
        Updated result file
      sql/share/errmsg-utf8.txt:
        Added new warning message
      sql/sql_base.cc:
        check for tables in the query with more than one UNIQUE KEY and INSERT ON DUPLICATE KEY UPDATE, and mark such statements unsafe.
      1a02c266
  2. 29 Mar, 2012 3 commits
    • Hery Ramilison's avatar
      Starting 5.5.23 build · a4a5580e
      Hery Ramilison authored
      a4a5580e
    • Tor Didriksen's avatar
      Patch for Bug#13805127: Stored program cache produces wrong result in same THD. · ed418461
      Tor Didriksen authored
      Background:
      
        - as described in MySQL Internals Prepared Stored
          (http://forge.mysql.com/wiki/MySQL_Internals_Prepared_Stored),
          the Optimizer sometimes does destructive changes to the parsed
          LEX-object (Item-tree), which makes it impossible to re-use
          that tree for PS/SP re-execution.
      
        - in order to be able to re-use the Item-tree, the destructive
          changes are remembered and rolled back after the statement execution.
      
      The problem, discovered by this bug, was that the objects representing
      GROUP-BY clause did not restored after query execution. So, the GROUP-BY
      part of the statement could not be properly re-initialized for re-execution
      after destructive changes.
      
      Those objects do not take part in the Item-tree, so they can not be saved
      using the approach for Item-tree.
      
      The fix is as follows:
      
        - introduce a new array in st_select_lex to store the original
          ORDER pointers, representing the GROUP-BY clause;
      
        - Initialize this array in fix_prepare_information().
      
        - restore the list of GROUP-BY items in reinit_stmt_before_use().
      ed418461
    • Sunny Bains's avatar
      Bug #13817703 - auto_increment_offset != 1 + innodb_autoinc_lock_mode=1 => bulk inserts fail · d1809a5c
      Sunny Bains authored
              
      Fix the calculation of the next autoinc value when offset > 1. Some of the
      results have changed due to the changes in the allocation calculation. The
      new calculation will result in slightly bigger gaps for bulk inserts.
        
      rb://866 Approved by Jimmy Yang.
      Backported from mysql-trunk (5.6)
      d1809a5c
  3. 28 Mar, 2012 6 commits
    • Marc Alff's avatar
      Bug#13898343 THREAD LOOPS ENDLESSLY IN LF_PINBOX_PUT_PINS WHILE HOLDING · 7553f9ee
      Marc Alff authored
      LOCK_THREAD_COUNT
      
      When using the performance schema file io instrumentation in MySQL 5.5,
      a thread would loop forever inside lf_pinbox_put_pins, when disconnecting.
      It would also hold LOCK_thread_count while doing so, effectively killing the
      server.
      
      The root cause of the loop in lf_pinbox_put_pins() is a leak of LF_PINS,
      when used with the filename_hash LF_HASH table in the performance schema.
      
      This fix contains the following changes:
      
      1)
      Added the missing call to lf_hash_search_unpin(), to prevent the leak.
      
      2)
      In mysys/lf_alloc-pin.c, there was some extra debugging code
      (MY_LF_EXTRA_DEBUG) written to detect precisely this kind of issues,
      but it was never used.
      Replaced MY_LF_EXTRA_DEBUG with DBUG_OFF, so that leaks similar to this one
      can be always detected in regular debug builds.
      
      3)
      Backported the fix for the following bug, from 5.6 to 5.5:
      Bug#13417446 - 63339: INCORRECT FILE PATH IN PEFORMANCE_SCHEMA ON WINDOWS
      7553f9ee
    • Praveenkumar Hulakund's avatar
      Merge from 5.1 to 5.5 · fe12e0b2
      Praveenkumar Hulakund authored
      fe12e0b2
    • Praveenkumar Hulakund's avatar
      Bug#11763507 - 56224: FUNCTION NAME IS CASE-SENSITIVE · f3d5127f
      Praveenkumar Hulakund authored
      Analysis:
      -------------------------------
      According to the Manual
      (http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html):
      "Column, index, stored routine, and event names are not case sensitive on any
      platform, nor are column aliases."
      
      In other words, 'lower_case_table_names' does not affect the behaviour of 
      those identifiers.
      
      On the other hand, trigger names are case sensitive on some platforms,
      and case insensitive on others. 'lower_case_table_names' does not affect
      the behaviour of trigger names either.
      
      The bug was that SHOW statements did case sensitive comparison
      for stored procedure / stored function / event names.
      
      Fix:
      Modified the code so that comparison in case insensitive for routines 
      and events for "SHOW" operation.
      
      As part of this commit, only fixing the test failures due to the actual code fix.
      f3d5127f
    • Sunny Bains's avatar
      Merge from mysql-5.1. · 1e10b606
      Sunny Bains authored
      1e10b606
    • Sunny Bains's avatar
      Merge from mysql-5.0 · 83a5a20d
      Sunny Bains authored
      83a5a20d
    • Sunny Bains's avatar
      Bug# 13847885 - PURGING STALLS WHEN PURGE_SYS->N_PAGES_HANDLED OVERFLOWS · 65126ffa
      Sunny Bains authored
      Change the type of purge_sys_t::n_pages_handled and purge_sys_t::handle_limit
      to ulonglong from ulint. On a 32 bit system doing ~700 deletes per second the
      counters can overflow in ~3.5 months, if they are 32 bit.
      
      Approved by Jimmy Yang over IM.
      65126ffa
  4. 27 Mar, 2012 4 commits
  5. 26 Mar, 2012 1 commit
  6. 22 Mar, 2012 1 commit
  7. 21 Mar, 2012 3 commits
  8. 20 Mar, 2012 6 commits
  9. 16 Mar, 2012 3 commits
  10. 15 Mar, 2012 9 commits
    • Inaam Rana's avatar
      merge from 5.1 · 3c1bdb35
      Inaam Rana authored
      3c1bdb35
    • Inaam Rana's avatar
      Bug#13825266 RACE IN LOCK_VALIDATE() WHEN ACCESSING PAGES DIRECTLY · 00231470
      Inaam Rana authored
      FROM BUFFER POOL
      
      rb://975
      approved by: Marko Makela
      
      There is a race in lock_validate() where we try to access a page
      without ensuring that the tablespace stays valid during the operation
      i.e.: it is not deleted. This patch tries to fix that by using an
      existing flag (the flag is renamed to make it's name more generic
      in line with it's new use).
      00231470
    • Inaam Rana's avatar
      merge from 5.1 · 1ca73ab4
      Inaam Rana authored
      1ca73ab4
    • Inaam Rana's avatar
      Bug#13851171 STRING OVERFLOW IN INNODB CODE FOUND BY STATIC ANALYSIS · 04c96834
      Inaam Rana authored
      rb://976
      approved by: Marko Makela
      
      Add an assertion to ensure that string overflow is not happening.
      Pointed by Coverity analysis.
      04c96834
    • Inaam Rana's avatar
      merge from 5.1 · 2ceb1177
      Inaam Rana authored
      2ceb1177
    • Inaam Rana's avatar
      Bug#13537504 VALGRIND: COND. JUMP/MOVE DEPENDS ON UNINITIALISED VALUES · a8217b7c
      Inaam Rana authored
      IN OS_THREAD_EQ
      
      rb://977
      approved by: Marko Makela
      
      rw_lock::writer_thread field contains the thread id of current x-holder
      or wait-x thread. This field is un-initialized at lock creation and is
      written to for the first time when an attempt is made to x-lock.
      
      Current code considers ::writer_thread as valid memory region only when
      the lock is held in x-mode (or there is an x-waiter). This is an
      overkill and it generates valgrind warnings.
      
      The fix is to consider ::writer_thread as valid memory region once it
      has been written to.
      
      Reasoning:
      ==========
      The ::writer_thread can be safely considered valid because:
      
      * We only ever do comparison with current calling threads id.
      * We only ever do comparison when ::recursive flag is set
      * We always unset ::recursive flag in x-unlock
      * Same thread cannot be unlocking and attempting to lock at the same
      time
      * thread_id recycling is not an issue because before an id is recycled
      the thread must leave innodb meaning it must release all locks meaning
      it must unset ::recursive flag.
      a8217b7c
    • Jon Olav Hauglid's avatar
      Bug#13833438: ERROR CODES MUST HAVE SAME VALUE ACROSS MYSQL VERSIONS · 1f5051d9
      Jon Olav Hauglid authored
      Pre-requisite patch.
      Add end-of-file marker to 5.5 version of errmsg-utf8.txt.
      1f5051d9
    • Dmitry Shulga's avatar
      This patch fixes the bug#13737343 (formerly known as 64374): XA TRANSACTIONS · 2b68b4bc
      Dmitry Shulga authored
      AND SAVEPOINT.
            
      The bug was introduced by the patch for bug#11766752. This patch sets too
      strong condition on XA state for SAVEPOINT statement that disallows its
      execution during XA transaction. But since the statement SAVEPOINT doesn't
      imply implicit commit we can allow its handling during XA transaction.
      
      The patch explicitly check for transaction state against states XA_NOTR
      and XA_ACTIVE for which the handling of statement SAVEPOINT for XA
      transaction is allowed.
      
      mysql-test/t/xa.test:
        Testcase was adjusted for bug#13737343. Now SAVEPOINT is allowed for XA
        transactions in ACTIVE state.
      2b68b4bc
    • unknown's avatar
  11. 14 Mar, 2012 3 commits
    • Mattias Jonsson's avatar
      merge of bug#1364811 into mysql-5.5 · 5584e61f
      Mattias Jonsson authored
      5584e61f
    • Mattias Jonsson's avatar
      bug#13694811 · 58b21478
      Mattias Jonsson authored
      Updated code comments according to reviewers requests.
      58b21478
    • Tor Didriksen's avatar
      Bug#13832772 ASSERTION `THD->IS_ERROR() || KILL_ERRNO' · a930e474
      Tor Didriksen authored
      We are trying to sort a lot of text/blob fields, 
      so the buffer is indeed too small.
      Memory available = thd->variables.sortbuff_size = 262144
      min_sort_memory = param.sort_length*MERGEBUFF2 = 292245
      So the decision to abort the query is correct.
      
      filesort() calls my_error(), the error is reported.
      But, since we have DELETE IGNORE ... the error is converted to a warning by
      THD::raise_condition
      
      filesort currently expects an error to be recorded in the THD diagnostics
      area.
      If we lift this restriction (remove the assert) we end up in the familiar
      void Protocol::end_statement()
        default:
          DBUG_ASSERT(0);
      
      The solution seems to be to call my_error(ME_FATALERROR) in filesort,
      so that the error is propagated as an error rather than a warning.
      
      
      mysql-test/r/filesort_debug.result:
        New test case.
      mysql-test/t/filesort_debug.test:
        New test case.
      a930e474