Commit graph

2768 commits

Author SHA1 Message Date
Vinay Fisrekar
a483b5bfa9 Correcting "innodb_prefix_index_liftedlimit" failure for embedded mode run.
Separating out sub-test.
2011-06-02 15:12:55 +05:30
Vinay Fisrekar
46c2089d5e Adding testcases for WL#5743 InnoDB: Lift the limit of index key prefixes
innodb_prefix_index_liftedlimit.test used for functional testing of increase in prefix index limit
2011-06-01 15:25:08 +05:30
Jimmy Yang
9e2b7fa7d5 Implement worklog #5743 InnoDB: Lift the limit of index key prefixes.
With this change, the index prefix column length lifted from 767 bytes
to 3072 bytes if "innodb_large_prefix" is set to "true".

rb://603 approved by Marko
2011-05-31 02:12:32 -07:00
Dmitry Lenev
fecca34356 Fix for bug #11762012 - "54553: INNODB ASSERTS IN
HA_INNOBASE::UPDATE_ROW, TEMPORARY TABLE, TABLE LOCK".

Attempt to update an InnoDB temporary table under LOCK TABLES
led to assertion failure in both debug and production builds
if this temporary table was explicitly locked for READ. The
same scenario works fine for MyISAM temporary tables.

The assertion failure was caused by discrepancy between lock
that was requested on the rows of temporary table at LOCK TABLES
time and by update operation. Since SQL-layer requested a
read-lock at LOCK TABLES time InnoDB engine assumed that upcoming
statements which are going to be executed under LOCK TABLES will
only read table and therefore should acquire only S-lock.
An update operation broken this assumption by requesting X-lock.

Possible approaches to fixing this problem are:

1) Skip locking of temporary tables as locking doesn't make any
   sense for connection-local objects.
2) Prohibit changing of temporary table locked by LOCK TABLES ...
   READ.

Unfortunately both of these approaches have drawbacks which make
them unviable for stable versions of server.

So this patch takes another approach and changes code in such way
that LOCK TABLES for a temporary table will always request write
lock. In 5.5 version of this patch switch from read lock to write
lock is done on SQL-layer.

mysql-test/suite/innodb/r/innodb_mysql.result:
  Added test for bug #11762012 - "54553: INNODB ASSERTS IN
  HA_INNOBASE::UPDATE_ROW, TEMPORARY TABLE, TABLE LOCK".
mysql-test/suite/innodb/t/innodb_mysql.test:
  Added test for bug #11762012 - "54553: INNODB ASSERTS IN
  HA_INNOBASE::UPDATE_ROW, TEMPORARY TABLE, TABLE LOCK".
sql/sql_parse.cc:
  Since a temporary table locked by LOCK TABLES can be updated even
  if it was only locked for read we always request TL_WRITE locks
  for such tables at LOCK TABLES time. This allows to avoid 
  discrepancy between locks acquired at LOCK TABLES time and by
  a statement executed under LOCK TABLES. Such a discrepancy has
  caused problems for InnoDB storage engine.
  
  To support this change a part of code implementing LOCK TABLES 
  has been moved to a helper function.
2011-05-26 19:50:06 +04:00
Sven Sandberg
add86aaddc Merged BUG#12574820 from 5.1 to 5.5
Two conflicts resolved manually:
Text conflict in sql/log.cc
Text conflict in sql/mysqld.cc
2011-05-26 12:56:17 +02:00
Sven Sandberg
de3776819c BUG#12574820: binlog.binlog_tmp_table timing out in daily and weekly trunk run
Problem: MYSQL_BIN_LOG::reset_logs acquires mutexes in wrong order.
The correct order is first LOCK_thread_count and then LOCK_log. This function
does it the other way around. This leads to deadlock when run in parallel
with a thread that takes the two locks in correct order. For example, a thread
that disconnects will take the locks in the correct order.
Fix: change order of the locks in MYSQL_BIN_LOG::reset_logs:
first LOCK_thread_count and then LOCK_log.


mysql-test/suite/binlog/r/binlog_reset_master.result:
  added result file
