Commit graph

25346 commits

Author SHA1 Message Date
Alfranio Correia
d866afe56f merge mysql-5.1-rep+2-delivery1 --> mysql-5.1-rpl-merge 2010-01-07 17:39:01 +00:00
Alfranio Correia
6f7929b143 merge mysql-5.1-rep+2-delivery1 --> mysql-5.1-rpl-merge
Conflicts:

Text conflict in .bzr-mysql/default.conf
Text conflict in mysql-test/extra/rpl_tests/rpl_loaddata.test
Text conflict in mysql-test/r/mysqlbinlog2.result
Text conflict in mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result
Text conflict in mysql-test/suite/binlog/r/binlog_unsafe.result
Text conflict in mysql-test/suite/rpl/r/rpl_insert_id.result
Text conflict in mysql-test/suite/rpl/r/rpl_loaddata.result
Text conflict in mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result
Text conflict in mysql-test/suite/rpl/r/rpl_udf.result
Text conflict in mysql-test/suite/rpl/t/rpl_slow_query_log.test
Text conflict in sql/field.h
Text conflict in sql/log.cc
Text conflict in sql/log_event.cc
Text conflict in sql/log_event_old.cc
Text conflict in sql/mysql_priv.h
Text conflict in sql/share/errmsg.txt
Text conflict in sql/sp.cc
Text conflict in sql/sql_acl.cc
Text conflict in sql/sql_base.cc
Text conflict in sql/sql_class.h
Text conflict in sql/sql_db.cc
Text conflict in sql/sql_delete.cc
Text conflict in sql/sql_insert.cc
Text conflict in sql/sql_lex.cc
Text conflict in sql/sql_lex.h
Text conflict in sql/sql_load.cc
Text conflict in sql/sql_table.cc
Text conflict in sql/sql_update.cc
Text conflict in sql/sql_view.cc
Conflict adding files to storage/innobase.  Created directory.
Conflict because storage/innobase is not versioned, but has versioned children.  Versioned directory.
Conflict adding file storage/innobase.  Moved existing file to storage/innobase.moved.
Conflict adding files to storage/innobase/handler.  Created directory.
Conflict because storage/innobase/handler is not versioned, but has versioned children.  Versioned directory.
Contents conflict in storage/innobase/handler/ha_innodb.cc
2010-01-07 15:39:11 +00:00
Alfranio Correia
2e35289e32 merge 5.1-rep+3 --> 5.1-rep+2-delivery1 2010-01-05 17:35:33 +00:00
Alfranio Correia
a0946fa3d1 BUG#50038 Deadlock on flush logs with concurrent DML and RBR
In auto-commit mode, updating both trx and non-trx tables (i.e. issuing a mixed
statement) causes the following sequence of events:

1 - "Flush trx changes" (MYSQL_BIN_LOG::write) - T1:
  1.1 - mutex_lock (&LOCK_log)
  1.2 - mutex_lock (&LOCK_prep_xids)
  1.3 - increase prepared_xids
  1.4 - mutex_unlock (&LOCK_prep_xids)
  1.5 - mutex_unlock (&LOCK_log)

2 - "Flush non-trx changes" (MYSQL_BIN_LOG::write) - T1:
  2.1 - mutex_lock (&LOCK_log)
  2.2 - mutex_unlock (&LOCK_log)

3. "unlog" - T1
  3.1 - mutex_lock (&LOCK_prep_xids)
  3.2 - decrease prepared xids
  3.3 - pthread_cond_signal(&COND_prep_xids);
  3.4 - mutex_unlock (&LOCK_prep_xids)

The "FLUSH logs" command produces the following sequence of events:

1 - "FLUSH logs" command (MYSQL_BIN_LOG::new_file_impl) - user thread:
  1.1 - mutex_lock (&LOCK_log)
  1.2 - mutex_lock (&LOCK_prep_xids)
  1.3 - while (prepared_xids)  pthread_cond_wait(..., &LOCK_prep_xids);
  1.4 - mutex_unlock (&LOCK_prep_xids)
  1.5 - mutex_unlock (&LOCK_log)

