The world's most popular open source database
Functionality added or changed:
Important Change: Incompatible Change:
The FEDERATED storage engine is now disabled
by default in binary distributions. The engine is still
available and can be enabled by starting the server with the
--federated option.
(Bug#37069)
Incompatible Change:
The engines column in the
mysql.online_backup table has been renamed to
drivers to better reflect its contents.
(Bug#34965)
Incompatible Change:
A change has been made to the way that the server handles
prepared statements. This affects prepared statements processed
at the SQL level (using the
PREPARE
statement) and those processed using the binary client-server
protocol (using the
mysql_stmt_prepare() C API
function).
Previously, changes to metadata of tables or views referred to in a prepared statement could cause a server crash when the statement was next executed, or perhaps an error at execute time with a crash occurring later. For example, this could happen after dropping a table and recreating it with a different definition.
Now metadata changes to tables or views referred to by prepared
statements are detected and cause automatic repreparation of the
statement when it is next executed. Metadata changes occur for
DDL statements such as those that create, drop, alter, rename,
or truncate tables, or that analyze, optimize, or repair tables.
Repreparation also occurs after referenced tables or views are
flushed from the table definition cache, either implicitly to
make room for new entries in the cache, or explicitly due to
FLUSH TABLES.
Repreparation is automatic, but to the extent that it occurs, performance of prepared statements is diminished.
Table content changes (for example, with
INSERT or
UPDATE) do not cause
repreparation, nor do SELECT
statements.
An incompatibility with previous versions of MySQL is that a
prepared statement may now return a different set of columns or
different column types from one execution to the next. For
example, if the prepared statement is SELECT * FROM
t1, altering t1 to contain a
different number of columns causes the next execution to return
a number of columns different from the previous execution.
Older versions of the client library cannot handle this change in behavior. For applications that use prepared statements with the new server, an upgrade to the new client library is strongly recommended.
Along with this change to statement repreparation, the default
value of the
table_definition_cache system
variable has been increased from 128 to 256. The purpose of this
increase is to lessen the chance that prepared statements will
need repreparation due to referred-to tables/views having been
flushed from the cache to make room for new entries.
A new status variable, Com_stmt_reprepare,
has been introduced to track the number of repreparations.
(Bug#27420, Bug#27430, Bug#27690)
Bugs fixed:
Important Change: Security Fix: Additional corrections were made for the symlink-related privilege problem originally addressed in MySQL 6.0.5. The original fix did not correctly handle the data directory pathname if it contained symlinked directories in its path, and the check was made only at table-creation time, not at table-opening time later. (Bug#32167, CVE-2008-2079)
See also Bug#39277.
Incompatible Change:
SHOW STATUS took a lot of CPU
time for calculating the value of the
Innodb_buffer_pool_pages_latched
status variable. Now this variable is calculated and included in
the output of SHOW STATUS only
when the UNIV_DEBUG symbol is defined at
server build time.
(Bug#36600)
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.
Incompatible Change:
Certain characters were sorted incorrectly for the following
collations: TILDE and GRAVE ACCENT in
big5_chinese_ci; LATIN SMALL LETTER J in
cp866_general_ci; TILDE in
gb2312_chinese_ci; and TILDE in
gbk_chinese_ci.
As a result of this fix, any indexes on columns that use these
collations and contain the affected characters must be rebuilt
when upgrading to 6.0.6 or higher. To do this, use
ALTER TABLE to drop and re-add
the indexes, or mysqldump to dump the
affected tables and mysql to reload the dump
file.
(Bug#25420)
Incompatible Change:
An additional correction to the original MySQL 6.0.4 fix was
made to normalize directory names before adding them to the list
of directories. This prevents /etc/ and
/etc from being considered different, for
example.
(Bug#20748)
See also Bug#38180.