mysql-test/suite/binlog/t/binlog_reset_master.test:
  Added test case that demonstrates deadlock because of wrong mutex order.
  The deadlock is between two threads:
   - RESET MASTER acquires mutexes in wrong order.
   - client thread shutdown code acquires mutexes in right order.
  Actually, this test case does not produce deadlock in 5.1, probably
  the client thread shutdown code does not hold both mutexes at the same
  time. However, the bug existed in 5.1 (mutexes are taken in the wrong
  order) so we push the test case to 5.1 too, to prevent future
  regressions.
sql/log.cc:
  Change mutex acquisition to the correct order:
  first LOCK_thread_count, then LOCK_log.
sql/mysqld.cc:
  Add debug code to synchronize test case.
2011-05-26 12:50:43 +02:00
Bjorn Munch
0bb2424f4d Increase test timeout for rpl.rpl_typeconv
Not for test itself but because it procuces large number of warnings,
  and this may take >90s to filter on slow boxes
2011-05-25 16:39:39 +02:00
Anitha Gopi
099fbeb93d Changed to Oracle bug numbers 2011-05-24 12:08:13 +05:30
Anitha Gopi
ef8b4f22f6 Replaced all bug numbers with Oracle bugDB numbers 2011-05-23 17:03:41 +05:30
Luis Soares
19b16fc572 BUG#11746302
Manual merged mysql-5.1-gca into latest mysql-5.5.

Conflicts
=========
Text conflict in mysql-test/suite/rpl/r/rpl_relayspace.result
Text conflict in mysql-test/suite/rpl/t/rpl_relayspace.test
2011-05-19 16:47:05 +01:00
Luis Soares
4f03d60096 BUG#11746302: 25228: RPL_RELAYSPACE.TEST FAILS ON POWERMACG5,
VM-WIN2003-32-A, SLES10-IA64-A 
      
The test case waits for master_pos_wait not to timeout, which
means that the deadlock between SQL and IO threads was 
succesfully and automatically dealt with.
      
However, very rarely, master_pos_wait reports a timeout. This
happens because the time set for master_pos_wait to wait was
too small (6 seconds). On slow test env this could be a 
problem.
      
We fix this by setting the timeout inline with the one used
in sync_slave_with_master (300 seconds). In addition we 
refactored the test case and refined some comments.
2011-05-19 16:45:45 +01:00
Mikael Ronström
a537c106f0 merge 2011-05-12 20:35:31 +02:00
Jon Olav Hauglid
e9b8feef32 Bug#12346411 SQL/LOG.CC:6509: ASSERTION `PREPARED_XIDS > 0' FAILED
This assert could be triggered during two phase commit if binary
log was used as transaction coordinator log. The triggered assert
checks that the same number of transaction IDs are processed in
the prepare and commit phases.

The reason it was triggered, was that the transaction consisted
of an INSERT/UPDATE IGNORE that had an ignorable error. Since it
had an error, no row log events were made and therefore
prepared_xids was 0. However, since it was an IGNORE statement,
the statement started a read/write statement transaction, committed
it and completed successfully.

This patch fixes the problem by adjusting the assert to take
this possibility into account.

Test case added to binlog.binlog_innodb_row.test.
2011-05-12 14:56:00 +02:00
Mikael Ronström
43c55e9a01 merge 2011-05-12 14:29:32 +02:00
Tatjana Azundris Nuernberg
30265fd178 auto-merge 2011-05-12 10:41:17 +01:00
Tatjana Azundris Nuernberg
c2257fc583 auto-merge 2011-05-12 06:23:16 +01:00
Tatjana Azundris Nuernberg
5047a6382c Bug#11902767/Bug#60580: Statement improperly replicated crashes slave SQL thread
If LOAD DATA INFILE featured a SET clause, the name=value pairs
would be regenerated using item::print. Unfortunately, that code
is mostly optimized for EXPLAIN EXTENDED output and such, and can
not be relied on to return valid SQL.

We now name each value its original, user-supplied form and use
that to create LOAD DATA INFILE statements for statement-based
replication.

mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
  minor change in syntactic sugar
mysql-test/suite/rpl/r/rpl_loaddatalocal.result:
  add test case
mysql-test/suite/rpl/t/rpl_loaddatalocal.test:
  add test case
sql/sql_load.cc:
  Do not try to item::print values in LOAD DATA INFILE's
  SET clause; they might not even be valid SQL at this
  point. Use our saved version instead.
sql/sql_yacc.yy:
  If LOAD DATA INFILE has SET name=val clauses, tag the
  individual val-parts with the user's version so we can
  later replicate that, rather than the smashed pieces
  we'd get from item::print once the optimizer's through
  with our poor values.
