Functionality added or changed:
mysqltest now installs signal handlers and generates a stack trace if it crashes. (Bug#37003)
mysqltest was changed to be more robust in the case of a race condition that can occur for rapid disconnect/connect sequences with the server. The account used by mysqltest could reach its allowed simultaneous-sessions user limit if the connect attempt occurred before the server had fully processed the preceding disconnect. mysqltest now checks specificaly for a user-limits error when it connects; if that error occurs, it delays briefly before retrying. (Bug#23921)
Improvements made to MySQL Backup (the BACKUP
DATABASE and RESTORE statements):
A native driver for the MyISAM storage
engine is included. This results in faster times for backup
and restore operations, although the size of backup image
files is larger.
Bugs fixed:
Security Enhancement:
The server consumed excess memory while parsing statements with
hundreds or thousands of nested boolean conditions (such as
OR (OR ... (OR ... ))). This could lead to a
server crash or incorrect statement execution, or cause other
client statements to fail due to lack of memory. The latter
result constitutes a denial of service.
(Bug#38296)
Partitioning:
A LIST partitioned MyISAM
table returned erroneous results when an index was present on a
column in the WHERE clause and NOT
IN was used on that column.
Searches using the index were also much slower then if the index were not present. (Bug#35931)
Partitioning:
SELECT COUNT(*) was not correct for some
partitioned tables using a storage engine that did not support
HA_STATS_RECORDS_IS_EXACT. Tables using the
ARCHIVE storage engine were known to be
affected.
This was because ha_partition::records() was
not implemented, and so the default
handler::records() was used in its place.
However, this is not correct behavior if the storage engine does
not support HA_STATS_RECORDS_IS_EXACT.
The solution was to implement
ha_partition::records() as a wrapper around
the underlying partition records.
As a result of this fix, the rows column in the output of
EXPLAIN PARTITIONS now includes the total
number of records in the partitioned table.
(Bug#35745)
Replication:
When AUTOCOMMIT was set equal to
1 after starting a transaction, the binary
log did not commit the outstanding transaction. The reason this
happened was that the binary log commit function saw only the
values of the new settings, and decided that there was nothing
to commit.
This issue was first observed when using the
Falcon storage engine, but it is possible
that it affected other storage engines as well.
(Bug#37221)
Replication: Some kinds of internal errors (such as Out of stack) cuased the server to crash. (Bug#37150)
Replication:
Row-based replication did not correctly copy
TIMESTAMP values from a big-endian storage
engine to a little-endian storage engine.
(Bug#37076)
Replication:
Performing an insert on a table having an
AUTO_INCREMENT column and an
INSERT trigger that was being replicated from
a master running MySQL 5.0 or any version of MySQL 5.1 up to and
including MySQL 5.1.11 to a slave running MySQL 5.1.12 or later
caused the replication slave to crash.
(Bug#36443)
See also Bug#33029
Server-side cursors were not initialized properly, which could cause a server crash. (Bug#38486)
The fix for Bug#20748 caused a problem such that on Unix, MySQL
programs looked for options in ~/my.cnf
rather than the standard location of
~/.my.cnf.
(Bug#38180)
MyISAM tables with non-ASCII characters in
their names could not be backed up because the
MyISAM native backup driver did not handle
them properly.
(Bug#38045)
If the table definition cache contained tables with many
BLOB columns, much memory could be allocated
to caching BLOB values. Now a size limit on
the cached BLOB values is enforced.
(Bug#38002)
For InnoDB tables, ORDER BY ...
DESC sometimes returned results in ascending order.
(Bug#37830)
The server returned unexpected results if a right side of the
NOT IN clause consisted of the
NULL value and some constants of the same
type. For example, this query might return 3, 4, 5, and so forth
if a table contained those values:
SELECT * FROM t WHERE NOT t.id IN (NULL, 1, 2);
Setting the session value of the
innodb_table_locks system variable caused a
server crash.
(Bug#37669)
Nesting of IF() inside of
SUM() could cause an extreme
server slowdown.
(Bug#37662)
For BACKUP DATABASE, if the WITH
COMPRESSION clause was not used, an uninitialized
variable could cause unpredictable results.
(Bug#37654)
Killing a query that used an EXISTS subquery
as the argument to SUM() or
AVG() caused a server crash.
(Bug#37627)
NOT IN subqueries that selected
MIN() or
MAX() values but produced an
empty result could cause a server crash.
(Bug#37004)
SELECT DISTINCT from a simple view on an
InnoDB table, where all selected columns
belong to the same unique index key, returned incorrect results.
(Bug#36632)
RESTORE could fail if the server on which the
restore operation took place had enabled triggers or events.
(Bug#36530)
CHAR(256 USING utf32) could
generate a result with an incorrect length and result in a
server crash.
(Bug#36418)
The UUID() function returned
UUIDs with the wrong time; this was because the offset for the
time part in UUIDs was miscalculated.
(Bug#35848)
The configure script did not allow
utf8_hungarian_ci to be specified as the
default collation.
(Bug#35808)
Freeing of an internal parser stack during parsing of complex stored programs caused a server crash. (Bug#35577, Bug#37269, Bug#37728)
The code for detecting a byte order mark (BOM) caused mysql to crash for empty input. (Bug#35480)
Index scans performed with the sort_union()
access method returned bad data when the
sort_buffer_size limit was reached.
(Bug#35478)
BACKUP DATABASE caused a server crash if it
attempted to back up a view that depended on another view.
(Bug#34758, Bug#35347)
A significant slowdown occurred when many
SELECT statements that return many rows from
InnoDB tables were running concurrently.
(Bug#34409)
mysql_install_db failed if the server was
running with a SQL mode of TRADITIONAL. This
program now resets the SQL mode internally to avoid this
problem.
(Bug#34159)
Fast ALTER TABLE operations were not fast for
columns that used multibyte character sets.
(Bug#33873)
ORDER BY failed to take into account accents
and lettercases in multi-level collations
(latin2_czech_cs and
cp1250_czech_cs).
(Bug#33791, Bug#30462)
The internal functions my_getsystime(),
my_micro_time(), and
my_micro_time_and_time() did not work
correctly on Windows. One symptom was that uniqueness of
UUID() values could be
compromised.
(Bug#33748)
The SHOW FUNCTION CODE and SHOW
PROCEDURE CODE statements are not present in non-debug
builds, but attempting to use them resulted in a “syntax
error” message. Now the error message indicates that the
statements are disabled and that you must use a debug build.
(Bug#33637)
If a large number of databases were named in the BACKUP
DATABASE statement, the server crashed.
(Bug#33568)
Cached queries that used 256 or more tables were not properly
cached, so that later query invalidation due to a
TRUNCATE TABLE for one of the tables caused
the server to hang.
(Bug#33362)
BACKUP DATABASE did not properly set the
flags in the first two bytes of the backup image.
(Bug#33120)
Unindexed ORDER BY did not work on short
utf32 columns, or on utf16
columns with a short max_sort_length value.
(Bug#33073)
After an upgrade to MySQL 6.0.4 or higher, columns that used the
old 3-byte Unicode utf8 character set are
treated as having the utf8mb3 character set.
mysql_upgrade did not convert all system
tables in the mysql database to use the new
4-byte Unicode utf8 character set rather than
utf8mb3. This caused problems such as that
the event scheduler would not start.
mysql_upgrade now performs the
utf8mb3 to utf8 conversion
for system tables.
(Bug#33002, Bug#33053)
It was possible to insert invalid Unicode characters (with code
point values greater than U+10FFFF) into utf8
and utf32 columns.
(Bug#32914)
Inserting CURRENT_TIME,
CURRENT_DATE, or
CURRENT_TIMESTAMP into a
VARCHAR column didn't work for non-ASCII
character sets such as ucs2,
utf16, or utf32.
(Bug#32390)
mysql_upgrade attempted to use the
/proc filesystem even on systems that do
not have it.
(Bug#31605)
Making INFORMATION_SCHEMA the default
database caused the DROP TABLESPACE statement
to be disabled.
(Bug#31302)
The Serbian translation for the
ER_INCORRECT_GLOBAL_LOCAL_VAR error was
corrected.
(Bug#29738)
The XPath boolean() function did not cast
string and nodeset values correctly in some cases. It now
returns TRUE for any non-empty string or
nodeset and 0 for a NULL string, as specified
in the XPath standard..
(Bug#26051)
The FLUSH PRIVILEGES statement did not
produce an error when it failed.
(Bug#21226)
After executing a prepared statement that accesses a stored function, the next execution would fail to find the function if the stored function cache was flushed in the meantime. (Bug#12093, Bug#21294)
perror did not work for errors described in
the sql/share/errmsg.txt file.
(Bug#10143)

User Comments
Add your own comment.