This is a Monthly Rapid Update release of the MySQL Enterprise Server 5.0.
This release was withdrawn from production and is no longer available.
This section documents all changes and bugfixes that have been applied since the last last MySQL Enterprise Server release (5.0.46). 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/advisors.html.
Functionality added or changed:
If a MyISAM table is created with no
DATA DIRECTORY option, the
.MYD file is created in the database
directory. By default, if MyISAM finds an
existing .MYD file in this case, it
overwrites it. The same applies to .MYI
files for tables created with no INDEX
DIRECTORY option. To suppress this behavior, start the
server with the new --keep_files_on_create
option, in which case MyISAM will not
overwrite existing files and returns an error instead.
(Bug#29325)
The EXAMPLE storage engine is now enabled by
default.
Bugs fixed:
MySQL Cluster:
Warnings and errors generated by ndb_config
--config-file=
were sent to filestdout, rather than to
stderr.
(Bug#25941)
MySQL Cluster:
When a cluster backup was terminated using the ABORT
BACKUP command in the management client, a misleading
error message Backup aborted by application:
Permanent error: Internal error was returned. The
error message returned in such cases now reads Backup
aborted by user request.
(Bug#21052)
MySQL Cluster: Large file support did not work in AIX server binaries. (Bug#10776)
Replication:
SHOW SLAVE STATUS failed when slave I/O was
about to terminate.
(Bug#34305)
Memory corruption occurred for some queries with a top-level
OR operation in the WHERE
condition if they contained equality predicates and other
sargable predicates in disjunctive parts of the condition.
(Bug#30396)
The server created temporary tables for filesort operations in
the working directory, not in the directory specified by the
tmpdir system variable.
(Bug#30287)
The query cache does not support retrieval of statements for which column level access control applies, but the server was still caching such statements, thus wasting memory. (Bug#30269)
GROUP BY on BIT columns
produced incorrect results.
(Bug#30219)
Using KILL QUERY or KILL
CONNECTION to kill a SELECT
statement caused a server crash if the query cache was enabled.
(Bug#30201)
Prepared statements containing
CONNECTION_ID() could be written
improperly to the binary log.
(Bug#30200)
When a thread executing a DROP TABLE
statement was killed, the table name locks that had been
acquired were not released.
(Bug#30193)
Use of local variables with non-ASCII names in stored procedures crashed the server. (Bug#30120)
On Windows, client libraries lacked symbols required for linking. (Bug#30118)
--myisam-recover='' (empty option value) did
not disable MyISAM recovery.
(Bug#30088)
The IS_UPDATABLE column in the
INFORMATION_SCHEMA.VIEWS table was not always
set correctly.
(Bug#30020)
Statements within stored procedures ignored the value of the
low_priority_updates system variable.
(Bug#29963)
See also Bug#26162
For MyISAM tables on Windows,
INSERT, DELETE, or
UPDATE followed by ALTER
TABLE within LOCK TABLES could
cause table corruption.
(Bug#29957)
With auto-reconnect enabled, row fetching for a prepared statement could crash after reconnect occurred because loss of the statement handler was not accounted for. (Bug#29948)
LOCK TABLES did not pre-lock tables used in triggers of the
locked tables. Unexpected locking behavior and statement
failures similar to failed: 1100: Table
'xx' was not locked with LOCK
TABLES could result.
(Bug#29929)
INSERT ... VALUES(CONNECTION_ID(), ...)
statements were written to the binary log in such a way that
they could not be properly restored.
(Bug#29928)
Adding DISTINCT could cause incorrect rows to
appear in a query result.
(Bug#29911)
Using the DATE() function in a
WHERE clause did not return any records after
encountering NULL. However, using
TRIM or CAST produced the
correct results.
(Bug#29898)
Very long prepared statements in stored procedures could cause a server crash. (Bug#29856)
If query execution involved a temporary table,
GROUP_CONCAT() could return a
result with an incorrect character set.
(Bug#29850)
If one thread was performing concurrent inserts, other threads reading from the same table using equality key searches could see the index values for new rows before the data values had been written, leading to reports of table corruption. (Bug#29838)
Repeatedly accessing a view in a stored procedure (for example, in a loop) caused a small amount of memory to be allocated per access. Although this memory is deallocated on disconnect, it could be a problem for a long running stored procedures that make repeated access of views. (Bug#29834)
mysqldump produced output that incorrectly
discarded the NO_AUTO_VALUE_ON_ZERO value of
the SQL_MODE variable after dumping triggers.
(Bug#29788)
An assertion failure occurred within yaSSL for very long keys. (Bug#29784)
For MEMORY tables, the
index_merge union access method could return
incorrect results.
(Bug#29740)
Comparison of TIME values using the
BETWEEN operator led to string
comparison, producing incorrect results in some cases. Now the
values are compared as integers.
(Bug#29739)
The thread ID was not reset properly after execution of
mysql_change_user(), which
could cause replication failure when replicating temporary
tables.
(Bug#29734)
For a table with a DATE column
date_col such that selecting rows
with WHERE yielded
a non-empty result, adding date_col =
'date_val 00:00:00'GROUP BY
caused the result
to be empty.
(Bug#29729)date_col
In some cases, INSERT INTO ... SELECT ... GROUP
BY could insert rows even if the
SELECT by itself produced an empty result.
(Bug#29717)
For the embedded server, the
mysql_stmt_store_result() C API
function caused a memory leak for empty result sets.
(Bug#29687)
EXPLAIN produced Impossible
where for statements of the form SELECT ...
FROM t WHERE c=0, where c was an
ENUM column defined as a primary key.
(Bug#29661)
On Windows, ALTER TABLE hung if records were
locked in share mode by a long-running transaction.
(Bug#29644)
A left join between two views could produce incorrect results. (Bug#29604)
Certain statements with unions, subqueries, and joins could result in huge memory consumption. (Bug#29582)
Clients using SSL could hang the server. (Bug#29579)
A slave running with --log-slave-updates would
fail to write INSERT DELAY IGNORE statements
to its binary log, resulting in different binary log contents on
the master and slave.
(Bug#29571)
An incorrect result was returned when comparing string values
that were converted to TIME values with
CAST().
(Bug#29555)
Operations that used the time zone replicated the time zone only for successful operations, but did not replicate the time zone for errors that need to know it. (Bug#29536)
Conversion of ASCII DEL (0x7F) to Unicode
incorrectly resulted in QUESTION MARK (0x3F)
rather than DEL.
(Bug#29499)
A field packet with NULL fields caused a
libmysqlclient crash.
(Bug#29494)
When using a combination of HANDLER... READ
and DELETE on a table, MySQL continued to
open new copies of the table every time, leading to an
exhaustion of file descriptors.
(Bug#29474)
This regression was introduced by Bug#21587
On Windows, the mysql client died if the user entered a statement and Return after entering Control-C. (Bug#29469)
Failure to consider collation when comparing space characters could lead to incorrect index entry order, making it impossible to find some index values. (Bug#29461)
Killing an INSERT DELAYED thread caused a
server crash.
(Bug#29431)
The special “zero” ENUM value
was coerced to the normal empty string ENUM
value during a column-to-column copy. This affected
CREATE ... SELECT statements and
SELECT statements with aggregate functions on
ENUM columns in the GROUP
BY clause.
(Bug#29360)
Optimization of queries with DETERMINISTIC
stored functions in the WHERE clause was
ineffective: A sequential scan was always used.
(Bug#29338)
MyISAM corruption could occur with the
cp932_japanese_ci collation for the
cp932 character set due to incorrect
comparison for trailing space.
(Bug#29333)
The mysql_list_fields() C API
function incorrectly set
MYSQL_FIELD::decimals for some view columns.
(Bug#29306)
InnoDB refused to start on some versions of
FreeBSD with LinuxThreads. This is fixed by enabling file
locking on FreeBSD.
(Bug#29155)
INSERT DELAYED statements on a master server
are replicated as non-DELAYED inserts on
slaves (which is normal, to preserve serialization), but the
inserts on the slave did not use concurrent inserts. Now
INSERT DELAYED on a slave is converted to a
concurrent insert when possible, and to a normal insert
otherwise.
(Bug#29152)
A maximum of 4TB InnoDB free space was
reported by SHOW TABLE STATUS, which is
incorrect on systems with more than 4TB space.
(Bug#29097)
A byte-order issue in writing a spatial index to disk caused bad index files on some systems. (Bug#29070)
Creation of a legal stored procedure could fail if no default database had been selected. (Bug#29050)
Coercion of ASCII values to character sets that are a superset of ASCII sometimes was not done, resulting in illegal mix of collations errors. These cases now are resolved using repertoire, a new string expression attribute (see Section 9.1.6, “String Repertoire”). (Bug#28875)
Fast ALTER TABLE (that works without
rebuilding the table) acquired duplicate locks in the storage
engine. In MyISAM, if ALTER
TABLE was issued under LOCK TABLE,
it caused all data inserted after LOCK TABLE
to disappear.
(Bug#28838)
Tables using the InnoDB storage engine
incremented AUTO_INCREMENT values incorrectly
with ON DUPLICATE KEY UPDATE.
(Bug#28781)
Starting the server with an
innodb_force_recovery value of 4 did not
work.
(Bug#28604)
For InnoDB tables, MySQL unnecessarily sorted
records in certain cases when the records were retrieved by
InnoDB in the proper order already.
(Bug#28591)
mysql_install_db could fail to find script files that it needs. (Bug#28585)
If a stored procedure was created and invoked prior to selecting
a default database with USE, a No
database selected error occurred.
(Bug#28551)
On Mac OS X, shared-library installation pathnames were incorrect. (Bug#28544)
Using the --skip-add-drop-table option with
mysqldump generated incorrect SQL if the
database included any views. The recreation of views requires
the creation and removal of temporary tables. This option
suppressed the removal of those temporary tables. The same
applied to --compact since this option also
invokes --skip-add-drop-table.
(Bug#28524)
A race condition in the interaction between
MyISAM and the query cache code caused the
query cache not to invalidate itself for concurrently inserted
data.
(Bug#28249)
Indexing column prefixes in InnoDB tables
could cause table corruption.
(Bug#28138)
Index creation could fail due to truncation of key values to the maximum key length rather than to a mulitiple of the maximum character length. (Bug#28125)
On Windows, symbols for yaSSL and taocrypt were missing from
mysqlclient.lib, resulting in unresolved
symbol errors for clients linked against that library.
(Bug#27861)
Some SHOW statements and
INFORMATION_SCHEMA queries could expose
information not allowed by the user's access privileges.
(Bug#27629)
Some character mappings in the ascii.xml
file were incorrect.
(Bug#27562)
An error that happened inside INSERT,
UPDATE, or DELETE
statements performed from within a stored function or trigger
could cause inconsistency between master and slave servers.
(Bug#27417)
A SELECT with more than 31 nested dependent
subqueries returned an incorrect result.
(Bug#27352)
INSERT INTO ... SELECT caused a crash if
innodb_locks_unsafe_for_binlog was enabled.
(Bug#27294)
FEDERATED tables had an artificially low
maximum of key length.
(Bug#26909)
After the first read of a TEMPORARY table,
CHECK TABLE could report the table as being
corrupt.
(Bug#26325)
If an operation had an InnoDB table, and two
triggers, AFTER UPDATE and AFTER
INSERT, competing for different resources (such as two
distinct MyISAM tables), the triggers were
unable to execute concurrently. In addition,
INSERT and UPDATE
statements for the InnoDB table were unable
to run concurrently.
(Bug#26141)
ALTER DATABASE did not require at least one
option.
(Bug#25859)
Using HANDLER to open a table having a
storage engine not supported by HANDLER
properly returned an error, but also improperly prevented the
table from being dropped by other connections.
(Bug#25856)
When using a FEDERATED table, the value of
last_insert_id() would not correctly update
the C API interface, which would affect the autogenerated ID
returned both through the C API and the MySQL protocol,
affecting Connectors that used the protocol and/or C API.
(Bug#25714)
The server was blocked from opening other tables while the
FEDERATED engine was attempting to open a
remote table. Now the server does not check the correctness of a
FEDERATED table at CREATE
TABLE time, but waits until the table actually is
accessed.
(Bug#25679)
Several InnoDB assertion failures were
corrected.
(Bug#25645)
In a stored function or trigger, when InnoDB
detected deadlock, it attempted rollback and displayed an
incorrect error message (Explicit or implicit commit
is not allowed in stored function or trigger). Now
InnoDB returns an error under these
conditions and does not attempt rollback. Rollback is handled
outside of InnoDB above the function/trigger
level.
(Bug#24989)
Dropping a temporary InnoDB table that had
been locked with LOCK TABLES caused a server
crash.
(Bug#24918)
On Windows, executables did not include Vista manifests. (Bug#24732)
See also Bug#22563
Slave servers could incorrectly interpret an out-of-memory error from the master and reconnect using the wrong binary log position. (Bug#24192)
If MySQL/InnoDB crashed very quickly after
starting up, it would not force a checkpoint. In this case,
InnoDB would skip crash recovery at next
startup, and the database would become corrupt. Now, if the redo
log scan at InnoDB startup goes past the last
checkpoint, crash recovery is forced.
(Bug#23710)
SHOW INNODB STATUS caused an assertion
failure under high load.
(Bug#22819)
A statement of the form CREATE TABLE IF NOT EXISTS t1
SELECT f1() AS i failed with a deadlock error if the
stored function f1() referred to a table with
the same name as the to-be-created table. Now it correctly
produces a message that the table already exists.
(Bug#22427)
Read lock requests that were blocked by a pending write lock request were not allowed to proceed if the statement requesting the write lock was killed. (Bug#21281)
On Windows, the server used 10MB of memory for each connection thread, resulting in memory exhaustion. Now each thread uses 1MB. (Bug#20815)
InnoDB produced an unnecessary (and harmless)
warning: .
(Bug#20090)InnoDB: Error: trying to
declare trx to enter InnoDB, but
InnoDB: it already is declared
SQL_BIG_RESULT had no effect for
CREATE TABLE ... SELECT SQL_BIG_RESULT ...
statements.
(Bug#15130)
mysql_setpermission tried to grant global-only privileges at the database level. (Bug#14618)
For the general query log, logging of prepared statements
executed via the C API differed from logging of prepared
statements performed with PREPARE and
EXECUTE. Logging for the latter was missing
the Prepare and Execute
lines.
(Bug#13326)
Backup software can cause
ERROR_SHARING_VIOLATION or
ERROR_LOCK_VIOLATION conditions during file
operations. InnoDB now retries forever until
the condition goes away.
(Bug#9709)

User Comments
Add your own comment.