Functionality added or changed:
Incompatible change: The
InnoDB storage engine no longer ignores
trailing spaces when comparing BINARY or
VARBINARY column values. This means that
(for example) the binary values 'a' and
'a ' are now regarded as
unequal any time they are compared, as
they are in MyISAM tables. (Bug#14189)
See Section 11.4.2, “The BINARY and VARBINARY Types” for more information
about the BINARY and
VARBINARY types.
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 Section 5.6.2, “mysql_upgrade — Check Tables for MySQL Upgrade”.
Added the FOR UPGRADE option for the
CHECK TABLE statement. This option
checks whether tables are incompatible with the current
version of MySQL Server.
Added the --check-upgrade to
mysqlcheck that invokes CHECK
TABLE with the FOR UPGRADE
option.
NDB Cluster: The ndb_mgm
client commands and
node_id
START now
work with management nodes as well as data nodes. (However,
using node_id STOPALL for the
node_id continues to affect all
data nodes only.)
When using the GROUP_CONCAT() function
where the group_concat_max_len system
variable was greater than 512, the type of the result was
BLOB only if the query included an
ORDER BY clause; otherwise the result was a
VARCHAR.
The result type of the GROUP_CONCAT()
function is now VARCHAR only if the value
of the group_concat_max_len system variable
is less than or equal to 512. Otherwise, this function returns
a BLOB. (Bug#14169)
mysql no longer terminates data value display when it encounters a NUL byte. Instead, it displays NUL bytes as spaces. (Bug#16859)
Added the --wait-timeout option to
mysqlmanager to allow configuration of the
timeout for dropping an inactive connection, and increased the
default timeout from 30 seconds to 28,800 seconds (8 hours).
(Bug#12674, Bug#15980)
A number of performance issues were resolved that had
previously been encountered when using statements that
repeatedly invoked stored functions. For example, calling
BENCHMARK() using a stored function
executed much more slowly than when invoking it with inline
code that accomplished the same task. In most cases the two
should now execute with approximately the same speed. (Bug#15014, Bug#14946)
libmysqlclient now uses versioned symbols
with GNU ld. (Bug#3074)
NDB Cluster: More descriptive warnings are
now issued when inappropriate logging parameters are set in
config.ini. (Formerly, the warning issued
was simply Could not add logfile
destination.) (Bug#11331)
Added the --port-open-timeout option to
mysqld to control how many seconds the
server should wait for the TCP/IP port to become free if it
cannot be opened. (Bug#15591)
Repeated invocation of my_init() and
my_end() caused corruption of character set
data and connection failure. (Bug#6536)
Two new Hungarian collations are included:
utf8_hungarian_ci and
ucs2_hungarian_ci. These support the
correct sort order for Hungarian vowels. However, they do not
support the correct order for sorting Hungarian consonant
contractions; this issue will be fixed in a future release.
Wording of error 1329 changed to No data - zero rows fetched, selected, or processed. (Bug#15206)
The INFORMATION_SCHEMA now skips data
contained in unlistable/unreadable directories rather than
returning an error. (Bug#15851)
InnoDB now caches a list of unflushed files instead of
scanning for unflushed files during a table flush operation.
This improves performance when
--innodb-file-per-table is set on a system
with a large number of InnoDB tables. (Bug#15653)
The message for error 1109 changed from Unknown table ... in order clause to Unknown table ... in field list. (Bug#15091)
The mysqltest utility now converts all
CR/LF combinations to LF
to allow test cases intended for Windows to work properly on
UNIX-like systems. (Bug#13809)
The mysql_ping function will now retry if
the reconnect flag is set and error
CR_SERVER_LOST is encountered during the
first attempt to ping the server. (Bug#14057)
mysqldump now surrounds the
DEFINER, SQL SECURITY
DEFINER and WITH CHECK OPTION
clauses of a CREATE VIEW statement with
"not in version" comments to prevent errors in earlier
versions of MySQL. (Bug#14871)
New charset command added to
mysql command-line client. By typing
charset or
name\C (such as
name\C UTF8), the client character set can be
changed without reconnecting. (Bug#16217)
Client API will now attempt reconnect on TCP/IP if the
reconnect flag is set, as is the case with
sockets. (Bug#2845)
Bugs fixed:
Generating an AUTO_INCREMENT value through
a FEDERATED table did not set the value
returned by LAST_INSERT_ID(). (Bug#14768)
Cursors in stored routines could cause a server crash. (Bug#16887)
Setting the myisam_repair_threads system
variable to a value larger than 1 could cause corruption of
large MyISAM tables. (Bug#11527)
The length of a VARCHAR() column that used
the utf8 character set would increase each
time the table was re-created in a stored procedure or
prepared statement, eventually causing the CREATE
TABLE statement to fail. (Bug#13134)
type_decimal failed with the prepared
statement protocol. (Bug#17826)
The MySQL server could crash with out of memory errors when
performing aggregate functions on a DECIMAL
column. (Bug#17602)
A stored procedure failed to return data the first time it was called per connection. (Bug#17476)
Using DROP FUNCTION IF EXISTS
to drop a
user-defined function caused a server crash if the server was
running with the func_name--skip-grant-tables option.
(Bug#17595)
Using ALTER TABLE to increase the length of
a BINARY(
column caused column values to be padded with spaces rather
than M)0x00 bytes. (Bug#16857)
A large BIGINT value specified in a
WHERE clause could be treated differently
depending on whether it is specified as a quoted string. (For
example, WHERE bigint_col =
17666000000000000000 versus WHERE
bigint_col = '17666000000000000000'). (Bug#9088)
A natural join between INFORMATION_SCHEMA
tables failed. (Bug#17523)
A memory leak caused warnings on slaves for certain statements that executed without warning on the master. (Bug#16175)
The embedded server did not allow binding of columns to the
MYSQL_TYPE_VAR_STRING data type in prepared
statements. (Bug#12070)
The embedded server failed various tests in the automated test suite. (Bug#9630, Bug#9631, Bug#9633, Bug#10801, Bug#10911, Bug#10924, Bug#10925, Bug#10926, Bug#10930, Bug#15433)
Instance Manager erroneously accepted a list of instance
identifiers for the START INSTANCE and
STOP INSTANCE commands (should accept only
a single identifier). (Bug#12813)
For a transaction that used MyISAM and
InnoDB tables, interruption of the
transaction due to a dropped connection on a master server
caused slaves to lose synchrony. (Bug#16559)
SELECT with GROUP BY on
a view can cause a server crash. (Bug#16382)
If the query optimizer transformed a GROUP
BY clause in a subquery, it did not also transform
the HAVING clause if there was one,
producing incorrect results. (Bug#16603)
SUBSTRING_INDEX() could yield inconsistent
results when applied with the same arguments to consecutive
rows in a query. (Bug#14676)
The parser allowed CREATE AGGREGATE
FUNCTION for creating stored functions, even though
AGGREGATE does not apply. (It is used only
for CREATE FUNCTION only when creating
user-defined functions.) (Bug#16896)
Data truncations on non-UNIQUE indexes could crash InnoDB when using multi-byte character sets. (Bug#17530)
Triggers created without BEGIN and
END clauses resulted in “You have an
error in your SQL syntax” errors when dumping and
replaying a binary log. (Bug#16878)
The RENAME TABLE statement did not move
triggers to the new table. (Bug#13525)
Clients compiled from source with the
--without-readline did not save command
history from session to session. (Bug#16557)
Stored routines that contained only a single statement were
not written properly to the dumpfile when using
mysqldump. (Bug#14857)
For certain MERGE tables, the optimizer
wrongly assumed that using
index_merge/intersection was too expensive.
(Bug#17314)
Executing a SHOW CREATE VIEW query of an
invalid view caused the mysql_next_result
function of libMySQL.dll to hang. (Bug#15943)
BIT fields were not properly handled when
using row-based replication. (Bug#13418)
Issuing GRANT EXECUTE on a procedure would
display any warnings related to the creation of the procedure.
(Bug#7787)
NDB Cluster:
ndb_delete_all would run out of memory on
tables containing BLOB columns. (Bug#16693)
NDB Cluster: UNIQUE keys
in Cluster tables were limited to 225 bytes in length. (Bug#15918)
In a highly concurrent environment, a server crash or deadlock could result from execution of a statement that used stored functions or activated triggers coincident with alteration of the tables used by these functions or triggers. (Bug#16593)
Previously, a stored function invocation was written to the
binary log as DO
if the
invocation changes data and occurs within a non-logged
statement, or if the function invokes a stored procedure that
produces an error. These invocations now are logged as
func_name()SELECT
instead for
better control over error code checking (slave servers could
stop due to detecting a different error than occurred on the
master). (Bug#14769)
func_name()
CHECKSUM TABLE returned different values on
MyISAM table depending on whether the QUICK
or EXTENDED options were used. (Bug#8841)
MySQL server dropped client connection for certain SELECT
statements against views defined that used
MERGE algorithm. (Bug#16260)
A call to the IF() function using decimal
arguments could return incorrect results. (Bug#16272)
A statement containing GROUP BY and
HAVING clauses could return incorrect
results when the HAVING clause contained
logic that returned FALSE for every row.
(Bug#14927)
Using GROUP BY on column used in
WHERE clause could cause empty set to be
returned. (Bug#16203)
For a MySQL 5.0 server, using MySQL 4.1 tables in queries with
a GROUP BY clause could result in buffer
overrun or a server crash. (Bug#16752)
SET sql_mode =
, where
NN > 31, did not work properly.
(Bug#13897)
NDB Cluster: 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). (Bug#17411)
The mysql_stmt_store_result() C API
function could not be used for a prepared statement if a
cursor had been opened for the statement. (Bug#14013)
The mysql_stmt_sqlstate() C API function
incorrectly returned an empty string rather than
'00000' when no error occurred. (Bug#16143)
Using the TRUNCATE() function with a
negative number for the second argument on a
BIGINT column returned incorrect results.
(Bug#8461)
Instance Manager searched wrong location for password file on some platforms. (Bug#16499)
NDB Cluster: Following multiple forced
shutdowns and restarts of data nodes, DROP
DATABASE could fail. (Bug#17325)
NDB Cluster: An UPDATE
with an inner join failed to match any records if both tables
in the join did not have a primary key. (Bug#17257)
NDB Cluster: A 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. (Bug#17249)
The error message returned by perror
was prefixed with
OS error code: instead of
NDB error code:. (Bug#17235)
--ndb
NDB Cluster: In some cases, LOAD
DATA INFILE did not load all data into
NDB tables. (Bug#17081)
NDB Cluster: The REDO
log would become corrupted (and thus unreadable) in some
circumstances, due to a failure in the query handler. (Bug#17295)
NDB Cluster: No error message was generated
for setting NoOfFragmentLogFiles too low.
(Bug#13966)
NDB Cluster: No error message was generated
for setting MaxNoOfAttributes too low. (Bug#13965)
Binary distributions for Solaris contained files with group
ownership set to the non-existing wheel
group. Now the bin group is used. (Bug#15562)
The DECIMAL data type was not being handled
correctly with prepared statements. (Bug#16511)
The SELECT privilege was required for
triggers that performed no selects. (Bug#15196)
The UPDATE privilege was required for
triggers that performed no updates. (Bug#15166)
CAST(... AS TIME) operations returned
different results when using versus not using
prepared-statement protocol. (Bug#15805)
Improper memory handling for stored routine variables could cause memory overruns and binary log corruption. (Bug#15588)
Killing a long-running query containing a subquery could cause a server crash. (Bug#14851)
A FULLTEXT query in a prepared statement
could result in unexpected behavior. (Bug#14496)
A RETURN statement within a trigger caused
a server crash. RETURN now is disallowed
within triggers. To exit immediately, use
LEAVE. (Bug#16829)
STR_TO_DATE(1,NULL) caused a server crash.
(CVE-2006-3081,
Bug#15828)
An invalid stored routine could not be dropped. (Bug#16303)
When evaluation of the test in a CASE
failed in a stored procedure that contained a
CONTINUE handler, execution resumed at the
beginning of the CASE statement instead of at the end. (Bug#16568)
An INSERT statement in a stored procedure
corrupted the binary log. (Bug#16621)
When MyODBC or any other client called
my_init()/my_end()
several times, it caused corruption of charset data stored in
once_mem_pool. (Bug#11892)
When multiple handlers are created for the same MySQL error number within nested blocks, the outermost handler took precedence. (Bug#15011)
Certain LEAVE statements in stored
procedures were not properly optimized. (Bug#15737)
Setting InnoDB path settings to an empty string caused InnoDB storage engine to crash upon server startup. (Bug#16157)
InnoDB used full explicit table locks in trigger processing. (Bug#16229)
Server crash when dropping InnoDB constraints named
.
(Bug#16387)
TABLENAME_ibfk_0
Corrected race condition when dropping the adaptive hash index for a B-tree page in InnoDB. (Bug#16582)
The mysql_real_connect() C API function
incorrectly reset the MYSQL_OPT_RECONNECT
option to its default value. (Bug#15719)
InnoDB: After upgrading an
InnoDB table having a VARCHAR
BINARY column created in MySQL 4.0 to MySQL 5.0,
update operations on the table would cause the server to
crash. (Bug#16298)
Trying to compile the server on Windows generated a stack
overflow warning due to a recursive definition of the internal
Field_date::store() method. (Bug#15634)
The use of LOAD INDEX within a stored
routine was permitted and caused the server to crash.
Note: LOAD
INDEX statements within stored routines
are not supported, and now yield an error
if attempted. This behavior is intended. (Bug#14270)
The mysqlbinlog utility did not output
DELIMITER statements, causing syntax errors
for stored routine creation statements. (Bug#11312)
NDB Cluster returned incorrect Can't find
file error for OS error 24, changed to Too
many open files. (Bug#15020)
Performing a RENAME TABLE on an InnoDB
table when the server is started with the
--innodb-file-per-table and the data
directory is a symlink caused a server crash. (Bug#15991)
Multi-byte path names for LOAD DATA and
SELECT ... INTO OUTFILE caused errors.
Added the character_set_filesystem system
variable, which controls the interpretation of string literals
that refer to filenames. (Bug#12448)
Certain subqueries where the inner query is the result of a aggregate function would return different results on MySQL 5.0 than on MySQL 4.1. (Bug#15347)
Attempts to create FULLTEXT indexes on VARCHAR columns larger than 1000 bytes resulted in error. (Bug#13835)
Characters in the gb2312 and
euckr character sets which did not have
Unicode mappings were truncated. (Bug#15377)
Certain nested LEFT JOIN operations were not properly optimized. (Bug#16393)
GRANT statements specifying schema names
that included underscore characters (i.e.
my_schema) did not match if the underscore
was escaped in the GRANT statement (i.e.
GRANT ALL ON `my\_schema` ...). (Bug#14834)
Running out of diskspace in the location specified by the
tmpdir option resulted in incorrect error
message. (Bug#14634)
Test suite sp test left behind tables when
the test failed that could cause future tests to fail. (Bug#15866)
UPDATE statement crashed multi-byte
character set FULLTEXT index if update
value was almost identical to initial value only differing in
some spaces being changed to . (Bug#16489)
A SELECT query which contained a
GROUP_CONCAT() and an ORDER
BY clause against the
INFORMATION_SCHEMA resulted in an empty
result set. (Bug#15307)
The --replicate-do and
--replicate-ignore options were not being
enforced on multiple-table statements. (Bug#15699, Bug#16487)
A prepared statement created from a SELECT ...
LIKE query (such as PREPARE stmt1 FROM
'SELECT col_1 FROM tedd_test WHERE col_1 LIKE ?';)
would begin to produce erratic results after being executed
repeatedly numerous (thousands) of times. (Bug#12734)
The server would crash when the size of an
ARCHIVE table grew beyond 2GB. (Bug#15787)
Created a user function with an empty string (that is,
CREATE FUNCTION ''()), was accepted by the
server. Following this, calling SHOW FUNCTION
STATUS would cause the server to crash. (Bug#15658)
In some cases the query optimizer did not properly perform multiple joins where inner joins followed left joins, resulting in corrupted result sets. (Bug#15633)
The absence of a table in the left part of a left or right join was not checked prior to name resolution, which resulted in a server crash. (Bug#15538)
NDBCluster: A bitfield whose offset and
length totaled 32 would crash the cluster. (Bug#16125)
NDBCluster: Upon the completion of a scan
where a key request remained outstanding on the primary
replica and a starting node died, the scan did not terminate.
This caused incompleted error handling of the failed node.
(Bug#15908)
NDBCluster: The
ndb_autodiscover test failed sporadically
due to a node not being permitted to connect to the cluster.
(Bug#15619)
NDBCluster: When running more than one
management process in a cluster:
ndb_mgm -c
host:port
-e "node_id stop"
would stop a management process running only on the same
system on which the command was issued.
ndb_mgm -e "shutdown" failed to shut down any management processes at all.
The contents of fill_help_tables.sql
could not be loaded in strict SQL mode. (Bug#15760)
fill_help_tables.sql was not included in
binary distributions for several platforms. (Bug#15759)
An INSERT ... SELECT statement between
tables in a MERGE set can return errors
when statement involves insert into child table from merge
table or vice-versa. (Bug#5390)
Certain permission management statements could create a
NULL hostname for a user, resulting in a
server crash. (Bug#15598)
A COMMIT statement followed by a
ALTER TABLE statement on a BDB table caused
server crash. (Bug#14212)
A DELETE statement involving a
LEFT JOIN and an IS NULL
test on the right-hand table of the join crashed the server
when the innodb_locks_unsafe_for_binlog
option was enabled. (Bug#15650)
Performing an ORDER BY on an indexed
ENUM column returned error. (Bug#15308)
The NOT FOUND condition handler for stored
procedures did not distinguish between a NOT
FOUND condition and an exception or warning. (Bug#15231)
A stored procedure with an undefined variable and an exception handler would hang the client when called. (Bug#14498)
Subselect could return wrong results when records cache and grouping was involved. (Bug#15347)
Temporary table aliasing did not work inside stored functions. (Bug#12198)
MIN() and MAX()
operations were not optimized for views. (Bug#16016)
Using an aggregate function as the argument for a HAVING
clause would result in the aggregate function always returning
FALSE. (Bug#14274)
Parallel builds occasionally failed on Solaris. (Bug#16282)
The FORCE INDEX keyword in a query would
prevent an index merge from being used where an index merge
would normally be chosen by the optimizer. (Bug#16166)
The COALESCE() function truncated data in a
TINYTEXT column. (Bug#15581)
InnoDB: Comparison of indexed
VARCHAR CHARACTER SET ucs2 COLLATE ucs2_bin
columns using LIKE could fail. (Bug#14583)
An attempt to open a table that requires a disabled storage engine could cause a server crash. (Bug#15185)
Issuing a DROP USER command could cause
some users to encounter a
error. (Bug#15775)
hostname is not allowed to
connect to this MySQL server
Setting innodb_log_file_size to a value
greater than 4G crashed the server. (Bug#15108)
A SELECT of a stored function that
references the INFORMATION_SCHEMA could
crash the server. (Bug#15533)
Tarball install package was missing a proper
fill_help_tables.sql file. (Bug#15151)

User Comments
Add your own comment.