Commit graph

61445 commits

Author SHA1 Message Date
Jon Olav Hauglid
1a1a96e7af Bug #47459 Assertion in Diagnostics_area::set_eof_status on OPTIMIZE TABLE
This assertion could be triggered during execution of OPTIMIZE TABLE for
InnoDB tables. As part of optimize for InnoDB tables, the table is recreated
and then opened again. If the reopen failed for any reason, the assertion
would be triggered. This could for example be caused by a concurrent DROP
TABLE executed by a different connection. The reason for the assertion was
that any failures during reopening were ignored.

This patch fixes the problem by making sure that the result of reopening the
table is checked and that any error messages are sent to the client.

Test case added to innodb_mysql_sync.test.
2010-04-15 18:53:57 +02:00
Jon Olav Hauglid
b6f0c3a157 Bug #51391 Deadlock involving events during rqg_info_schema test
This was a deadlock between CREATE/ALTER/DROP EVENT and a query
accessing both the mysql.event table and I_S.GLOBAL_VARIABLES.

The root of the problem was that the LOCK_event_metadata mutex was
used to both protect the "event_scheduler" global system variable
and the internal event data structures used by CREATE/ALTER/DROP EVENT.

The deadlock would occur if CREATE/ALTER/DROP EVENT held
LOCK_event_metadata while trying to open the mysql.event table,
at the same time as the query had mysql.event open, trying to
lock LOCK_event_metadata to access "event_scheduler".

This bug was fixed in the scope of Bug#51160 by using only
LOCK_global_system_variables to protect "event_scheduler".
This makes it so that the query above won't lock LOCK_event_metadata,
thereby preventing this deadlock from occuring.

This patch contains no code changes.
Test case added to lock_sync.test.
2010-04-15 14:14:28 +02:00
Jon Olav Hauglid
e232fbe067 Bug #51327 MyISAM table is automatically repaired on ALTER
even if myisam-recover is OFF

The problem was that a corrupted MyISAM table was auto repaired
even if the myisam_recover_options server variable (or the 
myisam_recover option) was set to OFF.

The reason was that the auto_repair() function, which is supposed
to say if auto repair is to be used, did not use the server variable
setting correctly. This bug was a regression introduced by WL#4738.

This patch fixes the problem by making sure auto_repair() returns
FALSE if myisam_recover_options is set to OFF.

Test case added to myisam.test.
2010-04-15 09:16:29 +02:00
Jon Olav Hauglid
d18275c2c2 Bug #52593 SHOW CREATE TABLE is blocked if table is locked
for write by another connection

The problem was that if a table was locked in one connection by
LOCK TABLES ... WRITE, REPAIR TABLE or OPTIMIZE TABLE, SHOW CREATE
TABLE from another connection would be blocked. As SHOW CREATE TABLE
only reads metadata about the table, such blocking is not needed.

The problem was that when SHOW CREATE TABLE tried to get a metadata
lock on the table in order to open it, it used the wrong type of
metadata lock request. It used MDL_SHARED_READ which is used when
the intent is to read both table metadata and table data. Instead
it should have used MDL_SHARED_HIGH_PRIO which signifies an intent
to only read metadata.

This patch fixes the problem by making sure SHOW CREATE TABLE uses
the MDL_SHARED_HIGH_PRIO metadata lock request type when trying to
open the table. The patch also fixes a similar problem with the
mysql_list_fields API call.

Test case added to show_check.test.
2010-04-14 09:40:45 +02:00
Jon Olav Hauglid
7e6eddd374 Bug #52367 Deadlock involving SET GLOBAL EVENT_SCHEDULER = OFF
during rqg_mdl_deadlock test

The problem was that if two connection threads simultaneously tries
to execute "SET GLOBAL EVENT_SCHEDULER = OFF", one of them could
hang waiting for the scheduler to stop.

The first connection thread would kill the event scheduler thread
and then start waiting for it to exit. The second connection thread
would then find the event scheduler thread in the process of exiting
and also wait for it to exit. However, since the event scheduler 
thread used signal to wake only one waiting thread, the other connection
thread would be left waiting.

