6 Changes in MySQL 5.1.69 (2013-04-18)

Performance; InnoDB:
The 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 DROP operation.
(Bug #16067973)

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.

Note

It remains possible to replicate from a table to a same-named
view using statement-based logging.

InnoDB:
For InnoDB tables, if a PRIMARY
KEY on a VARCHAR column
(or prefix) was empty, index page compression could fail.
(Bug #16400920)

InnoDB:
For debug builds, InnoDB status exporting was
subject to a race condition that could cause a server exit.
(Bug #16292043)

InnoDB:
Arithmetic underflow during page compression for
CREATE TABLE on an
InnoDB table could cause a server exit.
(Bug #16089381)

InnoDB:
This fix makes MySQL more responsive to
KILL QUERY
statements when the query is accessing an
InnoDB table.
(Bug #14704286)

InnoDB:
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.
(Bug #13997024)

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)

Partitioning:
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)

Replication:
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)

Replication:
Backtick (`) 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 issue 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 GRANT
statement could cause the server to exit.
(Bug #16372927)

Incorrect results were returned if a query contained a subquery
in an IN clause which contained an
XOR operation in the
WHERE clause.
(Bug #16311231)

yaSSL did not perform proper padding checks, but instead
examined only the last byte of cleartext and used it to
determine how many bytes to remove.
(Bug #16218104)

Invocation of the range optimizer for a NULL
select caused the server to exit.
(Bug #16192219)

SHOW COLUMNS on a view defined as
a UNION of
Geometry columns could cause the server to
exit.
(Bug #14362617)

A LIKE pattern with too many
'%' wildcards could cause a segmentation
fault.
(Bug #14303860)

SET var_name =
VALUES(col_name) could
cause the server to exit. This syntax is now prohibited because
in SET context there is no column name and
the statement returns
ER_BAD_FIELD_ERROR.
(Bug #14211565)

The 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.
(Bug #14163155)

Subqueries with OUTER JOIN could return
incorrect results if the subquery referred to a column from
another SELECT.
(Bug #13068506)

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.
(Bug #11908153)

mysql_install_db did not escape
'_' in the host name for statements written
to the grant tables.
(Bug #11746817)

Adjusted MySQL configuration to account for change in Automake
1.12 that produced sql_yacc.hh rather than
sql_yacc.h as expected by
sql/Makefile.am.
(Bug #67177, Bug #15967374)

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)

Incorrect metadata could be produced for columns returned from
some views.
(Bug #65379, Bug #14096619)