This is a Monthly Rapid Update release of the MySQL Enterprise Server 5.0.
This section documents all changes and bug fixes that have been applied since the last MySQL Enterprise Server release (5.0.42).
Functionality Added or Changed
MySQL Cluster: The server source tree now includes scripts to simplify building MySQL with SCI support. For more information about SCI interconnects and these build scripts, see Configuring MySQL Cluster to use SCI Sockets. (Bug #25470)
Enterprise builds did not include the
CSV is now included in
Enterprise builds for all platforms except Windows, QNX, and
INSERT DELAYED statements on
BLACKHOLE tables are now rejected, due to the
fact that the
BLACKHOLE storage engine does
not support them.
A new status variable,
indicates the number of calls to stored procedures.
Security Fix: A malformed password packet in the connection protocol could cause the server to crash. Thanks for Dormando for reporting this bug, and for providing details and a proof of concept. (Bug #28984, CVE-2007-3780)
LIKE was not isolated from alteration by other
connections, which resulted in various errors and incorrect
binary log order when trying to execute concurrently a
LIKE statement and either DDL statements on the source
table or DML or DDL statements on the target table.
(Bug #23667, Bug #25578, CVE-2007-3781)
The names of stored functions referenced by views were not
properly displayed by
The fix corrects a problem introduced by Bug #23491. There is an incompatibility when upgrading from versions affected by that bug fix (MySQL 5.0.40 through 5.0.43, MySQL 5.1.18 through 5.1.19): If you use mysqldump before upgrading from an affected version and reload the data after upgrading to a higher version, you must drop and recreate your views. (Bug #28605)
When mysqldump was run with the
binary log files were deleted before it was known that the dump
had succeeded, not after. (The method for removing log files
RESET MASTER prior to the
dump. This also reset the binary log sequence numbering to
.000001.) Now mysqldump
flushes the logs (which creates a new binary log number with the
next sequence number), performs the dump, and then uses
PURGE BINARY LOGS to remove the
log files older than the new one. This also preserves log
numbering because the new log with the next number is generated
and only the preceding logs are removed. However, this may
affect applications if they rely on the log numbering sequence
The use of an
ORDER BY or
DISTINCT clause with a query containing a
call to the
function caused results from previous queries to be redisplayed
in the current result. The fix for this includes replacing a
BLOB value used internally for
sorting with a
means that for long results (more than 65,535 bytes), it is
possible for truncation to occur; if so, an appropriate warning
(Bug #23856, Bug #28273)
MySQL Cluster: A corrupt schema file could cause a File already open error. (Bug #28770)
UPDATE IGNORE statements involving the
primary keys of multiple tables could result in data corruption.
A race condition could result when nonmaster nodes (in addition
to the master node) tried to update active status due to a local
checkpoint (that is, between
COPY_GCIREQ events). Now only the master
updates the active status.
MySQL Cluster: A fast global checkpoint under high load with high usage of the redo buffer caused data nodes to fail. (Bug #28653)
When an API node sent more than 1024 signals in a single batch,
NDB would process only the first
1024 of these, and then hang.
A delay in obtaining
AUTO_INCREMENT IDs could
lead to excess temporary errors.
MySQL Cluster: A failure to release internal resources following an error could lead to problems with single user mode. (Bug #25818)
The result of executing of a prepared statement created with
PREPARE s FROM "SELECT 1 LIMIT ?" was not
Replication: Recreating a view that already exists on the master would cause a replicating slave to terminate replication with a 'different error message on slave and master' error. (Bug #28244)
Replication: Binary logging of prepared statements could produce syntactically incorrect queries in the binary log, replacing some parameters with variable names rather than variable values. This could lead to incorrect results on replication slaves. (Bug #26842, Bug #12826)
Connections from one mysqld server to another
failed on Mac OS X, affecting replication and
References: See also Bug #29083.
Replication: When using transactions and replication, shutting down the master in the middle of a transaction would cause all slaves to stop replicating. (Bug #22725)
LIKE ... would raise an assertion when replicated to a
On the IBM i5 platform, the installation script in the
.savf binaries unconditionally executed the
mysql_install_db script. This problem was
fixed in a repackaged distribution numbered 5.0.44b.
Long path names for internal temporary tables could cause stack overflows. (Bug #29015)
If a program binds a given number of parameters to a prepared
statement handle and then somehow changes
stmt->param_count to a different number,
mysql_stmt_execute() could crash
the client or server.
INSERT .. ON DUPLICATE KEY UPDATE could under
some circumstances silently update rows when it should not have.
VIEW created with a nonexisting
DEFINER could lead to incorrect results under
References: See also Bug #29449, Bug #30485, Bug #31395. This bug was introduced by Bug #13195.
USE_TLS was not defined for
A subquery with
ORDER BY and
1 could cause a server crash.
BETWEEN with nonindexed date
columns and short formats of the date string could return
GEOMETRY columns in a
UNION caused a server crash.
When constructing the path to the original
RENAME was unnecessarily (and incorrectly) lowercasing
the entire path when not on a case-insensitive file system,
causing the statement to fail.
Searches on indexed and nonindexed
ENUM columns could return
different results for empty strings.
EXPLAIN EXTENDED on a
query using a derived table over a grouping subselect could lead
to a server crash. This occurred only when materialization of
the derived tables required creation of an auxiliary temporary
table, an example being when a grouping operation was carried
out with usage of a temporary table.
The result of evaluation for a view's
OPTION option over an updated record and records of
merged tables was arbitrary and dependent on the order of
records in the merged tables during the execution of the
The “manager thread” of the LinuxThreads implementation was unintentionally started before mysqld had dropped privileges (to run as an unprivileged user). This caused signaling between threads in mysqld to fail when the privileges were finally dropped. (Bug #28690)
For debug builds,
could trigger an assertion failure due to occurrence of a
deadlock when committing changes.
Killing from one connection a long-running
QUERY started from another connection caused
mysqld to crash.
Outer join queries with
ON conditions over
constant outer tables did not return
NULL-complemented rows when conditions were
An update on a multiple-table view with the
OPTION clause and a subquery in the
WHERE condition could cause an assertion
PURGE MASTER LOGS BEFORE
( caused a server
crash. Subqueries are forbidden in the
mysqldump calculated the required memory for a hex-blob string incorrectly causing a buffer overrun. This in turn caused mysqldump to crash silently and produce incomplete output. (Bug #28522)
A query that grouped by the result of an expression returned a different result when the expression was assigned to a user variable. (Bug #28494)
LONG values in MySQL
versions later than 5.0.24a returned
prior to this. The previous behavior was restored.
References: This bug was introduced by Bug #19714.
Forcing the use of an index on a
SELECT query when the index had
been disabled would raise an error without running the query.
The query now executes, with a warning generated noting that the
use of a disabled index has been ignored.
SELECT '2007-01-01' + INTERVAL
mysqld to fail.
column_name DAY FROM
A server crash could happen under rare conditions such that a
temporary table outgrew heap memory reserved for it and the
remaining disk space was not big enough to store the table as a
mysql_upgrade failed if certain SQL modes were set. Now it sets the mode itself to avoid this problem. (Bug #28401)
The test case for mysqldump failed with
LOAD_FILE from an empty floppy
drive under Windows, caused the server to hang. For example, if
you opened a connection to the server and then issued the
command SELECT LOAD_FILE('a:test');, with no
floppy in the drive, the server was inaccessible until the modal
pop-up dialog box was dismissed.
A buffer overflow could occur when using
DECIMAL columns on Windows
libmysql.dll could not be dynamically loaded
Grouping queries with correlated subqueries in
WHERE conditions could produce incorrect
mysqltest used a too-large stack size on PowerPC/Debian Linux, causing thread-creation failure for tests that use many threads. (Bug #28333)
EXPLAIN for a query on an empty
table immediately after its creation could result in a server
IS_UPDATABLE column in the
INFORMATION_SCHEMA.VIEWS table was
not always set correctly.
DATETIME column value
with a user variable yielded incorrect results.
Portability problems caused by use of
When dumping procedures, mysqldump
output that restored the session variable
sql_mode without first
capturing it. When dumping routines, mysqldump
set nor retrieved the value of
DECIMAL values beginning with
9 digits could be incorrectly rounded.
The second execution of a prepared statement from a
UNION query with
BY RAND() caused the server to crash. This problem
could also occur when invoking a stored procedure containing
such a query.
A stored program that uses a variable name containing multibyte characters could fail to execute. (Bug #27876)
ON conditions from
expressions were ignored when checking the
OPTION clause while updating a multiple-table view
that included such a clause.
On some systems,
udf_example.c returned an
incorrect result length. Also on some systems,
mysql-test-run.pl could not find the shared
object built from
HASH indexes on
VARCHAR columns with binary
collations did not ignore trailing spaces from strings before
comparisons. This could result in duplicate records being
successfully inserted into a
with unique key constraints. A consequence was that internal
MEMORY tables used for
BY calculation contained duplicate rows that resulted
in duplicate-key errors when converting those temporary tables
MyISAM, and that error was incorrectly
reported as a
table is full error.
An error occurred trying to connect to mysqld-debug.exe. (Bug #27597)
MIN() on an indexed
column that contained only
NULL values caused
NULL to be returned for other result columns.
If a stored function or trigger was killed, it aborted but no error was thrown, permitting the calling statement to continue without noticing the problem. This could lead to incorrect results. (Bug #27563)
ALTER TABLE was used to add
DATE column with no
explicit default value,
'0000-00-00' was used
as the default even if the SQL mode included the
NO_ZERO_DATE mode to prohibit
that value. A similar problem occurred for
TEXT local variable in a
stored routine in an expression such as
an incorrect result.
The error message for error number
not report which database/table combination reported the
A large filesort could result in a division by zero error and a server crash. (Bug #27119)
Some test suite files were missing from some MySQL-test packages. (Bug #26609)
Statements within triggers ignored the value of the
References: See also Bug #29963.
On Windows, connection handlers did not properly decrement the server's thread count when exiting. (Bug #25621)
Due to a race condition, executing
PRIVILEGES in one thread could cause brief table
unavailability in other threads.
When mysqld was run as a Windows service, shared memory objects were not created in the global namespace and could not be used by clients to connect. (Bug #24731)
On some Linux distributions where LinuxThreads and NPTL
glibc versions both are available, statically
built binaries can crash because the linker defaults to
LinuxThreads when linking statically, but calls to external
libraries (such as
libnss) are resolved to
NPTL versions. This cannot be worked around in the code, so
instead if a crash occurs on such a binary/OS combination, print
an error message that provides advice about how to fix the
Conversion errors could occur when constructing the condition
IN predicate. The predicate was
treated as if the affected column contains
NULL, but if the
predicate is inside
NOT, incorrect results
could be returned.
Linux binaries were unable to dump core after executing a
Stack overflow caused server crashes. (Bug #21476)
CURDATE() is less than
NOW(), either when comparing
CURDATE() < NOW() is true) or when
DATE) < NOW() is true). However, storing
CURDATE() in a
DATE column and comparing
incorrectly yielded false. This is fixed by
DATE column as
DATETIME for comparisons to a
For dates with 4-digit year parts less than 200, an incorrect
implicit conversion to add a century was applied for date
arithmetic performed with
- INTERVAL. (For
INTERVAL 0 SECOND) became
Granting access privileges to an individual table where the database or table name contained an underscore failed. (Bug #18660)
-lmtmalloc library was removed from the
output of mysql_config on Solaris, as it
caused problems when building
possibly other applications) on that platform that tried to use
dlopen() to access the client library.
The check-cpu script failed to detect AMD64 Turion processors correctly. (Bug #17707)
Trying to shut down the server following a failed
INFILE caused mysqld to crash.
Using up-arrow for command-line recall in mysql could cause a segmentation fault. (Bug #10218)