1. 25 May, 2010 6 commits
  2. 24 May, 2010 2 commits
    • Marko Mäkelä's avatar
      Document the Bug #53578 fix. · edf5c7f7
      Marko Mäkelä authored
      edf5c7f7
    • Marko Mäkelä's avatar
      Bug#53578: assert on invalid page access, in fil_io() · c65b1c5f
      Marko Mäkelä authored
      Store the max_space_id in the data dictionary header in order to avoid
      space_id reuse.
      
      DICT_HDR_MIX_ID: Renamed to DICT_HDR_MAX_SPACE_ID, DICT_HDR_MIX_ID_LOW.
      
      dict_hdr_get_new_id(): Return table_id, index_id, space_id or a subset of them.
      
      fil_system_t: Add ibool space_id_reuse_warned.
      
      fil_create_new_single_table_tablespace(): Get the space_id from the caller.
      
      fil_space_create(): Issue a warning if the fil_system->max_assigned_id
      is exceeded.
      
      fil_assign_new_space_id(): Return TRUE/FALSE and take a pointer to the
      space_id as a parameter. Make the function public.
      
      fil_init(): Initialize all fil_system fields by mem_zalloc(). Remove
      explicit initializations of certain fields to 0 or NULL.
      c65b1c5f
  3. 20 May, 2010 7 commits
    • Vasil Dimov's avatar
      c3a09238
    • Vasil Dimov's avatar
      Disable main.ps_3innodb for valgrind tests since it results in known · 8a187a45
      Vasil Dimov authored
      failures, that are described in
      
      Bug#38999 valgrind warnings for update statement in function compare_record()
      
      At the time I am adding this the failures are:
      
      main.ps_3innodb                          [ fail ]  Found warnings/errors in server log file!
              Test ended at 2010-05-20 01:17:34
      line
      ==31559== Thread 11:
      ==31559== Conditional jump or move depends on uninitialised value(s)
      ==31559==    at 0x75C5BD: compare_record(st_table*) (sql_update.cc:35)
      ==31559==    by 0x744732: write_record(THD*, st_table*, st_copy_info*) (sql_insert.cc:1486)
      ==31559==    by 0x74A0D7: mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool) (sql_insert.cc:835)
      ==31559==    by 0x6A79B4: mysql_execute_command(THD*) (sql_parse.cc:3198)
      ==31559==    by 0x754998: Prepared_statement::execute(String*, bool) (sql_prepare.cc:3583)
      ==31559==    by 0x754C4F: Prepared_statement::execute_loop(String*, bool, unsigned char*, unsigned char*) (sql_prepare.cc:3258)
      ==31559==    by 0x754F33: mysql_sql_stmt_execute(THD*) (sql_prepare.cc:2529)
      ==31559==    by 0x6A5028: mysql_execute_command(THD*) (sql_parse.cc:2272)
      ==31559==    by 0x6ADAE8: mysql_parse(THD*, char const*, unsigned, char const**) (sql_parse.cc:5986)
      ==31559==    by 0x6AF3A4: dispatch_command(enum_server_command, THD*, char*, unsigned) (sql_parse.cc:1233)
      ==31559==    by 0x6B0800: do_command(THD*) (sql_parse.cc:874)
      ==31559==    by 0x69CB46: handle_one_connection (sql_connect.cc:1134)
      ==31559==    by 0x33EDA062F6: start_thread (in /lib64/libpthread-2.5.so)
      ==31559==    by 0x33ECED1B6C: clone (in /lib64/libc-2.5.so)
      ==31559== Conditional jump or move depends on uninitialised value(s)
      ==31559==    at 0x75C5D0: compare_record(st_table*) (sql_update.cc:35)
      ==31559==    by 0x744732: write_record(THD*, st_table*, st_copy_info*) (sql_insert.cc:1486)
      ==31559==    by 0x74A0D7: mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool) (sql_insert.cc:835)
      ==31559==    by 0x6A79B4: mysql_execute_command(THD*) (sql_parse.cc:3198)
      ==31559==    by 0x754998: Prepared_statement::execute(String*, bool) (sql_prepare.cc:3583)
      ==31559==    by 0x754C4F: Prepared_statement::execute_loop(String*, bool, unsigned char*, unsigned char*) (sql_prepare.cc:3258)
      ==31559==    by 0x754F33: mysql_sql_stmt_execute(THD*) (sql_prepare.cc:2529)
      ==31559==    by 0x6A5028: mysql_execute_command(THD*) (sql_parse.cc:2272)
      ==31559==    by 0x6ADAE8: mysql_parse(THD*, char const*, unsigned, char const**) (sql_parse.cc:5986)
      ==31559==    by 0x6AF3A4: dispatch_command(enum_server_command, THD*, char*, unsigned) (sql_parse.cc:1233)
      ==31559==    by 0x6B0800: do_command(THD*) (sql_parse.cc:874)
      ==31559==    by 0x69CB46: handle_one_connection (sql_connect.cc:1134)
      ==31559==    by 0x33EDA062F6: start_thread (in /lib64/libpthread-2.5.so)
      ==31559==    by 0x33ECED1B6C: clone (in /lib64/libc-2.5.so)
      ^ Found warnings in /export/home4/pb2/test/sb_3-1827397-1274300957.87/mysql-5.1.48-linux-x86_64-test/mysql-test/var-n_mix/log/mysqld.1.err
      8a187a45
    • Marko Mäkelä's avatar
      114fc25b
    • Vasil Dimov's avatar
      3c2339ff
    • Marko Mäkelä's avatar
      Bug#53593: Add some instrumentation to improve Valgrind sensitivity · 7767b53c
      Marko Mäkelä authored
      BUILD/*: Add valgrind_configs=--with-valgrind.
      BUILD/*: Remove -USAFEMALLOC from valgrind_flags.
      
      configure.in: Add AC_ARG_WITH(valgrind) and HAVE_VALGRIND.
      
      include/my_sys.h: Define a number of MEM_ wrappers for VALGRIND_ functions.
      include/my_sys.h: Make TRASH do MEM_UNDEFINED().
      
      include/m_string.h: Remove unused macro bzero_if_purify(A,B).
      
      _mymalloc(): Declare MEM_UNDEFINED() on the allocated memory.
      
      _myfree(): Declare MEM_NOACCESS() on the freed memory.
      
      storage/innobase/include/univ.i: Enable UNIV_DEBUG_VALGRIND based on
      HAVE_VALGRIND rather than HAVE_purify.
      
      Possible things to do:
       * In my_global.h, remove the defined(HAVE_purify) condition
         from the _WIN32 uint3korr().
       * In my_global.h *int*korr(), use | instead of +
         in order to keep the Valgrind V bits accurate
       * Consider replacing HAVE_purify with HAVE_VALGRIND
       * Use VALGRIND_CREATE_BLOCK, VALGRIND_DISCARD in mem_root and similar places
      7767b53c
    • Vasil Dimov's avatar
      Merge from mysql-trunk-innodb into mysql-5.1-innodb/storage/innodb_plugin: · d8ebb9dd
      Vasil Dimov authored
        ------------------------------------------------------------
        revno: 3094
        revision-id: vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh
        parent: vasil.dimov@oracle.com-20100512173700-byf8xntxjur1hqov
        committer: Vasil Dimov <vasil.dimov@oracle.com>
        branch nick: mysql-trunk-innodb
        timestamp: Thu 2010-05-13 10:46:52 +0300
        message:
          Followup to Bug#51920, fix binlog.binlog_killed
          
          This is a followup to the fix of
          
          Bug#51920 Innodb connections in row lock wait ignore KILL until lock wait
          timeout
          
          in that fix (rb://279) the behavior was changed to honor when a trx is
          interrupted during lock wait, but the returned error code was still
          "lock wait timeout" when it should be "interrupted".
          
          This change fixes the non-deterministically failing test binlog.binlog_killed,
          that failed like this:
          
          binlog.binlog_killed 'stmt'              [ fail ]
                  Test ended at 2010-05-12 11:39:08
          
          CURRENT_TEST: binlog.binlog_killed
          mysqltest: At line 208: query 'reap' failed with wrong errno 1205: 'Lock wait timeout exceeded; try restarting transaction', instead of 0...
          
          Approved by:	Sunny Bains (rb://344)
        ------------------------------------------------------------
      d8ebb9dd
    • Vasil Dimov's avatar
      Merge from mysql-trunk-innodb into mysql-5.1-innodb/storage/innobase: · c61227b8
      Vasil Dimov authored
        ------------------------------------------------------------
        revno: 3094
        revision-id: vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh
        parent: vasil.dimov@oracle.com-20100512173700-byf8xntxjur1hqov
        committer: Vasil Dimov <vasil.dimov@oracle.com>
        branch nick: mysql-trunk-innodb
        timestamp: Thu 2010-05-13 10:46:52 +0300
        message:
          Followup to Bug#51920, fix binlog.binlog_killed
          
          This is a followup to the fix of
          
          Bug#51920 Innodb connections in row lock wait ignore KILL until lock wait
          timeout
          
          in that fix (rb://279) the behavior was changed to honor when a trx is
          interrupted during lock wait, but the returned error code was still
          "lock wait timeout" when it should be "interrupted".
          
          This change fixes the non-deterministically failing test binlog.binlog_killed,
          that failed like this:
          
          binlog.binlog_killed 'stmt'              [ fail ]
                  Test ended at 2010-05-12 11:39:08
          
          CURRENT_TEST: binlog.binlog_killed
          mysqltest: At line 208: query 'reap' failed with wrong errno 1205: 'Lock wait timeout exceeded; try restarting transaction', instead of 0...
          
          Approved by:	Sunny Bains (rb://344)
        ------------------------------------------------------------
      
      This merge is non-trivial since it has to introduce the DB_INTERRUPTED
      error code.
      
      Also revert vasil.dimov@oracle.com-20100408165555-9rpjh24o0sa9ad5y
      which adjusted the binlog.binlog_killed test to the new (wrong) behavior
      c61227b8
  4. 19 May, 2010 6 commits
  5. 18 May, 2010 1 commit
  6. 14 May, 2010 4 commits
    • Marko Mäkelä's avatar
      a4e1d7cc
    • Marko Mäkelä's avatar
      Make the InnoDB FOREIGN KEY parser understand multi-statements. (Bug #48024) · 6ae4c5d1
      Marko Mäkelä authored
      Also make InnoDB thinks that /*/ only starts a comment. (Bug #53644).
      
      This fixes the bugs in the InnoDB Plugin.
      
      ha_innodb.h: Use trx_query_string() instead of trx_query() when
      available (MySQL 5.1.42 or later).
      
      innobase_get_stmt(): New function, to retrieve the currently running
      SQL statement.
      
      struct trx_struct: Remove mysql_query_str. Use innobase_get_stmt() instead.
      
      dict_strip_comments(): Add and observe the parameter sql_length. Treat
      /*/ as the start of a comment.
      
      dict_create_foreign_constraints(), row_table_add_foreign_constraints():
      Add the parameter sql_length.
      6ae4c5d1
    • Marko Mäkelä's avatar
      Make the InnoDB FOREIGN KEY parser understand multi-statements. (Bug #48024) · ec36b373
      Marko Mäkelä authored
      Also make InnoDB thinks that /*/ only starts a comment. (Bug #53644).
      
      struct trx_struct: Add mysql_query_len.
      
      ha_innodb.cc: Use trx_query_string() instead of trx_query() and
      initialize trx->mysql_query_len.
      
      INNOBASE_COPY_STMT(thd, trx): New macro, to initialize
      trx->mysql_query_str and trx->mysql_query_len.
      
      dict_strip_comments(): Add and observe the parameter sql_length. Treat
      /*/ as the start of a comment.
      
      dict_create_foreign_constraints(), row_table_add_foreign_constraints():
      Add the parameter sql_length.
      ec36b373
    • Marko Mäkelä's avatar
      Remove unused code. · 5f15d5cb
      Marko Mäkelä authored
      5f15d5cb
  7. 12 May, 2010 4 commits
  8. 11 May, 2010 8 commits
    • Marko Mäkelä's avatar
      Fix sys_vars.tx_isolation_func.test, which was broken in revno 3432 · f0af7167
      Marko Mäkelä authored
      when making READ UNCOMMITTED lock as little as READ COMMITTED.
      f0af7167
    • Vasil Dimov's avatar
      d1f93c30
    • Vasil Dimov's avatar
      Raise InnoDB Plugin version from 1.0.8 to 1.0.9. · 58339506
      Vasil Dimov authored
      1.0.8 will be released in MySQL 5.1.47, so
      1.0.9 will be released in MySQL 5.1.48
      58339506
    • Marko Mäkelä's avatar
      Merge a patch from Facebook to fix Bug #53290 · 3605840e
      Marko Mäkelä authored
      commit e759bc64eb5c5eed4f75677ad67246797d486460
      Author: Ryan Mack
      Date:   3 days ago
      
          Bugfix for 53290, fast unique index creation fails on duplicate null values
      
          Summary:
          Bug in the fast index creation code incorrectly considers null
          values to be duplicates during block merging.  Innodb policy is that
          multiple null values are allowed in a unique index.  Null duplicates
          were correctly ignored while sorting individual blocks and with slow
          index creation.
      
          Test Plan:
          mtr, including new test, load dbs using deferred index creation
      
          License:
          Copyright (C) 2009-2010 Facebook, Inc.  All Rights Reserved.
      
          Dual licensed under BSD license and GPLv2.
      
          Redistribution and use in source and binary forms, with or without
          modification, are permitted provided that the following conditions are met:
          1. Redistributions of source code must retain the above copyright notice,
             this list of conditions and the following disclaimer.
          2. Redistributions in binary form must reproduce the above copyright notice,
             this list of conditions and the following disclaimer in the documentation
             and/or other materials provided with the distribution.
      
          THIS SOFTWARE IS PROVIDED BY FACEBOOK, INC. ``AS IS'' AND ANY EXPRESS OR
          IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
          MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
          EVENT SHALL FACEBOOK, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
          SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
          PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
          OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
          WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
          OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
          ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      
          This program is free software; you can redistribute it and/or modify it
          under the terms of the GNU General Public License as published by the Free
          Software Foundation; version 2 of the License.
      
          This program is distributed in the hope that it will be useful, but WITHOUT
          ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
          FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
          more details.
      
          You should have received a copy of the GNU General Public License along with
          this program; if not, write to the Free Software Foundation, Inc., 59 Temple
          Place, Suite 330, Boston, MA  02111-1307  USA
      3605840e
    • Marko Mäkelä's avatar
      Do not demand that buf_page_t be fully initialized on 64-bit systems. · d11afa2c
      Marko Mäkelä authored
      There may be padding before buf_page_t::zip. (Bug #53307)
      d11afa2c
    • Marko Mäkelä's avatar
      btr_page_split_and_insert(): Add an assertion · 84bf6ffa
      Marko Mäkelä authored
      suggested by Sunny Bains when reviewing Bug #52964.
      84bf6ffa
    • Marko Mäkelä's avatar
      b02033e7
    • Vasil Dimov's avatar
      Merge mysql-5.1 into mysql-5.1-innodb · 35ca7310
      Vasil Dimov authored
      35ca7310
  9. 10 May, 2010 2 commits