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
file systems must be rebuilt as part of any upgrade to this
version by restarting all data nodes with the
--initial
option.
See Section 17.2.6.2, “MySQL Cluster 5.1 and MySQL Cluster NDB 6.x/7.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:
For GRANT
and REVOKE
,
ON *
previously granted and revoked
privileges for the default database if there was a default
database and global privileges if there was none. Now
ON *
requires a default database and produces
an error if there is none.
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 behavior 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.5, “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.5, “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.8, “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)
For mysqldump, 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 nonexistent 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.5.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 .pdb
) 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.7, “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
--mysqld-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 file systems, 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 nonword 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 BLOB
s 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 nonexistent 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 nondescriptive 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.4, “MySQL Cluster 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.
For best results, use values for
NumberOfReplicas
that are even powers of 2.
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 nondescriptive 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 nonoptimal 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
nontemporary 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 FUNCTION
,
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 an issue with mysqld that as corrected: memory corruption in replication slaves when switching databases. (Bug#19022)
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 nonexistent tablespace or to drop a nonexistent 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 nonexistent 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 nongroup 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 multiple-table UPDATE
statements, storage engines were not notified of duplicate-key
errors.
(Bug#21381)
Using relative paths for DATA DIRECTORY
or
INDEX DIRECTORY
with a partitioned table
generated a warning rather than an error, and caused
“junk” files to be created in the server's data
directory.
(Bug#21350)
Using EXPLAIN
PARTITIONS
with a query on a table whose partitioning
expression was based on the value of a
DATE
column could sometimes cause
the server to crash.
(Bug#21339)
The feature of being able to recover a temporary table named
#sql_
in
id
InnoDB
by creating a table named
rsql_
was broken by the introduction of the new identifier encoding in
MySQL 5.1.6
(Bug#21313)id
_recover_innodb_tmp_table
It was possible for a stored routine with a
non-latin1
name to cause a stack overrun.
(Bug#21311)
A query result could be sorted improperly when using
ORDER BY
for the second table in a join.
(Bug#21302)
Query results could be incorrect if the WHERE
clause contained t.
, where
key_part
NOT IN (val_list
)val_list
is a list of more than 1000
constants.
(Bug#21282)
Queries that used the
index_merge
and
sort_union
methods to access an
InnoDB
table could produce inaccurate
results. This issue was introduced in MySQL 5.1.10 when a new
handler and bitmap interface was implemented.
(Bug#21277)
For user-defined functions created with
CREATE FUNCTION
, the
DEFINER
clause is not legal, but no error was
generated.
(Bug#21269)
The SELECT
privilege was required
for an insert on a view, instead of the
INSERT
privilege.
(Bug#21261)
This regression was introduced by Bug#20989.
mysql_config --libmysqld-libs did not produce
any SSL options necessary for linking
libmysqld
with SSL support enabled.
(Bug#21239)
Subqueries on INFORMATION_SCHEMA
tables could
erroneously return an empty result.
(Bug#21231)
mysql_upgrade created temporary files in a possibly insecure way. (Bug#21224)
When DROP DATABASE
or
SHOW OPEN TABLES
was issued while
concurrently in another connection issuing
DROP TABLE
,
RENAME TABLE
, CREATE
TABLE LIKE
or any other statement that required a name
lock, the server crashed.
(Bug#21216, Bug#19403)
The --master-data
option for
mysqldump requires certain privileges, but
mysqldump generated a truncated dump file
without producing an appropriate error message or exit status if
the invoking user did not have those privileges.
(Bug#21215)
Using ALTER TABLE ... REORGANIZE PARTITIONS
to reduce the number of subpartitions to 1 caused the server to
crash.
(Bug#21210)
In the package of pre-built time zone tables that is available
for download at
http://dev.mysql.com/downloads/timezones.html,
the tables now explicitly use the utf8
character set so that they work the same way regardless of the
system character set value.
(Bug#21208)
Under heavy load (executing more than 1024 simultaneous complex queries), a problem in the code that handles internal temporary tables could lead to writing beyond allocated space and memory corruption.
Use of more than 1024 simultaneous cursors server wide also could lead to memory corruption. This applies to both stored procedure cursors and C API cursors. (Bug#21206)
When run with the
--use-threads
option,
mysqlimport returned a random exit code.
(Bug#21188)
A subquery that uses an index for both the
WHERE
and ORDER BY
clauses
produced an empty result.
(Bug#21180)
Running SHOW TABLE STATUS
on any
InnoDB
table having at least one record could
crash the server. Note that this was not due to any issue in the
InnoDB
storage engine, but rather with
AUTO_INCREMENT
handling in the partitioning
code — however, the table did not have to have an
AUTO_INCREMENT
column for the bug to
manifest.
(Bug#21173)
Some prepared statements caused a server crash when executed a second time. (Bug#21166)
The optimizer assumed that if (a=x AND b=x)
is true, (a=x AND b=x) AND a=b
is also true.
But that is not always so if a
and
b
have different data types.
(Bug#21159)
Some ALTER TABLE
statements
affecting a table's subpartitioning could hang.
(Bug#21143)
Certain malformed INSERT
statements could crash the mysql client.
(Bug#21142)
SHOW INNODB STATUS
contained some
duplicate output.
(Bug#21113)
InnoDB
was slow with more than 100,000
.idb
files.
(Bug#21112)
Creating a TEMPORARY
table with the same name
as an existing table that was locked by another client could
result in a lock conflict for DROP TEMPORARY
TABLE
because the server unnecessarily tried to
acquire a name lock.
(Bug#21096)
Performing an INSERT
on a view
that was defined using a SELECT
that specified a collation and a column alias caused the server
to crash .
(Bug#21086)
Incorrect results could be obtained from re-execution of a
parametrized prepared statement or a stored routine with a
SELECT
that uses LEFT
JOIN
with a second table having only one row.
(Bug#21081)
ALTER VIEW
did not retain
existing values of attributes that had been originally specified
but were not changed in the ALTER
VIEW
statement.
(Bug#21080)
The myisam_stats_method
variable was mishandled when set from an option file or on the
command line.
(Bug#21054)
With query_cache_type
set to 0,
RESET QUERY CACHE
was very slow and other
threads were blocked during the operation. Now a cache reset is
faster and nonblocking.
(Bug#21051)
mysql crashed for very long arguments to the
connect
command.
(Bug#21042)
When creating a table using CREATE...SELECT
and a stored procedure, there would be a mismatch between the
binary log and transaction cache which would cause a server
crash.
(Bug#21039)
A query using WHERE
did not
return consistent results on successive invocations. The
column
=
constant
OR
column
IS NULLcolumn
in each part of the
WHERE
clause could be either the same column,
or two different columns, for the effect to be observed.
(Bug#21019)
mysqldump sometimes did not select the correct database before trying to dump views from it, resulting in an empty result set that caused mysqldump to die with a segmentation fault. (Bug#21014)
Performance during an import on a table with a trigger that called a stored procedure was severely degraded. (Bug#21013)
mysql_upgrade produced a malformed
upgrade_defaults
file by overwriting the
[client]
group header with a
password
option. This prevented
mysqlcheck from running successfully when
invoked by mysql_upgrade.
(Bug#21011)
A query of the form shown here caused the server to crash:
SELECT * FROM t1 NATURAL JOIN ( t2 JOIN ( t3 NATURAL JOIN t4, t5 NATURAL JOIN t6 ) ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5) );
A SELECT
that used a subquery in
the FROM
clause that did not select from a
table failed when the subquery was used in a join.
(Bug#21002)
REPLACE ...
SELECT
for a view required the
INSERT
privilege for tables other
than the table being modified.
(Bug#20989)
STR_TO_DATE()
sometimes would
return NULL
if the %D
format specifier was not the last specifier in the format
string.
(Bug#20987)
A query using WHERE NOT
(
yielded a
different result from the same query using the same
column
< ANY
(subquery
))column
and
subquery
with WHERE
(
.
(Bug#20975)column
> ANY
(subquery
))
Under certain circumstances,
AVG(
returned a value but
key_val
)MAX(
returned an empty set due to incorrect application of
key_val
)MIN()/MAX()
optimization.
(Bug#20954)
Closing of temporary tables failed if binary logging was not enabled. (Bug#20919)
Use of zero-length variable names caused a server crash. (Bug#20908)
Building mysql
on Windows with CMake 2.4
would fail to create libmysqld
correctly.
(Bug#20907)
Creating a partitioned table that used the
InnoDB
storage engine and then restarting
mysqld with
--skip-innodb
caused MySQL to crash.
(Bug#20871)
For certain queries, the server incorrectly resolved a reference to an aggregate function and crashed. (Bug#20868)
If the binary logging format was changed between the times when a locked table was modified and when it was unlocked, the binary log contents were incorrect. (Bug#20863)
It was possible to provide the
ExtractValue()
function with
input containing “tags” that were not valid XML;
for example, it was possible to use tag names beginning with a
digit, which are disallowed by the W3C's XML 1.0 specification.
Such cases caused the function to return “junk”
output rather than an error message signalling the user as to
the true nature of the problem.
(Bug#20854)
InnoDB
(Partitioning): Updating an
InnoDB
table using HASH
partitioning with a composite primary key would cause the server
to hang.
(Bug#20852)
mysqldump did not add version-specific
comments around WITH PARSER
and
TABLESPACE ... STORAGE DISK
clauses for
CREATE TABLE
statements, causing
dump files from servers where these features were in use to fail
when loaded into older servers.
(Bug#20841)
For multiple INSERT DELAYED
statements executed in a batch by the delayed-insert handler
thread, not all rows were written to the binary log.
(Bug#20821)
The ExtractValue()
function did
not accept XML tag names containing a period
(.
) character.
(Bug#20795)
Using aggregate functions in subqueries yielded incorrect
results under certain circumstances due to incorrect application
of
MIN()
/MAX()
optimization.
(Bug#20792)
On Windows, inserting into a MERGE
table
after renaming an underlying MyISAM
table
caused a server crash.
(Bug#20789)
Within stored routines, some error messages were printed incorrectly. A nonnull-terminated string was passed to a message-printing routine that expected a null-terminated string. (Bug#20778)
Merging multiple partitions having subpartitions into a single
partition with subpartitions, or splitting a single partition
having subpartitions into multiple partitions with
subpartitions, could sometimes crash the server. These issues
were associated with a failure reported in the
partition_range
test.
(Bug#20767, Bug#20893, Bug#20766, Bug#21357)
Searches against a ZEROFILL
column of a
partitioned table could fail when the
ZEROFILL
column was part of the table's
partitioning key.
(Bug#20733)
If a column definition contained a character set declaration,
but a DEFAULT
value began with an introducer,
the introducer character set was used as the column character
set.
(Bug#20695)
An UPDATE
that referred to a key
column in the WHERE
clause and activated a
trigger that modified the column resulted in a loop.
(Bug#20670)
Issuing a SHOW CREATE FUNCTION
or
SHOW CREATE PROCEDURE
statement
without sufficient privileges could crash the
mysql client.
(Bug#20664)
INSERT DELAYED
did not honor
SET INSERT_ID
or the
auto_increment_*
system variables.
(Bug#20627, Bug#20830)
A buffer overwrite error in Instance Manager caused a crash. (Bug#20622)
Loading a plugin caused any an existing plugin with the same name to be lost. (Bug#20615)
A query selecting records from a single partition of a
partitioned table and using ORDER BY
(where
ic
DESCic
represents an indexed column)
could cause errors or crash the server.
(Bug#20583)
Valgrind revealed several issues with mysqld
that were corrected: A dangling stack pointer being overwritten;
possible uninitialized data in a string comparison;
syscall()
write parameter pointing to an
uninitialized byte.
(Bug#20579, Bug#20769, Bug#20783, Bug#20791)
If the auto_increment_offset
setting causes MySQL to generate a value larger than the
column's maximum possible value, the
INSERT
statement is accepted in
strict SQL mode, whereas but should fail with an error.
(Bug#20573)
In a view defined with SQL SECURITY DEFINER
,
the CURRENT_USER()
function
returned the invoker, not the definer.
(Bug#20570)
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)
Scheduled events that invoked stored procedures executing DDL operations on partitioned tables could crash the server. (Bug#20548)
Users who had the SHOW VIEW
privilege for a view and privileges on one of the view's
base tables could not see records in
INFORMATION_SCHEMA
tables relating to the
base table.
(Bug#20543)
The fill_help_tables.sql
file did not load
properly if the ANSI_QUOTES
SQL mode was enabled.
(Bug#20542)
The MD5()
,
SHA1()
, and
ENCRYPT()
functions should return
a binary string, but the result sometimes was converted to the
character set of the argument.
MAKE_SET()
and
EXPORT_SET()
now use the correct
character set for their default separators, resulting in
consistent result strings which can be coerced according to
normal character set rules.
(Bug#20536)
If a partitioned InnoDB
table contained an
AUTO_INCREMENT
column, a
SHOW
statement could cause an
assertion failure with more than one connection.
(Bug#20493)
Using EXPLAIN
PARTITIONS
with a UNION
query could crash the server. This could occur whether or not
the query actually used any partitioned tables.
(Bug#20484)
Creation of a view as a join of views or tables could fail if the views or tables are in different databases. (Bug#20482)
SELECT
statements using
GROUP BY
against a view could have missing
columns in the output when there was a trigger defined on one of
the base tables for the view.
(Bug#20466)
For connections that required a SUBJECT
value, a check was performed to verify that the value was
correct, but the connection was not refused if not.
(Bug#20411)
mysql_upgrade was missing from binary MySQL distributions. (Bug#20403, Bug#18516, Bug#20556)
Some user-level errors were being written to the server's error log, which is for server errors. (Bug#20402)
Using ALTER TABLE ... ENGINE =
, where
x
x
was not a storage engine supported
by the server, would cause mysqld to crash.
(Bug#20397)
User names have a maximum length of 16 characters (even if they contain multi-byte characters), but were being truncated to 16 bytes. (Bug#20393)
Some queries using ORDER BY ... DESC
on
subpartitioned tables could crash the server.
(Bug#20389)
mysqlslap did not enable the
CLIENT_MULTI_RESULTS
flag when connecting,
which is necessary for executing stored procedures.
(Bug#20365)
Queries using an indexed column as the argument for the
MIN()
and
MAX()
functions following an
ALTER TABLE .. DISABLE KEYS
statement
returned Got error 124 from storage
engine until ALTER TABLE ... ENABLE
KEYS
was run on the table.
(Bug#20357)
When a statement used a stored function that inserted into an
AUTO_INCREMENT
column, the generated
AUTO_INCREMENT
value was not written into the
binary log, so a different value could in some cases be inserted
on the slave.
(Bug#20341)
Partitions were represented internally as the wrong data type,
which led in some cases to failures of queries such as
SELECT COUNT(*) FROM INFORMATION_SCHEMA.PARTITIONS
WHERE PARTITION_NAME =
'
.
(Bug#20340)partition_name
'
PROCEDURE ANALYSE()
returned incorrect values
of M
FLOAT(
and
M
,
D
)DOUBLE(
.
(Bug#20305)M
,
D
)
Defining a table partitioned by LIST
with a
single PARTITION ... VALUES IN (NULL)
clause
could lead to server crashes, particularly with queries having
WHERE
conditions comparing the partitioning
key with a constant.
(Bug#20268, Bug#19801)
Partition pruning could cause incorrect results from queries,
such missing rows, when the partitioning expression relied on a
BIGINT UNSIGNED
column.
(Bug#20257)
For a MyISAM
table locked with LOCK
TABLES ...WRITE
, queries optimized using the
index_merge
method did not
show rows inserted with the lock in place.
(Bug#20256)
mysqldump produced a malformed dump file when dumping multiple databases that contained views. (Bug#20221)
Running InnoDB
with many concurrent threads
could cause memory corruption and a seg fault due to a bug
introduced in MySQL 5.1.11.
(Bug#20213)
SUBSTRING()
results sometimes
were stored improperly into a temporary table when multi-byte
character sets were used.
(Bug#20204)
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)
The --default-storage-engine
server option did not work.
(Bug#20168)
For a table having LINEAR HASH
subpartitions,
the LINEAR
keyword did not appear in the
SUBPARTITION_METHOD
column of the
INFORMATION_SCHEMA.PARTITIONS
table.
(Bug#20161)
For a DATE
parameter sent via a
MYSQL_TIME
data structure,
mysql_stmt_execute()
zeroed the
hour, minute, and second members of the structure rather than
treating them as read-only.
(Bug#20152)
perror crashed on Solaris due to
NULL
return value of
strerror()
system call.
(Bug#20145)
FLUSH TABLES
followed by a LOCK TABLES
statement to lock a log table and a nonlog table caused an
infinite loop and high CPU use. Now
FLUSH TABLES
ignores log tables. To flush the log tables, use
FLUSH LOGS
instead.
(Bug#20139)
On Linux, libmysqlclient
when compiled with
yaSSL using the icc compiler had a spurious
dependency on C++ libraries.
(Bug#20119)
For an ENUM
column that used the
ucs2
character set, using
ALTER TABLE
to modify the column
definition caused the default value to be lost.
(Bug#20108)
For mysql, escaping with backslash sometimes did not work. (Bug#20103)
Queries on tables that were partitioned by
KEY
and had a
VARCHAR
column as the
partitioning key produced an empty result set.
(Bug#20086)
A number of dependency issues in the RPM
bench
and test
packages
caused installation of these packages to fail.
(Bug#20078)
Use of MIN()
or
MAX()
with GROUP
BY
on a ucs2
column could cause a
server crash.
(Bug#20076)
mysqld --flush failed to flush
MyISAM
table changes to disk following an
UPDATE
statement for which no
updated column had an index.
(Bug#20060)
In MySQL 5.1.11, the --with-openssl
and
--with-yassl
options were replaced by
--with-ssl
. But no message was issued if the
old options were given. Now configure
produces a message indicating that the new option should be used
and exits.
(Bug#20002)
When a statement is executed that does not generate any rows, an extra table map event and associated binrows event would be generated and written to the binary log. (Bug#19995)
Join conditions using index prefixes on utf8
columns of InnoDB
tables incorrectly ignored
rows where the length of the actual value was greater than the
length of the index prefix.
(Bug#19960)
AUTHORS
and CONTRIBUTORS
were not treated as reserved words.
(Bug#19939)
The query
command for
mysqltest did not work.
(Bug#19890)
Identifiers with embedded escape characters were not handled
correctly by some SHOW
statements
due to some old code that was doing some extra unescaping.
(Bug#19874)
When executing a SELECT
with
ORDER BY
on a view that is constructed from a
SELECT
statement containing a
stored function, the stored function was evaluated too many
times.
(Bug#19862)
Using SELECT
on a corrupt
MyISAM
table using the dynamic record format
could cause a server crash.
(Bug#19835)
Using cursors with READ
COMMITTED
isolation level could cause
InnoDB
to crash.
(Bug#19834)
CREATE DATABASE
, RENAME
DATABASE
, and DROP
DATABASE
could deadlock in cases where there was a
global read lock.
(Bug#19815)
The yaSSL library bundled with libmysqlclient
had some conflicts with OpenSSL. Now macros are used to rename
the conflicting symbols to have a prefix of
ya
.
(Bug#19810)
The WITH CHECK OPTION
was not enforced when a
REPLACE
statement was executed
against a view.
(Bug#19789)
Multiple-table updates with FEDERATED
tables
could cause a server crash.
(Bug#19773)
On 64-bit systems, use of the cp1250
character set with a primary key column in a
LIKE
clause caused a server crash for
patterns having letters in the range 128..255.
(Bug#19741)
make install tried to build files that should already have been built by make all, causing a failure if installation was performed using a different account than the one used for the initial build. (Bug#19738)
InnoDB
unlocked its data directory before
committing a transaction, potentially resulting in
nonrecoverable tables if a server crash occurred before the
commit.
(Bug#19727)
An issue with yaSSL prevented Connector/J clients from connecting to the server using a certificate. (Bug#19705)
For a MyISAM
table with a
FULLTEXT
index, compression with
myisampack or a check with
myisamchk after compression resulted in table
corruption.
(Bug#19702)
The EGNINE
clause was displayed in the output
of SHOW CREATE TABLE
for
partitioned tables when the SQL mode included
no_table_options
.
(Bug#19695)
A cast problem caused incorrect results for prepared statements that returned float values when MySQL was compiled with gcc 4.0. (Bug#19694)
EXPLAIN
PARTITIONS
would produce illegible output in the
partitions
column if the length of text to be
displayed in that column was too long. This could occur when
very many partitions were defined for the table, partitions were
given very long names, or due to a combination of the two.
(Bug#19684)
The mysql_list_fields()
C API
function returned the incorrect table name for views.
(Bug#19671)
If a query had a condition of the form
, which participated in equality propagation and also
was used for tableX
.key
=
tableY
.key
ref
access, then
early ref
-access
NULL
filtering was not performed for the
condition. This could make query execution slower.
(Bug#19649)
Re-execution of a prepared multiple-table
DELETE
statement that involves a
trigger or stored function can result in a server crash.
(Bug#19634)
File size specifications for InnoDB
data
files were case sensitive.
(Bug#19609)
CHECK TABLE
on a
MyISAM
table briefly cleared its
AUTO_INCREMENT
value, while holding only a
read lock. Concurrent inserts to that table could use the wrong
AUTO_INCREMENT
value.
CHECK TABLE
no longer modifies
the AUTO_INCREMENT
value.
(Bug#19604)
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)
In the INFORMATION_SCHEMA.FILES
table, the INITIAL_SIZE
,
MAXIMUM_SIZE
, and
AUTOEXTEND_SIZE
columns incorrectly were
being stored as VARCHAR
rather
than BIGINT
. .
(Bug#19544)
InnoDB
failed to increment the
handler_read_prev
counter.
(Bug#19542)
Portions of statements related to partitioning were not
surrounded by version-specific comments by
mysqldump
, breaking backward compatibility
for dump files.
(Bug#19488)
Repeated DROP TABLE
statements in
a stored procedure could sometimes cause the server to crash.
(Bug#19399)
Renaming a database to itself caused a server crash. (Bug#19392)
Race conditions on certain platforms could cause the Instance Manager to fail to initialize. (Bug#19391)
When not running in strict mode, the server failed to convert
the invalid years portion of a
DATE
or
DATETIME
value to
'0000'
when inserting it into a table.
This fix was reverted in MySQL 5.1.18.
See also Bug#25301.
Use of the --no-pager
option
caused mysql to crash.
(Bug#19363)
Multiple calls to a stored procedure that altered a partitioned
MyISAM
table would cause the server to crash.
(Bug#19309)
ALTER TABLE ... COALESCE PARTITION
did not
delete the files associated with the partitions that were
removed.
(Bug#19305)
Adding an index to a partitioned table that had been created
using AUTO_INCREMENT =
caused the value
AUTO_INCREMENT
value to
be reset.
(Bug#19281)
Multiple-table DELETE
statements
containing a subquery that selected from one of the tables being
modified caused a server crash.
(Bug#19225)
The final parenthesis of a CREATE
INDEX
statement occurring in a stored procedure was
omitted from the binary log when the stored procedure was
called.
(Bug#19207)
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)
SSL connections using yaSSL on OpenBSD could fail. (Bug#19191)
ALTER TABLE ... REBUILD PARTITION
could cause
the server to hang or crash.
(Bug#19122)
Using ALTER TABLE
on a
subpartitioned table caused the server to crash.
(Bug#19067)
Trying to execute a query having a WHERE
clause using
on a
partitioned table whose partitioning or subpartitioning function
used the integer column int_col
=
"string_value
" OR
int_col
IS NULLint_col
would
crash the server.
(Bug#19055)
A SELECT
with a subquery that was
bound to the outer query over multiple columns returned
different results when a constant was used instead of one of the
dependant columns.
(Bug#18925)
It was possible using ALTER EVENT ... RENAME
...
to move an event to a database on which the user
did not have the EVENT
privilege.
(Bug#18897)
When used in the DO
clause of a
CREATE EVENT
statement, the
statements CREATE EVENT
,
CREATE FUNCTION
, and
CREATE PROCEDURE
caused the
server to crash. (These statements are not permitted inside
CREATE EVENT
.)
(Bug#18896, Bug#16409)
BIT
columns in a table could
cause joins that use the table to fail.
(Bug#18895)
The build process incorrectly tried to overwrite
sql/lex_hash.h
. This caused the build to
fail when using a shadow link tree pointing to original sources
that were owned by another account.
(Bug#18888)
Setting myisam_repair_threads
caused any repair operation on a MyISAM
table
to fail to update the cardinality of indexes, instead making
them always equal to 1.
(Bug#18874)
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)
InnoDB
: Quoted Unicode identifiers were not
handled correctly. This included names of tables, columns, and
foreign keys.
(Bug#18800)
Intermediate tables created during the execution of an
ALTER TABLE
statement were
visible in the output of SHOW
TABLES
.
(Bug#18775)
FEDERATED
tables raised invalid duplicate key
errors when attempting on one server to insert rows having the
same primary key values as rows that had been deleted from the
linked table on the other server.
(Bug#18764)
Memory used by scheduled events was not freed when the events were dropped. (Bug#18683)
The implementation for
UNCOMPRESS()
did not indicate
that it could return NULL
, causing the
optimizer to do the wrong thing.
(Bug#18539)
Referring to a stored function qualified with the name of one database and tables in another database caused a “table doesn't exist” error. (Bug#18444)
Identifiers could not contain bytes with a value of 255, though that should be allowed as of the identifier-encoding changes made in MySQL 5.1.6. (Bug#18396)
Triggers on tables in the mysql
database
caused a server crash. Triggers for tables in this database now
are disallowed.
(Bug#18361, Bug#18005)
Incorrect type aggregation for
IN()
and
CASE
expressions could lead to an
incorrect result.
(Bug#18360)
The length of the pattern string prefix for
LIKE
operations was calculated incorrectly
for multi-byte character sets. As a result, the scanned range
was wider than necessary if the prefix contained any multi-byte
characters, and rows could be missing from the result set.
(Bug#18359, Bug#16674)
On Windows, corrected a crash stemming from differences in Visual C runtime library routines from POSIX behavior regarding invalid file descriptors. (Bug#18275)
Linking the pthreads
library to
single-threaded MySQL libraries caused
dlopen()
to fail at runtime on HP-UX.
(Bug#18267)
The source distribution failed to compile when configured with
the --with-libwrap
option.
(Bug#18246)
On Windows, terminating mysqld with Control-C could result in a crash during shutdown. (Bug#18235)
Selecting data from a MEMORY
table with a
VARCHAR
column and a
HASH
index over it returned only the first
row matched.
(Bug#18233)
The use of MIN()
and
MAX()
on columns with an index
prefix produced incorrect results in some queries.
(Bug#18206)
A UNION
over more than 128
SELECT
statements that use an
aggregate function failed.
(Bug#18175)
The optimizer did not take advantage of indexes on columns used
for the second or third arguments of
BETWEEN
.
(Bug#18165)
Performing INSERT ... SELECT ... JOIN ...
USING
without qualifying the column names caused
ERROR 1052 "column 'x' in field list is
ambiguous"
even in cases where the column references
were unambiguous.
(Bug#18080)
An update that used a join of a table to itself and modified the table on both sides of the join reported the table as crashed. (Bug#18036)
Race conditions on certain platforms could cause the Instance Manager to try to restart the same instance multiple times. (Bug#18023)
Changing the definition of a
DECIMAL
column with
ALTER TABLE
caused loss of column
values.
(Bug#18014)
For table-format output, mysql did not always calculate columns widths correctly for columns containing multi-byte characters in the column name or contents. (Bug#17939)
The character set was not being properly initialized for
CAST()
with a type such as
CHAR(2) BINARY
, which resulted in
incorrect results or a server crash.
(Bug#17903)
Checking a MyISAM
table (using
CHECK TABLE
) having a spatial
index and only one row would wrongly indicate that the table was
corrupted.
(Bug#17877)
For a reference to a nonexistent index in FORCE
INDEX
, the error message referred to a column, not an
index.
(Bug#17873)
A stored procedure that created and invoked a prepared statement was not executed when called in a mysqld init-file. (Bug#17843)
It is possible to create MERGE
tables into
which data cannot be inserted (by not specifying a
UNION
clause. However, when an
insert was attempted, the error message was confusing. Now an
error occurs indicating that the table is read-only.
(Bug#17766)
Attempting to insert a string of greater than 4096 bytes into a
FEDERATED
table resulted in the error
ERROR 1296 (HY000) at line 2: Got error 10000 'Error
on remote system: 1054: Unknown column
'string-value
' from
FEDERATED. This error was raised regardless of the
type of column involved (VARCHAR
,
TEXT
, and so on.)
(Bug#17608)
If a file name was specified for the
--log
or
--log-slow-queries
options but
the server was logging to tables and not files, the server
produced no error message.
(Bug#17599)
If the general log table reached a large enough file size
(27GB), SELECT COUNT(*)
on the table caused a
server crash.
(Bug#17589)
Using the extended syntax for
TRIM()
— that is,
TRIM(... FROM ...)
— in a
SELECT
statement defining a view
caused an invalid syntax error when selecting from the view.
(Bug#17526)
Use of the --prompt
option or
prompt
command caused
mysql to be unable to connect to the Instance
Manager.
(Bug#17485)
OPTIMIZE TABLE
and
REPAIR TABLE
yielded incorrect
messages or warnings when used on partitioned tables.
(Bug#17455)
mysqldump would not dump views that had
become invalid because a table named in the view definition had
been dropped. Instead, it quit with an error message. Now you
can specify the --force
option to cause
mysqldump to keep going and write an SQL
comment containing the view definition to the dump output.
(Bug#17371)
N'xxx'
and _utf8'xxx'
were
not treated as equivalent because N'xxx'
failed to unescape backslashes (\
) and
doubled apostrophe/single quote characters
(''
).
(Bug#17313)
Following a failed attempt to add an index to an
ARCHIVE
table, it was no longer possible to
drop the database in which the table had been created.
(Bug#17310)
Assignments of values to variables of type
TEXT
were handled incorrectly in
stored routines.
(Bug#17225)
Views created from prepared statements inside of stored
procedures were created with a definition that included both
SQL_CACHE
and
SQL_NO_CACHE
.
(Bug#17203)
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)
A Table ... doesn't exist error could occur for statements that called a function defined in another database. (Bug#17199)
A prepared statement that altered partitioned table within a stored procedure failed with the error Unknown prepared statement handler. (Bug#17138)
myisam_ftdump would fail when trying to open a MyISAM index file that you did not have write permissions to access, even though the command would only be reading from the file. (Bug#17122)
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.
For statements that have a DEFINER
clause
such as CREATE TRIGGER
or
CREATE VIEW
, long user names or
host names could cause a buffer overflow.
(Bug#16899)
The PASSWORD()
function returned
invalid results when used in some
UNION
queries.
(Bug#16881)
ORDER BY RAND() LIMIT 1
always set a user
variable to the last possible value from the table.
(Bug#16861)
Queries containing a subquery that used aggregate functions could return incorrect results. (Bug#16792)
Concatenating the results of multiple constant subselects produced incorrect results. (Bug#16716)
When performing a GROUP_CONCAT()
,
the server transformed BLOB
columns VARCHAR
columns, which
could cause erroneous results when using Connector/J and
possibly other MySQL APIs.
(Bug#16712)
Stored procedures did not use the character set defined for the database in which they were created. (Bug#16676)
Some server errors were not reported to the client, causing both to try to read from the connection until a hang or crash resulted. (Bug#16581)
If the files for an open table were removed at the OS level (external to the server), the server exited with an assertion failure. (Bug#16532)
On Windows, a definition for
mysql_set_server_option()
was
missing from the C client library.
(Bug#16513)
mysqlcheck tried to check views instead of ignoring them. (Bug#16502)
Updating a column of a FEDERATED
table to
NULL
sometimes failed.
(Bug#16494)
For SELECT ... FOR
UPDATE
statements that used
DISTINCT
or GROUP BY
over
all key parts of a unique index (or primary key), the optimizer
unnecessarily created a temporary table, thus losing the linkage
to the underlying unique index values. This caused a
Result set not updatable
error. (The
temporary table is unnecessary because under these circumstances
the distinct or grouped columns must also be unique.)
(Bug#16458)
A scheduled event that took longer to execute than the length of
time scheduled between successive executions could
“skip” executions. For example, an event defined
with EVERY 1 SECOND
— but which
required longer than 1 second to complete — might be
executed only once every 2 seconds.
(Bug#16417)
A subselect used in the ON SCHEDULE
clause of
a CREATE EVENT
or
ALTER EVENT
statement caused the
server to crash, rather than producing an error as expected.
(Bug#16394)
Grant table modifications sometimes did not refresh the
in-memory tables if the host name was ''
or
not specified.
(Bug#16297)
A subquery in the WHERE
clause of the outer
query and using IN
and GROUP
BY
returned an incorrect result.
(Bug#16255)
A query could produce different results with and without and
index, if the WHERE
clause contained a range
condition that used an invalid
DATETIME
constant.
(Bug#16249)
TIMESTAMPDIFF()
examined only the
date and ignored the time when the requested difference unit was
months or quarters.
(Bug#16226)
Using tables from MySQL 4.x in MySQL 5.x, in particular those
with VARCHAR
fields and using
INSERT DELAYED
to update data in
the table would result in either data corruption or a server
crash.
(Bug#16218, Bug#17294, Bug#16611)
The value returned by a stored function returning a string value was not of the declared character set. (Bug#16211)
The
index_merge
/Intersection
optimizer could experience a memory overrun when the number of
table columns covered by an index was sufficiently large,
possibly resulting in a server crash.
(Bug#16201)
Row equalities (such as WHERE (a,b) = (c,d)
were not taken into account by the optimizer, resulting in slow
query execution. Now they are treated as conjunctions of
equalities between row elements.
(Bug#16081)
Some memory leaks in the libmysqld
embedded
server were corrected.
(Bug#16017)
Values greater than 2 gigabytes used in the VALUES LESS THAN clause of a table partitioned by RANGE were treated as negative numbers. (Bug#16002)
A CREATE TABLE
that produced a
The PARTITION function returns the wrong
type error also caused an Incorrect
information in file to be printed to
STDERR
, and a junk file to be left in the
database directory.
(Bug#16000)
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)
When NOW()
was used in a
BETWEEN
clause of the definition
for a view, it was replaced with a constant in the view.
(Bug#15950)
The server's handling of the number of partitions or
subpartitions specified in a PARTITIONS
or
SUBPARTITIONS
clause was changed. Beginning
with this release, the number of partitions must:
be a positive, nonzero integer
not have any leading zeroes
not be an expression
Also beginning with this version, no attempt is made to convert,
truncate, or evaluate a PARTITIONS
or
SUBPARTITIONS
value; instead, the
CREATE TABLE
or
ALTER TABLE
statement containing
the PARTITIONS
or
SUBPARTITIONS
clause now fails with an
appropriate error message.
(Bug#15890)
Long multiple-row INSERT
statements could take a very long time for some multi-byte
character sets.
(Bug#15811)
The C API failed to return a status message when invoking a stored procedure. (Bug#15752)
mysqlimport sends a set
@@character_set_database=binary
statement to the
server, but this is not understood by pre-4.1 servers. Now
mysqlimport encloses the statement within a
/*!40101 ... */
comment so that old servers
will ignore it.
(Bug#15690)
DELETE
with LEFT
JOIN
for InnoDB
tables could crash
the server if
innodb_locks_unsafe_for_binlog
was enabled.
(Bug#15650)
BIN()
,
OCT()
, and
CONV()
did not work with BIT
values.
(Bug#15583)
Nested natural joins worked executed correctly when executed as
a nonprepared 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'
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)
Invalid escape sequences in option files caused MySQL programs that read them to abort. (Bug#15328)
SHOW GRANTS FOR CURRENT_USER
did not return
definer grants when executed in DEFINER
context (such as within a stored prodedure defined with
SQL SECURITY DEFINER
), it returned the
invoker grants.
(Bug#15298)
The --collation-server
server
option was being ignored. With the fix, if you choose a
nondefault character set with
--character-set-server
, you
should also use
--collation-server
to specify the
collation.
(Bug#15276)
Re-executing a stored procedure with a complex stored procedure cursor query could lead to a server crash. (Bug#15217)
The server crashed if it tried to access a
CSV
table for which the data file had been
removed.
(Bug#15205)
When using tables containing
VARCHAR
columns created under
MySQL 4.1 with a 5.0 or later server, for some queries the
metadata sent to the client could have an empty column name.
(Bug#14897)
An invalid comparison between keys with index prefixes over
multi-byte character fields could lead to incorrect result sets
if the selected query execution plan used a range scan by an
index prefix over a UTF8
character field.
This also caused incorrect results under similar circumstances
with many other character sets.
(Bug#14896)
When setting a column to its implicit default value as the
result of inserting a NULL
into a
NOT NULL
column as part of a multi-row insert
or LOAD DATA
operation, the
server returned a misleading warning message.
(Bug#14770)
For BOOLEAN
mode full-text
searches on nonindexed columns, NULL
rows
generated by a LEFT JOIN
caused incorrect
query results.
(Bug#14708, Bug#25637)
The parser rejected queries that selected from a table twice
using a UNION
within a subquery.
The parser now supports arbitrary subquery, join, and
parenthesis operations within EXISTS
subqueries. A limitation still exists for scalar subqueries: If
the subquery contains UNION
, the
first SELECT
of the
UNION
cannot be within
parentheses. For example, SELECT (SELECT a FROM t1
UNION SELECT b FROM t2)
will work, but SELECT
((SELECT a FROM t1) UNION (SELECT b FROM t2))
will
not.
(Bug#14654)
Using SELECT
and a table join
while running a concurrent INSERT
operation would join incorrect rows.
(Bug#14400)
Prepared statements caused general log and server memory corruption. (Bug#14346)
The binary log lacked character set information for table names when dropping temporary tables. (Bug#14157)
libmysqld
produced some warnings to
stderr
which could not be silenced. These
warnings now are suppressed.
(Bug#13717)
RPM packages had spurious dependencies on Perl modules and other programs. (Bug#13634)
InnoDB
locking was improved by removing a gap
lock for the case that you try to delete the same row twice
within a transaction.
(Bug#13544)
REPLACE
statements caused
activation of UPDATE
triggers,
not DELETE
and
INSERT
triggers.
(Bug#13479)
The source distribution failed to compile when configured with
the --without-geometry
option.
(Bug#12991)
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)
A B-TREE
index on a MEMORY
table erroneously reported duplicate entry error for multiple
NULL
values.
(Bug#12873)
Instance Manager didn't close the client socket file when starting a new mysqld instance. mysqld inherited the socket, causing clients connected to Instance Manager to hang. (Bug#12751)
On Mac OS X, zero-byte read()
or
write()
calls to an SMB-mounted file system
could return a nonstandard return value, leading to data
corruption. Now such calls are avoided.
(Bug#12620)
DATE_ADD()
and
DATE_SUB()
returned
NULL
when the result date was on the day
'9999-12-31'
.
(Bug#12356)
For very complex SELECT
statements could create temporary tables that were too large,
and for which the temporary files were not removed, causing
subsequent queries to fail.
(Bug#11824)
After an
INSERT ...
ON DUPLICATE KEY UPDATE
statement that updated an
existing row, LAST_INSERT_ID()
could return a value not in the table.
(Bug#11460)
USE
did not refresh database
privileges when employed to re-select the current database.
(Bug#10979)
The server returns a more informative error message when it
attempts to open a MERGE
table that has been
defined to use non-MyISAM
tables.
(Bug#10974)
The type of the value returned by the
VARIANCE()
function varied
according to the type of the input value. The function should
always return a DOUBLE
value.
(Bug#10966)
The same trigger error message was produced under two conditions: The trigger duplicated an existing trigger name, or the trigger duplicated an existing combination of action and event. Now different messages are produced for the two conditions so as to be more informative. (Bug#10946)
A locking safety check in InnoDB
reported a
spurious error stored_select_lock_type is 0 inside
::start_stmt() for
INSERT ...
SELECT
statements in
innodb_locks_unsafe_for_binlog
mode. The safety check was removed.
(Bug#10746)
CREATE USER
did not respect the
16-character user name limit.
(Bug#10668)
A server or network failure with an open client connection would cause the client to hang even though the server was no longer available.
As a result of this change, the
MYSQL_OPT_READ_TIMEOUT
and
MYSQL_OPT_WRITE_TIMEOUT
options for
mysql_options()
now apply to
TCP/IP connections on all platforms. Previously, they applied
only to Windows.
(Bug#9678)
INSERT INTO ... SELECT ... LIMIT 1
could be
slow because the LIMIT
was ignored when
selecting candidate rows.
(Bug#9676)
The optimizer could produce an incorrect result after
AND
with collations such as
latin1_german2_ci
,
utf8_czech_ci
, and
utf8_lithianian_ci
.
(Bug#9509)
The DATA DIRECTORY
table option did not work
for TEMPORARY
tables.
(Bug#8706)
A stored procedure with a CONTINUE
handler
that encountered an error continued to execute a statement that
caused an error, rather with the next statement following the
one that caused the error.
(Bug#8153)
For ODBC compatibility, MySQL supports use of WHERE
for
col_name
IS NULLDATE
or
DATETIME
columns that are
NOT NULL
, to allow column values of
'0000-00-00'
or '0000-00-00
00:00:00'
to be selected. However, this was not
working for WHERE
clauses in
DELETE
statements.
(Bug#8143)
A user variable set to a value selected from an unsigned column was stored as a signed value. (Bug#7498)
The --with-collation
option
was not honored for client connections.
(Bug#7192)
With TRADITIONAL
SQL mode,
assignment of out-of-bound values and rounding of assigned
values was done correctly, but assignment of the same numbers
represented as strings sometimes was handled differently.
(Bug#6147)
On an INSERT
into an updatable
but noninsertable view, an error message was issued stating that
the view was not updatable. Now the message says the view is not
insertable-into.
(Bug#5505)
EXPLAIN
sometimes returned an
incorrect select_type
for a
SELECT
from a view, compared to
the select_type
for the equivalent
SELECT
from the base table.
(Bug#5500)
Some queries that used ORDER BY
and
LIMIT
performed quickly in MySQL 3.23, but
slowly in MySQL 4.x/5.x due to an optimizer problem.
(Bug#4981)
Incorporated portability fixes into the definition of
__attribute__
in
my_global.h
.
(Bug#2717)
User-created tables having a name beginning with
#sql
were not visible to
SHOW TABLES
and could collide
with internal temporary table names. Now they are not hidden and
do not collide.
(Bug#1405)
User Comments
Add your own comment.