A deadlock will arise if T1 flushes the trx changes and thus increases
prepared_xids but before it is able to continue the execution and flush the
non-trx changes, an user thread calls the "FLUSH logs" command and wait that
the prepared_xids is decreased and gets to zero. However, T1 cannot proceed
with the call to "Flush non-trx changes" because it will block in the mutex
"LOCK_log" and by consequence cannot complete the execution and call the
unlog to decrease the prepared_xids.

To fix the problem, we ensure that the non-trx changes are always flushed
before the trx changes.

Note that if you call "Flush non-trx changes" and a concurrent "FLUSH logs" is
issued, the "Flush non-trx changes" may block, but a deadlock will never happen
because the prepared_xids will eventually get to zero. Bottom line, there will
not be any transaction able to increase the prepared_xids because they will
block in the mutex "LOCK_log" (MYSQL_BIN_LOG::write) and those that increased
the prepared_xids will eventually commit and decrease the prepared_xids.
2010-01-05 16:55:23 +00:00
Alfranio Correia
7ff2dcea09 merge mysql-5.1-rep+2 --> mysql-5.1-rep+2-delivery1 2009-12-28 00:06:12 +00:00
Alfranio Correia
d08385fe23 merging from 5.1 to rep+2 starting at gca(5.1, next-mr) == ramil@mysql.com-20091215170821-eexh9rqrnw1ruzh2 2009-12-27 23:47:04 +00:00
Luis Soares
b85a186c66 BUG#49836: Replication of geometric fields is broken after WL#5151
Metadata for geometric fields was not being properly stored by
the slave in its the table definition. This happened because
MYSQL_TYPE_GEOMETRY was not included in the 'switch... case' that
handles field metadata according to the field type. Therefore, it
would default to 0, leading to always have a mismatch between
master's field and slave fields'. 

We fix this by deploying the missing 'case MYSQL_TYPE_GEOMETRY:'.
2009-12-24 01:07:35 +00:00
Alfranio Correia
62b10996f2 merge mysql-5.1-rep+2 --> mysql-5.1-rep+2-delivery1 2009-12-23 12:02:57 +00:00
Alfranio Correia
61813cb0a8 merge mysql-5.1-rep+3 --> mysql-5.1-rep+2-delivery1 2009-12-23 11:52:03 +00:00
8e1d1e45f1 Bug #47863 binlog_format should be writable only at transaction boundaries
When @@session.binlog_format is modified inside a transaction,
it can cause slave to go out of sync.
      
To fix the problem, make the session variable 'binlog_format' 
read-only inside a transaction.
2009-12-23 18:43:45 +08:00
Luis Soares
eb23dff527 PB2 was showing some valgrind warnings after WL#5151 was pushed.
This patch fixes these warnings and some compile time warnings.

On top of that, it also fixes rpl_err_ignoredtable test failure.
This test was failing because the warning suppression text was not
matching the latest text. We fix this by making them match.
2009-12-22 11:51:46 +00:00
Alexander Nozdrin
6f8073497c Manual merge from mysql-next-mr.
Conflicts:
  - storage/ibmdb2i/ha_ibmdb2i.cc
2009-12-22 09:32:58 +03:00
Mats Kindahl
51dc566eb6 Merging with mysql-5.1-rep+2 2009-12-21 20:55:40 +01:00
Mats Kindahl
a22bc99ff6 WL#5151: Conversion between different types when replicating
Bug#49836 reports that the geometry type does not work
with WL#5151 applied.

The GEOMETRY type inherits the blob comparison function,
which read the pack length from the metadata. The GEOMETRY
type does not fill in the metadata with anything sensible,
so it is always zero, meaning that the pack length for the
source type is considered zero, rendering it always "smaller"
than the target type which has pack length 4 (without pointer).

This patch fixes the problem by defining
Field_geom::pack_length_from_metadata() to always use the
same as Field_geom::row_pack_length().
2009-12-21 19:50:25 +01:00
Mattias Jonsson
a96c22fe8e merge 2009-12-21 11:44:26 +01:00
Mattias Jonsson
4309b20402 Bug#48737: Partitions: search fails with ucs2
Recommit of patch:
http://lists.mysql.com/commits/91400