This bug was a regression introduced by the fix for Bug#51160.
Before #51160 it was not possible for two connection threads to 
try to stop the event scheduler thread simultaneously.

This patch fixes the problem my making sure the event scheduler
thread uses broadcast to notify all waiters that it is exiting.

No test case added as this would require adding debug sync points
to parts of the code where sync points are currently not used.
The patch has been tested with the non-deterministic test case
from the bug description as well as using the RQG.
2010-04-14 09:30:57 +02:00
Davi Arnaut
ef50dd1be4 Rename tree. 2010-03-16 21:38:13 -03:00
Davi Arnaut
222247c951 Fix assorted compiler warnings. 2010-03-16 21:34:03 -03:00
Alexander Nozdrin
f977e21d26 Skip perfschema.misc if "var" is a symlink (due to Bug 51447). 2010-03-16 17:19:45 +03:00
Mats Kindahl
a9d145acb8 Merging with mysql-trunk-bugfixing 2010-03-15 22:50:22 +01:00
Mats Kindahl
dc35b61fb4 Merging with mysql-trunk-bugfixing 2010-03-15 22:40:28 +01:00
Konstantin Osipov
a9520bcf76 A post-review fix for type-aware metadata locks.
DDL no longer aborts mysql_lock_tables(), and hence
we no longer need to support need_reopen flag of this
call. 
Remove the flag, and all the code in the server
that was responsible for handling the case when
it was set. This allowed to simplify: 
open_and_lock_tables_derived(), the delayed thread,
multi-update.

Rename MYSQL_LOCK_IGNORE_FLUSH to MYSQL_OPEN_IGNORE_FLUSH,
since we now only support this flag in open_table().

Rename MYSQL_LOCK_PERF_SCHEMA to MYSQL_LOCK_LOG_TABLE,
to avoid confusion.

Move the wait for the global read lock for cases
when we do updates in SELECT f1() or DO (UPDATE) to 
open_table() from mysql_lock_tables(). When waiting
for the read lock, we could raise need_reopen flag,
which is no longer present in mysql_lock_tables().
Since the block responsible for waiting for GRL
was moved, MYSQL_LOCK_IGNORE_GLOBAL_READ_LOCK
was renamed to MYSQL_OPEN_IGNORE_GLOBAL_READ_LOCK.
2010-03-16 00:20:20 +03:00
Vladislav Vaintroub
74211ed907 merge 2010-03-15 20:04:19 +01:00
Alexander Nozdrin
9cc2d7764e Auto-merge from mysql-trunk. 2010-03-15 20:10:17 +03:00
Alexander Nozdrin
fa2d2c1832 A patch for Bug#52071 (rpl_ndb.rpl_ndb_ctype_ucs2_def fails).
Use new command line options instead of deprecated and removed ones.
2010-03-15 20:00:20 +03:00
Alexander Nozdrin
d9a074e1fd Enable ndb and rpl_ndb test suites in daily builds. 2010-03-15 19:43:26 +03:00
Magnus Blåudd
a9541803fa Merge 2010-03-15 15:04:12 +01:00
Magnus Blåudd
fda5004d36 Merge in fix for bug#42589 2010-03-15 14:57:20 +01:00
Jon Olav Hauglid
dd69b281f0 Bug #51160 Deadlock around SET GLOBAL EVENT_SCHEDULER = ON|OFF
This deadlock could occour betweeen one connection executing
SET GLOBAL EVENT_SCHEDULER= ON and another executing SET GLOBAL
EVENT_SCHEDULER= OFF. The bug was introduced by WL#4738.

The first connection would hold LOCK_event_metadata (protecting
the global variable) while trying to lock LOCK_global_system_variables
starting the event scheduler thread (in THD:init()).

The second connection would hold LOCK_global_system_variables
while trying to get LOCK_event_scheduler after stopping the event
scheduler inside event_scheduler_update().

This patch fixes the problem by not using LOCK_event_metadata to
protect the event_scheduler variable. It is still protected using
LOCK_global_system_variables. This fixes the deadlock as it removes 
one of the two mutexes used to produce it.