2011-05-12 05:56:41 +01:00
Luis Soares
f38dff9809 BUG#12416700
Automerged bzr bundle from bug report into latest mysql-5.5.
2011-05-11 15:16:17 +01:00
Magnus Blåudd
46c08b9459 Bug#12384993 EXTRA/RPL_TEST/CHECK_TYPE.INC NEED SUPPORT FOR SPECIFIC ENGINE
- add support for choosing the engine of test
    table(t1) with $engine_type
 - add primary key to the test table(t1) to support
   replication of BLOB/TEXT (also with ENGINE=ndb)
 - change the suppression since the warning printed to error log
  now says "Column 1"
2011-05-11 09:49:23 +02:00
Luis Soares
b2ec8249d5 BUG#12416700: RPL_SHOW_SLAVE_HOSTS FAILS SPORADICALLY (TIMEOUT
IN WAIT_SHOW_CONDITION) 

There was a typo in the name of one of the parameters to the
include file wait_show_condition. The parameter name was being
set to "connection" instead of "condition".

We fix this typo, improve one instruction in the test case and
deploy parameter checks inside wait_show_condition.inc.
2011-05-10 12:41:09 +01:00
Serge Kozlov
724cc40023 automerge 5.1->5.5 2011-05-09 23:26:41 +04:00
Serge Kozlov
79e4b561b7 WL#5867
Replaced the error code by error name
2011-05-09 23:14:24 +04:00
Luis Soares
a85150c364 BUG#11762616: BUG#55229: 'POSTION'
Manual merge from mysql-5.1 into mysql-5.5.

Conflicts
=========
Text conflict in mysql-test/suite/rpl/t/rpl_row_until.test
Text conflict in sql/handler.h
Text conflict in storage/archive/ha_archive.cc
2011-05-06 00:50:31 +01:00
Luis Soares
8a08fd4341 BUG#11762616: BUG#55229: 'POSTION'
Fix for all "postion" in Oracle files (s/postion/position). 
Updated the copyright notices where needed.
2011-05-06 00:46:53 +01:00
Mikael Ronstrom
3855512715 merge 2011-05-04 11:08:07 +02:00
Vasil Dimov
b9b3f785c3 Merge mysql-5.5-innodb -> mysql-5.5 2011-05-02 12:50:00 +03:00
Vasil Dimov
1607f4aa21 Merge mysql-5.1-innodb -> mysql-5.1 2011-05-02 12:49:19 +03:00
Mattias Jonsson
440fba13d5 fix of partitioning tests that fails on windows + merge of minor cleanup 2011-04-29 09:56:36 +02:00
unknown
6ed10ee5dd Bug#60309 - Bug#12356829: MYSQL 5.5.9 FOR MAC OSX HAS BUG WITH FOREIGN KEY CONSTRAINTS
The innoDB global variable srv_lower_case_table_names is set to the value of lower_case_table_names declared in mysqld.h server in ha_innodb.cc.  Since this variable can change at runtime, it is reset for each handler call to ::create, ::open, ::rename_table & ::delete_table.

But it is possible for tables to be implicitly opened before an explicit handler call is made when an engine is first started or restarted.  I was able to reproduce that with the testcase in this patch on a version of InnoDB from 2 weeks ago.  It seemed like the change buffer entries for the secondary key was getting put into pages after the restart.  (But I am not sure, I did not write down the call stack while it was reproducing.)  In the current code, the implicit open, which is actually a call to dict_load_foreigns(), does not occur with this testcase.

