Functionality Added or Changed
MySQL no longer uses the default OpenSSL compression. (Bug #16235681)
DROP TABLE statement for a
table using compression
could be slower than necessary, causing a stall for several
seconds. MySQL was unnecessarily decompressing
pages in the
buffer pool related to
the table as part of the
Important Note; Replication: Using row-based logging to replicate from a table to a same-named view led to a failure on the slave. Now, when using row-based logging, the target object type is checked prior to performing any DML, and an error is given if the target on the slave is not actually a table.
It remains possible to replicate from a table to a same-named view using statement-based logging.
(Bug #11752707, Bug #43975)
page_zip_available function would count
some fields twice.
InnoDB tables, if a
KEY on a
(or prefix) was empty, index page compression could fail.
For debug builds,
InnoDB status exporting was
subject to a race condition that could cause a server exit.
Arithmetic underflow during page compression for
CREATE TABLE on an
InnoDB table could cause a server exit.
This fix makes MySQL more responsive to
statements when the query is accessing an
When printing out long semaphore wait diagnostics,
sync_array_cell_print() ran into a
segmentation violation (SEGV) caused by a race condition. This
fix addresses the race condition by allowing the cell to be
freed while it is being printed.
InnoDB: Killing a query caused an InnoDB assertion failure when the same table (cursor) instance was used again. This is the result of a regression error introduced by the fix for Bug#14704286. The fix introduced a check to handle kill signals for long running queries but the cursor was not restored to the proper state. (Bug #68051, Bug #16088883)
InnoDB: The length of internally generated foreign key names was not checked. If internally generated foreign key names were over the 64 character limit, this resulted in invalid DDL from SHOW CREATE TABLE. This fix checks the length of internally generated foreign key names and reports an error message if the limit is exceeded. (Bug #44541, Bug #11753153)
A query on a table partitioned by range and using
TO_DAYS() as a partitioing
function always included the first partition of the table when
pruning. This happened regardless of the range employed in the
BETWEEN clause of such a query.
(Bug #15843818, Bug #49754)
A zero-length name for a user variable (such as
@``) was incorrectly considered to be a sign
of data or network corruption when reading from the binary log.
(Bug #16200555, Bug #68135)
`) characters were not always
handled correctly in internally generated SQL statements, which
could sometimes lead to errors on the slave.
(Bug #16084594, Bug #68045)
References: This bug is a regression of Bug #14548159, Bug #66550.
Replication: It was possible in certain cases—immediately after detecting an EOF in the dump thread read event loop, and before deciding whether to change to a new binary log file—for new events to be written to the binary log before this decision was made. If log rotation occurred at this time, any events that occurred following EOF detection were dropped, resulting in loss of data. Now in such cases, steps are taken to make sure that all events are processed before allowing the log rotation to take place. (Bug #13545447, Bug #67929)
References: See also Bug #16016886.
A long database name in a
statement could cause the server to exit.
Incorrect results were returned if a query contained a subquery
IN clause which contained an
XOR operation in the
Invocation of the range optimizer for a
select caused the server to exit.
yaSSL did not perform proper padding checks, but instead examined only the last byte of plaintext and used it to determine how many bytes to remove. (Bug #16218104)
LIKE pattern with too many
'%' wildcards could cause a segmentation
cause the server to exit. This syntax is now prohibited because
SET context there is no column name and
the statement returns
COM_CHANGE_USER command in the
client/server protocol did not properly use the character set
number in the command packet, leading to incorrect character set
conversion of other values in the packet.
OUTER JOIN could return
incorrect results if the subquery referred to a column from
Field_geom::reset() failed to reset its base
Field_blob. The range optimizer used the
uninitialized field during optimization and execution, causing
the server to exit.
mysql_install_db did not escape
'_' in the host name for statements written
to the grant tables.
PARTITION BY KEY on a
column raised a debugging assertion.
(Bug #52121, Bug #11759782)
The optimizer used loose index scan for some queries for which this access method is inapplicable. (Bug #42785, Bug #11751794)
If a dump file contained a view with one character set and collation defined on a view with a different character set and collation, attempts to restore the dump file failed with an “illegal mix of collations” error. (Bug #65382, Bug #14117025)
REPLACE() function produced
incorrect results when a user variable was supplied as an
argument and the operation was performed on multiple rows.
(Bug #49271, Bug #11757250)
View access in low memory conditions could raise a debugging assertion. (Bug #39307, Bug #11749556)
max_connections to a
value less than the current number of open connections caused
the server to exit.
(Bug #44100, Bug #11752803)
Incorrect metadata could be produced for columns returned from some views. (Bug #65379, Bug #14096619)
For debug builds, some queries with
SELECT ... FROM
DUAL nested subqueries raised an assertion.
(Bug #60305, Bug #11827369)
Adjusted MySQL configuration to account for change in Automake
1.12 that produced
sql_yacc.hh rather than
sql_yacc.h as expected by
(Bug #67177, Bug #15967374)