The world's most popular open source database
This is a new Beta development release, fixing recently discovered bugs.
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:
Incompatible Change: MySQL Cluster:
MySQL Cluster node and system restarts formerly required that
all fragments use the same local checkpoint (LCP); beginning
with this version, it is now possible for different fragments to
use different LCPs during restarts. This means that data node
filesystems must be rebuilt as part of any upgrade to this
version by restarting all data nodes with the
--initial option.
See Section 17.5.2, “MySQL Cluster 5.1 and MySQL Cluster NDB 6.x Upgrade and Downgrade Compatibility”, and related sections of the Manual before upgrading a MySQL Cluster to version 5.1.12 or later. (Bug#21478, Bug#21271)
Incompatible Change:
In the INFORMATION_SCHEMA.EVENTS
table, the EVENT_DEFINITION column now
contains the SQL executed by a scheduled event.
The EVENT_BODY column now contains the
language used for the statement or statements shown in
EVENT_DEFINITION. In MySQL 5.1, the value
shown in EVENT_BODY is always
SQL.
These changes were made to bring this table into line with the
INFORMATION_SCHEMA.ROUTINES table,
and that table's ROUTINE_BODY and
ROUTINE_DEFINITION columns.
(Bug#16992)
Incompatible Change:
Support for the BerkeleyDB (BDB) engine has
been dropped from this release. Any existing tables that are in
BDB format will not be readable from within MySQL from 5.1.12 or
newer. You should convert your tables to another storage engine
before upgrading to 5.1.12.
Because of this change, the SHOW [BDB] LOGS
statement has been dropped.
Incompatible Change: A number of MySQL constructs are now prohibited in partitioning expressions, beginning with this release. These include the following:
A number of MySQL functions. For a complete list of these, see Section 18.5.3, “Partitioning Limitations Relating to Functions”.
Nested function calls.
Calls to stored routines, UDFs, or plugins.
Character-to-integer conversions involving non-8-bit
character sets or any of the
latin1_german2_ci,
latin2_czech_cs, or
cp1250_czech_cs collations.
These restrictions were added in part as a result of Bug#18198 and related bug reports.
For more information about these and other restrictions on partitioned tables in MySQL, see Section 18.5, “Restrictions and Limitations on Partitioning”.
Incompatible Change:
The permitted values for and behaviour of the
event_scheduler system variable
have changed. Permitted values are now ON,
OFF, and DISABLED, with
OFF being the default. It is not possible to
change its value to or from DISABLED while
the server is running.
For details, see Section 19.4.1, “Event Scheduler Overview”.
Incompatible Change:
The plugin interface has changed: The
st_mysql_plugin structure has a new
license member to indicate the
license type. (The allowable values are defined in
mysql/plugin.h.) This change is not
backward compatible, so the API version
(MYSQL_PLUGIN_INTERFACE_VERSION) has changed.
For additional information, see
Section 22.2.3, “Writing Plugins”.
Incompatible Change: The full-text parser plugin interface has changed in two ways:
The MYSQL_FTPARSER_PARAM structure has a
new flags member. This is zero if there
are no special flags, or
MYSQL_FTFLAGS_NEED_COPY, which means that
mysql_add_word() must save a copy of
the word (that is, it cannot use a pointer to the word
because the word is in a buffer that will be overwritten.)
This flag might be set or reset by MySQL before calling the
parser plugin, by the parser plugin itself, or by the
mysql_parse() function.
The mysql_parse() and
mysql_add_word() functions now take a
MYSQL_FTPARSER_PARAM as their first
argument, not a
MYSQL_FTPARSER_PARAM::mysql_ftparam as
before.
These changes are not backward compatible, so the API version
(MYSQL_FTPARSER_INTERFACE_VERSION) has
changed. For additional information, see
Section 22.2.3, “Writing Plugins”.
Incompatible Change:
Storage engines can be pluggable at runtime, so the distinction
between disabled and invalid storage engines no longer applies.
This affects the
NO_ENGINE_SUBSTITUTION SQL
mode, as described in Section 5.1.7, “Server SQL Modes”.
Incompatible Change:
The namespace for scheduled events has changed, such that events
are no longer unique to individual users. This also means that a
user with the EVENT privilege on
a given database can now view, alter, or drop any events defined
on that database.
If you used scheduled events in an earlier MySQL 5.1 release, you should rename any of them having the same name and defined on the same database but belonging to different users — so that all events in a given database have unique names — before upgrading to 5.1.12 (or newer).
For additional information, see Section 19.4.6, “The Event Scheduler and MySQL Privileges”.
Important Change: Partitioning: MySQL Cluster:
It is no longer possible to create Cluster tables using any
partitioning type other than [LINEAR]
KEY. Attempting to do so now raises an error.
Important Change: MySQL Cluster:
LOAD DATA
INFILE no longer causes an implicit commit for all
storage engines. It now causes an implicit commit only for
tables using the NDB storage engine.
(Bug#11151)
Important Change: MySQL Cluster:
The status variables Ndb_connected_host and
Ndb_connected_port were renamed to
Ndb_config_from_host and
Ndb_config_from_port,
respectively.
Important Change: Replication:
The default value for the --binlog-format
server option is now MIXED.
MySQL Cluster:
The ndb_config utility now accepts
-c as a short form of the
--ndb-connectstring option.
(Bug#22295)
MySQL Cluster: Added the --bind-address option for ndbd. This allows a data node process to be bound to a specific network interface. (Bug#22195)
MySQL Cluster:
The Ndb_number_of_storage_nodes system
variable was renamed to
Ndb_number_of_data_nodes.
(Bug#20848)
MySQL Cluster:
The HELP command in the Cluster
management client now provides command-specific help. For
example, HELP RESTART in
ndb_mgm provides detailed information about
the RESTART command.
(Bug#19620)
MySQL Cluster: A number of erroneous, misleading, or missing error messages have been corrected. (Bug#17297, Bug#19543)
MySQL Cluster: Backup messages are no longer printed to the cluster log.
MySQL Cluster:
Added the --ndb-use-copying-alter-table option
to mysqld to provide a fallback in case of
problems with online ALTER TABLE
operations on NDB tables.
Replication: The default binary log format (as used during replication) is now Mixed based, automatically using a combination of row-based and statement based log events as appropriate.
Cluster API:
Two new NDB API methods — aggregate()
and validate() — were added to the
NdbDictionary::Object::Table class. See
Table::aggregate(), and
Table::validate(), for more information.
This was done to rectify the following issues:
Under some conditions, the data distribution could become unbalanced in a MySQL Cluster with 2 or more node groups following the creation of a new table.
Data was stored unevenly between partitions due to all
BLOB data being placed in
partition 0.
The number of InnoDB threads is no longer
limited to 1,000 on Windows.
(Bug#22268)
The STATE column of the
INFORMATION_SCHEMA.PROCESSLIST
table was increased from 30 to 64 characters to accommodate
longer state values.
(Bug#21652)
mysqldump now has a
--flush-privileges option. It causes
mysqldump to emit a
FLUSH
PRIVILEGES statement after dumping the
mysql database. This option should be used
any time the dump contains the mysql database
and any other database that depends on the data in the
mysql database for proper restoration.
(Bug#21424)
mysqlslap threads now try to connect up to 10 times if the initial connect attempt fails. (Bug#21297)
The output generated by the server when using the
--xml option has changed with regard to null
values. It now matches the output from mysqldump
--xml . That is, a column containing
a NULL value is now reported as
<field name="column_name" xsi:nil="true" />
whereas a column containing the string value
'NULL' is reported as
<field name="column_name">NULL</field>
and a column containing an empty string is reported as
<field name="column_name">>/field>
The mysqld and mysqlmanager man pages have been reclassified from volume 1 to volume 8. (Bug#21220)
InnoDB now honors IGNORE
INDEX. Perviously using IGNORE
INDEX in cases where an index sort would be slower
than a filesort had no effect when used with
InnoDB tables.
(Bug#21174)
TIMESTAMP columns that are
NOT NULL now are reported that way by
SHOW COLUMNS and
INFORMATION_SCHEMA.
(Bug#20910)
Memory consumption of the InnoDB data
dictionary cache was roughly halved by cleaning up the data
structures.
(Bug#20877)
The BINARY keyword now is forbidden as a data
type attribute in stored routines (for example, DECLARE
v1 VARCHAR(25) BINARY), because
DECLARE does not support
collations, and in this context BINARY
specifies the binary collation of the variable's character set.
(Bug#20701)
The following statements now can be executed as prepared
statements (using
PREPARE
plus
EXECUTE):
CACHE INDEX
CHANGE MASTER
CHECKSUM {TABLE | TABLES}
{CREATE | RENAME | DROP} DATABASE
{CREATE | RENAME | DROP} USER
FLUSH {TABLE | TABLES | TABLES WITH READ LOCK | HOSTS | PRIVILEGES
| LOGS | STATUS | MASTER | SLAVE | DES_KEY_FILE | USER_RESOURCES}
GRANT
REVOKE
KILL
LOAD INDEX INTO CACHE
RESET {MASTER | SLAVE | QUERY CACHE}
SHOW BINLOG EVENTS
SHOW CREATE {PROCEDURE | FUNCTION | EVENT | TABLE | VIEW}
SHOW {AUTHORS | CONTRIBUTORS | WARNINGS | ERRORS}
SHOW {MASTER | BINARY} LOGS
SHOW {MASTER | SLAVE} STATUS
SLAVE {START | STOP}
INSTALL PLUGIN
UNINSTALL PLUGIN
In the INFORMATION_SCHEMA.ROUTINES
table the ROUTINE_DEFINITION column now is
defined as NULL rather than NOT
NULL. Also, NULL rather than the
empty string is returned as the column value if the user does
not have sufficient privileges to see the routine definition.
(Bug#20230)
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)
The MySQL distribution now compiles on UnixWare 7.13. (Bug#20190)
configure now defines the symbol
DBUG_ON in config.h to
indicate whether the source tree is configured to be compiled
with debugging support.
(Bug#19517)
TEXT and
BLOB columns do not support
DEFAULT values. However, when a default of
'' was specified, the specification was
silently ignored. This now results in a warning, or an error in
strict mode.
(Bug#19498)
For mysqlshow, if a database name argument
contains wildcard characters (such as “
_ ”) but matches a single database
name exactly, treat the name as a literal name. This allows a
command such as mysqlshow information_schema
work without having to escape the wildcard character.
(Bug#19147)
The source distribution has been updated so that the UDF example can be compiled under Windows with CMake. See Section 22.3.2.5, “Compiling and Installing User-Defined Functions”. (Bug#19121)
The default value of the
tmp_table_size system variable
was lowered from 32MB to 16MB because it is bounded by the value
of max_heap_table_size, which
has a default of 16MB.
(Bug#18875)
Log table changes: By default, the log tables use the
CSV storage engine, as before. But now the
log tables can be altered to use the MyISAM
storage engine. You cannot use ALTER
TABLE to alter a log table that is in use. The log
must be disabled first. No engines other than
CSV or MyISAM are legal
for the log tables. The use of DROP
TABLE for log tables is similarly restricted: It
cannot be used to drop a log table that is in use. The log must
be disabled first. (These changes also correct a deadlock that
occurred for an attempt to drop an in-use log table.)
(Bug#18559)
Added the --set-charset option to
mysqlbinlog to allow the character set to be
specified for processing binary log files.
(Bug#18351)
The ExtractValue() function now
produces an error when passed an XML fragment that is not
well-formed.
(Previously, the function allowed invalid XML fragments to be used.) (Bug#18201)
On Windows, typing Control-C while a query was running caused the mysql client to crash. Now it causes mysql to attempt to kill the current statement. If this cannot be done, or Control-C is typed again before the statement is killed, mysql exits. (In other words, mysql's behavior with regard to Control-C is now the same as it is on Unix platforms.) (Bug#17926)
See also Bug#1989.
The bundled yaSSL library licensing has added a FLOSS exception
similar to MySQL to resolve licensing incompatibilities with
MySQL. (See the
extra/yassl/FLOSS-EXCEPTIONS file in a
MySQL source distribution for details.)
(Bug#16755)
SHOW CREATE TABLE now shows
constraints for InnoDB tables.
(Bug#16614)
EXPLAIN EXTENDED now shows a
filtered column that is an estimated
percentage of the examined rows that will be joined with the
previous tables. This was added while dealing with a problem of
MySQL choosing the wrong index for some queries.
(Bug#14940)
The mysql client now allows
\l in the prompt command
argument to insert the current delimiter into the prompt.
(Bug#14448)
The mysql client used the default character
set if it automatically reconnected to the server, which is
incorrect if the character set had been changed. To enable the
character set to remain synchronized on the client and server,
the mysql command charset
(or \C) that changes the default character
set and now also issues a SET NAMES
statement. The changed character set is used for reconnects.
(Bug#11972)
The LEFT() and
RIGHT() functions return
NULL if any argument is
NULL.
(Bug#11728)
If a DROP VIEW statement named
multiple views, it stopped with an error if a non-existent view
was named and did not drop the remaining views. Now it continues
on and reports an error at the end, similar to
DROP TABLE.
(Bug#11551)
For a successful dump, mysqldump now writes a SQL comment to the end of the dump file in the following format:
-- Dump completed on YYYY-MM-DD hh:mm:ss
There were several issues regarding how
SHOW STATUS affected some status
variables and logging which could impact monitoring the MySQL
Server. The behavior of this statement has been modified in two
ways:
SHOW STATUS is no longer
logged to the slow query log.
SHOW STATUS no longer updates
any session status variables, except for
com_show_status.
However, SHOW STATUS continues to
update global status variables to allow
monitoring of what the server is actually doing. This is because
SHOW STATUS creates temporary
tables that may affect performance if it is called excessively
often.
(Bug#10210)
See also Bug#19764.
For spatial data types, the server formerly returned these as
VARSTRING values with a binary collation. Now
the server returns spatial values as
BLOB values.
(Bug#10166)
The LOAD DATA FROM MASTER and LOAD
TABLE FROM MASTER statements are deprecated. See
Section 12.6.2.2, “LOAD DATA FROM MASTER Syntax”, for recommended
alternatives.
(Bug#9125, Bug#20596, Bug#14399, Bug#12187, Bug#15025, Bug#18822)
For the mysql client, typing Control-C causes mysql to attempt to kill the current statement. If this cannot be done, or Control-C is typed again before the statement is killed, mysql exits. Previously, Control-C caused mysql to exit in all cases. (Bug#1989)
It is no longer possible to create partitioned tables using the
CSV storage engine.
Binary MySQL distributions no longer include a mysqld-max server. Instead, distributions contain a binary that includes the features previously included in the mysqld-max binary.
SHOW STATUS is no longer logged
to the slow query log.
Program Database files (extension pdf) are
now included by default in Windows distributions. These can be
used to help diagnose problems with mysqld
and other tools. See Section 22.5.1, “Debugging a MySQL Server”.
INFORMATION_SCHEMA contains new tables,
GLOBAL_STATUS,
SESSION_STATUS,
GLOBAL_VARIABLES,
and
SESSION_VARIABLES,
that correspond to the output from the SHOW
{GLOBAL|SESSION} STATUS and SHOW
{GLOBAL|SESSION} VARIABLES statements.
SHOW STATUS no longer updates any
session status variables, except for
com_show_status.
A new system variable,
lc_time_names, specifies the
locale that controls the language used to display day and month
names and abbreviations. This variable affects the output from
the DATE_FORMAT(),
DAYNAME() and
MONTHNAME() functions. See
Section 9.8, “MySQL Server Locale Support”.
Using --with-debug to configure MySQL with
debugging support enables you to use the
--debug="d,parser_debug" option when
you start the server. This causes the Bison parser that is used
to process SQL statements to dump a parser trace to the server's
standard error output. Typically, this output is written to the
error log.
The bundled yaSSL library was upgraded to version 1.3.7.
The Instance Manager --passwd option has been
renamed to --print-password-line. Other options
were added to enable management of the IM password file from the
command line: --add-user,
--drop-user, --edit-user,
--list-users,
--check-password-file,
--clean-password-file,
--username, and --password.
The --mysql-safe-compatible option was added to
cause the Instance Manner to act similarly to
mysqld_safe.
Added the SHOW CONTRIBUTORS
statement.
The general query log and slow query logs now can be enabled or
disabled at runtime with the
general_log and
slow_query_log system
variables, and the name of the log files can be changed by
setting the general_log_file
and slow_query_log_file system
variables. See Section 5.2.3, “The General Query Log”, and
Section 5.2.5, “The Slow Query Log”.
Bugs fixed:
Security Fix:
A stored routine created by one user and then made accessible to
a different user using GRANT EXECUTE could be
executed by that user with the privileges of the routine's
definer.
(Bug#18630, CVE-2006-4227)
Security Fix: On Linux, and possibly other platforms using case-sensitive filesystems, it was possible for a user granted rights on a database to create or access a database whose name differed only from that of the first by the case of one or more letters. (Bug#17647, CVE-2006-4226)
Security Fix:
If a user has access to MyISAM table
t, that user can create a
MERGE table m that
accesses t. However, if the user's
privileges on t are subsequently
revoked, the user can continue to access
t by doing so through
m. If this behavior is undesirable,
you can start the server with the new
--skip-merge option to disable the
MERGE storage engine.
(Bug#15195, CVE-2006-4031)
Incompatible Change:
For utf8 columns, the full-text parser
incorrectly considered several non-word punctuation and
whitespace characters as word characters, causing some searches
to return incorrect results.
The fix involves a change to the full-text parser, so any tables
that have FULLTEXT indexes on
utf8 columns must be repaired with
REPAIR TABLE:
REPAIR TABLE tbl_name QUICK;
MySQL Cluster: Packaging:
The ndb_mgm program was included in both the
MySQL-ndb-tools and
MySQL-ndb-management RPM packages, resulting
in a conflict if both were installed. Now
ndb_mgm is included only in
MySQL-ndb-tools.
(Bug#21058)
MySQL Cluster: Replication:
A DELETE FROM table with no
WHERE clause (deleting all rows) running
concurrently with INSERT
statements on a storage engine with row-level locking (such as
NDB) could produce inconsistent results when
using statement-based replication.
(Bug#19066)
MySQL Cluster: Replication:
(Replication): A node failure could send duplicate events,
causing a mysqld replicating tables
containing BLOBs to crash.
MySQL Cluster: (NDB API): Inacivity timeouts for scans were not correctly handled. (Bug#23107)
MySQL Cluster:
Inserting into an NDB table failed when the
table had no primary key but had a unique key added after table
was created on one or more NOT NULL columns.
This occurred when the unique key had been adding using either
ALTER TABLE or CREATE
UNIQUE KEY.
(Bug#22838)
MySQL Cluster:
(NDB API): Attempting to read a non-existent tuple using
Commit mode for
NdbTransaction::execute() caused node
failures.
(Bug#22672)
MySQL Cluster:
The --help output from NDB
binaries did not include file-related options.
(Bug#21994)
MySQL Cluster:
Setting TransactionDeadlockDetectionTimeout
to a value greater than 12000 would cause scans to deadlock,
time out, fail to release scan records, until the cluster ran
out of scan records and stopped processing.
(Bug#21800)
MySQL Cluster: A scan timeout returned Error 4028 (Node failure caused abort of transaction) instead of Error 4008 (Node failure caused abort of transaction...). (Bug#21799)
MySQL Cluster:
The node recovery algorithm was missing a version check for
tables in the ALTER_TABLE_COMMITTED state (as
opposed to the TABLE_ADD_COMMITTED state,
which has the version check). This could cause inconsistent
schemas across nodes following node recovery.
(Bug#21756)
MySQL Cluster: A memory leak occurred when running ndb_mgm -e "SHOW". (Bug#21670)
MySQL Cluster: The server provided a non-descriptive error message when encountering a fatally corrupted REDO log. (Bug#21615)
MySQL Cluster:
The output for the --help option used with
NDB executable programs (such as
ndbd, ndb_mgm,
ndb_restore, ndb_config,
and others mentioned in
Section 17.10, “MySQL Cluster Utility Programs”) referred to the
Ndb.cfg file, instead of to
my.cnf.
(Bug#21585)
MySQL Cluster: A partial rollback could lead to node restart failures. (Bug#21536)
MySQL Cluster: Partition distribution keys were updated only for the primary and starting replicas during node recovery. This could lead to node failure recovery for clusters having an odd number of replicas.
We recommend values for NumberOfReplicas
that are even powers of 2, for best results.
MySQL Cluster: The ndb_mgm management client did not set the exit status on errors, always returning 0 instead. (Bug#21530)
MySQL Cluster: The failure of a unique index read due to an invalid schema version could be handled incorrectly in some cases, leading to unpredictable results. (Bug#21384)
MySQL Cluster:
Attempting to create an NDB table on a MySQL
server with an existing non-Cluster table with the same name in
the same database could result in data loss or corruption. Now,
if such a table is encountered during autodiscovery, a warning
is written to the error log of the affected
mysqld, and the local table is overwritten.
(Bug#21378)
MySQL Cluster: Cluster logs were not rotated following the first rotation cycle. (Bug#21345)
MySQL Cluster: In a cluster with more than 2 replicas, a manual restart of one of the data nodes could fail and cause the other nodes in the same node group to shut down. (Bug#21213)
MySQL Cluster:
The ndb_size.pl script did not account for
TEXT and
BLOB column values correctly.
(Bug#21204)
MySQL Cluster:
Some queries involving joins on very large
NDB tables could crash the MySQL server.
(Bug#21059)
MySQL Cluster:
Condition pushdown did not work correctly with
DATETIME columns.
(Bug#21056)
MySQL Cluster:
Responses to the ALL DUMP 1000 management
client command were printed multiple times in the cluster log
for each cluster node.
(Bug#21044)
MySQL Cluster:
The message Error 0 in readAutoIncrementValue(): no
Error was written to the error log whenever
SHOW TABLE STATUS was performed
on a Cluster table that did not have an
AUTO_INCREMENT column.
(Bug#21033)
MySQL Cluster: Restarting a data node while DDL operations were in progress on the cluster could cause other data nodes to fail. This could also lead to mysqld hanging or crashing under some circumstances. (Bug#21017, Bug#21050)
MySQL Cluster: In some situations with a high disk-load, writing of the redo log could hang, causing a crash with the error message GCP STOP detected. (Bug#20904)
MySQL Cluster:
A race condition could in some cirumstances following a
DROP TABLE.
(Bug#20897)
MySQL Cluster: Under some circumstances, local checkpointing would hang, keeping any unstarted nodes from being started. (Bug#20895)
MySQL Cluster:
When the redo buffer ran out of space, a Pointer too
large error was raised and the cluster could become
unusable until restarted with --initial.
(Bug#20892)
MySQL Cluster: A vague error message was returned when reading both schema files during a restart of the cluster. (Bug#20860)
MySQL Cluster:
The repeated creating and dropping of a table would eventually
lead to NDB Error 826, Too many
tables and attributes ... Insufficient space.
(Bug#20847)
MySQL Cluster: When attempting to restart the cluster following a data import, the cluster failed during Phase 4 of the restart with Error 2334: Job buffer congestion. (Bug#20774)
MySQL Cluster:
REPLACE statements did not work
correctly on an NDB table having both a
primary key and a unique key. In such cases, proper values were
not set for columns which were not explicitly referenced in the
statement.
(Bug#20728)
MySQL Cluster:
The server did not honor the value set for
ndb_cache_check_time in the
my.cnf file.
(Bug#20708)
MySQL Cluster: Truncating a table on one mysqld caused other mysqld processes connected to the cluster to return ERROR 1412 (HY000): Table definition has changed, please retry transaction on subsequent queries. (Bug#20705)
MySQL Cluster:
Using an invalid node ID with the management client
STOP command could cause
ndb_mgm to hang.
(Bug#20575)
MySQL Cluster:
Renaming of table columns was not supported as fast a
ALTER TABLE for NDB tables.
(Bug#20456)
MySQL Cluster: ndb_size.pl and ndb_error_reporter were missing from RPM packages. (Bug#20426)
MySQL Cluster:
Running ndbd
--nowait-nodes=
where id id was the node ID of a node
that was already running would fail with an invalid error
message.
(Bug#20419)
MySQL Cluster: Data nodes added while the cluster was running in single user mode were all assigned node ID 0, which could later cause multiple node failures. Adding nodes while in single user mode is no longer possible. (Bug#20395)
MySQL Cluster:
The ndb_mgm client command ALL
CLUSTERLOG STATISTICS=15 had no effect.
(Bug#20336)
MySQL Cluster:
(Direct APIs): NdbScanOperation::readTuples()
and NdbIndexScanOperation::readTuples()
ignored the batch parameter.
(Bug#20252)
MySQL Cluster: A node failure during a scan could sometime cause the node to crash when restarting too quickly following the failure. (Bug#20197)
MySQL 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)
MySQL Cluster:
SHOW ENGINE NDB STATUS could sometimes return
an incorrect value of 0 for the latest epoch,
which could cause problems with synchronizing the binlog.
(Bug#20142)
MySQL Cluster: An internal formatting error caused some management client error messages to be unreadable. (Bug#20016)
MySQL Cluster:
Creating tables with variable-size columns caused
DataMemory to be used but not freed when the
tables were dropped.
(Bug#20007)
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)
MySQL Cluster: Under certain conditions, a starting node could miss transactions, leading to inconsistencies between the primary and backup replicas. (Bug#19929)
MySQL Cluster: An uncommitted row could sometimes be checkpointed and thus incorrectly included in a backup. (Bug#19928)
MySQL Cluster:
In some cases where SELECT COUNT(*) from an
NDB table should have yielded an error,
MAX_INT was returned instead.
(Bug#19914)
MySQL Cluster:
TEXT columns in Cluster tables
having both an explicit primary key and a unique key were not
correctly updated by REPLACE
statements.
(Bug#19906)
MySQL Cluster:
The cluster's data nodes failed while trying to load data when
NoOfFrangmentLogFiles was set equal to 1.
(Bug#19894)
MySQL Cluster: Following the restart of a management node, the Cluster management client did not automatically reconnect. (Bug#19873)
MySQL Cluster:
Restoring a backup with ndb_restore failed
when the backup had been taken from a cluster whose
DataMemory had been completely used up.
(Bug#19852)
MySQL Cluster:
Error messages given when trying to make online changes to
parameters such as NoOfReplicas that can only
be changed via a complete shutdown and restart of the cluster
did not indicate the true nature of the problem.
(Bug#19787)
MySQL Cluster:
Under some circumstances, repeated DDL operations on one
mysqld could cause failure of a second
mysqld attached to the same cluster.
(Bug#19770)
MySQL Cluster: ndb_restore did not always make clear that it had recovered successfully from temporary errors while restoring a cluster backup. (Bug#19651)
MySQL 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)
MySQL Cluster:
LOAD DATA LOCAL failed to ignore duplicate
keys in Cluster tables.
(Bug#19496)
MySQL Cluster: For ndb_mgmd, Valgrind revealed problems with a memory leak and a dependency on an uninitialized variable. (Bug#19318, Bug#20333)
MySQL Cluster:
A DELETE of many rows immediately
followed by an INSERT on the same
table could cause the ndbd process on the
backup replica to crash.
(Bug#19293)
MySQL Cluster:
An excessive number of ALTER
TABLE operations could cause the cluster to fail with
NDB error code 773 (Out of string
memory, please modify StringMemory).
(Bug#19275)
MySQL Cluster:
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.
(Bug#19202)
MySQL Cluster:
In rare situations with resource shortages, a crash could result
from insufficient IndexScanOperations.
(Bug#19198)
MySQL Cluster:
Running out of DataMemory could sometimes
crash ndbd and mysqld
processes.
(Bug#19185)
MySQL Cluster:
It was possible to use port numbers greater than 65535 for
ServerPort in the
config.ini file.
(Bug#19164)
MySQL Cluster: ndb_mgm -e show | head would hang after displaying the first 10 lines of output. (Bug#19047)
MySQL Cluster: The error returned by the cluster when too many nodes were defined did not make clear the nature of the problem. (Bug#19045)
MySQL Cluster:
The management client ALL STOP command shut
down mgmd processes (as well as
ndbd processes).
(Bug#18966)
MySQL Cluster:
TRUNCATE
TABLE failed to reset the
AUTO_INCREMENT counter.
(Bug#18864)
MySQL Cluster: Restarting a failed node could sometimes crash the cluster. (Bug#18782)
MySQL Cluster: Trying to create or drop a table while a node was restarting caused the node to crash. This is now handled by raising an error. (Bug#18781)
MySQL Cluster:
Repeated CREATE -
INSERT - DROP
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.
(Bug#18595)
MySQL Cluster:
A CREATE TABLE statement
involving foreign key constraints raised an error rather than
being silently ignored (see Section 12.1.17, “CREATE TABLE Syntax”).
This bug affected Cluster in MySQL 5.1 only. (Bug#18483)
MySQL Cluster: The server failed with a non-descriptive error message when out of data memory. (Bug#18475)
MySQL Cluster:
For NDB and possibly
InnoDB tables, a BEFORE
UPDATE trigger could insert incorrect values.
(Bug#18437)
MySQL Cluster:
The DATA_LENGTH and
AVG_ROW_LENGTH columns of the
INFORMATION_SCHEMA.TABLES table did
not report the size of variable-width column values correctly.
See Section 20.2, “The INFORMATION_SCHEMA TABLES Table”, for more information.
(Bug#18413)
MySQL Cluster:
SELECT ... FOR UPDATE failed to lock the
selected rows.
(Bug#18184)
MySQL Cluster: (Disk Data): Deletes from Disk Data tables used a non-optimal scan to find the rows to be deleted, resulting in poor performance. The fix causes disk order rather than memory order to be used, and can improve performance of Disk Data deletes by up to ~300% in some cases. (Bug#17929)
MySQL Cluster:
perror did not properly report
NDB error codes.
(Bug#16561)
MySQL Cluster: A problem with takeover during a system restart caused ordered indexes to be rebuilt incorrectly. This also adversely affected MySQL Cluster Replication. (Bug#15303)
MySQL Cluster: A cluster data node could crash when an ordered index became full before the table containing the index was full. (Bug#14935)
MySQL Cluster:
The management client ALL STATUS command
could sometimes report the status of some data nodes
incorrectly.
(Bug#13985)
MySQL Cluster: New mysqld processes were allowed to connect without a restart of the cluster, causing the cluster to crash. (Bug#13266)
MySQL Cluster: Cluster system status variables were not updated properly. (Bug#11459)
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: The loss of one or more data nodes could sometimes cause ndb_mgmd to use a high amount of CPU (15 percent or more, as opposed to 1 to 2 percent normally).
Partitioning:
Old partition and subpartition files were not always removed
following ALTER TABLE ... REORGANIZE
PARTITION statements.
(Bug#20770)
Cluster Replication: Replication:
In some cases, a large number of MySQL servers sending requests
to the cluster simultaneously could cause the cluster to crash.
This could also be triggered by many NDB API
clients making simultaneous event subscriptions or
unsubscriptions.
(Bug#20683)
Cluster Replication: Replication:
Data definition and data manipulation statements on different
tables were not serialised correctly in the binary log. For
example, there was no guarantee that a
CREATE TABLE statement and an
update on a different table would occur in the same order in the
binary log as they did on the cluster being replicated.
(Bug#18947)
Replication:
BIT columns were not replicated
properly under row-based replication.
(Bug#22550)
Replication: For row-based replication, log rotation could occur at an improper time. (Bug#21474)
Replication:
In mixed-format binary logging mode, stored functions, triggers,
and views that use functions in their body that require
row-based logging did not replicate reliably because the logging
did not switch from statement-based to row-based format. For
example, INSERT INTO t SELECT FROM v, where
v is a view that selects
UUID() could cause problems. This
limitation has been removed.
(Bug#20930)
Replication: A race condition during slave server shutdown caused an assert failure. (Bug#20850)
Replication:
With mixed-format binary logging, INSERT
DELAYED statements were logged using statement-based
logging, and they did not replicate properly for statements that
used values such as UUID(),
RAND(), or user-defined variables
that require row-based logging. To correct this, the
DELAYED handler thread how switches to
row-based logging if the logging format is mixed.
(Bug#20633, Bug#20649)
Replication:
With the
auto_increment_increment system
variable set larger than 1, if the next generated
AUTO_INCREMENT value would be larger than the
column's maximum value, the value would be clipped down to that
maximum value and inserted, even if the resulting value would
not be in the generated sequence. This could cause problems for
master-master replication. Now the server clips the value down
to the previous value in the sequence, which correctly produces
a duplicate-key error if that value already exists in the
column.
(Bug#20524)
Replication:
In mixed binary logging mode, a temporary switch from
statement-based logging to row-based logging occurs when storing
a row that uses a function such as
UUID() into a temporary table.
However, temporary table changes are not written to the binary
log under row-based logging, so the row does not exist on the
slave. A subsequent select from the temporary table to a
non-temporary table using statement-based logging works
correctly on the master, but not on the slave where the row does
not exist. Replication no longer switches back from row-based
logging to statement-based logging until there are no temporary
tables for the session.
(Bug#20499)
Replication:
CREATE PROCEDURE, CREATE
FUNTION, CREATE
TRIGGER, and CREATE
VIEW statements containing multi-line comments
(/* ... */) could not be replicated.
(Bug#20438)
Replication:
A stored procedure that used
LAST_INSERT_ID() did not
replicate properly using statement-based binary logging.
(Bug#20339)
Replication:
When using row based replication, a CREATE TABLE ...
SELECT statement was replicated, even if the table
creation failed on the master (for example, due to a duplicate
key failure).
(Bug#20265)
Replication:
If a table on a slave server had a higher
AUTO_INCREMENT counter than the corresponding
master table (even though all rows of the two tables were
identical), in some cases REPLACE
or INSERT ... ON DUPLICATE KEY UPDATE would
not replicate properly using statement-based logging. (Different
values would be inserted on the master and slave.)
(Bug#20188)
Replication: Shutting down a slave in a replication scenario where temporary tables are in use would cause the slave to produce a core dump. (Bug#19881)
Replication:
The effect of a stored function or trigger that caused
AUTO_INCREMENT values to be generated for
multiple tables was not logged properly if statement-based
logging was used. Only the first table's value was logged,
causing replication to fail. Under mixed logging format, this is
dealt with by switching to row-based logging for the function or
trigger. For statement-based logging, this remains a problem.
(Bug#19630)
Replication:
For row-based replication, the
BINLOG statement did not lock
tables properly, causing a crash for some table types.
(Bug#19459)
Replication: Column names supplied for a view created on a master server could be lost on a slave server. (Bug#19419)
Replication:
The dropping of a temporary table whose name contained a
backtick ('`') character was not correctly
written to the binary log, which also caused it not to be
replicated correctly.
(Bug#19188)
Replication: With row-based replication, replicating a statement to a slave where the table had additional columns relative to the master table did not work. (Bug#19069)
Replication:
Valgrind revealed several issues with mysqld
that were corrected: A dangling stack pointer being overwritten;
possible uninitialized data in a string comparison; memory
corruption in replication slaves when switching databases;
syscall() write parameter pointing to an
uninitialized byte.
(Bug#19022, Bug#20579, Bug#20769, Bug#20783, Bug#20791)
Replication: A redundant table map event could be generated in the binary log when there were no actual changes to a table being replicated. In addition, a slave failed to stop when attempting to replicate a table that did not exist on the slave. (Bug#18948)
Replication: Row-based replication failed when the query cache was enabled on the slave. (Bug#17620)
Replication:
Compilation on Windows would fail if row based replication was
disabled using --without-row-based-replication.
(Bug#16837)
Replication:
An invalid GRANT statement for
which Ok was returned on a replication master
caused an error on the slave and replication to fail.
(Bug#6774)
Disk Data:
On some platforms, ndbd compiled with
gcc 4 would crash when attempting to run
CREATE LOGFILE GROUP.
(Bug#21981)
Disk Data: Trying to create a Disk Data table using a non-existent tablespace or to drop a non-existent data file from a tablespace produced an uninformative error message. (Bug#21751)
Disk Data: Errors could occur when dropping a data file during a node local checkpoint. (Bug#21710)
Disk Data:
Creating a tablespace and log file group, then attempting to
restart the cluster without using the --initial
option and without having created any Disk Data tables could
cause a forced shutdown of the cluster and raise a configuration
error.
(Bug#21172)
Disk Data: mysqldump did not back up tablespace or log file group information for Disk Data tables correctly.
Specifically, UNDO_BUFFER_SIZE and
INITIAL_SIZE values were misreported. This
meant that trying to restore from such a backup would produce
error 1296: Got error 1504 'Out of logbuffer memory'
from NDB.
(Bug#20809)
Disk Data: Running a large number of scans on Disk Data could cause subsequent scans to perform poorly. (Bug#20334)
Disk Data:
INFORMATION_SCHEMA.FILES records
for UNDO files showed incorrect values in the
EXTENT_SIZE, FREE_EXTENTS,
and TOTAL_EXTENTS columns.
(Bug#20073)
Disk Data:
A data file created for one tablespace could be dropped using
ALTER TABLESPACE ... DROP DATAFILE using a
different tablespace.
(Bug#20053)
Disk Data: Trying to create Disk Data tables when running the cluster in diskless mode caused cluster data nodes to crash.
Disk Data tables are now disabled when running in diskless mode.
Disk Data: An issue with disk allocation could sometimes cause a forced shutdown of the cluster when running a mix of memory and Disk Data tables. (Bug#18780)
Disk Data:
The failure of a CREATE TABLESPACE or
CREATE LOGFILE GROUP statement did not revert
all changes made prior to the point of failure.
(Bug#16341)
Cluster Replication: One or more of the mysqld processes could fail when subjecting a Cluster replication setup with multiple mysqld processes on both the master and slave clusters to high loads. (Bug#19768)
Cluster API:
The storage/ndb directory was missing from
the server binary distribution, making it impossible to compile
NDB API and MGM API applications. This
directory can be found as
/usr/include/storage/ndb after installing
that distribution.
(Bug#21955)
Cluster API:
Invoking the MGM API function
ndb_mgm_listen_event() caused a memory leak.
(Bug#21671)
Cluster API:
The inclusion of my_config.h in
NdbApi.h required anyone wishing to write
NDB API applications against MySQL 5.1 to have a complete copy
of the 5.1 sources.
(Bug#21253)
Cluster API:
The MGM API function ndb_logevent_get_fd()
was not implemented.
(Bug#21129)
Cluster API:
The NdbOperation::getBlobHandle() method,
when called with the name of a non-existent column, caused a
segmentation fault.
(Bug#21036)
ALTER EVENT statements including
only a COMMENT clause failed with a syntax
error on two platforms: Linux for S/390, and OS X 10.4 for
64-bit PPC.
(Bug#23423)
When event_scheduler was set to
DISABLED, its value was not displayed
correctly by SHOW VARIABLES or
SELECT @@global.event_scheduler.
(Bug#22662)
ALTER EVENT in the body of a
stored procedure led to a crash when the procedure was called.
This affected only those ALTER
EVENT statements which changed the interval of the
event.
(Bug#22397)
The optimizer could make an incorrect index choice for indexes with a skewed key distribution. (Bug#22393)
Deleting entries from a large MyISAM index
could cause index corruption when it needed to shrink. Deletes
from an index can happen when a record is deleted, when a key
changes and must be moved, and when a key must be un-inserted
because of a duplicate key. This can also happen in
REPAIR TABLE when a duplicate key
is found and in myisamchk when sorting the
records by an index.
(Bug#22384)
Instance Manager had a race condition involving mysqld PID file removal. (Bug#22379)
yaSSL had a conflicting definition for
socklen_t on hurd-i386 systems.
(Bug#22326)
Conversion of values inserted into a
BIT column could affect adjacent
columns.
(Bug#22271)
Some Linux-x86_64-icc packages (of previous releases) mistakenly contained 32-bit binaries. Only ICC builds are affected, not gcc builds. Solaris and FreeBSD x86_64 builds are not affected. (Bug#22238)
mysql_com.h unnecessarily referred to the
ulong type.
(Bug#22227)
The source distribution would not build on Windows due to a
spurious dependency on ib_config.h.
(Bug#22224)
Execution of a prepared statement that uses an
IN subquery with aggregate functions in the
HAVING clause could cause a server crash.
(Bug#22085)
The CSV storage engine failed to detect some
table corruption.
(Bug#22080)
Using GROUP_CONCAT() on the
result of a subquery in the FROM clause that
itself used GROUP_CONCAT() could
cause a server crash.
(Bug#22015)
Running SHOW
MASTER LOGS at the same time as binary log files were
being switched would cause mysqld to hang.
(Bug#21965)
libmysqlclient defined a symbol
BN_bin2bn which belongs to OpenSSL. This
could break applications that also linked against OpenSSL's
libcrypto library. The fix required
correcting an error in a build script that was failing to add
rename macros for some functions.
(Bug#21930)
character_set_results can be
NULL to signify “no conversion,”
but some code did not check for NULL,
resulting in a server crash.
(Bug#21913)
A misleading error message was displayed when attempting to define a unique key that was not valid for a partitioned table. (Bug#21862)
A query that used GROUP BY and an
ALL or ANY quantified
subquery in a HAVING clause could trigger an
assertion failure.
(Bug#21853)
An InnoDB mutex was not aquired and released
under the same condition, leading to deadlock in some rare
situations involving XA transactions.
(Bug#21833)
A NUL byte within a prepared statement string
caused the rest of the string not to be written to the query
log, allowing logging to be bypassed.
(Bug#21813)
COUNT(*) queries with
ORDER BY and LIMIT could
return the wrong result.
This problem was introduced by the fix for Bug#9676, which
limited the rows stored in a temporary table to the
LIMIT clause. This optimization is not
applicable to non-group queries with aggregate functions. The
current fix disables the optimization in such cases.
Using DROP TABLE with concurrent
queries causes mysqld to crash.
(Bug#21784)
INSERT ... SELECT sometimes generated a
spurious Column count doesn't match value
count error.
(Bug#21774)
UPGRADE was treated as a reserved word,
although it is not.
(Bug#21772)
A function result in a comparison was replaced with a constant by the optimizer under some circumstances when this optimization was invalid. (Bug#21698)
Selecting from
INFORMATION_SCHEMA.FILES could
crash the server.
(Bug#21676)
Errors could be generated during the execution of certain prepared statements that ran queries on partitioned tables. (Bug#21658)
The presence of a subquery in the ON clause
of a join in a view definition prevented the
MERGE algorithm from being used for the view
in cases where it should be allowed.
(Bug#21646)
When records are merged from the insert buffer and the page
needs to be reorganized, InnoDB used
incorrect column length information when interpreting the
records of the page. This caused a server crash due to apparent
corruption of secondary indexes in
ROW_FORMAT=COMPACT that contain prefix
indexes of fixed-length columns. Data files should not be
corrupted, but the crash was likely to repeat every time the
server was restarted.
(Bug#21638)
For character sets having a mbmaxlen value of
2, any ALTER TABLE statement
changed TEXT columns to
MEDIUMTEXT.
(Bug#21620)
mysql displayed an empty string for
NULL values.
(Bug#21618)
Selecting from a MERGE table could result in
a server crash if the underlying tables had fewer indexes than
the MERGE table itself.
(Bug#21617, Bug#22937)
A loaded storage engine plugin did not load after a server restart. (Bug#21610)
For INSERT ... ON DUPLICATE KEY UPDATE, use
of
VALUES(
within the col_name)UPDATE clause
sometimes was handled incorrectly.
(Bug#21555)
Subqueries with aggregate functions but no
FROM clause could return incorrect results.
(Bug#21540)
mysqldump incorrectly tried to use
LOCK TABLES for tables in the
INFORMATION_SCHEMA database.
(Bug#21527)
The server could crash for the second execution of a function
containing a SELECT statement
that uses an aggregating IN subquery.
(Bug#21493)
Memory overruns could occur for certain kinds of subqueries. (Bug#21477)
A DATE can be represented as an
integer (such as 20060101) or as a string
(such as '2006.01.01'). When a
DATE (or
TIME) column is compared in one
SELECT against both
representations, constant propagation by the optimizer led to
comparison of DATE as a string
against DATE as an integer. This
could result in integer comparisons such as
2006 against 20060101,
erroneously producing a false result.
(Bug#21475)
myisam_ftdump produced bad counts for common words. (Bug#21459)
Adding ORDER BY to a SELECT
DISTINCT( query could
produce incorrect results.
(Bug#21456)expr)
The URL into the online manual that is printed in the stack trace message by the server was out of date. (Bug#21449)
Database and table names have a maximum length of 64 characters (even if they contain multi-byte characters), but were truncated to 64 bytes.
An additional fix was made in MySQL 5.1.18.
With max_sp_recursion set to 0, a stored
procedure that executed a SHOW CREATE
PROCEDURE statement for itself triggered a recursion
limit exceeded error, though the statement involves no
recursion.
(Bug#21416)
After FLUSH TABLES WITH
READ LOCK followed by
UNLOCK
TABLES, attempts to drop or alter a stored routine
failed with an error that the routine did not exist, and
attempts to execute the routine failed with a lock conflict
error.
(Bug#21414)
On 64-bit Windows, a missing table generated error 1017, not the correct value of 1146. (Bug#21396)
Table aliases in multiple-table
DELETE statements sometimes were
not resolved.
(Bug#21392)
The optimizer sometimes produced an incorrect row-count estimate
after elimination of const tables. This
resulted in choosing extremely inefficient execution plans in
same cases when distribution of data in joins were skewed.
(Bug#21390)
For mul

