Table of Contents
This appendix lists the changes from version to version in the MySQL source code through the latest version of MySQL 5.0, which is currently MySQL 5.0.23. Starting with MySQL 5.0, we began offering a new version of the Manual for each new series of MySQL releases (5.0, 5.1, and so on). For information about changes in previous release series of the MySQL database software, see the corresponding version of this Manual. For information about legacy versions of the MySQL software through the 4.1 series, see MySQL 3.23, 4.0, 4.1 Reference Manual.
We update this section as we add new features in the 5.0 series, so that everybody can follow the development process.
Note that we tend to update the manual at the same time we make changes to MySQL. If you find a recent version of MySQL listed here that you can't find on our download page (http://dev.mysql.com/downloads/), it means that the version has not yet been released.
The date mentioned with a release version is the date of the last BitKeeper ChangeSet on which the release was based, not the date when the packages were made available. The binaries are usually made available a few days after the date of the tagged ChangeSet, because building and testing all packages takes some time.
The manual included in the source and binary distributions may not be fully accurate when it comes to the release changelog entries, because the integration of the manual happens at build time. For the most up-to-date release changelog, please refer to the online version instead.
The following changelog shows what has been done in the 5.0 tree:
Basic support for read-only server side cursors. For information
about using cursors within stored routines, see
Section 17.2.9, “Cursors”. For information about using cursors
from within the C API, see
Section 22.2.7.3, “mysql_stmt_attr_set()”.
Basic support for (updatable) views. See, for example,
Section 19.2, “CREATE VIEW Syntax”.
Basic support for stored procedures and functions (SQL:2003 style). See Chapter 17, Stored Procedures and Functions.
Initial support for rudimentary triggers.
Added SELECT INTO
, which can be
of mixed (that is, global and local) types. See
Section 17.2.7.3, “list_of_varsSELECT ... INTO Statement”.
Removed the update log. It is fully replaced by the binary log.
If the MySQL server is started with
--log-update, it is translated to
--log-bin (or ignored if the server is
explicitly started with --log-bin), and a
warning message is written to the error log. Setting
SQL_LOG_UPDATE silently sets
SQL_LOG_BIN instead (or do nothing if the
server is explicitly started with --log-bin).
Support for the ISAM storage engine has been
removed. If you have ISAM tables, you should
convert them before upgrading. See
Section 2.11.2, “Upgrading from MySQL 4.1 to 5.0”.
Support for RAID options in
MyISAM tables has been removed. If you have
tables that use these options, you should convert them before
upgrading. See Section 2.11.2, “Upgrading from MySQL 4.1 to 5.0”.
User variable names are now case insensitive: If you do
SET @a=10; then SELECT @A;
now returns 10. Case sensitivity of a
variable's value depends on the collation of the value.
Strict mode, which in essence means that you get an error instead of a warning when inserting an incorrect value into a column. See Section 5.2.5, “The Server SQL Mode”.
VARCHAR and VARBINARY
columns remember end space. A VARCHAR() or
VARBINARY column can contain up to 65,535
characters or bytes, respectively.
MEMORY (HEAP) tables can
have VARCHAR() columns.
When using a constant string or a function that generates a
string result in CREATE ... SELECT, MySQL
creates the result field based on the maximum length of the
string or expression:
| Maximum Length | Data type |
| = 0 | CHAR(0) |
| < 512 | VARCHAR( |
| >= 512 | TEXT |
For a full list of changes, please refer to the changelog sections for each individual 5.0.x release.
This is a bugfix release for the current production release family.
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 Network (a commercial MySQL offering). For more details please see http://www.mysql.com/network/advisors.html.
Functionality added or changed:
NDB Cluster: The limit of 2048 ordered
indexes per cluster has been lifted. There is now no upper
limit on the number of ordered indexes (including
AUTO_INCREMENT columns) that may be used.
(Bug#14509)
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 Section 5.6.2, “mysql_upgrade — Check Tables for MySQL Upgrade”.
Binary distributions that include SSL support now are built using yaSSL when possible.
Added the --ssl-verify-server-cert option to
MySQL client programs. This option causes the server's Common
Name value in its certificate to be verified against the
hostname 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
the mysql_options() C API function to
enable this verification. This feature can be used to prevent
man-in-the-middle attacks. Verification is disabled by
default. (Bug#17208)
Added the ssl_ca,
ssl_capath, ssl_cert,
ssl_cipher, and ssl_key
system variables, which display the values given via the
corresponding command options. See
Section 5.9.7.3, “SSL Command Options”. (Bug#19606)
Added the log_queries_not_using_indexes
system variable. (Bug#19616)
Added the --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. (Bug#14106)
The ONLY_FULL_GROUP_BY SQL mode now also
applies to the HAVING clause. That is,
columns not named in the GROUP BY clause
cannot be used in the HAVING clause if not
used in an aggregate function. (Bug#18739)
SQL syntax for prepared statements now supports
ANALYZE TABLE, OPTIMIZE
TABLE, and REPAIR TABLE. (Bug#19308)
The bundled yaSSL library was upgraded to version 1.3.0. This improves handling of certain problems with SSL-related command options. (Bug#17737)
To prevent inadvertant loss of data, ALTER
TABLE can no longer be used to change the storage
engine of a table to MERGE or
BLACKHOLE. (Bug#10952)
Added the --set-charset option to
mysqlbinlog to allow the character set to
be specified for processing binary log files. (Bug#18351)
For a table with an AUTO_INCREMENT column,
SHOW CREATE TABLE now shows the next
AUTO_INCREMENT value to be generated. (Bug#19025)
It is now possible to use
NEW.
values within triggers as var_nameINOUT parameters
to stored procedures. (Bug#14635)
Bugs fixed:
NDB Cluster: TEXT
columns in Cluster tables having both an explicit primary key
and a unque key were not correctly updated by
REPLACE statements. (Bug#19906)
NDB Cluster: An internal formatting error
caused some management client error messages to be unreadable.
(Bug#20016)
NDB Cluster: Running management client
commands while mgmd was in the process of
disconnecting could cause the management server to fail. (Bug#19932)
NDB Cluster (NDBAPI): Update operations on
blobs were not checked for illegal operations.
Note: Read locks with blob update operations are now upgraded from read committed to read shared.
NDB Cluster: The management client
ALL STOP command shut down
mgmd processes (as well as
ndbd processes). (Bug#18966)
NDB Cluster: LOAD DATA
LOCAL failed to ignore duplicate keys in Cluster
tables. (Bug#19496)
NDB Cluster: Repeated
CREATE - INSERT -
DROP operations 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. (Bug#18595)
NDB Cluster: The mgm
client command ALL CLUSTERLOG
STATISTICS=15; had no effect. (Bug#20336)
NDB Cluster: TRUNCATE
TABLE failed to reset the
AUTO_INCREMENT counter. (Bug#18864)
NDB Cluster: SELECT ... FOR
UPDATE failed to lock the selected rows. (Bug#18184)
NDB Cluster: 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. (Bug#20185)
NDB Cluster: Renaming a table in such a way
as to move it to to a different database failed to move the
table's indexes. (Bug#19967)
NDB Cluster: 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. (Bug#19623)
NDB Cluster: Running ALL
START in the NDB management
client or restarting multiple nodes simultaneously could under
some circumstances cause the cluster to crash. (Bug#19930)
NDB Cluster: SELECT
statements with a BLOB or
TEXT column in the selected column list and
a WHERE condition including a primary key
lookup on a VARCHAR primary key produced
empty result sets. Note: This
issue affected the 5.0 series of MySQL Cluster releases only.
(Bug#19956)
NDB Cluster (NDBAPI): On big-endian
platforms, NdbOperation::write_attr() did
not update 32-bit fields correctly. (Bug#19537)
NDB Cluster: Some queries having a
WHERE clause of the form c1=val1
OR c2 LIKE 'val2' were not evaluated correctly. (Bug
# 17421)
NDB Cluster: Using “stale”
mysqld .FRM files
could cause a newly-restored cluster to fail. This situation
could arise when restarting a MySQL Cluster using the
--intial option while leaving connected
mysqld processes running. (Bug#16875)
NDB Cluster: Repeated use of the
SHOW and ALL STATUS
commands in the ndb_mgm client could cause
the mgmd process to crash. (Bug#18591)
NDB Cluster: An issue with
ndb_mgmd prevented more than 27
mysqld processes from connecting to a
single cluster at one time. (Bug#17150)
NDB Cluster: Data node failures could cause
excessive CPU usage by ndb_mgmd. (Bug#13987)
NDB Cluster: TRUNCATE
failed on tables having BLOB or
TEXT columns with the error Lock
wait timeout exceeded. (Bug#19201)
NDB Cluster: Stopping multiple nodes could
cause node failure handling not to be completed. (Bug#19039)
NDB Cluster: ndbd could
sometimes fail to start with the error Node failure
handling not completed following a graceful
restart. (Bug#18550)
NDB Cluster: Backups could fail for large
clusters with many tables, where the number of tables
approached MaxNoOfTables. (Bug#17607)
Nested natural joins worked executed correctly when executed
as a non-prepared statement could fail with an
Unknown column ' error when executed as a prepared
statement, due to a name resolution problem. (Bug#15355)
col_name'
in 'field list'
GROUP BY on an expression that contained a
cast to DECIMAL produced an incorrect
result. (Bug#19667)
The max_length metadata value for columns
created from CONCAT() could be incorrect
when the collation of an argument differed from the collation
of the CONCAT() itself. In some contexts
such as UNION, this could lead to
truncation of the column contents. (Bug#15962)
The MD5() and SHA() functions 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. (Bug#15351)
For BOOLEAN mode full-text searches on
non-indexed columns, NULL rows generated by
a LEFT JOIN caused incorrect query results.
(Bug#14708)
BIT columns in a table could cause joins
that use the table to fail. (Bug#18895)
A UNION over more than 128
SELECT statements that use an aggregate
function failed. (Bug#18175)
InnoDB unlocked its data directory before
committing a transaction, potentially resulting in
non-recoverable tables if a server crash occurred before the
commit. (Bug#19727)
Multiple-table DELETE statements containing
a subquery that selected from one of the tables being modified
caused a server crash. (Bug#19225)
With settings of read_buffer_size >= 2G
and read_rnd_buffer_size >=2G,
LOAD DATA INFILE failed with no error
message or caused a server crash for files larger than 2GB.
(Bug#12982)
REPLACE statements caused activation of
UPDATE triggers, not
DELETE and INSERT
triggers. (Bug#13479)
The thread for INSERT DELAYED rows was
maintaining a separate AUTO_INCREMENT
counter, resulting in incorrect values being assigned if
DELAYED and non-DELAYED
inserts were mixed. (Bug#20195)
mysqldump wrote an extra pair of
DROP DATABASE and CREATE
DATABASE statements if run with the
--add-drop-database option and the database
contained views. (Bug#17201)
On 64-bit Windows systems, REGEXP for
regular expressions with exactly 31 characters did not work.
(Bug#19407)
For ndb_mgmd, Valgrind revealed problems that were corrected: A memory leak (Bug#19318); a dependency on an uninitialized variable (Bug#20333).
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)
SSL connections using yaSSL on OpenBSD could fail. (Bug#19191)
On Windows, multiple clients simultaneously attempting to
perform ALTER TABLE operations on an
InnoDB table could deadlock. (Bug#17264)
The fill_help_tables.sql file did not
load properly if the ANSI_QUOTES SQL mode
was enabled. (Bug#20542)
The fill_help_tables.sql file did not
contain a SET NAMES 'utf8' statement to
indicate its encoding. This caused problems for some settings
of the MySQL character set such as big5.
(Bug#20551)
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)
MERGE tables did not work reliably with
BIT columns. (Bug#19648)
For a reference to a non-existent index in FORCE
INDEX, the error message referred to a column, not
an index. (Bug#17873)
Some yaSSL public function names conflicted with those from
OpenSSL, causing conflicts for applications that linked
against both OpenSSL and a version of
libmysqlclient that was built with yaSSL
support. The yaSSL public functions now are renamed to avoid
this conflict. (Bug#19575)
CHECK TABLE temporarily cleared the
AUTO_INCREMENT value. Because it runs with
a read lock, other readers could perform concurrent inserts,
and if so, they could get an incorrect
AUTO_INCREMENT value. CHECK
TABLE no longer modifies the
AUTO_INCREMENT value. (Bug#19604)
If there is a global read lock, CREATE
DATABASE, RENAME DATABASE, and
DROP DATABASE could deadlock. (Bug#19815)
On Linux, libmysqlclient when compiled with
yaSSL using the icc compiler had a spurious
dependency on C++ libraries. (Bug#20119)
Using CONCAT(@, where
user_var,
col_name)col_name is a column in an
INFORMATION_SCHEMA table, could cause
erroneous duplication of data in the query result. (Bug#19599)
Results from INFORMATION_SCHEMA.SCHEMATA
could contain uppercase information when
lower_case_table_names was not 0. (Bug#17661)
Grant table modifications sometimes did not refresh the
in-memory tables if the hostname was '' or
not specified. (Bug#16297)
Invalid escape sequences in option files caused MySQL programs that read them to abort. (Bug#15328)
InnoDB did not increment the
handler_read_prev counter. (Bug#19542)
Race conditions on certain platforms could cause the Instance Manager to fail to initialize. (Bug#19391)
ALTER TABLE on a table created prior to
5.0.3 would cause table corruption if the ALTER
TABLE did one of the following:
Change the default value of a column.
Change the table comment.
Change the table password.
An 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. (Bug#19192)
The binary log lacked character set information for table name when dropping temporary tables. (Bug#14157)
A B-TREE index on a
MEMORY table erroneously reported duplicate
entry error for multiple NULL values. (Bug#12873)
Race conditions on certain platforms could cause the Instance Manager to try to restart the same instance multiple times. (Bug#18023)
A CREATE TABLE statement that created a
table from a materialized view did not inherit default values
from the underlying table. (Bug#19089)
The 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
Slow queries and Opens
values. Now COM_STATISTICS displays the
global values for Slow queries and
Opens. (Bug#18669)
INFORMATION_SCHEMA.TABLES provided
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
stored functions. (Bug#18282)
Multiple calls to a stored procedure that selects from
INFORMATION_SCHEMA could cause a server
crash. (Bug#17204)
Premature optimization of nested subqueries in the
FROM clause that refer to aggregate
functions could lead to incorrect results. (Bug#19077)
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.
(Bug#19573)
view_name
Several aspects of view privileges were being checked incorrectly. (Bug#18681, Bug#20363)
A view with a non-existent account in the
DEFINER clause caused SHOW CREATE
VIEW to fail. Now SHOW CREATE
VIEW issues a warning instead. (Bug#20048)
A bug in NTPL threads on Linux could result in a deadlock with
FLUSH TABLES WITH READ LOCK under some
conditions. (Bug#20048)
MyISAM table deadlock was possible if one
thread issued a LOCK TABLES request for
write locks and then an administrative statement such as
OPTIMIZE TABLE, if between the two
statements another client meanwhile issued a multiple-table
SELECT for some of the locked tables. (Bug#16986)
Subqueries that produced a BIGINT UNSIGNED
value were being treated as returning a signed value. (Bug#19700)
The patch for Bug#17164 introduced the problem that some outer joins were incorrectly converted to inner joins. (Bug#19816)
BLOB or TEXT arguments
to or values returned from stored functions were not copied
properly if too long and could become garbled. (Bug#18587)
Selecting data from a MEMORY table with a
VARCHAR column and a
HASH index over it returned only the first
row matched. (Bug#18233)
CREATE TABLE ... SELECT did not always
produce the proper column default value in
TRADITIONAL SQL mode. (Bug#17626)
Privilege checking on the contents of the
INFORMATION_SCHEMA.VIEWS table was
insufficiently restrictive. (Bug#16681)
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. (Bug#13975)
CREATE TABLE ... SELECT ... statements that
used a stored function explicitly or implicitly (through a
view) resulted in a Table not locked error.
(Bug#12472, Bug#15137)
Within a trigger, SET used the SQL mode of
the invoking statement, not the mode in effect at trigger
creation time. (Bug#6951)
The server no longer uses a signal handler for signal 0 because it could cause a crash on some platforms. (Bug#15869)
Revised memory allocation for local objects within stored functions and triggers to avoid memory leak for repeated function or trigger invocation. (Bug#17260)
EXPLAIN ... SELECT INTO caused the client
to hang. (Bug#15463)
Symlinking .mysql_history to
/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.) (Bug#16803)
The basedir and tmpdir
system variables could not be accessed via
@@
syntax. (Bug#1039)
var_name
For certain CREATE VIEW statements, the
server did not detect invalid subqueries within the
SELECT part. (Bug#7549)
The range operator failed and caused a server crash for
clauses of the form
. (Bug#19618)
tbl_name.unsigned_keypart
NOT IN (negative_const,
...)
Returning the value of a system variable from a stored function caused a server crash. (Bug#18037)
Updates to a MEMORY table caused the size
of BTREE indexes for the table to increase.
(Bug#18160)
REPAIR TABLE did not restore the length for
packed keys in tables created under MySQL 4.x. (Bug#17810)
Selecting from a view that used GROUP BY on
a non-constant temporal interval (such as
DATE(
could cause a server crash. (Bug#19490)
col) + INTERVAL
TIME_TO_SEC(col) SECOND
An outer join of two views that was written using {
OJ ... } syntax could cause a server crash. (Bug#19396)
LOAD_FILE() returned an error if the file
did not exist, rather than NULL as it
should according to the manual. (Bug#10418)
For certain CREATE TABLE ... SELECT
statements, the selected values were truncated when inserted
into the new table. (Bug#17048)
Use of uninitialized user variables in a subquery in the
FROM clause results in bad entries in the
binary log. (Bug#19136)
In the INFORMATION_SCHEMA.COLUMNS table,
the values for the CHARACTER_MAXIMUM_LENGTH
and CHARACTER_OCTET_LENGTH columns were
incorrect for multi-byte character sets. (Bug#19236)
An entry in the mysql.proc table with an
empty routine name caused access to the
INFORMATION_SCHEMA.ROUTINES table to crash
the server. (Bug#18177)
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)
IS_USED_LOCK() could return an incorrect
connection identifier. (Bug#16501)
mysql displayed NULL for
strings that are empty or contain only spaces. (Bug#19564)
Concurrent reading and writing of privilege structures could crash the server. (Bug#16372)
A NUL byte within a comment in a statement
string caused the rest of the string not to be written to the
query log, allowing logging to be bypassed.
(CVE-2006-0903)
(Bug#17667)
mysql-test-run.pl started
NDB even for test cases that didn't need
it. (Bug#19083)
SELECT DISTINCT queries sometimes returned
only the last row. (Bug#18068)
Use of CONVERT_TZ() in a stored function or
trigger (or in a stored procedure called from a stored
function or trigger) caused an error. (Bug#11081)
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)
Index prefixes for utf8
VARCHAR columns did not work for
UPDATE statements. (Bug#19080)
InnoDB does not support
SPATIAL indexes, but did not prevent
creation of such an index. (Bug#15860)
The configuration information for building the embedded server on Windows was missing a file. (Bug#18455)
The parser leaked memory when its stack needed to be extended. (Bug#18930)
When myisamchk needed to rebuild a table,
AUTO_INCREMENT information was lost. (Bug#10405)
LOAD DATA FROM MASTER would fail when
trying to load the INFORMATION_SCHEMA
database from the master, because the
INFORMATION_SCHEMA system database would
already exist on the slave. (Bug#18607)
The binary log would create an incorrect
DROP query when creating temporary tables
during replication. (Bug#17263)
The IN-to-EXISTS
transformation was making a reference to a parse tree fragment
that was left out of the parse tree. This caused problems with
prepared statements. (Bug#18492)
In mysqltest, --sleep=0
had no effect. Now it correctly causes
sleep commands in test case files to sleep
for 0 seconds. (Bug#18312)
Attempting to set the default value of an
ENUM or SET column to
NULL caused a server crash. (Bug#19145)
The sql_notes and
sql_warnings system variables were not
always displayed correctly by SHOW
VARIABLES (for example, they were displayed as
ON after being set to
OFF). (Bug#16195)
The sql_big_selects system variable was not
displayed by SHOW VARIABLES. (Bug#17849)
The system_time_zone and
version_* system variables could not be
accessed via SELECT
@@ syntax. (Bug#12792, Bug#15684)
var_name
Flushing the compression buffer (via FLUSH
TABLE) no longer increases the size of an unmodified
ARCHIVE table. (Bug#19204)
This is a security fix release for the previous production release family.
This release includes the security fix described later in this section and a few other changes to resolve build problems, relative to the last official MySQL release (5.0.21). 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 Network (a commercial MySQL offering). For more details please see http://www.mysql.com/network/advisors.html.
Bugs fixed:
Security fix: An
SQL-injection security hole has been found in multi-byte
encoding processing. The bug was in the server, incorrectly
parsing the string escaped with the
mysql_real_escape_string() C API function.
(CVE-2006-2753,
Bug#8378)
This vulnerability was discovered and reported by Josh Berkus
<josh@postgresql.org> and Tom Lane
<tgl@sss.pgh.pa.us> as part of the inter-project
security collaboration of the OSDB consortium. For more
information about SQL injection, please see the following
text.
Discussion: An SQL-injection
security hole has been found in multi-byte encoding
processing. An SQL-injection security hole can include a
situation whereby when a user supplied data to be inserted
into a database, the user might inject SQL statements into the
data that the server will execute. With regards to this
vulnerability, when character set unaware-escaping is used
(for example, addslashes() in PHP), it is
possible to bypass the escaping in some multi-byte character
sets (for example, SJIS, BIG5 and GBK). As a result, a
function such as addslashes() is not able
to prevent SQL-injection attacks. It is impossible to fix this
on the server side. The best solution is for applications to
use character set-aware escaping offered by a function such
mysql_real_escape_string().
However, a bug was detected in how the MySQL server parses the
output of mysql_real_escape_string(). As a
result, even when the character set-aware function
mysql_real_escape_string() was used, SQL
injection was possible. This bug has been fixed.
Workarounds: If you are
unable to upgrade MySQL to a version that includes the fix for
the bug in mysql_real_escape_string()
parsing, but run MySQL 5.0.1 or higher, you can use the
NO_BACKSLASH_ESCAPES SQL mode as a
workaround. (This mode was introduced in MySQL 5.0.1.)
NO_BACKSLASH_ESCAPES enables an SQL
standard compatibility mode, where backslash is not considered
a special character. The result will be that queries will
fail.
To set this mode for the current connection, enter the following SQL statement:
SET sql_mode='NO_BACKSLASH_ESCAPES';
You can also set the mode globally for all clients:
SET GLOBAL sql_mode='NO_BACKSLASH_ESCAPES';
This SQL mode also can be enabled automatically when the
server starts by using the command-line option
--sql-mode=NO_BACKSLASH_ESCAPES or by setting
sql-mode=NO_BACKSLASH_ESCAPES in the server
option file (for example, my.cnf or
my.ini, depending on your system).
The patch for Bug#8303 broke the fix for Bug#8378 and was
undone. (In string literals with an escape character
(\) followed by a multi-byte character that
has a second byte of (\), the literal was
not interpreted correctly. The next byte now is escaped, not
the entire multi-byte character. This means it a strict
reverse of the mysql_real_escape_string()
function.)
The client libraries had not been compiled for position-indpendent code on Solaris-SPARC and AMD x86_64 platforms. (Bug#13159, Bug#14202, Bug#18091)
Running myisampack followed by
myisamchk with the
--unpack option would corrupt the
auto_increment key. (Bug#12633)
This is a bugfix release for the current production release family.
This MySQL 5.0.21 release includes the patches for recently
reported security vulnerabilites in the MySQL client-server
protocol. We would like to thank Stefano Di Paola
<stefano.dipaola@wisec.it> for finding and reporting
these to us.
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 Network (a commercial MySQL offering). For more details please see http://www.mysql.com/network/advisors.html.
Functionality added or changed:
Security enhancement: Added
the global max_prepared_stmt_count system
variable to limit the total number of prepared statements in
the server. This limits the potential for denial-of-service
attacks based on running the server out of memory by preparing
huge numbers of statements. The current number of prepared
statements is available through the
prepared_stmt_count system variable. (Bug#16365)
The
MySQL-shared-compat-5.0.
shared compatibility RPMs no longer contain libraries for
MySQL 5.1. This avoids a conflict because the 5.0 and 5.1
libraries share the same soname number. It contains libraries
for 3.23, 4.0, 4.1, and 5.0. (Bug#19288)
X-.i386.rpm
Creating a table in an InnoDB database with a column name that
matched the name of an internal InnoDB column (including
DB_ROW_ID, DB_TRX_ID,
DB_ROLL_PTR and
DB_MIX_ID) would cause a crash. MySQL now
returns error 1005 (cannot create table) with
errno set to -1. (Bug#18934)
NDB Cluster: It is now possible to perform
a partial start of a cluster. That is, it is now possible to
bring up the cluster without running ndbd --initial on
all configured data nodes first. (Bug#18606)
NDB Cluster: A new
--nowait-nodes startup option for
ndbd makes it possible to
“skip” specific nodes without waiting for them to
start when starting the cluster. See
Section 15.6.5.2, “Command Options for ndbd”.
NDB Cluster: It is now possible to install
MySQL with Cluster support to a non-default location and
change the search path for font description files using either
the --basedir or
--character-sets-dir options. (Previously in
MySQL 5.0, ndbd searched only the default
path for character sets.)
In result set metadata, the
MYSQL_FIELD.length value for
BIT columns now is reported in number of
bits. For example, the value for a BIT(9)
column is 9. (Formerly, the value was related to number of
bytes.) (Bug#13601)
The default for the
innodb_thread_concurrency system variable
was changed to 8. (Bug#15868)
Bugs fixed:
Security fix: A malicious
client, using specially crafted invalid login or
COM_TABLE_DUMP packets was able to read
uninitialized memory, which potentially, though unlikely in
MySQL, could have led to an information disclosure.
(CVE-2006-1516,
CVE-2006-1517)
Thanks to Stefano Di Paola
<stefano.dipaola@wisec.it> for finding and
reporting this bug.
Security fix: A malicious
client, using specially crafted invalid
COM_TABLE_DUMP packets was able to trigger
an exploitable buffer overflow on the server.
(CVE-2006-1518)
Thanks to Stefano Di Paola
<stefano.dipaola@wisec.it> for finding and
reporting this bug.
NDB Cluster: A simultaneous DROP
TABLE and table update operation utilising a table
scan could trigger a node failure. (Bug#18597)
mysql-test-run could not be run as
root. (Bug#17002)
MySQL-shared-compat-5.0.13-0.i386.rpm,
MySQL-shared-compat-5.0.15-0.i386.rpm,
MySQL-shared-compat-5.0.18-0.i386.rpm,
MySQL-shared-compat-5.0.19-0.i386.rpm,
MySQL-shared-compat-5.0.20-0.i386.rpm, and
MySQL-shared-compat-5.0.20a-0.i386.rpm
incorrectly depended on glibc 2.3 and could
not be installed on a glibc 2.2 system.
(Bug#16539)
IA-64 RPM packages for Red Hat and SuSE Linux that were built with the icc compiler incorrectly depended on icc runtime libraries. (Bug#16662)
After calling FLUSH STATUS, the
max_used_connections variable did not
increment for existing connections and connections which use
the thread cache. (Bug#15933)
MySQL would not compile on Linux distributions that use the tinfo library. (Bug#18912)
Within a trigger, CONNECTION_ID() did not
return the connection ID of the thread that caused the trigger
to be activated. (Bug#16461)
The yaSSL library returned a cipher list in a manner incompatible with OpenSSL. (Bug#18399)
For single-SELECT union constructs of the
form (SELECT ... ORDER BY
order_list1 [LIMIT
n]) ORDER BY
order_list2, the ORDER
BY lists were concatenated and the
LIMIT clause was ignored. (Bug#18767)
CREATE VIEW statements would not be
replicated to the slave if the
--replicate-wild-ignore-table rule was
enabled. (Bug#18715)
Index corruption could occur in cases when
key_cache_block_size was not a multiple of
myisam_block_size (for example, with
key_cache_block_size=1536 and
myisam_block_size=1024). (Bug#19079)
LAST_INSERT_ID() in a stored function or
trigger returned zero. . (Bug#15728)
Use of CONVERT_TZ() in a view definition
could result in spurious syntax or access errors. (Bug#15153)
UNCOMPRESS(NULL) could cause subsequent
UNCOMPRESS() calls to return
NULL for legal non-NULL
arguments. (Bug#18643)
Conversion of a number to a CHAR UNICODE
string returned an invalid result. (Bug#18691)
DELETE and UPDATE
statements that used large NOT IN
( clauses
could use large amounts of memory. (Bug#15872)
value_list)
Prevent recursive views caused by using RENAME
TABLE on a view after creating it. (Bug#14308)
A LOCK TABLES statement that failed could
cause MyISAM not to update table statistics
properly, causing a subsequent CHECK TABLE
to report table corruption. (Bug#18544)
For a reference to a non-existent stored function in a stored
routine that had a CONTINUE handler, the
server continued as though a useful result had been returned,
possibly resulting in a server crash. (Bug#18787)
InnoDB did not use a consistent read for
CREATE ... SELECT when
innodb_locks_unsafe_for_binlog was set.
(Bug#18350)
InnoDB could read a delete mark from its
system tables incorrectly. (Bug#19217)
Corrected a syntax error in mysql-test-run.sh. (Bug#19190)
A missing DBUG_RETURN() caused the server
to emit a spurious error message: missing DBUG_RETURN
or DBUG_VOID_RETURN macro in function "open_table".
(Bug#18964)
DROP DATABASE did not drop stored routines
associated with the database if the database name was longer
than 21 characters. (Bug#18344)
Avoid trying to include
<asm/atomic.h> when it doesn't work
in C++ code. (Bug#13621)
Executing SELECT on a large table that had
been compressed within myisampack could
cause a crash. (Bug#17917)
NDB Cluster: When attempting to create an
index on a BIT or BLOB
column, Error 743: Unsupported character set in
table or index was returned instead of
Error 906: Unsupported attribute type in
index.
Within stored routines, usernames were parsed incorrectly if they were enclosed within quotes. (Bug#13310)
Casting a string to DECIMAL worked, but
casting a trimmed string (using LTRIM() or
RTRIM()) resulted in loss of decimal
digits. (Bug#17043)
NDB Cluster: On slow networks or CPUs, the
management client SHOW command could
sometimes erroneously show all data nodes as being master
nodes belonging to nodegroup 0. (Bug#15530)
If the second or third argument to BETWEEN
was a constant expression such as '2005-09-01 -
INTERVAL 6 MONTH and the other two arguments were
columns, BETWEEN was evaluated incorrectly.
(Bug#18618)
If the first argument to BETWEEN was a
DATE or TIME column of a
view and the other arguments were constants,
BETWEEN did not perform conversion of the
constants to the appropriate temporary type, resulting in
incorrect evaluation. (Bug#16069)
Server and clients ignored the --sysconfdir
option that was passed to configure. (Bug#15069)
NDB Cluster: In a 2-node cluster with a
node failure, restarting the node with a low value for
StartPartialTimeout could cause the cluster
to come up partitioned (“split-brain” issue).
(Bug#16447)
A similar issue could occur when the cluster was first started with a sufficiently low value for this parameter. (Bug#18612)
NDB Cluster: On systems with multiple
network interfaces, data nodes would get “stuck”
in startup phase 2 if the interface connecting them to the
management server was working on node startup while the
interface interconnecting the data nodes experienced a
temporary outage. (Bug#15695)
NDB Cluster: Unused open handlers for
tables in which the metadata had changed were not properly
closed. This could result in stale results from Cluster tables
following an ALTER TABLE. (Bug#13228)
NDB Cluster: Uninitialized internal
variables could lead to unexpected results. (Bug#11033, Bug#11034)
For InnoDB tables, an expression of the
form when used in a join
returned incorrect results. (Bug#14360)
col_name BETWEEN
col_name2 - INTERVAL
x DAY AND
col_name2 + INTERVAL
x DAY
INSERT DELAYED into a view caused an
infinite loop. (Bug#13683)
Lettercase in database name qualifiers was not consistently
handled properly in queries when
lower_case_table_names was set to 1. (Bug#15917)
The optimizer could cause a server crash or use a non-optimal
subset of indexes when evaluating whether to use
Index Merge/Intersection variant of
index_merge optimization. (Bug#19021)
The presence of multiple equalities in a condition after reading a constant table could cause the optimizer not to use an index. This resulted in certain queries being much slower than in MySQL 4.1. (Bug#16504)
A recent change caused the mysql client not
to display NULL values correctly and to
display numeric columns left-justified rather than
right-justified. The problems have been corrected. (Bug#18265)
mysql_reconnect() sent a SET
NAMES statement to the server, even for pre-4.1
servers that do not understand the statement. (Bug#18830)
COUNT(*) on a MyISAM
table could return different results for the base table and a
view on the base table. (Bug#18237)
DELETE with LEFT JOIN
for InnoDB tables could crash the server if
innodb_locks_unsafe_for_binlog was enabled.
(Bug#15650)
InnoDB failure to release an adaptive hash
index latch could cause a server crash if the query cache was
enabled. (Bug#15758)
For mysql.server, if the
basedir option was specified after
datadir in an option file, the setting for
datadir was ignored and assumed to be
located under basedir. (Bug#16240)
The euro sign (€) was not stored
correctly in columns using the
latin1_german1_ci or
latin1_general_ci collation. (Bug#18321)
EXTRACT(QUARTER FROM
returned unexpected
results. (Bug#18100)
date)
TRUNCATE did not reset the
AUTO_INCREMENT counter for
MyISAM tables when issued inside a stored
procedure. (Bug#14945)
Note: This bug did not affect
InnoDB tables. Also,
TRUNCATE does not reset the
AUTO_INCREMENT counter for
NDBCluster tables regardless of when it is
called (see Bug#18864).
The server was always built as though
--with-extra-charsets=complex had been
specified. (Bug#12076)
A query using WHERE (column_1,
column_2) IN
((value_1,
value_2)[, (..., ...), ...]) would
return incorrect results. (Bug#16248)
Queries of the form SELECT DISTINCT
did not return
all matching rows. (Bug#16710)
timestamp_column WHERE
date_function(timestamp_col)
= constant
When running a query that contained a GROUP_CONCAT(
SELECT GROUP_CONCAT(...) ), the result was
NULL except in the
ROLLUP part of the result, if there was
one. (Bug#15560)
For tables created in a MySQL 4.1 installation upgraded to MySQL 5.0 and up, multiple-table updates could update only the first matching row. (Bug#16281)
NDB Cluster: When multiple node restarts
were attempted without allowing each restart to complete, the
error message returned was Array index out of
bounds rather than Too many crashed
replicas. (Bug#18349)
CAST for large double AS SIGNED
INT)double
values outside the signed integer range truncates the result
to be within range, but the result sometimes had the wrong
sign, and no warning was generated. (Bug#15098)
Updating a field value when also requesting a lock with
GET_LOCK() would cause slave servers in a
replication environment to terminate. (Bug#17284)
This is a bugfix release for the current production release family. It replaces MySQL 5.0.20.
Changes from 5.0.20 to 5.0.20a:
The fix for “Command line options are ignored for mysql client” (Bug#16855) has been revoked because it introduced an incompatible change in the way the mysql command-line client selects the server to connect to. In the worst case, this might have led to a client issuing commands to a server for which they were not intended, and this must not happen. To help all users in understanding this subject, Section 4.2, “Invoking MySQL Programs” now includes additional explanation of how command options with regard to host selection.
The code of the yaSSL library has been
improved to avoid the dependency on a C++ runtime library, so
a link with pure C applications is now possible on additional
(but not yet all) platforms. We are working on fixing the
remaining issues.
Additional information about SSL support:
With version 5.0.20a, SSL support is contained in all binaries
for all Unix (including Linux) and Windows platforms except
AIX, HP-UX, OpenServer 6, and the RPMs specific for
RHAS3/RHAS4/SLES9 on Itanium CPUs (ia64);
It is also not contained in those for Novell Netware. We are
trying to add these platforms in future versions.
Please note that the original 5.0.20 announcement included
inexact wording: SSL support is “included” in
both server and client, but by default not
“enabled”. SSL can be enabled by passing the
SSL-related options (--ssl,
--ssl-key=...,
--ssl-cert=...,
--ssl-ca=...) when starting the server and
the client or by specifying these options in an option file.
For more information, see
Section 5.9.7, “Using Secure Connections”.
Functionality added or changed:
Added the --sysdate-is-now option to
mysqld to enable
SYSDATE() to be treated as an alias for
NOW(). See
Section 12.5, “Date and Time Functions”. (Bug#15101)
InnoDB: The InnoDB
storage engine now provides a descriptive error message if
ibdata file information is omitted from
my.cnf. (Bug#16827)
The NDBCluster storage engine now supports
INSERT IGNORE and
REPLACE statements. Previously, these
statements failed with an error. (Bug#17431)
Builds for Windows, Linux, and Unix (except AIX) platforms now have SSL support enabled, in the server as well as in the client libraries. Because part of the SSL code is written in C++, this does introduce dependencies on the system's C++ runtime libraries in several cases, depending on compiler specifics. (Bug#18195)
The syntax for CREATE PROCEDURE and
CREATE FUNCTION statements now includes a
DEFINER clause. The
DEFINER value specifies the security
context to be used when checking access privileges at routine
invocation time if the routine has the SQL SECURITY
DEFINER characteristic. See
Section 17.2.1, “CREATE PROCEDURE and CREATE FUNCTION Syntax”, for more information.
When mysqldump is invoked with the
--routines option, it now dumps the
DEFINER value for stored routines.
Large file support added to build for QNX
platform. (Bug#17336)
Large file support was re-enabled for the MySQL server binary for the AIX 5.2 platform. (Bug#13571)
Bugs fixed:
If the WHERE condition of a query contained
an OR-ed FALSE term, the
set of tables whose rows cannot serve for null-complements in
outer joins was determined incorrectly. This resulted in
blocking possible conversions of outer joins into joins by the
optimizer for such queries. (Bug#17164)
mysql_config returned incorrect libraries
on x86_64 systems. (Bug#13158)
Stored routine names longer than 64 characters were silently truncated. Now the limit is properly enforced and an error occurs. (Bug#17015)
During conversion from one character set to
ucs2, multi-byte characters with no
ucs2 equivalent were converted to multiple
characters, rather than to 0x003F QUESTION
MARK. (Bug#15375)
The mysql_close() C API function leaked
handles for shared-memory connections on Windows. (Bug#15846)
Checks for permissions on database operations could be
performed in a case-insensitive manner (a user with
permissions on database MYDATABASE could by
accident get permissions on database
myDataBase), if the privilege data were
still cached from a previous check. (Bug#17279)
If InnoDB ran out of buffer space for row
locks and adaptive hashes, the server would crash. Now
InnoDB rolls back the transaction. (Bug#18238)
InnoDB tables with an adaptive hash blocked
other queries during CHECK TABLE statements
while the entire hash was checked. This could be a long time
for a large hash. (Bug#17126)
For InnoDB tables created in MySQL 4.1 or
earlier, or created in 5.0 or later with compact format,
updating a row so that a long column is updated or the length
of some column changes, InnoDB later would
fail to reclaim the BLOB storage space if
the row was deleted. (Bug#18252)
InnoDB had a memory leak for duplicate-key
errors with tables having 90 columns or more. (Bug#18384)
InnoDB: The LATEST FOREIGN KEY
ERROR section in the output of SHOW INNODB
STATUS was sometimes formatted incorrectly, causing
problems with scripts that parsed the output of this
statement. (Bug#16814)
When using ORDER BY with a non-string
column inside GROUP_CONCAT() the result's
character set was converted to binary. (Bug#18281)
See also Bug#14169.
SELECT ... WHERE when column
LIKE 'A%'column had
a key and used the latin2_czech_cs
collation. (Bug#17374)
Complex queries with nested joins could cause a server crash. (Bug#18279)
The server could deadlock under heavy load while writing to the binary log. (Bug#18116)
A SELECT ... ORDER BY ... from a view
defined using a function could crash the server. An example of
such a view might be CREATE VIEW AS SELECT SQRT(c1)
FROM t1. (Bug#18386)
A DELETE using a subquery could crash the
server. (Bug#18306)
REPAIR TABLE, OPTIMIZE
TABLE, and ALTER TABLE operations
on transactional tables (or on tables of any type on Windows)
could corrupt triggers associated with those tables. (Bug#18153)
MyISAM: Performing a bulk insert on a table
referenced by a trigger would crash the table. (Bug#17764)
MyISAM: Keys for which the first part of
the key was a CHAR or
VARCHAR column using the UTF-8 character
set and longer than 254 bytes could become corrupted. (Bug#17705)
Using ORDER BY
within a stored
procedure (where intvarintvar is an
integer variable or expression) would crash the server. (Bug#16474)
Note: The use of an integer
i in an ORDER BY
clause for sorting the
result by the
iith
column is deprecated (and non-standard). It should
not be used in new applications. See
Section 13.2.7, “SELECT Syntax”.
Triggers created in MySQL 5.0.16 and earlier could not be dropped after upgrading the server to 5.0.17 or later. (Bug#15921)
A SELECT using a function against a nested
view would crash the server. (Bug#15683)
NDB Cluster: Certain queries using
ORDER BY ... ASC in the
WHERE clause could return incorrect
results. (Bug#17729)
NDB Cluster: A timeout in the handling of
an ABORT condition with more that 32
operations could yield a node failure. (Bug#18414)
NDB Cluster: A node restart immediately
following a CREATE TABLE would fail.
Important: This fix supports
2-node Clusters only. (Bug#18385)
NDB Cluster: In event of a node failure
during a rollback, a “false” lock could be
established on the backup for that node, which lock could not
be removed without restarting the node. (Bug#18352)
NDB Cluster: The cluster created a crashed
replica of a table having an ordered index — or when
logging was not enabled, of a table having a table or unique
index — leading to a crash of the cluster following 8
successibe restarts. (Bug#18298)
NDB Cluster: When replacing a failed master
node, the replacement node could cause the cluster to crash
from a buffer overflow if it had an excessively large amount
of data to write to the cluster log. (Bug#18118)
NDB Cluster: If a mysql
or other client could not parse the result set returned from a
mysqld process acting as an SQL node in a
cluster, the client would crash instead of returning the
appropriate error. For example, this could happen when the
client attempted to use a character set was not available to
the mysqld. (Bug#17380)
NDB Cluster: Restarting nodes were allowed
to start and join the cluster too early. (Bug#16772)
If a row was inserted inside a stored procedure using the parameters passed to the procedure in the INSERT statement, the resulting binlog entry was not escaped properly. (Bug#18293)
If InnoDB encountered a
HA_ERR_LOCK_TABLE_FULL error and
rolled-back a transaction, the transaction was still written
to the binary log. (Bug#18283)
Stored procedures that call UDFs and pass local string variables caused server crashes. (Bug#17261)
Connecting to a server with a UCS2 default character set with a client using a non-UCS2 character set crashed the server. (Bug#18004)
Loading of UDFs in a statically linked MySQL caused a server crash. UDF loading is now blocked if the MySQL server is statically linked. (Bug#11835)
Views that incorporate tables from the INFORMATION_SCHEMA resulted in a server crash when queried. (Bug#18224)
A SELECT * query on an INFORMATION_SCHEMA
table by a user with limited privileges resulted in a server
crash. (Bug#18113)
Attempting to access an InnoDB table after
starting the server with --skip-innodb caused
a server crash. (Bug#14575)
InnoDB used table locks (not row locks)
within stored functions. (Bug#18077)
Replication slaves could not replicate triggers from older
servers that included no DEFINER clause in
the trigger definition. Now the trigger executes with the
privileges of the invoker (which on the slave is the slave SQL
thread). (Bug#16266)
Character set conversion of string constants for
UNION of constant and table column was not
done when it was safe to do so. (Bug#15949)
The DEFINER value for stored routines was
not replicated. (Bug#15963)
Use of stored functions with DISTINCT or
GROUP BY can produce incorrect results when
ORDER BY is also used. (Bug#13575)
Use of TRUNCATE TABLE for a
TEMPORARY table on a master server was
propagated to slaves properly, but slaves did not decrement
the Slave_open_temp_tables counter
properly. (Bug#17137)
SELECT COUNT(*) for a
MyISAM table could return different results
depending on whether an index was used. (Bug#14980)
A LEFT JOIN with a UNION
that selects literal values could crash the server. (Bug#17366)
Large file support did not work in AIX server binaries. (Bug#10776)
Updating a view that filters certain rows to set a filtered
out row to be included in the table caused infinite loop. For
example, if the view has a WHERE clause of salary >
100 then issuing an UPDATE statement of SET
salary = 200 WHERE id = 10, caused an infinite loop.
(Bug#17726)
Certain combinations of joins with mixed ON
and USING clauses caused unknown column
errors. (Bug#15229)
NDB Cluster: Inserting and deleting
BLOB column values while a backup was in
process could cause the loss of an ndbd
node. (Bug#14028)
If the server was started with the
--skip-grant-tables option, it was impossible
to create a trigger or a view without explicitly specifying a
DEFINER clause. (Bug#16777)
COUNT(DISTINCT and
col1,
col2)COUNT(DISTINCT
CONCAT( operations
produced different results if one of the columns was an
indexed col1,
col2))DECIMAL column. (Bug#15745)
The server displayed garbage in the error message warning
about bad assignments to DECIMAL columns or
routine variables. (Bug#15480)
The server would execute stored routines that had a non-existent definer. (Bug#13198)
For FEDERATED tables, a
SELECT statement with an ORDER
BY clause did not return rows in the proper order.
(Bug#17377)
The FORMAT() function returned an incorrect
result when the client's
character_set_connection value was
utf8. (Bug#16678)
NDB Cluster: Some query cache statistics
were not always correctly reported for Cluster tables. (Bug#16795)
Updating the value of a Unicode VARCHAR
column with the result returned by a stored function would
cause the insertion of ASCII characters into the column
instead of Unicode, even where the function's return type was
also declared as Unicode. (Bug#17615)
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