Commit graph

63050 commits

Author SHA1 Message Date
Marko Mäkelä
2a3db4b9e2 Merge from mysql-5.1-innodb:
Post-merge fixes: Remove the MYSQL_VERSION_ID checks, because they only
apply to the InnoDB Plugin. Fix potential race condition accessing
trx->op_info and trx->detailed_error.
------------------------------------------------------------
revno: 3466
revision-id: marko.makela@oracle.com-20100514130815-ym7j7cfu88ro6km4
parent: marko.makela@oracle.com-20100514130228-n3n42nw7ht78k0wn
committer: Marko Mäkelä <marko.makela@oracle.com>
branch nick: mysql-5.1-innodb2
timestamp: Fri 2010-05-14 16:08:15 +0300
message:
  Make the InnoDB FOREIGN KEY parser understand multi-statements. (Bug #48024)
  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.
2010-05-14 16:31:44 +03:00
Vasil Dimov
926498b07a Merge mysql-trunk-innodb from bk-internal locally 2010-05-13 10:53:09 +03:00
Vasil Dimov
c88f2f61ac 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)
2010-05-13 10:46:52 +03:00
Sunny Bains
50121bbb5e Cover the srv_suspend_thread() call by the kernel mutex. This change was
forgotten when I reverted the kernel mutex split patch.
2010-05-13 06:58:43 +10:00
Vasil Dimov
510eda6162 Fix whitespace breakage introduced in
jimmy.yang@oracle.com-20100512153945-zg3suquj1ps6xn5z
2010-05-12 20:37:00 +03:00
Jimmy Yang
bd65e80c84 Check in patch for bug #53336, Improved InnoDB Transaction Reporting.
rb://335, Approved by Sunny Bains
2010-05-12 08:39:45 -07:00
Marko Mäkelä
9451ee4b2c Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3462
  revision-id: marko.makela@oracle.com-20100512104212-e2h9n1obxjb8tfg4
  parent: marko.makela@oracle.com-20100512060922-oh716ugpukfakwvh
  committer: Marko Mäkelä <marko.makela@oracle.com>
  branch nick: mysql-5.1-innodb
  timestamp: Wed 2010-05-12 13:42:12 +0300
  message:
    ha_innobase::add_index(): Reset trx->error_state in error handling.
    (Bug #53591)
2010-05-12 14:19:26 +03:00
Vasil Dimov
dcf0caa6d5 Fix the failing innodb.innodb test.
Support returning 512 and 511 pages for the buffer pool size, this
is undeterministic and probably depends on alignment issues.

The default buffer pool size is 8M (512) pages, which is set in
include/default_mysqld.cnf. So the previous "replace_result 8192 8191"
had no effect.
2010-05-12 12:13:50 +03:00
Vasil Dimov
486e6e6afd Merge mysql-trunk-innodb from bk-internal into my local branch 2010-05-12 10:56:38 +03:00
Vasil Dimov
6941bfb6bf Improve the comment in innodb_bug38231.test 2010-05-12 10:44:23 +03:00
Vasil Dimov
8b22035f63 Disable innodb.innodb_bug38231 in embedded mode
The --send command does not seem to work as expected in that mode.
2010-05-12 10:42:28 +03:00
Marko Mäkelä
636575249b Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3460
  revision-id: marko.makela@oracle.com-20100512053925-ovwmpo0838fs2roo
  parent: marko.makela@oracle.com-20100511165845-lsw7seixftgzpfqt
  committer: Marko Mäkelä <marko.makela@oracle.com>
  branch nick: mysql-5.1-innodb
  timestamp: Wed 2010-05-12 08:39:25 +0300
  message:
    row_merge_drop_temp_indexes(): Do not reference freed memory.
    (Bug #53471)
2010-05-12 09:21:46 +03:00
Sunny Bains
7e4e70d87a Remove UNIV_DEBUG and UNIV_SYNC_DEBUG from univ.i. Left over from testing
the revert of kernel mutex split patch.
2010-05-12 12:33:59 +10:00
Sunny Bains
d29f0d5bad Remove references to srv0que.h. 2010-05-12 12:20:26 +10:00
Sunny Bains
1b12a1c403 Revert the kernel mutex split phase I patch. Some artefacts have been left
in the code but they have nothing to do with the kernel mutex split code.
Some subsequent commits use the new functions. This patch has been tested
with: ./mtr --suite=innodb with UNIV_DEBUG and UNIV_SYNC_DEBUG enabled.
All tests were successful.
2010-05-12 11:18:10 +10:00
Marko Mäkelä
42974cbfa6 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3459
  revision-id: marko.makela@oracle.com-20100511165845-lsw7seixftgzpfqt
  parent: vasil.dimov@oracle.com-20100511110029-18xvuu6r7har8toh
  committer: Marko Mäkelä <marko.makela@oracle.com>
  branch nick: mysql-5.1-innodb2
  timestamp: Tue 2010-05-11 19:58:45 +0300
  message:
    Fix sys_vars.tx_isolation_func.test, which was broken in revno 3432
    when making READ UNCOMMITTED lock as little as READ COMMITTED.
2010-05-11 20:02:49 +03:00
Marko Mäkelä
65c34aaf41 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3459
  revision-id: marko.makela@oracle.com-20100511105308-grp2t3prh3tqivw0
  parent: marko.makela@oracle.com-20100511105012-b2t7wvz6mu6bll74
  parent: marko.makela@oracle.com-20100505123901-xjxu93h1xnbkfkq0
  committer: Marko Mäkelä <marko.makela@oracle.com>
  branch nick: mysql-5.1-innodb
  timestamp: Tue 2010-05-11 13:53:08 +0300
  message:
    Merge a patch from Facebook to fix Bug #53290

    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
      ------------------------------------------------------------
      revno: 3453.2.1
      revision-id: marko.makela@oracle.com-20100505123901-xjxu93h1xnbkfkq0
      parent: marko.makela@oracle.com-20100505120555-ukoq1gklpheslrxs
      committer: Marko Mäkelä <marko.makela@oracle.com>
      branch nick: 5.1-innodb
      timestamp: Wed 2010-05-05 15:39:01 +0300
      message:
        Merge a contribution from Ryan Mack at Facebook:

        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

            DiffCamp Revision: 110840
            Reviewed By: mcallaghan
            CC: mcallaghan, mysql-devel@lists
            Revert Plan:
            OK
2010-05-11 19:18:28 +03:00
Marko Mäkelä
9a3c4beccc Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3458
  revision-id: marko.makela@oracle.com-20100511105012-b2t7wvz6mu6bll74
  parent: marko.makela@oracle.com-20100511104910-nim8kgguawpis7zo
  committer: Marko Mäkelä <marko.makela@oracle.com>
  branch nick: mysql-5.1-innodb
  timestamp: Tue 2010-05-11 13:50:12 +0300
  message:
    Do not demand that buf_page_t be fully initialized on 64-bit systems.
    There may be padding before buf_page_t::zip. (Bug #53307)
2010-05-11 18:46:17 +03:00
Marko Mäkelä
dac407ca36 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3457
  revision-id: marko.makela@oracle.com-20100511104910-nim8kgguawpis7zo
  parent: marko.makela@oracle.com-20100511104500-c6kzd0bg5s42p8e9
  committer: Marko Mäkelä <marko.makela@oracle.com>
  branch nick: mysql-5.1-innodb
  timestamp: Tue 2010-05-11 13:49:10 +0300
  message:
    btr_page_split_and_insert(): Add an assertion
    suggested by Sunny Bains when reviewing Bug #52964.
2010-05-11 18:42:44 +03:00
Marko Mäkelä
ad79491cd1 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3456
  revision-id: marko.makela@oracle.com-20100511104500-c6kzd0bg5s42p8e9
  parent: vasil.dimov@oracle.com-20100510132852-cz457uqvj8iiy9mm
  committer: Marko Mäkelä <marko.makela@oracle.com>
  branch nick: mysql-5.1-innodb2
  timestamp: Tue 2010-05-11 13:45:00 +0300
  message:
    Remove a stray expression. Spotted by Sunny Bains.
2010-05-11 18:39:19 +03:00
Vasil Dimov
2f4b80a098 Merge mysql-trunk-bugfixing -> mysql-trunk-innodb 2010-05-11 14:44:22 +03:00
Vasil Dimov
5875344794 Merge mysql-trunk into mysql-trunk-innodb 2010-05-11 14:29:58 +03:00
Sunny Bains
b57e20d9ff Add missing ';'. 2010-05-11 13:55:47 +10:00
Sunny Bains
d8226b53ee Fix for bug#53541. We need to check whether the slot has been freed or not
before trying to access the transaction instance.

rb://336
2010-05-11 13:03:24 +10:00
Sunny Bains
3fa6723ff9 Second part of the fix for bug#53499. We decrement the active thread count
when the purge thread completes by calling srv_suspend_thread().
2010-05-11 12:57:11 +10:00
Inaam Rana
1a1d460338 Undo the changes made by Vasil in sys_vars/all_vars when adjusting
for the new parameters introduced in the plugin 1.1. Now that we have
basic tests for all these new parameters it is no longer needed to
adjust the all_vars.result file.
2010-05-10 17:44:40 -04:00
Marko Makela
a2ea94bac7 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3454
  committer: Marko Makela <mmakela@bk-internal.mysql.com>
  branch nick: mysql-5.1-innodb
  timestamp: Mon 2010-05-10 13:37:52 +0200
  message:
    Add an innodb test case for Bug #49164.
2010-05-10 15:14:45 +02:00
Marko Makela
213aa2f5a4 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3450
  committer: Marko Mäkelä <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Wed 2010-05-05 14:24:11 +0300
  message:
    row_merge_drop_temp_indexes(): Load the table via the dictionary cache.
    Allow multiple indexes to be dropped. (Bug #53256)
2010-05-10 14:34:14 +02:00
Sunny Bains
c7fc8045cb Fix bug#53499 - purge thread is active during shutdown, assert buf/buf0buf.c line 4115.
Check that all background threads are suspended or shutdown instead of just
checking for the master thread.
rb://333
2010-05-10 13:17:17 +10:00
Calvin Sun
053d75eadb Fix compile errors on x64 Windows.
Change types of srv_purge_batch_size and srv_n_purge_threads
from ulint to ulong.
2010-05-07 16:40:30 -05:00
Calvin Sun
59ecf3bb79 Clean up CMake file by removing duplicate entry for Windows.
Suggested by Vlad.
2010-05-07 15:37:34 -05:00
Alexander Nozdrin
a2d5ef0557 Null-merge from mysql-trunk. 2010-05-07 13:22:38 +04:00
Alexander Nozdrin
19fac19a93 Auto-merge from mysql-trunk-bugfixing. 2010-05-07 13:16:55 +04:00
Marko Mäkelä
bc7dcdc0b1 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3449
  revision-id: marko.makela@oracle.com-20100505104425-39y6qbffgotrhck2
  parent: marko.makela@oracle.com-20100505104001-883pqiepo384qr5h
  committer: Marko Mäkelä <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Wed 2010-05-05 13:44:25 +0300
  message:
    Factor out innodb_multi_update.test from innodb.test
2010-05-05 14:03:14 +03:00
Alexander Nozdrin
d91c271b2b Patch for Bug#50511 (Sometimes wrong handling of user variables containing NULL).
The bug happened under the following condition:
  - there was a user variable of type REAL, containing NULL value
  - there was a table with a NOT_NULL column of any type but REAL, having
    default value (or auto increment);
  - a row was inserted into the table with the user variable as value.
    A warning was emitted here.

The problem was that handling of NULL values of REAL type was not properly
implemented: it didn't expect that REAL NULL value can be assigned to other
data type.

Basically, the problem was that set_field_to_null() was used instead of
set_field_to_null_with_conversions().

The fix is to use the right function, or more generally, to allow conversion of
REAL NULL values to other data types.
2010-05-05 15:00:59 +04:00
Alexander Barkov
25d31b8f7c Bug#51571 load xml infile causes server crash
Problem:
  item->name was NULL for Item_user_var_as_out_param
  which made strcmp(something, item->name) crash in the LOAD XML code.
  
  Fix:
  - item_func.h: Adding set_name() in constuctor for Item_user_var_as_out_param
  - sql_load.cc: Changing the condition in write_execute_load_query_log_event() which
  distiguished between Item_user_var_as_out_param and Item_field
  from
    if (item->name == NULL)
  to
    if (item->type() == Item::FIELD_ITEM)
  - loadxml.result, loadxml.test: adding tests
2010-05-05 14:34:20 +04:00
Vasil Dimov
30160887d7 Merge from bk-internal into my local branch 2010-05-05 13:17:48 +03:00
Marko Mäkelä
09f5025bc2 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3446
  revision-id: marko.makela@oracle.com-20100505100507-6kcd2hf32hruxbv7
  parent: marko.makela@oracle.com-20100505095328-vetnl0flhmhao7p5
  committer: Marko Mäkelä <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Wed 2010-05-05 13:05:07 +0300
  message:
    Add Valgrind diagnostics to track down Bug #38999.
  ------------------------------------------------------------
2010-05-05 13:14:06 +03:00
Vasil Dimov
781debb59b Fix path to include file in innodb_bug52745.test 2010-05-05 13:13:58 +03:00
Vasil Dimov
484741475e Fix path to include file. 2010-05-05 13:13:05 +03:00
Alexander Barkov
6bf10a8623 Bug#52849 [Com]: datetime index not work
Problem: after introduction of "WL#2649 Number-to-string conversions"

This query:
  SET NAMES cp850; -- Or any other non-latin1 ASCII-based character set
  SELECT * FROM t1
  WHERE datetime_column='2010-01-01 00:00:00'
started to add extra character set conversion: 
  SELECT * FROM t1
  WHERE CONVERT(datetime_column USING cp850)='2010-01-01 00:00:00';

so index on DATETIME column was not used anymore.
Fix:
  avoid convertion of NUMERIC/DATETIME items
  (i.e. those with derivation DERIVATION_NUMERIC).
2010-05-05 13:28:37 +04:00
Horst.Hunger
8975d4766f Patch for 47759 to trunk-bugfixing. 2010-05-05 09:35:38 +02:00
Omer BarNir
3cf56bb21b Changes to result files in the engine suite - missed from previous commit 2010-05-04 13:39:17 -07:00
Omer BarNir
1c731cb0c6 Updates to test and result files in the 'engine' suites following changes in 5.5 2010-05-04 11:10:17 -07:00
Alexander Nozdrin
a0e2f8866c Include mysql/innodb_priv.h into 'make dist'. 2010-05-04 19:44:29 +04:00
Jimmy Yang
fe8b56db30 Fix bug #53165, Setting innodb_change_buffering=DEFAULT produces incorrect result.
rb://295 approved by Marko
2010-05-04 08:25:56 -07:00
Vasil Dimov
3024d99a96 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3441
  revision-id: marko.makela@oracle.com-20100504130917-qmvzbj3pgil2nuat
  parent: marko.makela@oracle.com-20100504125510-gemcfhj7mefrhalo
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-05-04 16:09:17 +0300
  message:
    fsp_init_file_page_low(): Zero out the page. (Bug #53306)
  modified:
    storage/innodb_plugin/fsp/fsp0fsp.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Ffsp%2Ffsp0fsp.c
  ------------------------------------------------------------
2010-05-04 16:57:09 +03:00
Vasil Dimov
84745ca419 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3439
  revision-id: marko.makela@oracle.com-20100504124744-c1ivf5tm90nv7lc1
  parent: marko.makela@oracle.com-20100504105546-4ew7a77e9uhxmhho
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-05-04 15:47:44 +0300
  message:
    Add Valgrind checks to catch uninitialized writes to data files.
    buf_flush_insert_into_flush_list(),
    buf_flush_insert_sorted_into_flush_list(),
    buf_flush_post_to_doublewrite_buf(): Check that the page is initialized.
  modified:
    storage/innodb_plugin/buf/buf0flu.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fbuf%2Fbuf0flu.c
  ------------------------------------------------------------
2010-05-04 16:50:08 +03:00
Vasil Dimov
33c4a29890 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3438
  revision-id: marko.makela@oracle.com-20100504105546-4ew7a77e9uhxmhho
  parent: marko.makela@oracle.com-20100504093128-44v6glupe1dsh0ug
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-05-04 13:55:46 +0300
  message:
    Remove UNIV_BTR_AVOID_COPY. It was broken because btr_attach_half_pages()
    would get the block, new_block in the wrong order.
    Fixing that would have complicated the function even further
    for this marginal case.
  modified:
    storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
    storage/innodb_plugin/btr/btr0btr.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fbtr%2Fbtr0btr.c
    storage/innodb_plugin/include/univ.i 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Finclude%2Funiv.i
  ------------------------------------------------------------
2010-05-04 16:47:47 +03:00
Vasil Dimov
48d1faabf0 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3437
  revision-id: marko.makela@oracle.com-20100504093128-44v6glupe1dsh0ug
  parent: marko.makela@oracle.com-20100503122859-k73bl51re93o0mt4
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-05-04 12:31:28 +0300
  message:
    btr_page_split_and_insert(): Correct the fix of Bug #52964.
    When split_rec==NULL, choose the correct node pointer key (first_rec).
  modified:
    storage/innodb_plugin/btr/btr0btr.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fbtr%2Fbtr0btr.c
  ------------------------------------------------------------
2010-05-04 16:45:44 +03:00