The change is to replace srv_lower_case_table_names by an interface function in innodb.cc that retrieves the server global variable when it is needed.
2011-04-26 12:55:52 -05:00
Vasil Dimov
6308205f05 Merge mysql-5.1 -> mysql-5.1-innodb 2011-04-21 11:08:05 +03:00
Vasil Dimov
7ca56e6876 Backport a fix for innodb_bug59641 from mysql-trunk-innodb 2011-04-21 10:48:30 +03:00
Vasil Dimov
99ed0123bd Merge mysql-5.5-innodb -> mysql-5.5 2011-04-21 08:34:21 +03:00
Serge Kozlov
4f8f6401c9 autocommit 5.1 -> 5.5 2011-04-19 00:08:25 +04:00
Serge Kozlov
dba184237a BUG#12371924
Update test case
2011-04-18 23:59:15 +04:00
Mikael Ronström
70ed67e1cc Merge 5.5 2011-04-15 15:46:11 +02:00
Serge Kozlov
b655b931be autocommit 5.1 -> 5.5 2011-04-14 15:54:48 +04:00
Serge Kozlov
7634e724e7 WL#5867, postfix for binlog_bug23533 2011-04-14 15:24:11 +04:00
Serge Kozlov
ecd6899338 autocommit 5.1->5.5 2011-04-14 00:48:09 +04:00
Serge Kozlov
729e9a6594 WL#5867, reorganize test cases of bugs suite 2011-04-14 00:18:08 +04:00
Marko Mäkelä
460a7197bb Merge mysql-5.1-innodb to mysql-5.5-innodb. 2011-04-11 17:03:32 +03:00
Marko Mäkelä
0ff2a182b6 Bug #11766513 - 59641: Prepared XA transaction in system after hard crash
causes future shutdown hang

InnoDB would hang on shutdown if any XA transactions exist in the
system in the PREPARED state. This has been masked by the fact that
MySQL would roll back any PREPARED transaction on shutdown, in the
spirit of Bug #12161 Xa recovery and client disconnection.

[mysql-test-run] do_shutdown_server: Interpret --shutdown_server 0 as
a request to kill the server immediately without initiating a
shutdown procedure.

xid_cache_insert(): Initialize XID_STATE::rm_error in order to avoid a
bogus error message on XA ROLLBACK of a recovered PREPARED transaction.

innobase_commit_by_xid(), innobase_rollback_by_xid(): Free the InnoDB
transaction object after rolling back a PREPARED transaction.

trx_get_trx_by_xid(): Only consider transactions whose
trx->is_prepared flag is set. The MySQL layer seems to prevent
attempts to roll back connected transactions that are in the PREPARED
state from another connection, but it is better to play it safe. The
is_prepared flag was introduced in the InnoDB Plugin.

trx_n_prepared: A new counter, counting the number of InnoDB
transactions in the PREPARED state.

logs_empty_and_mark_files_at_shutdown(): On shutdown, allow
trx_n_prepared transactions to exist in the system.

trx_undo_free_prepared(), trx_free_prepared(): New functions, to free
the memory objects of PREPARED transactions on shutdown. This is not
needed in the built-in InnoDB, because it would collect all allocated
memory on shutdown. The InnoDB Plugin needs this because of
innodb_use_sys_malloc.

trx_sys_close(): Invoke trx_free_prepared() on all remaining
transactions.
2011-04-07 21:12:54 +03:00
Serge Kozlov
c68a034e83 BUG#12371924. Fxi test case 2011-04-25 23:49:56 +04:00
Mattias Jonsson
c43f804c37 merge 2011-04-26 11:35:17 +02:00
Serge Kozlov
cd44be1a43 autocommit 5.1->5.5 2011-04-26 00:01:11 +04:00
Vasil Dimov
acedd7a4a5 Load the innodb plugin instead of builtin in innodb_plugin.innodb_bug59410
Spotted by:	Marko
2011-04-06 14:38:24 +03:00
Bjorn Munch
89eb32c5c3 merge from 5.5 main 2011-04-05 15:04:05 +02:00
Vasil Dimov
abbdd3b643 Merge mysql-5.1-innodb -> mysql-5.5-innodb 2011-04-05 11:30:38 +03:00
Vasil Dimov
b93cc42623 Add the testcase for Bug#59410 to 5.1/InnoDB Plugin
Bug#59410 read uncommitted: unlock row could not find a 3 mode lock
on the record

This bug is present only in 5.6 but I am adding the test case to earlier
versions to ensure it never appears in earlier versions too.
2011-04-05 11:20:20 +03:00
Vasil Dimov
402217544e Add the testcase for Bug#59410 to 5.1/builtin
Bug#59410 read uncommitted: unlock row could not find a 3 mode lock
on the record

This bug is present only in 5.6 but I am adding the test case to earlier
versions to ensure it never appears in earlier versions too.
2011-04-05 11:08:36 +03:00
Vasil Dimov
7dcb8a0106 Merge mysql-5.5-innodb -> mysql-5.5 2011-04-04 09:12:11 +03:00