1. 22 Jun, 2009 9 commits
    • Martin Hansson's avatar
      Merge · eac26b89
      Martin Hansson authored
      eac26b89
    • Martin Hansson's avatar
      · 532697af
      Martin Hansson authored
      Bug#44653: Server crash noticed when executing random queries with partitions.
      
      When opening a table, it is imperative that the flag
      TABLE::auto_increment_field_not_null be false. But if an error occured during
      the creation of a table (e.g. the table exists already) with an auto_increment
      column and a BEFORE trigger that used the INSERT ... SELECT construct, the
      flag was not reset until after error checking. Thus if an error occured,
      select_insert::send_data() returned immediately and it was not reset (see * in
      pseudocode below).  Crash happened if the table was opened again. Fixed by
      resetting the flag after error checking.
      
      nested-loops_join():
        for each row in SELECT table {
          select_insert::send_data():
            if a values is supplied for AUTO_INCREMENT column
               table->auto_increment_field_not_null= TRUE
             else
               table->auto_increment_field_not_null= FALSE
             if (error)
               return 1; *
             if (table->auto_increment_field_not_null == FALSE)
               ...
             table->auto_increment_field_not_null == FALSE 
        }
      <-- table returned to table cache and later retrieved by open_table: 
      open_table():
        assert(table->auto_increment_field_not_null)
      
      
      mysql-test/r/trigger.result:
        Bug#44653: Test result
      mysql-test/t/trigger.test:
        Bug#44653: Test case
      sql/sql_insert.cc:
        Bug#44653: Fix: Make sure to unset this field before returning in case of error
      532697af
    • Georgi Kodinov's avatar
      automerge · 58bac103
      Georgi Kodinov authored
      58bac103
    • Georgi Kodinov's avatar
      automerge · 1d85591e
      Georgi Kodinov authored
      1d85591e
    • Georgi Kodinov's avatar
      automerge · 9b088006
      Georgi Kodinov authored
      9b088006
    • V Narayanan's avatar
      merging with mysql-5.1-bugteam · 96566888
      V Narayanan authored
      96566888
    • Georgi Kodinov's avatar
      automerge · 6eea47ab
      Georgi Kodinov authored
      6eea47ab
    • Satya B's avatar
      Applying InnoDB snashot 5.1-ss5343, Fixes BUG#45357 · 824dada3
      Satya B authored
      1. BUG#45357 - 5.1.35 crashes with Failing assertion: index->type & DICT_CLUSTERED
      
      2. Also fixes the compilation problem when the flag -DUNIV_MUST_NOT_INLINE
      
      Detailed revision comments:
      
      r5340 | marko | 2009-06-17 12:11:49 +0300 (Wed, 17 Jun 2009) | 4 lines
      branches/5.1: row_unlock_for_mysql(): When the clustered index is unknown,
      refuse to unlock the record.
      (Bug #45357, caused by the fix of Bug #39320).
      rb://132 approved by Sunny Bains.
      r5339 | marko | 2009-06-17 11:01:37 +0300 (Wed, 17 Jun 2009) | 2 lines
      branches/5.1: Add missing #include "mtr0log.h" so that the code compiles
      with -DUNIV_MUST_NOT_INLINE.
      824dada3
    • V Narayanan's avatar
      Bug#43572 Handle failures from hash_init · 39928102
      V Narayanan authored
      The merge from http://lists.mysql.com/commits/76678 caused the 
      growth_size parameter to the my_init_dynamic_array function to
      be ignored. This patch corrects the problem.
      
      mysys/hash.c:
        Bug#43572  Handle failures from hash_init
        
        Replacing the last parameter to my_init_dynamic_array with
        growth_size.
      39928102
  2. 19 Jun, 2009 15 commits
    • Matthias Leich's avatar
      eb6a9d47
    • Matthias Leich's avatar
      48fdae56
    • Matthias Leich's avatar
      Merge of latest changes into local tree · 8228b17b
      Matthias Leich authored
      8228b17b
    • Matthias Leich's avatar
    • Georgi Kodinov's avatar
      automerge · 1d03d6ef
      Georgi Kodinov authored
      1d03d6ef
    • Matthias Leich's avatar
    • Matthias Leich's avatar
      Fix for Bug#40545, Bug#40209, Bug#40618, Bug#38346 · 7578ce33
      Matthias Leich authored
        Details:
        - Limit the queries to character sets and collations
          which are most probably available in all build types.
          But try to preserve the intention of the tests.
        - Remove the variants adjusted to some build types.
      
        Note:
        1. The results of the review by Bar are included.
        2. I am not able to check the correctness of this patch
           on any existing build type and any MySQL version.
           So it could happen that the new test fails somewhere.
      7578ce33
    • Georgi Kodinov's avatar
      Bug #36654: mysqld_multi cannot start instances with different versions · e54a05f5
      Georgi Kodinov authored
      occasionally.
      
      mysql_multi can call mysqld_safe. In doing this it's not changing the 
      current working directory. This may cause confusion in the case where 
      mysqld_multi is handling instances of servers of different versions 
      and the current working directory is the installation directory of one 
      of these servers.
      
      Fixed by enhancing the meaning of basedir in [mysqldN] sections of 
      mysqld_multi. If specified, mysqld_multi will change the current 
      working directory to the basedir directory before starting the server 
      in mysqld_multi ... start ... and then change it back to what it was.
      
      scripts/mysqld_multi.sh:
        Bug #36654: optionally preserve, change and restore the cwd when 
        starting server instances
      e54a05f5
    • V Narayanan's avatar
      merging with mysql-5.0-bugteam · ae84ab40
      V Narayanan authored
      ae84ab40
    • V Narayanan's avatar
      Bug#43572 Handle failures from hash_init · d1ed43c9
      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.
      
      include/hash.h:
        Bug#43572 Handle failures from hash_init
        
        hash_inited is used to verify that the hash is
        valid. After the change induced by the current
        patch hash->array.buffer !=0 is not a valid check
        for this condition, since, the dynamic array can
        be allocated even at a later time. Bootstrap SQL
        script is setting some variables, which are
        actually not set due to this hash_inited issue.
        Thus we get empty grant tables.
        
        A better way to check if the hash is valid is
        to verify that hash->blength is greater than 0.
      mysys/hash.c:
        Bug#43572 Handle failures from hash_init
        
        Move 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.
      d1ed43c9
    • Alfranio Correia's avatar
      Post-fix for BUG#43929. · 8af5d3d7
      Alfranio Correia authored
      8af5d3d7
    • Sergey Glukhov's avatar
      null merge · 186fbb6a
      Sergey Glukhov authored
      186fbb6a
    • Staale Smedseng's avatar
      Null-merge from 5.0-bugteam · 6b5ebb60
      Staale Smedseng authored
      6b5ebb60
    • Staale Smedseng's avatar
      Bug #32223 SETting max_allowed_packet variable · 4fbd8db9
      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+.
      
      mysql-test/t/variables.test:
        Tests are changed to account for the new semantics, and assignment to the read-only variables is added to test 
        the emission of the correct error message.
      sql/set_var.cc:
        Both max_allowed_packet and net_buffer_length are changed 
        to be of type sys_var_thd_ulong_session_readonly. ER_UNKNOWN_ERROR is used to indicate an attempt to assign 
        to an instance of a read-only variable.
      sql/set_var.h:
        Class sys_var_thd_ulong_session_readonly is added.
      4fbd8db9
    • Sergey Glukhov's avatar
      Bug#44834 strxnmov is expected to behave as you'd expect · 524191be
      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
      
      
      client/mysql.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/ha_ndbcluster.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/ha_ndbcluster_binlog.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/handler.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/log.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/mysqld.cc:
        removed unnecessary line
      sql/parse_file.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/sql_acl.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/sql_base.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/sql_db.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/sql_delete.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/sql_partition.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/sql_rename.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/sql_show.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/sql_table.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      sql/sql_view.cc:
        --increase buffers where it's necessary
          (buffers which are used in stxnmov)
        --decrease buffer lengths which are used
          as argument for strxnmov function
      524191be
  3. 18 Jun, 2009 7 commits
    • Davi Arnaut's avatar
      Bug#42599: error: `pthread_setschedprio' was not declared in this scope · 74235327
      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.
      
      configure.in:
        Check that the pthread_setschedprio is declared.
      74235327
    • Alfranio Correia's avatar
    • Alfranio Correia's avatar
      0a2273e3
    • Alfranio Correia's avatar
    • Alfranio Correia's avatar
    • Alfranio Correia's avatar
      BUG#43929 binlog corruption when max_binlog_cache_size is exceeded · eb708edc
      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.
      eb708edc
    • Martin Hansson's avatar
      Merge · 8d42cecc
      Martin Hansson authored
      8d42cecc
  4. 17 Jun, 2009 9 commits