Functionality added or changed:
Incompatible Change: MySQL Cluster:
MySQL Cluster node and system restarts formerly required that
all fragments use the same local checkpoint (LCP); beginning
with this version, it is now possible for different fragments to
use different LCPs during restarts. This means that data node
file systems must be rebuilt as part of any upgrade to this
version by restarting all data nodes with the
--initial
option.
See MySQL Cluster 4.1 Upgrade and Downgrade Compatibility, and related sections of the Manual before upgrading a MySQL Cluster to version 5.1.12 or later. (Bug#21478, Bug#21271)
Incompatible Change:
In the INFORMATION_SCHEMA.EVENTS
table, the EVENT_DEFINITION
column now
contains the SQL executed by a scheduled event.
The EVENT_BODY
column now contains the
language used for the statement or statements shown in
EVENT_DEFINITION
. In MySQL 5.1, the value
shown in EVENT_BODY
is always
SQL
.
These changes were made to bring this table into line with the
INFORMATION_SCHEMA.ROUTINES
table,
and that table's ROUTINE_BODY
and
ROUTINE_DEFINITION
columns.
(Bug#16992)
Incompatible Change:
For GRANT
and REVOKE
,
ON *
previously granted and revoked
privileges for the default database if there was a default
database and global privileges if there was none. Now
ON *
requires a default database and produces
an error if there is none.
Incompatible Change:
Support for the BerkeleyDB (BDB
) engine has
been dropped from this release. Any existing tables that are in
BDB format will not be readable from within MySQL from 5.1.12 or
newer. You should convert your tables to another storage engine
before upgrading to 5.1.12.
Because of this change, the SHOW [BDB] LOGS
statement has been dropped.
Incompatible Change: A number of MySQL constructs are now prohibited in partitioning expressions, beginning with this release. These include the following:
A number of MySQL functions. For a complete list of these, see Partitioning Limitations Relating to Functions.
The bit operators
|
,
&
,
^
,
<<
,
>>
,
and
~
.
Nested function calls.
Calls to stored routines, UDFs, or plugins.
Character-to-integer conversions involving non-8-bit
character sets or any of the
latin1_german2_ci
,
latin2_czech_cs
, or
cp1250_czech_cs
collations.
These restrictions were added in part as a result of Bug#18198 and related bug reports.
For more information about these and other restrictions on partitioned tables in MySQL, see Restrictions and Limitations on Partitioning.
Incompatible Change:
The permitted values for and behavior of the
event_scheduler
system variable
have changed. Permitted values are now ON
,
OFF
, and DISABLED
, with
OFF
being the default. It is not possible to
change its value to or from DISABLED
while
the server is running.
For details, see Event Scheduler Overview.
Incompatible Change:
The plugin interface has changed: The
st_mysql_plugin
structure has a new
license
member to indicate the
license type. (The allowable values are defined in
mysql/plugin.h
.) This change is not
backward compatible, so the API version
(MYSQL_PLUGIN_INTERFACE_VERSION
) has changed.
For additional information, see
Writing Plugins.
Incompatible Change: The full-text parser plugin interface has changed in two ways:
The MYSQL_FTPARSER_PARAM
structure has a
new flags
member. This is zero if there
are no special flags, or
MYSQL_FTFLAGS_NEED_COPY
, which means that
mysql_add_word()
must save a copy of
the word (that is, it cannot use a pointer to the word
because the word is in a buffer that will be overwritten.)
This flag might be set or reset by MySQL before calling the
parser plugin, by the parser plugin itself, or by the
mysql_parse()
function.
The mysql_parse()
and
mysql_add_word()
functions now take a
MYSQL_FTPARSER_PARAM
as their first
argument, not a
MYSQL_FTPARSER_PARAM::mysql_ftparam
as
before.
These changes are not backward compatible, so the API version
(MYSQL_FTPARSER_INTERFACE_VERSION
) has
changed. For additional information, see
Writing Plugins.
Incompatible Change:
Storage engines can be pluggable at runtime, so the distinction
between disabled and invalid storage engines no longer applies.
This affects the
NO_ENGINE_SUBSTITUTION
SQL
mode, as described in Server SQL Modes.
Incompatible Change:
The namespace for scheduled events has changed, such that events
are no longer unique to individual users. This also means that a
user with the EVENT
privilege on
a given database can now view, alter, or drop any events defined
on that database.
If you used scheduled events in an earlier MySQL 5.1 release, you should rename any of them having the same name and defined on the same database but belonging to different users — so that all events in a given database have unique names — before upgrading to 5.1.12 (or newer).
For additional information, see The Event Scheduler and MySQL Privileges.
Bugs fixed:
Security Fix:
A stored routine created by one user and then made accessible to
a different user using
GRANT EXECUTE
could be executed by that user with the privileges of the
routine's definer.
(Bug#18630, CVE-2006-4227)
Security Fix: On Linux, and possibly other platforms using case-sensitive file systems, it was possible for a user granted rights on a database to create or access a database whose name differed only from that of the first by the case of one or more letters. (Bug#17647, CVE-2006-4226)
Security Fix:
If a user has access to MyISAM
table
t
, that user can create a
MERGE
table m
that
accesses t
. However, if the user's
privileges on t
are subsequently
revoked, the user can continue to access
t
by doing so through
m
. If this behavior is undesirable,
you can start the server with the new
--skip-merge
option to disable
the MERGE
storage engine.
(Bug#15195, CVE-2006-4031)
Incompatible Change:
For utf8
columns, the full-text parser
incorrectly considered several nonword punctuation and
whitespace characters as word characters, causing some searches
to return incorrect results.
The fix involves a change to the full-text parser, so any tables
that have FULLTEXT
indexes on
utf8
columns must be repaired with
REPAIR TABLE
:
REPAIR TABLE tbl_name
QUICK;