1. 20 Aug, 2010 1 commit
  2. 16 Aug, 2010 2 commits
    • Sunny Bains's avatar
      Merge from -c3476 mysql-5.1-security. · 3c4d4e0a
      Sunny Bains authored
           ------------------------------------------------------------
           revno: 3476
           committer: Sunny Bains <Sunny.Bains@Oracle.Com>
           branch nick: 5.1-security
           timestamp: Thu 2010-08-05 19:18:17 +1000
           message:
             Fix bug# 55543 - InnoDB Plugin: Signal 6: Assertion failure in file fil/fil0fil.c line 4306
      
               The bug is due to a double delete of a BLOB, once via:
      
                     rollback -> btr_cur_pessimistic_delete()
      
               and the second time via purge.
      
               The bug is in row_upd_clust_rec_by_insert(). There we relinquish ownership
               of the non-updated BLOB columns in btr_cur_mark_extern_inherited_fields()
               before building the row entry that will be inserted and whose contents will
               be logged in the UNDO log. However, we don't set the BLOB column later to
               INHERITED so that a possible rollback will not free the original row's
               non-updated BLOB entries. This is because the condition that checks for
               that is in :
      
           		    	if (node->upd_ext) {}.
      
               node->upd_ext is non-NULL only if a BLOB column was updated and that column
               is part of some key ordering (see row_upd_replace()). This results in the
               non-update BLOB columns being deleted during a rollback and subsequently by
               purge again.
      
               rb://413
      3c4d4e0a
    • Sunny Bains's avatar
      Fix Bug #55277 - Failing assertion: auto_inc > 0 · adde4bac
      Sunny Bains authored
      Handle overflow when reading value from SELECT MAX(C) FROM T;
      
      Call ha_innobase::info() after initializing the autoinc value
      in ha_innobase::open().
      
      Fix for both the builtin and plugin.
      
      rb://402
      
      Merge from mysql-5.1-security.
      adde4bac
  3. 15 Aug, 2010 1 commit
  4. 13 Aug, 2010 5 commits
    • Vasil Dimov's avatar
      Manually merge a changeset from mysql-5.1-security: · 7f8627e3
      Vasil Dimov authored
        ------------------------------------------------------------
        revno: 3475
        revision-id: jimmy.yang@oracle.com-20100804103744-vbpeghipkz6pyc9z
        parent: jimmy.yang@oracle.com-20100804101133-c38qqbm0fkwn9jhc
        committer: Jimmy Yang <jimmy.yang@oracle.com>
        branch nick: mysql-5.1-security
        timestamp: Wed 2010-08-04 03:37:44 -0700
        message:
          Fix bug #54678, InnoDB, TRUNCATE, ALTER, I_S SELECT, crash or deadlock
          
          rb://399 approved by Sunny Bains
        modified:
          storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
          storage/innodb_plugin/include/dict0dict.h 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Finclude%2Fdict0dict.h
          storage/innodb_plugin/include/dict0dict.ic 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Finclude%2Fdict0dict.ic
          storage/innodb_plugin/row/row0mysql.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Frow%2Frow0mysql.c
      7f8627e3
    • Vasil Dimov's avatar
      Merge mysql-5.1-security -> mysql-5.5-security up to · 5ecd1920
      Vasil Dimov authored
      sunny.bains@oracle.com-20100805092434-tvxxzjgqgslo14en
      
      This is a null merge of InnoDB changes which will be ported into a
      separate commits.
      5ecd1920
    • Vasil Dimov's avatar
      Merge mysql-5.1-security -> mysql-5.5-security up to c3473 · fc5b0950
      Vasil Dimov authored
      (this is a null merge)
      fc5b0950
    • Georgi Kodinov's avatar
      merge · 53e0b31e
      Georgi Kodinov authored
      53e0b31e
    • Georgi Kodinov's avatar
      Bug #55615 and bug #55564 · 4bf81165
      Georgi Kodinov authored
      An user assignment variable expression that's 
      evaluated in a logical expression context 
      (Item::val_bool()) can be pre-calculated in a 
      temporary table for GROUP BY.
      However when the expression value is used after the
      temp table creation it was re-evaluated instead of
      being read from the temp table due to a missing 
      val_bool_result() method.
      Fixed by implementing the method.
      4bf81165
  5. 06 Aug, 2010 1 commit
    • Gleb Shchepa's avatar
      Bug #55424: convert_tz crashes when fed invalid data · 45a87c68
      Gleb Shchepa authored
      The CONVERT_TZ function crashes the server when the
      timezone argument is an empty SET field value.
      
      1) The CONVERT_TZ may find a timezone string in the
         tz_names hash.
      2) A string representation of the empty SET is a
         String of zero length with the NULL pointer.
      3) If the key argument length is zero, hash functions
         do comparison using the length of the record being
         compared against.
      
      I.e. a zero-length String buffer is an invalid
      argument for hash search functions, and if String
      points to NULL buffer, hashcmp() fails with SEGV
      accessing that memory.
      
      The my_tz_find function has been modified to
      treat empty Strings as invalid timezone values
      to skip unnecessary hash search.
      
      
      mysql-test/r/timezone2.result:
        Test case for bug #55424.
      mysql-test/t/timezone2.test:
        Test case for bug #55424.
      sql/sql_string.h:
        Bug #55424: convert_tz crashes when fed invalid data
        
        Added "const" modifier to String::is_empty().
      sql/tztime.cc:
        Bug #55424: convert_tz crashes when fed invalid data
        
        The my_tz_find function has been modified to
        treat empty Strings as invalid timezone values
        to skip unnecessary hash search.
      45a87c68
  6. 05 Aug, 2010 2 commits
    • Sunny Bains's avatar
      Fix Bug #55277 - Failing assertion: auto_inc > 0 · 09eb23d5
      Sunny Bains authored
      Handle overflow when reading value from SELECT MAX(C) FROM T;
      
      Call ha_innobase::info() after initializing the autoinc value
      in ha_innobase::open().
      
      Fix for both the builtin and plugin.
      
      rb://402
      09eb23d5
    • Sunny Bains's avatar
      Fix bug# 55543 - InnoDB Plugin: Signal 6: Assertion failure in file fil/fil0fil.c line 4306 · b37256b1
      Sunny Bains authored
      The bug is due to a double delete of a BLOB, once via:
      
          rollback -> btr_cur_pessimistic_delete()
      
      and the second time via purge.
      
      The bug is in row_upd_clust_rec_by_insert(). There we relinquish ownership
      of the non-updated BLOB columns in btr_cur_mark_extern_inherited_fields()
      before building the row entry that will be inserted and whose contents will
      be logged in the UNDO log. However, we don't set the BLOB column later to
      INHERITED so that a possible rollback will not free the original row's
      non-updated BLOB entries. This is because the condition that checks for
      that is in :
      
      	if (node->upd_ext) {}.
      
      node->upd_ext is non-NULL only if a BLOB column was updated and that column
      is part of some key ordering (see row_upd_replace()). This results in the
      non-update BLOB columns being deleted during a rollback and subsequently by
      purge again.
      
      rb://413
      b37256b1
  7. 04 Aug, 2010 6 commits
  8. 03 Aug, 2010 10 commits
    • unknown's avatar
      Raise version number after cloning 5.1.50 · 127ca525
      unknown authored
      127ca525
    • Georgi Kodinov's avatar
      merge · efc8a279
      Georgi Kodinov authored
      efc8a279
    • Georgi Kodinov's avatar
      Bug #42144: plugin_load fails · 5eeb6488
      Georgi Kodinov authored
      The enum system variables were handled inconsistently 
      as ints, unsigned int and unsigned long on various places.
      This caused problems on platforms on which 
      sizeof(int) != sizeof(long).
      Fixed by homogenizing the type of the enum variables
      to unsigned int, since it's size compatible with the C enum
      type. 
      Removed the test from the experimental list.
      5eeb6488
    • Alfranio Correia's avatar
      null-merge mysql-5.1-security (local) --> mysql-trunk-security · 9d0139a7
      Alfranio Correia authored
      The problem reported in BUG#55625 does not happen in mysql-trunk
      when the logging format is row. However, a "CREATE SELECT" that
      fails when the logging format is statement is not written to
      the binary log. 
      
      This problem will be addressed in BUG#47899.
      9d0139a7
    • Georgi Kodinov's avatar
    • Alfranio Correia's avatar
    • unknown's avatar
      Bug #34283 mysqlbinlog leaves tmpfile after termination if binlog contains load data infile · 0f935030
      unknown authored
      Post fix
      
      mysql-test/t/mysqlbinlog.test:
        Updated for Bug#34283
      0f935030
    • unknown's avatar
      Bug #34283 mysqlbinlog leaves tmpfile after termination if binlog contains load data infile · 60ab046a
      unknown authored
      Post fix
      
      mysql-test/t/mysqlbinlog.test:
        Updated for Bug#34283
      60ab046a
    • unknown's avatar
      Bug #34283 mysqlbinlog leaves tmpfile after termination if binlog contains load data infile · 3ac02654
      unknown authored
            
      With statement- or mixed-mode logging, "LOAD DATA INFILE" queries
      are written to the binlog using special types of log events.
      When mysqlbinlog reads such events, it re-creates the file in a
      temporary directory with a generated filename and outputs a
      "LOAD DATA INFILE" query where the filename is replaced by the
      generated file. The temporary file is not deleted by mysqlbinlog
      after termination.
            
      To fix the problem, in mixed mode we go to row-based. In SBR, we
      document it to remind user the tmpfile is left in a temporary
      directory.
      
      
      mysql-test/suite/binlog/r/binlog_mixed_load_data.result:
        Test result for BUG#34283.
      mysql-test/suite/binlog/t/binlog_killed_simulate.test:
        Updated for BUg#34283
      mysql-test/suite/binlog/t/binlog_mixed_load_data.test:
        Added the test file to verify that 'load data infile...' statement
        will go to row-based in mixed mode.
      mysql-test/suite/binlog/t/binlog_stm_blackhole.test:
        Updated for BUg#34283
      mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
        Updated for Bug#34283
      mysql-test/suite/rpl/t/rpl_loaddata.test:
        Updated for Bug#34283
      mysql-test/suite/rpl/t/rpl_loaddata_fatal.test:
        Updated for Bug#34283
      mysql-test/suite/rpl/t/rpl_loaddata_map.test:
        Updated for Bug#34283
      mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test:
        Updated for Bug#34283
      mysql-test/suite/rpl/t/rpl_stm_log.test:
        Updated for B
      mysys/stacktrace.c:
        Auto merge
      sql/sql_lex.cc:
        Auto merg
      sql/sql_load.cc:
        Added code to go to row-based in mixed mode for
        'load data infile ...' statement
      3ac02654
    • unknown's avatar
      Bug #34283 mysqlbinlog leaves tmpfile after termination if binlog contains load data infile · bcb3170c
      unknown authored
      With statement- or mixed-mode logging, "LOAD DATA INFILE" queries
      are written to the binlog using special types of log events.
      When mysqlbinlog reads such events, it re-creates the file in a
      temporary directory with a generated filename and outputs a
      "LOAD DATA INFILE" query where the filename is replaced by the
      generated file. The temporary file is not deleted by mysqlbinlog
      after termination.
      
      To fix the problem, in mixed mode we go to row-based. In SBR, we
      document it to remind user the tmpfile is left in a temporary
      directory.
      
      
      
      
      mysql-test/extra/rpl_tests/rpl_loaddata.test:
        Updated for Bug#34283
      mysql-test/suite/binlog/r/binlog_mixed_load_data.result:
        Test result for BUG#34283.
      mysql-test/suite/binlog/t/binlog_killed_simulate.test:
        Updated for Bug#34283
      mysql-test/suite/binlog/t/binlog_mixed_load_data.test:
        Added the test file to verify that 'load data infile...' statement
        will go to row-based in mixed mode.
      mysql-test/suite/binlog/t/binlog_stm_blackhole.test:
        Updated for Bug#34283
      mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
        Updated for Bug#34283
      mysql-test/suite/rpl/t/rpl_loaddata_fatal.test:
        Updated for Bug#34283
      mysql-test/suite/rpl/t/rpl_loaddata_map.test:
        Updated for Bug#34283
      mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test:
        Updated for Bug#34283
      mysql-test/suite/rpl/t/rpl_stm_log.test:
        Updated for Bug#34283
      sql/sql_load.cc:
        Added code to go to row-based in mixed mode for
        'load data infile ...' statement
      bcb3170c
  9. 02 Aug, 2010 6 commits
    • Alfranio Correia's avatar
      BUG#55625 RBR breaks on failing 'CREATE TABLE' · f62e89fa
      Alfranio Correia authored
      A CREATE...SELECT that fails is written to the binary log if a non-transactional
      statement is updated. If the logging format is ROW, the CREATE statement and the
      changes are written to the binary log as distinct events and by consequence the
      created table is not rolled back in the slave.
      
      In this patch, we opted to let the slave goes out of sync by not writting to the
      binary log the CREATE statement. We do this by simply reseting the binary log's
      cache.
      
      mysql-test/suite/rpl/r/rpl_drop.result:
        Added a test case.
      mysql-test/suite/rpl/t/rpl_drop.test:
        Added a test case.
      sql/log.cc:
        Introduced a function to clean up the cache.
      sql/log.h:
        Introduced a function to clean up the cache.
      sql/sql_insert.cc:
        Cleaned up the binary log cache if a CREATE...SELECT fails.
      f62e89fa
    • Georgi Kodinov's avatar
      merge · 9fc04b9f
      Georgi Kodinov authored
      9fc04b9f
    • Georgi Kodinov's avatar
      merge · c65e99e0
      Georgi Kodinov authored
      c65e99e0
    • Georgi Kodinov's avatar
      d03f0eec
    • Georgi Kodinov's avatar
      4f738e9b
    • Georgi Kodinov's avatar
      merge · e1feae1d
      Georgi Kodinov authored
      e1feae1d
  10. 01 Aug, 2010 1 commit
    • Gleb Shchepa's avatar
      Bug #54461: crash with longblob and union or update with subquery · 80aa8824
      Gleb Shchepa authored
      Queries may crash, if
        1) the GREATEST or the LEAST function has a mixed list of
           numeric and LONGBLOB arguments and
        2) the result of such a function goes through an intermediate
           temporary table.
      
      An Item that references a LONGBLOB field has max_length of
      UINT_MAX32 == (2^32 - 1).
      
      The current implementation of GREATEST/LEAST returns REAL
      result for a mixed list of numeric and string arguments (that
      contradicts with the current documentation, this contradiction
      was discussed and it was decided to update the documentation).
      
      The max_length of such a function call was calculated as a
      maximum of argument max_length values (i.e. UINT_MAX32).
      
      That max_length value of UINT_MAX32 was used as a length for
      the intermediate temporary table Field_double to hold
      GREATEST/LEAST function result.
      
      The Field_double::val_str() method call on that field
      allocates a String value.
      
      Since an allocation of String reserves an additional byte
      for a zero-termination, the size of String buffer was
      set to (UINT_MAX32 + 1), that caused an integer overflow:
      actually, an empty buffer of size 0 was allocated.
      
      An initialization of the "first" byte of that zero-size
      buffer with '\0' caused a crash.
      
      The Item_func_min_max::fix_length_and_dec() has been
      modified to calculate max_length for the REAL result like
      we do it for arithmetical operators.
      
      
      ******
      Bug #54461: crash with longblob and union or update with subquery
      
      Queries may crash, if
        1) the GREATEST or the LEAST function has a mixed list of
           numeric and LONGBLOB arguments and
        2) the result of such a function goes through an intermediate
           temporary table.
      
      An Item that references a LONGBLOB field has max_length of
      UINT_MAX32 == (2^32 - 1).
      
      The current implementation of GREATEST/LEAST returns REAL
      result for a mixed list of numeric and string arguments (that
      contradicts with the current documentation, this contradiction
      was discussed and it was decided to update the documentation).
      
      The max_length of such a function call was calculated as a
      maximum of argument max_length values (i.e. UINT_MAX32).
      
      That max_length value of UINT_MAX32 was used as a length for
      the intermediate temporary table Field_double to hold
      GREATEST/LEAST function result.
      
      The Field_double::val_str() method call on that field
      allocates a String value.
      
      Since an allocation of String reserves an additional byte
      for a zero-termination, the size of String buffer was
      set to (UINT_MAX32 + 1), that caused an integer overflow:
      actually, an empty buffer of size 0 was allocated.
      
      An initialization of the "first" byte of that zero-size
      buffer with '\0' caused a crash.
      
      The Item_func_min_max::fix_length_and_dec() has been
      modified to calculate max_length for the REAL result like
      we do it for arithmetical operators.
      
      
      
      mysql-test/r/func_misc.result:
        Test case for bug #54461.
        
        ******
        Test case for bug #54461.
      mysql-test/t/func_misc.test:
        Test case for bug #54461.
        
        ******
        Test case for bug #54461.
      sql/item_func.cc:
        Bug #54461: crash with longblob and union or update with subquery
        
        The Item_func_min_max::fix_length_and_dec() has been
        modified to calculate max_length for the REAL result like
        we do it for arithmetical operators.
        
        ******
        Bug #54461: crash with longblob and union or update with subquery
        
        The Item_func_min_max::fix_length_and_dec() has been
        modified to calculate max_length for the REAL result like
        we do it for arithmetical operators.
      80aa8824
  11. 31 Jul, 2010 3 commits
  12. 30 Jul, 2010 2 commits