Functionality Added or Changed
Incompatible Change:
The CHAR() function now returns a
binary string rather than a string in the connection character
set. An optional USING
clause may be used
to produce a result in a specific character set instead. Also,
arguments larger than 256 produce multiple characters. They are
no longer interpreted modulo 256 to produce a single character
each. These changes may cause some incompatibilities, as noted
in Upgrading from MySQL 4.1 to 5.0.
charset
Incompatible Change:
For BINARY columns, the pad value
and how it is handled has changed. The pad value for inserts now
is 0x00 rather than space, and there is no
stripping of the pad value for selects. For details, see
The BINARY and VARBINARY Types.
MySQL Cluster: The ndb_mgm client now reports node startup phases automatically. (Bug #16197)
MySQL Cluster:
A new “smart” node allocation algorithm means that
it is no longer necessary to use sequential IDs for cluster
nodes, and that nodes not explicitly assigned IDs should now
have IDs allocated automatically in most cases. In practical
terms, this means that it is now possible to assign a set of
node IDs such as 1, 2,
4, 5 without an error
being generated due to the missing 3.
(Bug #13009)
MySQL Cluster: A number of new or improved error messages have been implemented in this release to provide better and more accurate diagnostic information regarding cluster configuration issues and problems. (Bug #12786, Bug #11749, Bug #13197, Bug #11739, Bug #12044)
The following statements now cause an implicit
COMMIT:
(Bug #13343)
When declaring a local variable (or parameter) named
password or name, and
setting it with
SET
(for example, SET password = ''), the new
error message ERROR 42000: Variable 'nnn' must be
quoted with `...`, or renamed is returned (where 'nnn'
is 'password' or 'names'). This means there is a syntax conflict
with special sentences like SET PASSWORD =
PASSWORD(...) (for setting a user's password) and
set names default (for setting charset and
collation).
This must be resolved either by quoting the variable name:
SET `password` = ..., which will set the
local variable `password`, or by renaming the
variable to something else (if setting the user's password is
the desired effect).
The MySQL-server RPM now explicitly assigns
the mysql system user to the
mysql user group during the postinstallation
process. This corrects an issue with upgrading the server on
some Linux distributions whereby a previously existing
mysql user was not changed to the
mysql group, resulting in wrong groups for
files created following the installation.
(Bug #12823)
Added the --tz-utc option to
mysqldump. This option adds SET
TIME_ZONE='+00:00' to the dump file so that
TIMESTAMP columns can be dumped
and reloaded between servers in different time zones and
protected from changes due to daylight saving time.
(Bug #13052)
The maximum key length for InnoDB indexes was
increased from 1024 bytes to 3072 bytes for 64-bit builds.
When executing single-table
UPDATE or
DELETE queries containing an
ORDER BY ... LIMIT
clause, but not having
any NWHERE clause, MySQL can now take
advantage of an index to read the first
N rows in the ordering specified in
the query. If an index is used, only the first
N records will be read, as opposed to
scanning the entire table.
(Bug #12915)
Bugs Fixed
MySQL Cluster:
Trying to run ndbd as system
root when connecting to a
mysqld process running as the
mysql system user using SHM caused the
ndbd process to crash.
(ndbd should now exit gracefully with an
appropriate error message instead.)
(Bug #9249)
MySQL Cluster:
Placing multiple [tcp default] sections in
the cluster's config.ini file crashed
ndb_mgmd. (The process now exits gracefully
in such cases, with an appropriate error message.)
(Bug #13611)
MySQL Cluster:
The perror utility included with the
MySQL-Server RPM did not provide support for
the --ndb option. It now supports
this option, and so can be used to obtain error message text for
MySQL Cluster error codes.
(Bug #13740)
MySQL Cluster: ndb_mgmd permitted a node to be stopped or restarted while another node was still starting up, which could crash the cluster. It should now not be possible to issue a node stop or restart while a different node is still restarting, and the cluster management client should issue an error when such an attempt is made. (Bug #13461)
Replication:
An UPDATE query using a join
would be executed incorrectly on a replication slave.
(Bug #12618)
SHOW CREATE TABLE did not display
any FOREIGN KEY clauses if a temporary file
could not be created. Now SHOW CREATE
TABLE displays an error message in an SQL comment if
this occurs.
(Bug #13002)
Using an undefined variable in an
IF or
SET
statement inside a stored routine produced an incorrect
unknown column ... in 'order clause' error
message.
(Bug #13037)
mysqlcheck
--all-databases
--analyze
--optimize failed because it
also tried to analyze and optimize the
INFORMATION_SCHEMA tables which it can't.
(Bug #13783)
Queries of the form (SELECT ...) ORDER BY ...
were being treated as a UNION.
This improperly resulted in only distinct values being returned
(because UNION by default
eliminates duplicate results). Also, references to column
aliases in ORDER BY clauses following
parenthesized SELECT statements
were not resolved properly.
(Bug #7672)
mysqldump --triggers did not quote
identifiers properly if the
--compatible option was given,
so the dump output could not be reloaded.
(Bug #13146)
An expression in an ORDER BY clause failed
with Unknown column
' if the expression referred to a column alias.
(Bug #11694)col_name' in 'order
clause'
A qualified reference to a view column in the
HAVING clause could not be resolved.
(Bug #13410)
With --log-slave-updates
Exec_master_log_pos of SQL thread lagged IO
(Bug #13023)
If special characters such as '_' ,
'%', or the escape character were included
within the prefix of a column index, LIKE
pattern matching on the indexed column did not return the
correct result.
(Bug #13046, Bug #13919)
InnoDB: Queries that were executed using an
index_merge union or
intersection could produce incorrect results if the underlying
table used the InnoDB storage engine and had
a primary key containing VARCHAR
members.
(Bug #13484)
The server could over-allocate memory when performing a
FULLTEXT search for stopwords only.
(Bug #13582)
Trying to create a view dynamically using a prepared statement within a stored procedure failed with error 1295. (Bug #13095)
CREATE DEFINER=... VIEW ... caused the server
to crash when run with
--skip-grant-tables.
(Bug #13504)
When calling a stored procedure with the syntax CALL
and no default schema selected, schema.procedurename
ERROR
1046 was displayed after the procedure returned.
(Bug #13616)
Corrected a memory-copying problem for big5
values when using icc compiler on Linux IA-64
systems.
(Bug #10836)
Character set conversion was not being done for
FIND_IN_SET().
(Bug #13751)
comp_err did not detect when multiple error messages for a language were given for an error symbol. (Bug #13071)
For XA transaction IDs (
), uniqueness is supposed to be assessed based on
gtrid.bqual.formatID
gtrid and
bqual. MySQL was also including
formatID in the uniqueness check.
(Bug #13143)
SELECT * INTO OUTFILE ... FROM
INFORMATION_SCHEMA.schemata failed with an
Access denied error.
(Bug #13202)
A table or view named Ç (C-cedilla) couldn't be dropped. (Bug #13145)
CAST(1E+300 TO SIGNED INT)
produced an incorrect result on little-endian machines.
(Bug #13344)
The --interactive-timeout and
--slave-net-timeout options for
mysqld were not being obeyed on Mac OS X and
other BSD-based platforms.
(Bug #8731)
mysqldump could not dump views. (Bug #14061)
Issuing STOP SLAVE after having
acquired a global read lock with
FLUSH TABLES WITH READ
LOCK caused a deadlock. Now STOP
SLAVE is generates an error in such circumstances.
(Bug #10942)
Tests containing SHOW TABLE
STATUS or INFORMATION_SCHEMA failed
on opnsrv6c.
(Bug #14064, Bug #14065)
A column in the ON condition of a join that
referenced a table in a nested join could not be resolved if the
nested join was a right join.
(Bug #13597)
Character set file parsing during
mysql_real_connect() read past
the end of a memory buffer.
(Bug #6413)
On BSD systems, the system crypt() call could
return an error for some salt values. The error was not handled,
resulting in a server crash.
(Bug #13619)
Server crashed during a SELECT
statement, writing a message like this to the error log:
InnoDB: Error: MySQL is trying to perform a SELECTInnoDB: but it has not locked any tables in ::external_lock()!
Queries that use indexes in normal
SELECT statements may cause range
scans in VIEWs.
(Bug #13327)
Local (non-XA) and XA transactions are supposed to be mutually exclusive within a given client connection, but this prohibition was not always enforced. (Bug #12935)