Test case only (code part was pushes as bug-49028)
2009-12-21 11:38:31 +01:00
Alexander Nozdrin
a67056d183 Auto-merge from mysql-trunk-bugfixing. 2009-12-21 13:23:41 +03:00
Alexander Nozdrin
858cf5555c Disable plugin_load.test due to Bug#42144. 2009-12-21 13:20:43 +03:00
Alfranio Correia
93726f51c1 merge mysql-5.1-rep+3 --> mysql-5.1-rep+2-delivery1 2009-12-21 06:42:23 +00:00
Alfranio Correia
8342a400d9 merge mysql-5.1-rep+2 --> mysql-5.1-rep+2-delivery1 2009-12-21 06:33:32 +00:00
Alfranio Correia
261a1e2033 Post-merge fix. 2009-12-21 06:18:11 +00:00
Mikael Ronstrom
18a30d0933 Post-merge fix: wait for statement result before disconnecting. Otherwise the statement might affect unrelated tests. mysql-test/t/lock_multi.test, Reap statement status 2009-12-19 13:26:00 +01:00
Alexander Nozdrin
594d05a688 Auto-merge from mysql-next-mr. 2009-12-19 11:35:19 +03:00
Alexander Nozdrin
f408138c71 Auto-merge from mysql-trunk. 2009-12-19 11:33:33 +03:00
Alexander Nozdrin
faed50d555 Auto-merge from mysql-next-mr. 2009-12-19 11:27:22 +03:00
Mikael Ronstrom
763b01c9f1 Post-merge fix: wait for statement result before disconnecting. Otherwise the statement might affect unrelated tests. mysql-test/t/lock_multi.test, Reap statement status 2009-12-19 08:37:08 +01:00
Vladislav Vaintroub
dc803c99d0 merge 2009-12-18 22:13:56 +01:00
Mats Kindahl
d78e5ff060 Merging with mysql.5.1-rep+2 2009-12-18 13:09:08 +01:00
Alfranio Correia
1ae7130550 Post-merge fix after BUG##45292
Updated suppressed warning messages.
2009-12-18 11:15:46 +00:00
Mats Kindahl
3f607c47d3 Merging with mysql-5.1-rep+2 2009-12-18 11:16:18 +01:00
Mats Kindahl
f28ac80b2b WL#5151: Conversion between different types
when replicating

Post-merge fixes. Updating result files.
2009-12-18 11:15:56 +01:00
Mats Kindahl
b524f272d4 WL#5151: Conversion between different types
when replicating

The function create_virtual_tmp_table does not
set db_low_byte_first in the same way as
create_tmp_table does, causing copying from
the virtual table to a real table to get strange
values for SET types on big-endian machines.
2009-12-18 11:12:27 +01:00
Alfranio Correia
3476b15af9 merge mysql-5.1-rep+3 --> mysql-5.1-rep+2-delivery1 2009-12-17 21:43:35 +00:00
Alexander Nozdrin
2ba49bee0e Manual merge from mysql-trunk-merge.
Conflicts:
  - storage/myisam/mi_packrec.c
2009-12-17 22:16:54 +03:00
Mikael Ronstrom
29c60cd5b7 BUG#49591, Fixed version string in SHOW CREATE TABLE to accomodate for column list partitioning and new function to_seconds 2009-12-17 18:39:10 +01:00
Alexey Kopytov
e6f0b15437 Manual merge from mysql-5.1-bugteam. Re-enabled binlog.binlog_index. 2009-12-17 20:10:18 +03:00
Alfranio Correia
4b0674f9d8 merge mysql-5.1-bugteam (local) --> mysql-5.1-bugteam 2009-12-17 15:47:22 +00:00
Alexey Kopytov
e39d8609ce Automerge from mysql-5.1-bugteam to mysql-trunk-merge. 2009-12-17 18:09:04 +03:00
Andrei Elkin
25743de765 merge from 5.0 with bug@49740 fixes 2009-12-17 16:50:45 +02:00
Andrei Elkin
0f73979084 Bug #49740 rpl.rpl_temporary fails in PB2 in mysql-trunk-merge
The test allowed random coincidence of connection ids for two concurrent
sessions performing CREATE/DROP temp tables.

