1. 25 May, 2010 6 commits
  2. 24 May, 2010 2 commits
    • Marko Mäkelä's avatar
      Document the Bug #53578 fix. · 1a892fa2
      Marko Mäkelä authored
      1a892fa2
    • Marko Mäkelä's avatar
      Bug#53578: assert on invalid page access, in fil_io() · b7a24744
      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.
      b7a24744
  3. 20 May, 2010 7 commits
    • Vasil Dimov's avatar
      ffa35ab3
    • Vasil Dimov's avatar
      Disable main.ps_3innodb for valgrind tests since it results in known · 0f913e03
      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
      0f913e03
    • Marko Mäkelä's avatar
      8ca5398c
    • Vasil Dimov's avatar
      88725725
    • Marko Mäkelä's avatar
      Bug#53593: Add some instrumentation to improve Valgrind sensitivity · 5fc862d6
      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
      5fc862d6
    • Vasil Dimov's avatar
      Merge from mysql-trunk-innodb into mysql-5.1-innodb/storage/innodb_plugin: · 497ff20f
      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)
        ------------------------------------------------------------
      497ff20f
    • Vasil Dimov's avatar
      Merge from mysql-trunk-innodb into mysql-5.1-innodb/storage/innobase: · 8a03ef79
      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
      8a03ef79
  4. 19 May, 2010 6 commits
  5. 18 May, 2010 1 commit
  6. 14 May, 2010 4 commits
    • Marko Mäkelä's avatar
      d7ab161e
    • Marko Mäkelä's avatar
      Make the InnoDB FOREIGN KEY parser understand multi-statements. (Bug #48024) · 8b3820e2
      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.
      8b3820e2
    • Marko Mäkelä's avatar
      Make the InnoDB FOREIGN KEY parser understand multi-statements. (Bug #48024) · b93e7892
      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.
      b93e7892
    • Marko Mäkelä's avatar
      Remove unused code. · 679b9833
      Marko Mäkelä authored
      679b9833
  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 · 762c82c1
      Marko Mäkelä authored
      when making READ UNCOMMITTED lock as little as READ COMMITTED.
      762c82c1
    • Vasil Dimov's avatar
      ef4a1ba0
    • Vasil Dimov's avatar
      Raise InnoDB Plugin version from 1.0.8 to 1.0.9. · 22ad5ffa
      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
      22ad5ffa
    • Marko Mäkelä's avatar
      Merge a patch from Facebook to fix Bug #53290 · 45a2fee9
      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
      45a2fee9
    • Marko Mäkelä's avatar
      Do not demand that buf_page_t be fully initialized on 64-bit systems. · a83f921a
      Marko Mäkelä authored
      There may be padding before buf_page_t::zip. (Bug #53307)
      a83f921a
    • Marko Mäkelä's avatar
      btr_page_split_and_insert(): Add an assertion · dcaf7100
      Marko Mäkelä authored
      suggested by Sunny Bains when reviewing Bug #52964.
      dcaf7100
    • Marko Mäkelä's avatar
      6ab22816
    • Vasil Dimov's avatar
      Merge mysql-5.1 into mysql-5.1-innodb · b98db767
      Vasil Dimov authored
      b98db767
  9. 10 May, 2010 2 commits