If setting a system-variable provided by a plug-in failed, no OK or
error was sent in some cases, hanging the client. We now send an error
in the case from the ticket (integer-argument out of range in STRICT
mode). We also provide a semi-generic fallback message for possible
future cases like this where an error is signalled, but no message is
sent to the client. The error/warning handling is unified so it's the
same again for variables provided by plugins and those in the server
proper.
Fixes the following bugs:
- Bug #33349: possible race condition revolving around data dictionary and repartitioning
Introduce retry/sleep logic as a workaround for a transient bug
where ::open fails for partitioned tables randomly if we are using
one file per table.
- Bug #34053: normal users can enable innodb_monitor logging
In CREATE TABLE and DROP TABLE check whether the table in question is one
of the magic innodb_monitor tables and whether the user has enough rights
to mess with it before doing anything else.
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #29560: InnoDB >= 5.0.30 hangs on adaptive hash rw-lock 'waiting for an X-lock'
This is a combination of changes that forward port the scalability fix applied to 5.0
through r1001.
It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
scalability fix of 5.0)
Then it applies r1001 to 5.0 which is the original scalability fix.
Finally it applies r2082 which fixes an issue with the original fix.
- Bug #30930: Add auxiliary function to retrieve THD::thread_id
Add thd_get_thread_id() function. Also make check_global_access() function
visible to InnoDB under INNODB_COMPATIBILITY_HOOKS #define.
value" error even though the value was correct): a C function in my_getopt.c
was taking bool* in parameter and was called from C++ sql_plugin.cc,
but on some Mac OS X sizeof(bool) is 1 in C and 4 in C++, giving funny
mismatches. Fixed, all other occurences of bool in C are removed, future
ones are blocked by a "C-bool-catcher" in my_global.h (use my_bool).
Using more than 16g can cause record-pool ptr.i values to overflow
Fix by splitting memory into 2 zones, lo(16g)/hi(rest)
When record pools only use zone_lo, and datamemory, buffers etc...can use any
A table with BLOB/TEXT prefix key part, created with version 4.1,
could not be opened by a 5.1 server.
The routine check at table open, if the frm file matches the MyISAM
table, was too picky regarding old and new implementation of such
keys.
Added relaxed check for blob prefix key part.
No test case. It requires to create a table in 4.1 and open it in
5.1.
During TC-take-over (NF) the new-TC builds up a new transaction state
And commits operation according to this state.
However, in the new state that is build, the operations does not have to be in same order, as "real" state
In the multi-update-case, this means that operations can be commit in "incorrect" order
i.e update A, delete A, insert A is normally commited in same order as prepared
but can be committed in any order
This patch changes TUP handling of these out-order commits, and previous implementation
could confuse the TUX triggers