1. 18 Dec, 2009 3 commits
    • Davi Arnaut's avatar
      Bug#48983: Bad strmake calls (length one too long) · 8b79b8fd
      Davi Arnaut authored
      MySQL 5.1 specific fixes.
      8b79b8fd
    • Davi Arnaut's avatar
      Manual merge. · 95e34182
      Davi Arnaut authored
      95e34182
    • Magne Mahre's avatar
      Backport to 5.1 branch (next-mr revid: 2921) · fa438192
      Magne Mahre authored
      Bug#35589 SET PASSWORD caused a crash
      Bug#35591 FLUSH PRIVILEGES caused a crash
            
      A race condition on the privilege hash tables (proc_priv_hash
      and func_priv_hash) caused one thread to try to delete elements
      that had already been deleted by another thread.
            
      The bug was caused by reading and saving the pointers to 
      the hash tables outside mutex protection.  This led to an
      inconsistency where a thread copied a pointer to a hash,
      another thread did the same, the first thread then deleted
      the hash, and the second then crashed when it in turn tried to
      delete the deleted hash.
            
      The fix is to ensure that operations on the shared hash structures
      happens under mutex protection (moving the locking up a little)
      fa438192
  2. 17 Dec, 2009 12 commits
    • Jim Winstead's avatar
      Merge approved bug fix · e282e07c
      Jim Winstead authored
      e282e07c
    • Jim Winstead's avatar
      Merge with mysql-5.1-bugteam latest changes · 62ad664a
      Jim Winstead authored
      62ad664a
    • Davi Arnaut's avatar
      Bug#48983: Bad strmake calls (length one too long) · c2fb2a9a
      Davi Arnaut authored
      The problem is a somewhat common misusage of the strmake function.
      The strmake(dst, src, len) function writes at most /len/ bytes to
      the string pointed to by src, not including the trailing null byte.
      Hence, if /len/ is the exact length of the destination buffer, a
      one byte buffer overflow can occur if the length of the source
      string is equal to or greater than /len/.
      
      client/mysqldump.c:
        Make room for the trailing null byte.
      libmysql/libmysql.c:
        Add comment, there is enough room in the buffer.
        Increase buffer length, two strings are concatenated.
      libmysqld/lib_sql.cc:
        Make room for the trailing null byte.
      mysys/default.c:
        Make room for the trailing null bytes.
      mysys/mf_pack.c:
        Make room for the trailing null byte.
      server-tools/instance-manager/commands.cc:
        Copy only if overflow isn't possible in both cases.
      server-tools/instance-manager/listener.cc:
        Make room for the trailing null byte.
      sql/log.cc:
        Make room for the trailing null byte.
      sql/sp_pcontext.h:
        Cosmetic fix.
      sql/sql_acl.cc:
        MAX_HOSTNAME already specifies space for the trailing null byte.
      sql/sql_parse.cc:
        Make room for the trailing null byte.
      sql/sql_table.cc:
        Make room for the trailing null byte.
      c2fb2a9a
    • Alfranio Correia's avatar
      730f52c6
    • Andrei Elkin's avatar
      merge from 5.0 with bug@49740 fixes · f0b07e7b
      Andrei Elkin authored
      f0b07e7b
    • Andrei Elkin's avatar
      Bug #49740 rpl.rpl_temporary fails in PB2 in mysql-trunk-merge · 119349c1
      Andrei Elkin authored
      The test allowed random coincidence of connection ids for two concurrent
      sessions performing CREATE/DROP temp tables.
      
      Fixed with correcting the test. The sessions connection ids are not changed
      from their defaults anymore.
      119349c1
    • Satya B's avatar
      merge to mysql-5.1-bugteam · f757b63e
      Satya B authored
      f757b63e
    • Satya B's avatar
      merge mysql-5.0-bugteam to mysql-5.1-bugteam · 4fa9b44c
      Satya B authored
      4fa9b44c
    • Satya B's avatar
      Fix for Bug#37408 - Compressed MyISAM files should not require/use mmap() · 6547f51c
      Satya B authored
                        
      When compressed myisam files are opened, they are always memory mapped
      sometimes causing memory swapping problems.
      
      When we mmap the myisam compressed tables of size greater than the memory 
      available, the kswapd0 process utilization is very high consuming 30-40% of 
      the cpu. This happens only with linux kernels older than 2.6.9
      
      With newer linux kernels, we don't have this problem of high cpu consumption
      and this option may not be required.
       
      The option 'myisam_mmap_size' is added to limit the amount of memory used for
      memory mapping of myisam files. This option is not dynamic.
      
      The default value on 32 bit system is 4294967295 bytes and on 64 bit system it
      is 18446744073709547520 bytes.
      
      Note: Testcase only tests the option variable. The actual bug has be to 
      tested manually.
      
      include/my_global.h:
        Fix for Bug #37408 - Compressed MyISAM files should not require/use mmap()
        
        define SIZE_T_MAX
      include/myisam.h:
        Fix for Bug #37408 - Compressed MyISAM files should not require/use mmap()
        
        declare 'myisam_mmap_size' and 'myisam_mmap_used' variables and the mutex
        THR_LOCK_myisam_mmap
      myisam/mi_packrec.c:
        Fix for Bug #37408 - Compressed MyISAM files should not require/use mmap()
        
        add 'myisam_mmap_size' option which limits the memory available to mmap of 
        myisam files
      myisam/mi_static.c:
        Fix for Bug #37408 - Compressed MyISAM files should not require/use mmap()
        
        declare 'myisam_mmap_size' and 'myisam_mmap_used' variables and the mutex
        THR_LOCK_myisam_mmap
      myisam/myisamdef.h:
        Fix for Bug #37408 - Compressed MyISAM files should not require/use mmap()
        
        move MEMMAP_EXTRA_MARGIN to myisam.h so that it can be used in mysqld.cc
      mysql-test/r/variables.result:
        Fix for Bug #37408 - Compressed MyISAM files should not require/use mmap()
        
        Testcase for BUG#37408 to test the myisam_mmap_size option
      mysql-test/t/variables.test:
        Fix for Bug #37408 - Compressed MyISAM files should not require/use mmap()
        
        Testcase for BUG#37408 to test the myisam_mmap_size option
      mysys/my_thr_init.c:
        Fix for Bug #37408 - Compressed MyISAM files should not require/use mmap()
        
        intialize the lock THR_LOCK_myisam_mmap
      sql/mysqld.cc:
        Fix for Bug #37408 - Compressed MyISAM files should not require/use mmap()
        
        add the 'myisam_mmap_size' option
      sql/set_var.cc:
        Fix for Bug #37408 - Compressed MyISAM files should not require/use mmap()
        
        add the 'myisam_mmap_size' to the SHOW VARIABLES list
      6547f51c
    • Martin Hansson's avatar
      Bug#47650: using group by with rollup without indexes · 16ed8699
      Martin Hansson authored
      returns incorrect results with where
      
      An outer join of a const table (outer) and a normal table
      (inner) with GROUP BY on a field from the outer table would
      optimize away GROUP BY, and thus trigger the optimization to
      do away with a temporary table if grouping was performed on
      columns from the const table, hence executing the query with
      filesort without temporary table. But this should not be
      done if there is a non-indexed access to the inner table,
      since filesort does not handle joins. It expects either ref
      access, range ditto or table scan. The join condition will
      thus not be applied.
      
      Fixed by always forcing execution with temporary table in
      the case of ROLLUP with a query involving an outer join. This
      is a slightly broader class of queries than need fixing, but
      it is hard to ascertain the position of a ROLLUP field wrt
      outer join with current query representation.
      
      mysql-test/r/join_outer.result:
        Bug#47650: Test result
      mysql-test/t/join_outer.test:
        Bug#47650: Test case
      sql/sql_select.cc:
        Bug#47650: Fix
      16ed8699
    • Ramil Kalimullin's avatar
      Auto-merge. · 37c4301a
      Ramil Kalimullin authored
      37c4301a
    • Ramil Kalimullin's avatar
      Fix for bug#49465: valgrind warnings and incorrect live checksum... · 6123407d
      Ramil Kalimullin authored
      Problem: inserting a record we don't set unused null bits in the
      record buffer if no default field values used.
      That may lead to wrong live checksum calculation.
      
      Fix: set unused null bits in the record buffer in such cases.
      
      
      mysql-test/r/myisam.result:
        Fix for bug#49465: valgrind warnings and incorrect live checksum...
          - test result.
      mysql-test/t/myisam.test:
        Fix for bug#49465: valgrind warnings and incorrect live checksum...
          - test case.
      sql/sql_insert.cc:
        Fix for bug#49465: valgrind warnings and incorrect live checksum...
          - set unused null bits to 1 in the record buffer in case we
        don't call restore_record() before a fill_record() call
        (when no default values used).
      6123407d
  3. 16 Dec, 2009 6 commits
    • Jim Winstead's avatar
      Merge approved bug fix · 220e70be
      Jim Winstead authored
      220e70be
    • Magne Mahre's avatar
      Bug#47017 rpl_timezone fails on PB-2 with mismatch error · 7a25816a
      Magne Mahre authored
      The bug is caused by a race condition between the 
      INSERT DELAYED thread and the client thread's FLUSH TABLE.  The 
      FLUSH TABLE does not guarantee (as is (wrongly) suggested in the 
      test case) that the INSERT DELAYED is ever executed.  The 
      execution of the test case will thus not be deterministic.
      
      The fix has been to do a deterministic verification that both
      threads are complete by checking the content of the table.
      7a25816a
    • Alfranio Correia's avatar
      BUG#49638 binlog_index fails in mysql-trunk-merge · a543ae03
      Alfranio Correia authored
      Calling push_warning/push_warning_printf with a level of
      WARN_LEVEL_ERROR *is* a bug. We should either use my_error(),
      or WARN_LEVEL_WARN.
      a543ae03
    • Georgi Kodinov's avatar
      merge · 1a06f6e3
      Georgi Kodinov authored
      1a06f6e3
    • unknown's avatar
      Bug #46827 rpl_circular_for_4_hosts failed on PB2 · cbdb4c2a
      unknown authored
      This test case tests a circular replication of four hosts. 
      A--->B--->C--->D--->A
      The replicate is slow and needs more time to replicate all data in the circle.
      The time it spends to replicate, sometimes, is longer than the time that 
      wait_condition.inc spends to wait that all data has been replicated. This
      cause sporadical failure of this test case.
        
      This patch uses sync_slave_with_master to ensure that all data can be replicated
      successfully in the circle.
      cbdb4c2a
    • unknown's avatar
      Postfix · 769a0509
      unknown authored
      Only relative log events are showed.
      769a0509
  4. 15 Dec, 2009 8 commits
    • Georgi Kodinov's avatar
      Bug #48709: Assertion failed in sql_select.cc:11782: · 4a41e5b1
      Georgi Kodinov authored
       int join_read_key(JOIN_TAB*)
      
      The eq_ref access method TABLE_REF (accessed through 
      JOIN_TAB) to save state and to track if this is the 
      first row it finds or not.
      This state was not reset on subquery re-execution
      causing an assert.
      
      Fixed by resetting the state before the subquery 
      re-execution.
      4a41e5b1
    • Georgi Kodinov's avatar
      merge · 575bec00
      Georgi Kodinov authored
      575bec00
    • Mattias Jonsson's avatar
      merge · 1e521053
      Mattias Jonsson authored
      1e521053
    • Georgi Kodinov's avatar
      Bug #48709: Assertion failed in sql_select.cc:11782: · c94fdc7e
      Georgi Kodinov authored
       int join_read_key(JOIN_TAB*)
      
      The eq_ref access method TABLE_REF (accessed through 
      JOIN_TAB) to save state and to track if this is the 
      first row it finds or not.
      This state was not reset on subquery re-execution
      causing an assert.
      
      Fixed by resetting the state before the subquery 
      re-execution.
      c94fdc7e
    • Alexander Barkov's avatar
      Bug#49134 5.1 server segfaults with 2byte collation file · 5ccf2280
      Alexander Barkov authored
      Problem: add_collation did not check that cs->number is smaller
      than the number of elements in the array all_charsets[],
      so server could crash when loading an Index.xml file with
      a collation ID greater the number of elements 
      (for example when downgrading from 5.5).
      
      Fix: adding a condition to check that cs->number is not out of valid range.
      5ccf2280
    • Jon Olav Hauglid's avatar
      Bug #48995 abort missing DBUG_RETURN or .. in function "check_key_in_view" · ea0b3944
      Jon Olav Hauglid authored
      check_key_in_view() had one code branch which returned with "return TRUE"
      rather than "DBUG_RETURN(TRUE)". Only affected debug builds.
      
      No test case added.
      ea0b3944
    • He Zhenxing's avatar
      bug#49536 - deadlock on rotate_and_purge when using expire_logs_days · cbcd6f41
      He Zhenxing authored
      Problem is that purge_logs implementation in ndb (ndbcluster_binlog_index_purge_file)
      calls mysql_parse (with (thd->options & OPTION_BIN_LOG) === 0)) 
      but MYSQL_BIN_LOG first takes LOCK_log and then checks thd->options
      
      Solution in this patch, changes so that rotate_and_purge does not hold
      LOCK_log when calling purge_logs_before_date. I think this is safe
      as other "purge"-function(s) is called wo/ holding LOCK_log, e.g purge_master_logs
      cbcd6f41
    • unknown's avatar
      Bug #34628 LOAD DATA CONCURRENT INFILE drops CONCURRENT in binary log · 8971ed70
      unknown authored
      'LOAD DATA CONCURRENT [LOCAL] INFILE ...' statment only is binlogged as
      'LOAD DATA [LOCAL] INFILE ...' in SBR and MBR.  As a result, if replication is on, 
      queries on slaves will be blocked by the replication SQL thread.
      
      This patch write code to write 'CONCURRENT' into the log event if 'CONCURRENT' option
      is in the original statement in SBR and MBR. 
      8971ed70
  5. 14 Dec, 2009 9 commits
  6. 13 Dec, 2009 2 commits
    • unknown's avatar
      This is a patch for Bug#48500 · 34ae4a35
      unknown authored
      5.0 buffer overflow for ER_UPDATE_INFO, or truncated info message in 5.1
            
      5.0.86 has a buffer overflow/crash, and 5.1.40 has a truncated message.
            
      errmsg.txt contains this:
            
      ER_UPDATE_INFO
      rum "Linii identificate (matched): %ld  Schimbate: %ld  Atentionari 
      (warnings): %ld"
      When that is sprintf'd into a buffer of STRING_BUFFER_USUAL_SIZE size,
      a buffer overflow can happen.
            
      The solution to this is to use MYSQL_ERRMSG_SIZE for the buffer size, 
      instead of STRING_BUFFER_USUAL_SIZE. This will allow longer strings. 
      To avoid potential crashes, we will also use my_snprintf instead of
      sprintf.
      
      sql/sql_update.cc:
        sing MYSQL_ERRMSG_SIZE instead of STRING_BUFFER_USUAL_SIZE.
        Using my_snprintf instead of sprintf.
      34ae4a35
    • Alexey Kopytov's avatar
      Automerge · 0a9d3a87
      Alexey Kopytov authored
      0a9d3a87