However, this patch opens up the possibility that the event_scheduler
variable and the real event_scheduler state can become out of sync
(e.g. variable = OFF, but scheduler running). But this can only
happen under very unlikely conditions - two concurrent SET GLOBAL
statments, with one thread interrupted at the exact wrong moment.
This is preferable to having the possibility of a deadlock.

This patch also fixes a bug where it was possible to exit create_event()
without releasing LOCK_event_metadata if running out of memory during
its exection.

No test case added since a repeatable test case would have required
excessive use of new sync points. Instead we rely on the fact that
this bug was easily reproduceable using RGQ tests.
2010-03-15 14:52:25 +01:00
Alexander Nozdrin
27bb4377c6 Auto-merge from mysql-trunk. 2010-03-15 13:22:26 +03:00
Mats Kindahl
d21fa1426a Bug #51938 plugin_dir gets bad default value
When building the script directory using a CMake-based build, both the
variables in config.h.cmake (including PLUGINDIR) and the variables in
CMakeList.txt (which includes pkgplugindir).

However, for autotools-based builds, only pkgplugindir is substituted,
which means that the plugin-path is not substituted.

This patch solves the problem by using pkgplugindir, which works on both
CMake-based and autotools-based builds, instead of PLUGINDIR.
2010-03-14 21:11:19 +01:00
Konstantin Osipov
9cb8a98216 A review comment for the fix for Bug#46672.
Remove unnecessary need_reopen loops.
2010-03-13 13:58:27 +03:00
joerg.bruehe@sun.com
3bba724bbb Raise version number after cloning 5.5.3-m3 2010-03-12 21:18:20 +01:00
Alexander Nozdrin
c5c55e3fa0 Auto-merge from mysql-trunk. 2010-03-12 21:13:35 +03:00
Alexander Nozdrin
9d746b025a Auto-merge from mysql-next-mr. 2010-03-12 21:11:31 +03:00
Alexander Nozdrin
43594fed64 Auto-merge (empty) from mysql-trunk. 2010-03-12 21:08:38 +03:00
Alexander Nozdrin
0ab84d0f83 Auto-merge from mysql-next-mr-bugfixing. 2010-03-12 21:04:35 +03:00
Alexander Nozdrin
dc2a2e151d Auto-merge from mysql-trunk-bugfixing. 2010-03-12 21:03:40 +03:00
Luis Soares
66ee3a4490 BUG#51716 post push fix.
There are two issues fixed here:

  1. We needed to update the result file, for some of 
     mysqlbinlog_* tests, because now the some padding chars
     are not output anymore.

  2. We needed to change the Field_string::pack so that
     for BINARY types the padding chars are not packed 
     (lengthsp will return full length for these types).
2010-03-12 12:42:30 +00:00
Joerg Bruehe
283188c939 Automerge the bug#49022 fix correction into next-mr-bugfixing. 2010-03-12 10:56:56 +01:00
Joerg Bruehe
1f9235f04b Fix for the bug#49022 patch, detected by further testing. 2010-03-11 16:37:51 +01:00
Vladislav Vaintroub
2b1846473f Bug#51949 - make_binary_distribution fails on Mac.
Unquoted ${CMAKE_CPACK_COMMAND} is used in this script.
This variable resolves to cpack's real path with spaces, e.g
 /Applications/CMake 2.6.4-app/Contents/bin/cpack. 
Script fails due to lack of quotes.

Fix is to use quotes around ${CMAKE_CPACK_COMMAND}.
2010-03-11 15:41:45 +01:00
Konstantin Osipov
42b7812898 A fix for Bug#49972 "Crash in prepared statements":
The problem is introduced by WL#4435 "Support OUT-parameters in 
prepared statements".
When a statement that has out parameters was reprepared,
the reprepare request error was ignored, and an
attempt to send out parameters to the client was made.

Since the out parameter list was not initialized in case
of an error, this attempt led to a crash.

Don't try to send out parameters to the client
if an error occurred in statement execution.
2010-03-11 16:47:34 +03:00
Luis Soares
b7a5c1b329 Automerge: mysql-next-mr-bugfixing bug branch --> mysql-next-mr-bugfixing latest. 2010-03-11 11:28:35 +00:00
Alexander Barkov
a388efbffa An additional fix for WL#1213 4-byte UTF8
- Fixing crash on attempt to create a fulltext index with an utf8mb4 column
- fixing wrong border width  for supplementary characters in mysql client:

  mysql --default-character-set=utf8mb4 -e "select concat(_utf32 0x20000,'a')"