Fixed with correcting the test. The sessions connection ids are not changed
from their defaults anymore.
2009-12-17 16:34:11 +02:00
Martin Hansson
f9a7ac0664 Backport of fix for bug#35020 2009-12-17 13:38:27 +01:00
Satya B
51ffb05c7c merge to mysql-5.1-bugteam 2009-12-17 17:47:34 +05:30
Satya B
647a955893 merge mysql-5.0-bugteam to mysql-5.1-bugteam 2009-12-17 17:15:13 +05:30
Satya B
801deedcf2 Fix for Bug#37408 - Compressed MyISAM files should not require/use mmap()
When compressed myisam files are opened, they are always memory mapped
sometimes causing memory swapping problems.

When we mmap the myisam compressed tables of size greater than the memory 
available, the kswapd0 process utilization is very high consuming 30-40% of 
the cpu. This happens only with linux kernels older than 2.6.9

With newer linux kernels, we don't have this problem of high cpu consumption
and this option may not be required.
 
The option 'myisam_mmap_size' is added to limit the amount of memory used for
memory mapping of myisam files. This option is not dynamic.

The default value on 32 bit system is 4294967295 bytes and on 64 bit system it
is 18446744073709547520 bytes.

Note: Testcase only tests the option variable. The actual bug has be to 
tested manually.
2009-12-17 16:55:50 +05:30
Martin Hansson
b0c9164cc9 Bug#47650: using group by with rollup without indexes
returns incorrect results with where

An outer join of a const table (outer) and a normal table
(inner) with GROUP BY on a field from the outer table would
optimize away GROUP BY, and thus trigger the optimization to
do away with a temporary table if grouping was performed on
columns from the const table, hence executing the query with
filesort without temporary table. But this should not be
done if there is a non-indexed access to the inner table,
since filesort does not handle joins. It expects either ref
access, range ditto or table scan. The join condition will
thus not be applied.

Fixed by always forcing execution with temporary table in
the case of ROLLUP with a query involving an outer join. This
is a slightly broader class of queries than need fixing, but
it is hard to ascertain the position of a ROLLUP field wrt
outer join with current query representation.
2009-12-17 10:55:18 +01:00
Ramil Kalimullin
7f7a1d5455 Auto-merge. 2009-12-17 10:52:43 +04:00
Ramil Kalimullin
092f25caeb Fix for bug#49465: valgrind warnings and incorrect live checksum...
Problem: inserting a record we don't set unused null bits in the
record buffer if no default field values used.
That may lead to wrong live checksum calculation.

Fix: set unused null bits in the record buffer in such cases.
2009-12-17 09:55:03 +04:00
Alfranio Correia
013cc668df merging from 5.1 to rep+2 starting at gca(5.1, next-mr) == build@mysql.com-20091208092611-pbno5awyb0v38hs7
Fixed conflicts in:

- binlog.binlog_unsafe
- rpl.rpl_slow_query_log
2009-12-17 00:09:52 +00:00
Magne Mahre
2fed660774 Bug#47017 rpl_timezone fails on PB-2 with mismatch error
The bug is caused by a race condition between the 
INSERT DELAYED thread and the client thread's FLUSH TABLE.  The 
FLUSH TABLE does not guarantee (as is (wrongly) suggested in the 
test case) that the INSERT DELAYED is ever executed.  The 
execution of the test case will thus not be deterministic.

The fix has been to do a deterministic verification that both
threads are complete by checking the content of the table.
2009-12-16 20:53:56 +01:00
Alfranio Correia
4ff970b08a BUG#49638 binlog_index fails in mysql-trunk-merge
Calling push_warning/push_warning_printf with a level of
WARN_LEVEL_ERROR *is* a bug. We should either use my_error(),
or WARN_LEVEL_WARN.
2009-12-16 19:52:56 +00:00