MySQL 5.0.23 was never officially released.
This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Enterprise (a commercial MySQL offering). For more details, please see (http://www.mysql.com/products/enterprise).
Functionality Added or Changed
ON * previously granted and revoked
privileges for the default database if there was a default
database and global privileges if there was none. Now
ON * requires a default database and produces
an error if there is none.
The limit of 2048 ordered indexes per cluster has been lifted.
There is now no upper limit on the number of ordered indexes
AUTO_INCREMENT columns) that may
Binary distributions that include SSL support now are built using yaSSL when possible.
For a table with an
SHOW CREATE TABLE now shows the
AUTO_INCREMENT value to be generated.
The mysqldumpslow script has been moved from client RPM packages to server RPM packages. This corrects a problem where mysqldumpslow could not be used with a client-only RPM install, because it depends on my_print_defaults which is in the server RPM. (Bug #20216)
to MySQL client programs. This option causes the server's Common
Name value in its certificate to be verified against the host
name used when connecting to the server, and the connection is
rejected if there is a mismatch. Added
MYSQL_OPT_SSL_VERIFY_SERVER_CERT option for
mysql_options() C API
function to enable this verification. This feature can be used
to prevent man-in-the-middle attacks. Verification is disabled
to mysqlbinlog to enable the character set to
be specified for processing binary log files.
--angel-pid-file option to
mysqlmanager for specifying the file in which
the angel process records its process ID when
mysqlmanager runs in daemon mode.
The mysql_upgrade command has been converted from a shell script to a C program, so it is available on non-Unix systems such as Windows. This program should be run for each MySQL upgrade. See mysql_upgrade — Check Tables for MySQL Upgrade.
mysql_get_ssl_cipher() C API
function was added.
It is now possible to use
values within triggers as
INOUT parameters to
The bundled yaSSL library was upgraded to version 1.3.5. This improves handling of certain problems with SSL-related command options. (Bug #17737)
mode now also applies to the
That is, columns not named in the
clause cannot be used in the
HAVING clause if
not used in an aggregate function.
NUL byte within a comment in a statement
string caused the rest of the string not to be written to the
query log, permitting logging to be bypassed.
(Bug #17667, CVE-2006-0903)
Resources for unique indexes on Cluster table columns were
incorrectly allocated, so that only one-fourth as many unique
indexes as indicated by the value of
UniqueHashIndexes could be created.
Repeated use of the
ALL STATUS commands in the
ndb_mgm client could cause the
mgmd process to crash.
MySQL Cluster: (NDBAPI): Update operations on blobs were not checked for illegal operations.
Read locks with blob update operations are now upgraded from read committed to read shared.
MySQL Cluster: Renaming a table in such a way as to move it to a different database failed to move the table's indexes. (Bug #19967)
MySQL Cluster: ndbd sometimes failed to start with the error Node failure handling not completed following a graceful restart. (Bug #18550)
ALL START in the
NDB management client or restarting
multiple nodes simultaneously could under some circumstances
cause the cluster to crash.
Using “stale” mysqld
.frm files could cause a newly restored
cluster to fail. This situation could arise when restarting a
MySQL Cluster using the
--initial option while
leaving connected mysqld processes running.
MySQL Cluster: Stopping multiple nodes could cause node failure handling not to be completed. (Bug #19039)
NDB even for test cases that did
not need it.
A problem with error handling when
ndb_use_exact_count was enabled
could lead to incorrect values returned from queries using
COUNT(). A warning is now
returned in such cases.
The failure of a data node when preparing to commit a
transaction (that is, while the node's status was
CS_PREPARE_TO_COMMIT) could cause the failure
of other cluster data nodes.
MySQL Cluster: Data node failures could cause excessive CPU usage by ndb_mgmd. (Bug #13987)
MySQL Cluster: Running management client commands while mgmd was in the process of disconnecting could cause the management server to fail. (Bug #19932)
The management client
ALL STOP command shut
down mgmd processes (as well as
Some queries having a
WHERE clause of the
c1=val1 OR c2 LIKE 'val2' were not
evaluated correctly. (Bug #17421)
MySQL Cluster: An internal formatting error caused some management client error messages to be unreadable. (Bug #20016)
Backups could fail for large clusters with many tables, where
the number of tables approached
An issue with ndb_mgmd prevented more than 27
mysqld processes from connecting to a single
cluster at one time.
The ndb_mgm client command
CLUSTERLOG STATISTICS=15 had no effect.
LOCAL failed to ignore duplicate keys in Cluster
The cluster's data nodes failed while trying to load data when
NoOfFrangmentLogFiles was set equal to 1.
MySQL Cluster: For ndb_mgmd, Valgrind revealed problems with a memory leak and a dependency on an uninitialized variable. (Bug #19318, Bug #20333)
TRUNCATE TABLE failed to reset
MySQL Cluster: Cluster system status variables were not updated properly. (Bug #11459)
operations on tables could in some circumstances cause the MySQL
table definition cache to become corrupt, so that some
mysqld processes could access table
information but others could not.
Restoring a backup with ndb_restore failed
when the backup had been taken from a cluster whose
DataMemory had been
completely used up.
Replication: Valgrind revealed an issue with mysqld that was corrected: memory corruption in replication slaves when switching databases. (Bug #19022)
The binary log would create an incorrect
query when creating temporary tables during replication.
GRANT statement for
Ok was returned on a replication master
caused an error on the slave and replication to fail.
On big-endian platforms,
not update 32-bit fields correctly.
Views created from prepared statements inside of stored
procedures were created with a definition that included both
A view definition that referred to an alias in the
HAVING clause could be saved in the
.frm file with the alias replaced by the
expression that it referred to, causing failure of subsequent
SELECT * FROM statements.
WITH CHECK OPTION was not enforced when a
REPLACE statement was executed
against a view.
transformation was making a reference to a parse tree fragment
that was left out of the parse tree. This caused problems with
Race conditions on certain platforms could cause the Instance Manager to fail to initialize. (Bug #19391)
containing a subquery that selected from one of the tables being
modified caused a server crash.
Concatenating the results of multiple constant subselects produced incorrect results. (Bug #16716)
The thread for
rows was maintaining a separate
AUTO_INCREMENT counter, resulting in
incorrect values being assigned if
DELAYED inserts were mixed.
RPM packages had spurious dependencies on Perl modules and other programs. (Bug #13634)
Selecting data from a
MEMORY table with a
VARCHAR column and a
HASH index over it returned only the first
Use of the
caused mysql to crash.
Several aspects of view privileges were being checked incorrectly. (Bug #20363, Bug #18681)
fill_help_tables.sql file did not
SET NAMES 'utf8' statement to
indicate its encoding. This caused problems for some settings of
the MySQL character set such as
A buffer overwrite error in Instance Manager caused a crash. (Bug #20622)
The range operator failed and caused a server crash for clauses
of the form
NOT IN (
The binary log lacked character set information for table names when dropping temporary tables. (Bug #14157)
Change the default value of a column.
Change the table comment.
Change the table password.
For a reference to a nonexistent index in
INDEX, the error message referred to a column, not an
CREATE TABLE statement that
created a table from a materialized view did not inherit default
values from the underlying table.
Valgrind revealed several issues with mysqld
that were corrected: A dangling stack pointer being overwritten;
possible uninitialized data in a string comparison;
syscall() write parameter pointing to an
(Bug #20579, Bug #20769, Bug #20783, Bug #20791)
On Windows, temporary tables containing
:” in the name could not be
ALTER TABLE operation that
does not need to copy data, when executed on a table created
prior to MySQL 4.0.25, could result in a server crash for
subsequent accesses to the table.
Grant table modifications sometimes did not refresh the
in-memory tables if the host name was
InnoDB unlocked its data directory before
committing a transaction, potentially resulting in
nonrecoverable tables if a server crash occurred before the
GROUP BY on an expression that contained a
DECIMAL produced an
EXPLAIN ... SELECT INTO caused the client to
CHECK TABLE on a
MyISAM table briefly cleared its
AUTO_INCREMENT value, while holding only a
read lock. Concurrent inserts to that table could use the wrong
CHECK TABLE no longer modifies
On 64-bit Windows systems,
REGEXP for regular
expressions with exactly 31 characters did not work.
Invalid escape sequences in option files caused MySQL programs that read them to abort. (Bug #15328)
Queries using an indexed column as the argument for the
MAX() functions following an
ALTER TABLE .. DISABLE KEYS statement
returned Got error 124 from storage
ALTER TABLE ... ENABLE
KEYS was run on the table.
An entry in the
mysql.proc table with an
empty routine name caused access to the
to crash the server.
Multiple calls to a stored procedure that selects from
INFORMATION_SCHEMA could cause a server
LOAD DATA FROM MASTER would fail when trying
to load the
INFORMATION_SCHEMA database from
the master, because the
system database would already exist on the slave.
The result from
CONV() is a
string, but was not always treated the same way as a string when
converted to a real value for an arithmetic operation.
The parser leaked memory when its stack needed to be extended. (Bug #18930)
col_name is a column in an
INFORMATION_SCHEMA table, could cause
erroneous duplication of data in the query result.
IS_USED_LOCK() could return an
incorrect connection identifier.
The server no longer uses a signal handler for signal 0 because it could cause a crash on some platforms. (Bug #15869)
Race conditions on certain platforms could cause the Instance Manager to try to restart the same instance multiple times. (Bug #18023)
statements, the server did not detect invalid subqueries within
Some yaSSL public function names conflicted with those from
OpenSSL, causing conflicts for applications that linked against
both OpenSSL and a version of
that was built with yaSSL support. The yaSSL public functions
now are renamed to avoid this conflict.
On Windows, multiple clients simultaneously attempting to
ALTER TABLE operations on
InnoDB table could deadlock.
An outer join of two views that was written using
... } syntax could cause a server crash.
statements could take a very long time for some multi-byte
InnoDB failed to increment the
CONVERT_TZ() in a stored
function or trigger (or in a stored procedure called from a
stored function or trigger) caused an error.
An invalid comparison between keys with index prefixes over
multi-byte character fields could lead to incorrect result sets
if the selected query execution plan used a range scan by an
index prefix over a
UTF8 character field.
This also caused incorrect results under similar circumstances
with many other character sets.
BOOLEAN mode full-text
searches on nonindexed columns,
generated by a
LEFT JOIN caused incorrect
(Bug #14708, Bug #25637)
An update that used a join of a table to itself and modified the table on both sides of the join reported the table as crashed. (Bug #18036)
treat their arguments as case-sensitive strings. But when they
are compared, their arguments were compared as case-insensitive
strings, which leads to two function calls with different
arguments (and thus different results) compared as being
identical. This can lead to a wrong decision made in the range
optimizer and thus to an incorrect result set.
fill_help_tables.sql file did not load
properly if the
SQL mode was enabled.
Some outer joins were incorrectly converted to inner joins. (Bug #19816)
References: This bug was introduced by Bug #17146.
table, the values for the
CHARACTER_OCTET_LENGTH columns were incorrect
for multi-byte character sets.
TABLE ... SELECT statements, the selected values were
truncated when inserted into the new table.
Re-execution of a prepared multiple-table
DELETE statement that involves a
trigger or stored function can result in a server crash.
no effect. Now it correctly causes
commands in test case files to sleep for 0 seconds.
COM_STATISTICS command was changed in
5.0.3 to display session status variable values rather than
global values. This causes mysqladmin status
information not to be useful for the
Opens values. Now
COM_STATISTICS displays the global values for
Slow queries and
On Windows, corrected a crash stemming from differences in Visual C runtime library routines from POSIX behavior regarding invalid file descriptors. (Bug #18275)
B-TREE index on a
table erroneously reported duplicate entry error for multiple
mysqldump did not dump the table name
correctly for some table identifiers that contained unusual
characters such as “
Flushing the compression buffer (via
FLUSH TABLE) no
longer increases the size of an unmodified
A compatibility issue with NPTL (Native POSIX Thread Library) on
Linux could result in a deadlock with
FLUSH TABLES WITH READ
LOCK under some conditions.
MyISAM table deadlock was possible if one
thread issued a
request for write locks and then an administrative statement
OPTIMIZE TABLE, if
between the two statements another client meanwhile issued a
SELECT for some of
the locked tables.
Revised memory allocation for local objects within stored functions and triggers to avoid memory leak for repeated function or trigger invocation. (Bug #17260)
The MySQL server startup script /etc/init.d/mysql (created from mysql.server) is now marked to ensure that the system services ypbind, nscd, ldap, and NTP are started first (if these are configured on the machine). (Bug #18810)
Returning the value of a system variable from a stored function caused a server crash. (Bug #18037)
DISTINCT queries sometimes returned only the last row.
/dev/null to suppress statement history
saving by mysql did not work.
(mysql deleted the symlink and recreated
.mysql_history as a regular file, and then
wrote history to it.)
Concurrent reading and writing of privilege structures could crash the server. (Bug #16372)
Multiple-table updates with
could cause a server crash.
Subqueries that produced a
value were being treated as returning a signed value.
mysqldump produced garbled output for view definitions. (Bug #18462)
max_length metadata value for columns
CONCAT() could be
incorrect when the collation of an argument differed from the
collation of the
In some contexts such as
this could lead to truncation of the column contents.
mysql_upgrade was missing from binary MySQL distributions. (Bug #20403, Bug #18516, Bug #20556)
libmysqlclient when compiled with
yaSSL using the icc compiler had a spurious
dependency on C++ libraries.
Nested natural joins worked executed correctly when executed as
a nonprepared statement could fail with an
column ' error when executed as a prepared statement, due
to a name resolution problem.
col_name' in 'field
On Windows, removal of binary log files would fail if the files were already open. (Bug #19208)
Re-executing a stored procedure with a complex stored procedure cursor query could lead to a server crash. (Bug #15217)
REPLACE statements caused
UPDATE triggers, not
LOAD_FILE() returned an error if
the file did not exist, rather than
it should according to the manual.
Updates to a
MEMORY table caused the size of
BTREE indexes for the table to increase.
SHOW CREATE TABLE did not display
AUTO_INCREMENT column attribute if the
SQL mode was
MYSQL40. This also affected
mysqldump, which uses
SHOW CREATE TABLE to get table
A range access optimizer heuristic was invalid, causing some queries to be much slower in MySQL 5.0 than in 4.0. (Bug #17379, Bug #18940)
mysqldump would not dump views that had
become invalid because a table named in the view definition had
been dropped. Instead, it quit with an error message. Now you
can specify the
--force option to cause
mysqldump to keep going and write an SQL
comment containing the view definition to the dump output.
inconsistent info about invalid views. This could cause server
crashes or result in incorrect data being returned for queries
that attempt to obtain information from
INFORMATION_SCHEMA tables about views using
A number of dependency issues in the RPM
caused installation of these packages to fail.
strings that are empty or contain only spaces.
BIT columns in a table could
cause joins that use the table to fail.
Some queries that used
ORDER BY and
LIMIT performed quickly in MySQL 3.23, but
slowly in MySQL 4.x/5.x due to an optimizer problem.
MERGE tables did not work reliably with
Within a trigger,
statements used the SQL mode of the invoking statement, not the
mode in effect at trigger creation time.
On Windows, terminating mysqld with Control+C could result in a crash during shutdown. (Bug #18235)
The configuration information for building the embedded server on Windows was missing a file. (Bug #18455)
Some queries were slower in 5.0 than in 4.1 because some 4.1 cost-evaluation code had not been merged into 5.0. (Bug #14292)
InnoDB does not support
SPATIAL indexes, but did not prevent creation
of such an index.
Use of uninitialized user variables in a subquery in the
FROM clause resulted in invalid entries in
the binary log.
mysqlcheck tried to check views instead of ignoring them. (Bug #16502)
A Table ... doesn't exist error could occur for statements that called a function defined in another database. (Bug #17199)
Selecting from a view that used
GROUP BY on a
nonconstant temporal interval (such as
could cause a server crash.
col) + INTERVAL
Premature optimization of nested subqueries in the
FROM clause that refer to aggregate functions
could lead to incorrect results.
When myisamchk needed to rebuild a table,
AUTO_INCREMENT information was lost.
version_* system variables could not be
(Bug #15684, Bug #12792)
Privilege checking on the contents of the
INFORMATION_SCHEMA.VIEWS table was
CREATE TABLE ...
SELECT ... statements that used a stored function
explicitly or implicitly (through a view) resulted in a
Table not locked error.
(Bug #15137, Bug #12472)
for mysqld_safe was effective only for
SSL connections using yaSSL on OpenBSD could fail. (Bug #19191)