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
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)
For a table with an
SHOW CREATE TABLE now shows the
AUTO_INCREMENT value to be generated.
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.
to mysqlbinlog to enable the character set to
be specified for processing binary log files.
The bundled yaSSL library was upgraded to version 1.3.5. This improves handling of certain problems with SSL-related command options. (Bug #17737)
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
It is now possible to use
values within triggers as
INOUT parameters to
--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.
Binary distributions that include SSL support now are built using yaSSL when possible.
mysql_get_ssl_cipher() C API
function was added.
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)
The ndb_mgm client command
CLUSTERLOG STATISTICS=15 had no effect.
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: An internal formatting error caused some management client error messages to be unreadable. (Bug #20016)
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: Running management client commands while mgmd was in the process of disconnecting could cause the management server to fail. (Bug #19932)
ALL START in the
NDB management client or restarting
multiple nodes simultaneously could under some circumstances
cause the cluster to crash.
The cluster's data nodes failed while trying to load data when
NoOfFrangmentLogFiles was set equal to 1.
Restoring a backup with ndb_restore failed
when the backup had been taken from a cluster whose
DataMemory had been
completely used up.
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.
LOCAL failed to ignore duplicate keys in Cluster
MySQL Cluster: For ndb_mgmd, Valgrind revealed problems with a memory leak and a dependency on an uninitialized variable. (Bug #19318, Bug #20333)
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.
NDB even for test cases that did
not need it.
MySQL Cluster: Stopping multiple nodes could cause node failure handling not to be completed. (Bug #19039)
The management client
ALL STOP command shut
down mgmd processes (as well as
TRUNCATE TABLE failed to reset
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.
Repeated use of the
ALL STATUS commands in the
ndb_mgm client could cause the
mgmd process to crash.
MySQL Cluster: ndbd sometimes failed to start with the error Node failure handling not completed following a graceful restart. (Bug #18550)
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.
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: Data node failures could cause excessive CPU usage by ndb_mgmd. (Bug #13987)
MySQL Cluster: Cluster system status variables were not updated properly. (Bug #11459)
Some queries having a
WHERE clause of the
c1=val1 OR c2 LIKE 'val2' were not
evaluated correctly. (Bug #17421)
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.
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,
NdbOperation::write_attr() did not update
32-bit fields correctly.
A buffer overwrite error in Instance Manager caused a crash. (Bug #20622)
On Windows, temporary tables containing
:” in the name could not be
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)
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
fill_help_tables.sql file did not load
properly if the
SQL mode was enabled.
mysql_upgrade was missing from binary MySQL distributions. (Bug #20403, Bug #18516, Bug #20556)
Several aspects of view privileges were being checked incorrectly. (Bug #20363, Bug #18681)
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.
The thread for
rows was maintaining a separate
AUTO_INCREMENT counter, resulting in
incorrect values being assigned if
DELAYED inserts were mixed.
libmysqlclient when compiled with
yaSSL using the icc compiler had a spurious
dependency on C++ libraries.
A number of dependency issues in the RPM
caused installation of these packages to fail.
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.
Some outer joins were incorrectly converted to inner joins. (Bug #19816)
References: This bug was introduced by Bug #17146.
WITH CHECK OPTION was not enforced when a
REPLACE statement was executed
against a view.
Multiple-table updates with
could cause a server crash.
InnoDB unlocked its data directory before
committing a transaction, potentially resulting in
nonrecoverable tables if a server crash occurred before the
Subqueries that produced a
value were being treated as returning a signed value.
GROUP BY on an expression that contained a
DECIMAL produced an
MERGE tables did not work reliably with
Re-execution of a prepared multiple-table
DELETE statement that involves a
trigger or stored function can result in a server crash.
The range operator failed and caused a server crash for clauses
of the form
NOT IN (
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
col_name is a column in an
INFORMATION_SCHEMA table, could cause
erroneous duplication of data in the query result.
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.
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.
strings that are empty or contain only spaces.
InnoDB failed to increment the
Selecting from a view that used
GROUP BY on a
nonconstant temporal interval (such as
could cause a server crash.
col) + INTERVAL
mysqldump did not dump the table name
correctly for some table identifiers that contained unusual
characters such as “
On 64-bit Windows systems,
REGEXP for regular
expressions with exactly 31 characters did not work.
An outer join of two views that was written using
... } syntax could cause a server crash.
Race conditions on certain platforms could cause the Instance Manager to fail to initialize. (Bug #19391)
Use of the
caused mysql to crash.
table, the values for the
CHARACTER_OCTET_LENGTH columns were incorrect
for multibyte character sets.
containing a subquery that selected from one of the tables being
modified caused a server crash.
On Windows, removal of binary log files failed if the files were already open. (Bug #19208)
Flushing the compression buffer (via
FLUSH TABLE) no
longer increases the size of an unmodified
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.
SSL connections using yaSSL on OpenBSD could fail. (Bug #19191)
Use of uninitialized user variables in a subquery in the
FROM clause resulted in invalid entries in
the binary log.
CREATE TABLE statement that
created a table from a materialized view did not inherit default
values from the underlying table.
Premature optimization of nested subqueries in the
FROM clause that refer to aggregate functions
could lead to incorrect results.
The parser leaked memory when its stack needed to be extended. (Bug #18930)
BIT columns in a table could
cause joins that use the table to fail.
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)
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
LOAD DATA FROM MASTER failed when trying to
INFORMATION_SCHEMA database from the
master, because the
database would already exist on the slave.
transformation was making a reference to a parse tree fragment
that was left out of the parse tree. This caused problems with
mysqldump produced garbled output for view definitions. (Bug #18462)
The configuration information for building the embedded server on Windows was missing a file. (Bug #18455)
no effect. Now it correctly causes
commands in test case files to sleep for 0 seconds.
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
On Windows, corrected a crash stemming from differences in Visual C runtime library routines from POSIX behavior regarding invalid file descriptors. (Bug #18275)
On Windows, terminating mysqld with Control+C could result in a crash during shutdown. (Bug #18235)
Selecting data from a
MEMORY table with a
VARCHAR column and a
HASH index over it returned only the first
An entry in the
mysql.proc table with an
empty routine name caused access to the
to crash the server.
Updates to a
MEMORY table caused the size of
BTREE indexes for the table to increase.
DISTINCT queries sometimes returned only the last row.
Returning the value of a system variable from a stored function caused a server crash. (Bug #18037)
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)
Race conditions on certain platforms could cause the Instance Manager to try to restart the same instance multiple times. (Bug #18023)
For a reference to a nonexistent index in
INDEX, the error message referred to a column, not an
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.
for mysqld_safe was effective only for
On Windows, multiple clients simultaneously attempting to
ALTER TABLE operations on
InnoDB table could deadlock.
Revised memory allocation for local objects within stored functions and triggers to avoid memory leak for repeated function or trigger invocation. (Bug #17260)
Multiple calls to a stored procedure that selects from
INFORMATION_SCHEMA could cause a server
Views created from prepared statements inside of stored
procedures were created with a definition that included both
A Table ... doesn't exist error could occur for statements that called a function defined in another database. (Bug #17199)
TABLE ... SELECT statements, the selected values were
truncated when inserted into the new table.
Change the default value of a column.
Change the table comment.
Change the table password.
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.
/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.)
Concatenating the results of multiple constant subselects produced incorrect results. (Bug #16716)
Privilege checking on the contents of the
INFORMATION_SCHEMA.VIEWS table was
mysqlcheck tried to check views instead of ignoring them. (Bug #16502)
IS_USED_LOCK() could return an
incorrect connection identifier.
Concurrent reading and writing of privilege structures could crash the server. (Bug #16372)
Grant table modifications sometimes did not refresh the
in-memory tables if the host name was
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.
The server no longer uses a signal handler for signal 0 because it could cause a crash on some platforms. (Bug #15869)
InnoDB does not support
SPATIAL indexes, but did not prevent creation
of such an index.
statements could take a very long time for some multibyte
version_* system variables could not be
(Bug #15684, Bug #12792)
EXPLAIN ... SELECT INTO caused the client to
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
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.
Invalid escape sequences in option files caused MySQL programs that read them to abort. (Bug #15328)
Re-executing a stored procedure with a complex stored procedure cursor query could lead to a server crash. (Bug #15217)
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)
An invalid comparison between keys with index prefixes over
multibyte 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)
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
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)
The binary log lacked character set information for table names when dropping temporary tables. (Bug #14157)
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.
RPM packages had spurious dependencies on Perl modules and other programs. (Bug #13634)
REPLACE statements caused
UPDATE triggers, not
B-TREE index on a
table erroneously reported duplicate entry error for multiple
CONVERT_TZ() in a stored
function or trigger (or in a stored procedure called from a
stored function or trigger) caused an error.
LOAD_FILE() returned an error if
the file did not exist, rather than
it should according to the manual.
When myisamchk needed to rebuild a table,
AUTO_INCREMENT information was lost.
statements, the server did not detect invalid subqueries within
Within a trigger,
statements used the SQL mode of the invoking statement, not the
mode in effect at trigger creation time.
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.