Functionality Added or Changed
Important Change:
The YEAR(2) data type is now
deprecated because it is problematic. Support for
YEAR(2) will be removed in a
future release of MySQL. For more information, see
YEAR(2) Limitations and Migrating to YEAR(4).
The mysql_clear_password cleartext
client-side authentication plugin is intended for authentication
schemes that require the server to receive the password as
entered on the client side, without hashing. Because the
password is sent in the clear, this plugin should be used within
the context of a secure connection, such as an SSL connection,
to avoid exposing the password over the network. To make
inadvertent use of this plugin less likely, it is now required
that clients explicitly enable it. This can be done several
ways:
Set the LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN
environment variable to a value that begins with
1, Y, or
y. This enables the plugin for all client
connections.
The mysql, mysqladmin,
and mysqlslap client programs support an
--enable-cleartext-plugin option that
enables the plugin on a per-invocation basis.
The mysql_options() C API
function supports a
MYSQL_ENABLE_CLEARTEXT_PLUGIN option that
enables the plugin on a per-connection basis. Also, any
program that uses libmysqlclient and
reads option files can enable the plugin by including an
enable-cleartext-plugin option in an
option group read by the client library.
Bugs Fixed
InnoDB:
A race condition could cause assertion errors during a
DROP TABLE statement for an
InnoDB table. Some internal
InnoDB functions did not correctly determine
if a tablespace was missing; other functions did not handle the
error code correctly if a tablespace was missing.
(Bug #14251529)
InnoDB:
If a row was deleted from an InnoDB table,
then another row was re-inserted with the same primary key
value, an attempt by a concurrent transaction to lock the row
could succeed when it should have waited. This issue occurred if
the locking select used a WHERE clause that
performed an index scan using a secondary index.
(Bug #14100254, Bug #65389)
InnoDB:
Using the KILL statement to
terminate a query could cause an unnecessary message in the
error log:
[ERROR] Got error -1 when reading table table_name
(Bug #13933132)
InnoDB:
An assertion could be raised if an
InnoDB table was moved to a
different database using
ALTER TABLE ...
RENAME while the database was being dropped by
DROP DATABASE.
(Bug #13982017)
InnoDB:
For an InnoDB table with a trigger, under the
setting
innodb_autoinc_lock_mode=1,
sometimes auto-increment values could be interleaved when
inserting into the table from two sessions concurrently. The
sequence of auto-increment values could vary depending on
timing, leading to data inconsistency in systems using
replication.
(Bug #12752572, Bug #61579)
Partitioning: Insertion of an out-of-range value into a partitioned table was not handled correctly in all cases. This is a regression that first appeared in MySQL 5.5.23. (Bug #14005441, Bug #65587)
Replication:
An event whose length exceeded the size of the master dump
thread's
max_allowed_packet
caused replication to fail. This could occur when updating many
large rows and using row-based replication.
As part of this fix, a new server option
--slave-max-allowed-packet
is added, which permits max_allowed_packet to be exceeded by the
slave SQL and I/O threads. Now the size of a packet transmitted
from the master to the slave is checked only against this value
(available as the value of the
slave_max_allowed_packet server
system variable), and not against the value of
max_allowed_packet.
(Bug #12400221, Bug #60926)
Replication:
Statements such as
UPDATE ... WHERE
are
flagged as unsafe for statement-based logging, despite the fact
that such statements are actually safe. In cases where a great
many such statements were run, this could lead to disk space
becoming exhausted do to the number of such false warnings being
logged. To prevent this from happening, a warning suppression
mechanism is introduced. This warning suppression acts as
follows: Whenever the 50 most recent
primary_key_column =
constant LIMIT 1ER_BINLOG_UNSAFE_STATEMENT
warnings have been generated more than 50 times in any 50-second
period, warning suppression is enabled. When activated, this
causes such warnings not to be written to the error log;
instead, for each 50 warnings of this type, a note is written to
the error log stating The last warning was repeated
. This continues
as long as the 50 most recent such warnings were issued in 50
seconds or less; once the number of warnings has decreased below
this threshold, the warnings are once again logged normally.
N times in last
S seconds
The fix for this issue does not affect how these warnings are reported to MySQL clients; a warning is still sent to the client for each statement that generates the warning. This fix also does not make any changes in how the safety of any statement for statement-based logging is determined. (Bug #11759333, Bug #51638)
References: See also Bug #11751521, Bug #42415.
Replication: After upgrading a replication slave to MySQL 5.5.18 or later, enabling the query cache eventually caused the slave to fail. (Bug #64624, Bug #14005409)
The server did not build with gcc 4.7. (Bug #14238406)
When the index enforcing a foreign key constraint was dropped
while foreign_key_checks=0, further
operations involving the foreign key column could cause a
serious error after the
foreign_key_checks
option was re-enabled.
(Bug #14025221)
Certain arguments to RPAD() could
lead to “uninitialized variable” warnings.
(Bug #14039955)
COUNT(DISTINCT(SELECT 1)) could be evaluated
incorrectly if the optimizer used Loose Index Scan.
(Bug #13444084)
References: See also Bug #13813126.
The presence of a file named .empty in the
test database prevented that database from
being dropped.
(Bug #12845091)
For some subqueries that should be executed using a range scan on a nonprimary index and required use of filesort, only the first execution of the subquery was done as a range scan. All following executions were done as full table scans, resulting in poor performance. (Bug #12667154)
mysqldump could dump views and the tables on which they depend in such an order that errors occurred when the dump file was reloaded. (Bug #44939, Bug #11753490)
MySQL builds failed with CMake 2.8.8. (Bug #65050, Bug #14017376)
COUNT(DISTINCT(IF ...)) could be evaluated
incorrectly if the optimizer used Loose Index Scan.
(Bug #64445, Bug #13813126)
References: See also Bug #13444084.
File access by the ARCHIVE storage
engine was not instrumented and thus not shown in Performance
Schema tables.
(Bug #63340, Bug #13417440)
mysqlbinlog exited with no error code if file write errors occurred. (Bug #55289, Bug #11762667)
Using CONCAT() to construct a
pattern for a LIKE
pattern match could result in memory corrupting and match
failure.
(Bug #59140, Bug #11766101)
yaSSL rejected valid SSL certificates that OpenSSL accepts. (Bug #54348, Bug #11761822)
Sessions could end up deadlocked when executing a combination of
SELECT,
DROP TABLE,
KILL, and
SHOW ENGINE INNODB
STATUS.
(Bug #60682, Bug #12636001)
If an account had a nonzero
MAX_USER_CONNECTIONS value, that value was
not always respected.
(Bug #65104, Bug #14003080)
