Previously, MySQL development proceeded by including a large set of features and moving them over many versions within a release series through several stages of maturity (Alpha, Beta, and so forth). This development model had a disadvantage in that problems with only part of the code could hinder timely release of the whole. As you might have found when testing MySQL Server 6.0, alpha quality code could jeopardize the stability of the entire release. (One consequence of this was that MySQL Server 6.0 has been withdrawn for now.)
MySQL development now uses a milestone model. The move to this model provides for more frequent milestone releases, with each milestone proceeding through a small number of releases having a focus on a specific subset of thoroughly tested features. Following the releases for one milestone, development proceeds with the next milestone; that is, another small number of releases that focuses on the next small set of features, also thoroughly tested.
MySQL 5.5.0-m2 is the first release for Milestone 2. The new features of this milestone may be considered to be initially of beta quality. For subsequent Milestone 2 releases, we plan to use increasing version numbers (5.5.1 and higher) while continuing to employ the “-m2” suffix. For Milestone 3, we plan to change the suffix to “-m3”. Version designators with “-alpha” or “-beta” suffixes are no used.
You may notice that the MySQL 5.5.0 release is designated as Milestone 2 rather than Milestone 1. This is because MySQL 5.4 was actually designated as Milestone 1, although we had not yet begun referring to milestone numbers as part of version numbers at the time.
Functionality added or changed:
Incompatible Change:
MySQL Server now includes a plugin services interface that
complements the plugin API. The services interface enables
server functionality to be exposed as a “service”
that plugins can access through a function-call interface. The
libmysqlservices
library provides access to
the available services and dynamic plugins now must be linked
against this library (use the -lmysqlservices
flag). For an example showing what
Makefile.am
should look like, see
MySQL Services for Plugins.
(Bug#48461)
Incompatible Change: Several changes have been made regarding the language and character set of error messages:
The --language
option for
specifying the directory for the error message file is now
deprecated. The new
--lc-messages-dir
and
--lc-messages
options should
be used instead, and
--language
is handled as an
alias for --lc-messages-dir
.
The language
system
variable has been removed and replaced with the new
lc_messages_dir
and
lc_messages
system
variables. lc_messages_dir
has only a global value and is read only.
lc_messages
has global and
session values and can be modified at runtime, so the error
message language can be changed while the server is running,
and individual clients each can have a different error
message language by changing their session
lc_messages
value to a
different locale name.
Error messages previously were constructed in a mix of
character sets. This issue is resolved by constructing error
messages internally within the server using UTF-8 and
returning them to the client in the character set specified
by the
character_set_results
system variable. The content of error messages therefore may
in some cases differ from the messags returned previously.
For more information, see Setting the Error Message Language, and Character Set for Error Messages.
Bugs fixed:
Important Change: Security Fix:
It was possible to circumvent privileges through the creation of
MyISAM
tables employing the DATA
DIRECTORY
and INDEX DIRECTORY
options to overwrite existing table files in the MySQL data
directory. Use of the MySQL data directory in DATA
DIRECTORY
and INDEX DIRECTORY
is
now disallowed. This is now also true of these options when used
with partitioned tables and individual partitions of such
tables.
(Bug#32167, CVE-2008-2079)
See also Bug#39277.
Security Fix: MySQL clients linked against OpenSSL can be tricked not to check server certificates. (Bug#47320, CVE-2009-4028)
Security Fix: The server crashed if an account without the proper privileges attempted to create a stored procedure. (Bug#44658)
Incompatible Change:
For system variables that take values of ON
or OFF
, OF
was accepted as
a legal variable. Now system variables that take
“enumeration” values must be assigned the full
value. This affects some other variables that previously could
be assigned using unambiguous prefixes of allowable values, such
as tx_isolation
.
(Bug#34828)
Incompatible Change:
In binary installations of MySQL, the supplied
binary-configure script would start and
configure MySQL, even when command help was requested with the
--help
command-line option. The
--help
, if provided, will no longer start and
install the server.
(Bug#30954)
Incompatible Change: Access privileges for several statements are more accurately checked:
CHECK TABLE
requires some
privilege for the table.
CHECKSUM TABLE
requires
SELECT
for the table.
CREATE TABLE ... LIKE
requires
SELECT
for the source table
and CREATE
for the
destination table.
SHOW COLUMNS
displays
information only for those columns you have some privilege
for.
SHOW CREATE TABLE
requires
some privilege for the table (previously required
SELECT
).
SHOW CREATE VIEW
requires
SHOW VIEW
and
SELECT
for the view.
SHOW INDEX
requires some
privilege for any column.
SHOW OPEN TABLES
displays
only tables for which you have some privilege on any table
column.