1. 19 Jun, 2009 7 commits
    • V Narayanan's avatar
      merging with mysql-5.0-bugteam · 81dbbd68
      V Narayanan authored
      81dbbd68
    • V Narayanan's avatar
      Bug#43572 Handle failures from hash_init · 728d3c39
      V Narayanan authored
            
      Failure to allocate memory for the hash->array element,
      caused hash_init to return without initializing the other
      members of the hash. Thus although the dynamic array
      buffer may be allocated at a later point in the code, the
      incompletely initialized hash caused fatal failures.
      
      This patch moves the initialization of the other members
      of the hash above the array allocation, so that the usage
      of this hash will not result in fatal failures.
      728d3c39
    • Alfranio Correia's avatar
      Post-fix for BUG#43929. · 5289e1a9
      Alfranio Correia authored
      5289e1a9
    • Sergey Glukhov's avatar
      null merge · cf66632d
      Sergey Glukhov authored
      cf66632d
    • Staale Smedseng's avatar
      Null-merge from 5.0-bugteam · c3ef506a
      Staale Smedseng authored
      c3ef506a
    • Staale Smedseng's avatar
      Bug #32223 SETting max_allowed_packet variable · 2b48caa4
      Staale Smedseng authored
            
      Inconsistent behavior of session variable max_allowed_packet 
      (and net_buffer_length); only assignment to the global variable 
      has any effect, without this being obvious to the user.
            
      The patch for Bug#22891 is backported to 5.0, making the two
      session variables read-only. As this is a backport to GA 
      software, the error used when trying to assign to the read-
      only variable is ER_UNKNOWN_ERROR. The error message is the 
      same as in 5.1+.
      2b48caa4
    • Sergey Glukhov's avatar
      Bug#44834 strxnmov is expected to behave as you'd expect · c92abdc2
      Sergey Glukhov authored
      The problem: described in the bug report.
      The fix:
      --increase buffers where it's necessary
        (buffers which are used in stxnmov)
      --decrease buffer lengths which are used
      c92abdc2
  2. 18 Jun, 2009 7 commits
    • Davi Arnaut's avatar
      Bug#42599: error: `pthread_setschedprio' was not declared in this scope · f6ea8b76
      Davi Arnaut authored
      The problem was that a pthread.h header used by gcc did not
      declare the pthread_setscheprio, yet the function is implemented
      by the function is implemented, causing a autoconf check to pass
      and compilation with C++ to fail. The solution is to add a
      autoconf check to ensure that the function is properly declared.
      f6ea8b76
    • Alfranio Correia's avatar
    • Alfranio Correia's avatar
      2cf77a8e
    • Alfranio Correia's avatar
    • Alfranio Correia's avatar
    • Alfranio Correia's avatar
      BUG#43929 binlog corruption when max_binlog_cache_size is exceeded · ac1b464a
      Alfranio Correia authored
      Large transactions and statements may corrupt the binary log if the size of the
      cache, which is set by the max_binlog_cache_size, is not enough to store the
      the changes.
      
      In a nutshell, to fix the bug, we save the position of the next character in the
      cache before starting processing a statement. If there is a problem, we simply
      restore the position thus removing any effect of the statement from the cache.
      Unfortunately, to avoid corrupting the binary log, we may end up loosing changes
      on non-transactional tables if they do not fit in the cache. In such cases, we
      store an Incident_log_event in order to stop the slave and alert users that some
      changes were not logged.
      
      Precisely, for every non-transactional changes that do not fit into the cache,
      we do the following:
        a) the statement is *not* logged
        b) an incident event is logged after committing/rolling back the transaction,
        if any. Note that if a failure happens before writing the incident event to
        the binary log, the slave will not stop and the master will not have reported
        any error.
        c) its respective statement gives an error
      
      For transactional changes that do not fit into the cache, we do the following:
        a) the statement is *not* logged
        b) its respective statement gives an error
      
      To work properly, this patch requires two additional things. Firstly, callers to
      MYSQL_BIN_LOG::write and THD::binlog_query must handle any error returned and
      take the appropriate actions such as undoing the effects of a statement. We
      already changed some calls in the sql_insert.cc, sql_update.cc and sql_insert.cc
      modules but the remaining calls spread all over the code should be handled in
      BUG#37148. Secondly, statements must be either classified as DDL or DML because
      DDLs that do not get into the cache must generate an incident event since they
      cannot be rolled back.
      ac1b464a
    • Martin Hansson's avatar
      Merge · 0a214a42
      Martin Hansson authored
      0a214a42
  3. 17 Jun, 2009 17 commits
  4. 16 Jun, 2009 9 commits
    • Alfranio Correia's avatar
      BUG#45511 rpl.rpl_binlog_corruption fails with warning messages in Valgrind · 376a73c0
      Alfranio Correia authored
      This is a backport of BUG#43076.
      376a73c0
    • Martin Hansson's avatar
      Bug#45168: assertion with convert() and empty set value · acc642c8
      Martin Hansson authored
            
      The assertion in String::copy was added in order to avoid
      valgrind errors when the destination was the same as the source.
      Eased restriction to allow for the case when str == NULL.
      acc642c8
    • Georgi Kodinov's avatar
      Addendum to the fix for bug #44821: move partition dependent test · de713f7e
      Georgi Kodinov authored
      to a test file that guarantees the presence of partition code
      de713f7e
    • Kristofer Pettersson's avatar
      Automerge · 7d98d240
      Kristofer Pettersson authored
      7d98d240
    • Kristofer Pettersson's avatar
      Automerge · 5f205e1a
      Kristofer Pettersson authored
      5f205e1a
    • Martin Hansson's avatar
      Merge · 94723b49
      Martin Hansson authored
      94723b49
    • Kristofer Pettersson's avatar
      Automerge · ccfd18de
      Kristofer Pettersson authored
      ccfd18de
    • Georgi Kodinov's avatar
      automerge · 3e56e6b7
      Georgi Kodinov authored
      3e56e6b7
    • Kristofer Pettersson's avatar
      Bug#43758 Query cache can lock up threads in 'freeing items' state · b22d02ad
      Kristofer Pettersson authored
      Early patch submitted for discussion.
      
      It is possible for more than one thread to enter the condition
      in query_cache_insert(), but the condition predicate is to
      signal one thread each time the cache status changes between
      the following states: {NO_FLUSH_IN_PROGRESS,FLUSH_IN_PROGRESS,
      TABLE_FLUSH_IN_PROGRESS}
      
      Consider three threads THD1, THD2, THD3
      
         THD2: select ... => Got a writer in ::store_query
         THD3: select ... => Got a writer in ::store_query
         THD1: flush tables => qc status= FLUSH_IN_PROGRESS;
                            new writers are blocked.
         THD2: select ... => Still got a writer and enters cond in
                             query_cache_insert
         THD3: select ... => Still got a writer and enters cond in
                             query_cache_insert
         THD1: flush tables => finished and signal status change.
         THD2: select ... => Wakes up and completes the insert.
         THD3: select ... => Happily waiting for better times. Why hurry?
      
      This patch is a refactoring of this lock system. It introduces four new methods:
         Query_cache::try_lock()
         Query_cache::lock()
         Query_cache::lock_and_suspend()
         Query_cache::unlock()
      
      This change also deprecates wait_while_table_flush_is_in_progress(). All threads are
      queued and put on a conditional wait. On each unlock the queue is signalled. This resolve
      the issues with left over threads. To assure that no threads are spending unnecessary
      time waiting a signal broadcast is issued every time a lock is taken before a full
      cache flush.
      b22d02ad