Functionality Added or Changed
mysql_stmt_attr_get() C API
function now returns a boolean rather than an unsigned int for
Incompatible Change: Due to a change in the naming scheme for partitioning and subpartitioning files, it is not possible for the server to read partitioned tables created in previous MySQL versions. Attempting to read pre-5.1.6 partitioned tables with a MySQL 5.1.7 or later server now generates a suitable warning message.
Two possible workarounds are:
Create a nonpartitioned table with the same table
schema using a standard
TABLE statement (that is, with no
SELECT INTO to copy the
data into the nonpartitioned table before the upgrade
Alternatively, you can dump the table using
mysqldump prior to upgrading and reload
it afterward with
In either case, you should drop the pre-5.1.6 partitioned tables before upgrading to 5.1.6 or later.
If any partitioned tables that were created prior to MySQL
5.1.6 are present following an upgrade to MySQL 5.1.6 or
later, it is also not possible to read from the
table, nor will you be able to drop those tables or the
database or databases in which they are located. In this
event, you must:
Shut down mysqld
Manually delete the table, partition, and (if any) subpartition files
Restart the MySQL Server
(Bug #13437, Bug #16695)
TYPE = is no longer accepted as a synonym for the
ENGINE = table option. (
TYPE has been
deprecated since MySQL 4.0.)
SELECT ... FROM
INFORMATION_SCHEMA.FILES now raises a warning in the
event that the cluster has crashed.
In row-based replication, when executing a Rows_log_event, the
associated table was locked, the rows applied and the lock
released. This did not work since there are storage engines that
count locks and perform an autocommit when the number of locks
reach zero. Now we ensure that all table maps come before all
ROWS events in a statement.
Disk Data: Status messages have been added to ndb_restore to enable users to know that data files for Disk Data are being created. (Bug #16873)
IN NATURAL LANGUAGE MODE and
IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
modifiers for full-text searches. See
Full-Text Search Functions.
Several changes were made to make upgrades easier:
Added the mysql_upgrade program that checks all tables for incompatibilities with the current version of MySQL Server and repairs them if necessary. This program should be run for each MySQL upgrade (rather than mysql_fix_privilege_tables). See mysql_upgrade — Check and Upgrade MySQL Tables.
FOR UPGRADE option for the
CHECK TABLE statement. This
option checks whether tables are incompatible with the
current version of MySQL Server.
Creator privileges are now checked for all events before execution. (Bug #17289)
--wait-timeout option to
mysqlmanager to enable configuration of the
timeout for dropping an inactive connection, and increased the
default timeout from 30 seconds to 28,800 seconds (8 hours).
(Bug #15980, Bug #12674)
PROCESSLIST table to
All subpartitions within a given partitioned table are now guaranteed to have unique names. (Bug #15408)
charset command added to
mysql command-line client. By typing
\C (such as
\C UTF8), the client character set can be
changed without reconnecting.
The SQL mode in effect at the time an event is created or altered is recorded and used during event execution. (Bug #16407)
RENAME DATABASE statement.
mysqlimport now has a
option for loading data files in parallel using
MySQL Cluster: Performing large numbers of data manipulation statements on cluster tables using Disk Data could lead to a server crash.
TABLE of a Cluster table would fail with an
Unsupported error or crash the server.
(Bug #17210, Bug #16552)
UNIQUE keys in Cluster tables were limited to
225 bytes in length.
DELETE with a join in the
WHERE clause failed to retrieve any records
if both tables in the join did not have a primary key.
Following multiple forced shutdowns and restarts of data nodes,
DROP DATABASE could fail.
REPLACE failed when attempting to
update a primary key value in a Cluster table.
REDO log would become corrupted (and thus
unreadable) in some circumstances, due to a failure in the query
No error message was generated for setting
Cluster log file paths were truncated to 128 characters. They
may now be as long as
MAX_PATH (the maximum
path length permitted by the operating system).
MySQL Cluster: Table definitions were not shared between multiple SQL nodes in a cluster without binary logging being enabled. (Bug #17414)
No error message was generated for setting
An unhandled resources issue could cause node failure with a
DELETE FROM TABLE affecting thousands of
MySQL Cluster: ndbd restarts could sometimes fail due to incorrect memory access. (Bug #17417)
UPDATE with an inner join
failed to match any records if both tables in the join did not
have a primary key.
MySQL Cluster: Sharing of table names containing special characters between multiple SQL nodes was not handled correctly when binary logging was enabled (a timeout error resulted). (Bug #17415)
MySQL Cluster: The storage engine did not permit views to be updated. (Bug #17206)
SHOW CREATE TABLE would fail when
run against a table created in a different session.
Replication; Cluster Replication:
Row-based replication of a cluster failed to take
--binlog-ignore-db settings into
Previously, a stored function invocation was written to the
binary log as
invocation changes data and occurs within a nonlogged statement,
or if the function invokes a stored procedure that produces an
error. These invocations now are logged as
better control over error code checking (slave servers could
stop due to detecting a different error than occurred on the
ALTER DATABASE statement on a
replication master crashed the slaves.
BIT fields were not properly
handled when using row-based replication.
For a transaction that used
InnoDB tables, interruption of the
transaction due to a dropped connection on a master server
caused slaves to lose synchrony.
Disk Data: In some cases, a cluster using Disk Data tables could not be restarted following a normal shutdown. (Bug #16872)
Row-based replication was not set up correctly if a backup was
already in progress. For example, connecting a
mysqld instance to a cluster which was being
backed up would result in the message NDB: skipping
being written to the error log.
Cluster Replication: Cluster tables not having an explicit primary key could not be replicated. (Bug #14541)
Using an XPath expression containing
ExtractValue() caused the server
Statements that contained Unicode characters were not logged to the log tables correctly. (Bug #16905)
When used with the
function, an XPath expression having no leading
/” character would crash the
GROUP BY on column used in
WHERE clause could cause empty set to be
on a nonmax server caused a server crash. This also happened
following the creation of a table with a very large number
(hundreds) of partitions.
(Bug #16591, Bug #17141)
Creating an event and using a whitespace character other than
space following the
caused a server crash.
SHOW CREATE EVENT displayed no
myisam_ftdump did not work for
FULLTEXT indexes associated with a parser
SET sql_mode = ,
N > 31, did not work
InnoDB could display an incorrect error
message for a cascading update.
Race conditions between event creation, dropping, and execution could result in a server crash or hang. (Bug #17373)
MySQL server dropped client connection for certain
SELECT statements against views
defined that used
SELECT from the last partition
of a subpartitioned table having a
could crash the MySQL Server.
A statement containing
GROUP BY and
HAVING clauses could return incorrect results
HAVING clause contained logic that
FALSE for every row.
REPLACE INTO on a partitioned table
having a primary key would crash the server in the event of a
duplicate key error.
Killing a long-running query containing a subquery could cause a server crash. (Bug #14851)
Data truncations on non-
UNIQUE indexes could
InnoDB when using multi-byte character
CAST(... AS TIME) operations
returned different results when using versus not using
Partitioning with certain
HASH clauses caused an error when querying for a
partitioned column using an
(Bug #17430, Bug #17432)
Column counts were encoded incorrectly in the binary log for row-based logging format. (Bug #17678)
did not properly initialize the
'Y' for those accounts that should
SELECT privilege was required
for triggers that performed no selects.
If the query optimizer transformed a
clause in a subquery, it did not also transform the
HAVING clause if there was one, producing
DROP DATABASE did not drop events
for the database.
BY on a view could cause a server crash.
Execution times for scheduled events were not calculated correctly: the last execution time was used as a base rather than the actual start time. (Bug #17494)
Attempting to add a new partition to a table partitioned by a unique key would cause an Out of memory error. (Bug #17169)
UPDATE privilege was required
for triggers that performed no updates.
Trying to create a partitioned table with more than 32 attributes failed. (Bug #17179)
SELECT on a subpartitioned
table having a multiple-column
UNIQUE KEY, and whose partitioning function
used only the first column of the key, could cause
mysqld to crash.
SUBSTRING_INDEX() could yield
inconsistent results when applied with the same arguments to
consecutive rows in a query.
CHECKSUM TABLE returned different
MyISAM tables depending on whether
option was used.
SHOW CREATE TABLE produced
extraneous spaces following the keywords
DROP TABLE would sometimes fail
on a table having subpartitions that used the default storage
Repeated invocation of
my_end() caused corruption of character set
data and connection failure.
On Windows platforms, some attempts to create partitioned tables
from the command line would cause the
client to hang.