2010-03-11 14:34:11 +04:00
He Zhenxing
99d1b2bd9a Auto merge 2010-03-11 10:58:20 +08:00
He Zhenxing
9d28e0f361 Enable rpl_semi_sync test on Windows 2010-03-11 10:56:46 +08:00
He Zhenxing
3760845b72 Auto merge from 5.1-rep-semisync 2010-03-11 10:22:18 +08:00
Luis Soares
9b5a6748e0 Fix for BUG#51716 and BUG#51787: test case improvements.
Split rpl_row_charset into:

  - rpl_row_utf16.
  - rpl_row_utf32.

This way these tests can run independently if server supports
either one of the charsets but not both.

Cleaned up rpl_row_utf32 which had a spurious instruction:
-- let $reset_slave_type_conversions= 0
2010-03-10 22:20:39 +00:00
Davi Arnaut
09f9014238 Automatic merge. 2010-03-10 15:44:58 -03:00
Luis Soares
2c368f050e Fix for BUG#51716 and BUG#51787.
In BUG#51787 we were using the wrong charset to print out the
data. We were using the field charset for the string that would
hold the information. This caused the assertion, because the
string length was not aligned with UTF32 bytes requirements for
storage.

We fix this by using &my_charset_latin1 in the string object
instead of the field->charset(). As a side-effect, we needed to
extend the show_sql_type interface so that it took the field
charset is now passed as a parameter, so that one is able to
calculate the correct field size.

In BUG#51716 we had issues with Field_string::pack and
Field_string::unpack. When packing, the length was incorrectly
calculated. When unpacking, the padding the string would be
padded with the wrong bytes (a few bytes less than it should).

We fix this by resorting to charset abstractions (functions) that
calculate the correct length when packing and pad correctly the
string when unpacking.
2010-03-10 17:33:51 +00:00
Joerg Bruehe
b016f1b2ce Automerge into next-mr-bugfixing. 2010-03-10 17:26:49 +01:00
Alexander Nozdrin
5c7687c2ef Auto-merge from mysql-next-mr-bugfixing. 2010-03-10 17:58:35 +03:00
Konstantin Osipov
861b86d678 A fix and a test case for Bug#51710 FLUSH TABLES <view> WITH READ
LOCK kills the server.

Prohibit FLUSH TABLES WITH READ LOCK application to views or
temporary tables.
Fix a subtle bug in the implementation when we actually
did not remove table share objects from the table cache after 
acquiring exclusive locks.
2010-03-10 17:35:25 +03:00
Davi Arnaut
30cb1779ed Bug#33669: Transactional temporary tables do not work under --read-only
The problem was that in read only mode (read_only enabled),
the server would mistakenly deny data modification attempts
for temporary tables which belong to a transactional storage
engine (eg. InnoDB).

The solution is to allow transactional temporary tables to be
modified under read only mode. As a whole, the read only mode
does not apply to any kind of temporary table.
2010-03-10 10:36:40 -03:00
Joerg Bruehe
4d75f6e251 Part of the fixes for bug#49022
Plugins included into bin release cannot be
    installed on debug version of server

Ensure that the plugin files of the debug build
get into the optimized tree, so that they find
their way into the final RPMs.
2010-03-10 14:36:27 +01:00
Alexander Nozdrin
93e4d17412 Auto-merge (empty) from mysql-trunk-bugfixing. 2010-03-10 16:35:38 +03:00
Alexander Nozdrin
29577eddfb Auto-merge (empty) from mysql-next-mr. 2010-03-10 16:34:45 +03:00
Alexander Nozdrin
9661d1ef34 Auto-merge from mysql-trunk. 2010-03-10 16:34:12 +03:00
Alexander Nozdrin
feb9835245 Auto-merge (empty) from mysql-trunk. 2010-03-10 16:27:18 +03:00
Alexander Nozdrin
9ad6cb15ad Auto-merge from mysql-next-mr. 2010-03-10 16:26:34 +03:00