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 Section 17.11.1, “Configuring MySQL Cluster to use SCI Sockets”. (Bug#25470)
Enterprise builds did not include the CSV
storage engine. CSV is now included in
Enterprise builds for all platforms except Windows, QNX, and
NetWare.
(Bug#28844)
INSERT DELAYED statements on
BLACKHOLE tables are now rejected, due to the
fact that the BLACKHOLE storage engine does
not support them.
(Bug#27998)
A new status variable, Com_call_procedure,
indicates the number of calls to stored procedures.
(Bug#27994)
Bugs fixed:
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)
Security Fix:
CREATE TABLE LIKE did not require any
privileges on the source table. Now it requires the
SELECT privilege.
In addition, CREATE TABLE 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 CREATE TABLE 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)
Incompatible Change:
When mysqldump was run with the
--delete-master-logs option, binary log files
were deleted before it was known that the dump had succeeded,
not after. (The method for removing log files used
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 MASTER 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 being
reset.
(Bug#24733)
Incompatible Change:
The use of an ORDER BY or
DISTINCT clause with a query containing a
call to the GROUP_CONCAT()
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
VARCHAR. This means that for long results
(more than 65,535 bytes), it is possible for truncation to
occur; if so, an appropriate warning is issued.
(Bug#23856, Bug#28273)
MySQL Cluster: A corrupt schema file could cause a File already open error. (Bug#28770)
MySQL Cluster:
Setting InitialNoOpenFiles equal to
MaxNoOfOpenFiles caused an error. This was
due to the fact that the actual value of
MaxNoOfOpenFiles as used by the cluster was
offset by 1 from the value set in
config.ini.
(Bug#28749)
MySQL Cluster:
UPDATE IGNORE statements involving the
primary keys of multiple tables could result in data corruption.
(Bug#28719)
MySQL Cluster:
A race condition could result when non-master nodes (in addition
to the master node) tried to update active status due to a local
checkpoint (that is, between NODE_FAILREP and
COPY_GCIREQ events). Now only the master
updates the active status.
(Bug#28717)
MySQL Cluster: A fast global checkpoint under high load with high usage of the redo buffer caused data nodes to fail. (Bug#28653)
MySQL Cluster:
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.
(Bug#28443)
MySQL Cluster:
A delay in obtaining AUTO_INCREMENT IDs could
lead to excess temporary errors.
(Bug#28410)
MySQL Cluster: A failure to release internal resources following an error could lead to problems with single user mode. (Bug#25818)
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.
(Bug#30084)
Long pathnames for internal temporary tables could cause stack overflows. (Bug#29015)
Using an INTEGER column from a table to
ROUND() a number produced
different results than using a constant with the same value as
the INTEGER column.
(Bug#28980)
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.
(Bug#28934)
INSERT .. ON DUPLICATE KEY UPDATE could under
some circumstances silently update rows when it should not have.
(Bug#28904)
Queries that used UUID() were
incorrectly allowed into the query cache. (This should not
happen because UUID() is
non-deterministic.)
(Bug#28897)
Using a VIEW created with a non-existing
DEFINER could lead to incorrect results under
some circumstances.
(Bug#28895)
For InnoDB tables that use the
utf8 character set, incorrect results could
occur for DML statements such as DELETE or
UPDATE that use an index on character-based
columns.
(Bug#28878)
See also Bug#29449, Bug#30485, Bug#31395
This regression was introduced by Bug#13195
On Windows, USE_TLS was not defined for
mysqlclient.lib.
(Bug#28860)
A subquery with ORDER BY and LIMIT
1 could cause a server crash.
(Bug#28811)
Using BETWEEN with non-indexed
date columns and short formats of the date string could return
incorrect results.
(Bug#28778)
Selecting GEOMETRY columns in a
UNION caused a server crash.
(Bug#28763)
When constructing the path to the original
.frm file, ALTER ..
RENAME was unnecessarily (and incorrectly) lowercasing
the entire path when not on a case-insensitive filesystem,
causing the statement to fail.
(Bug#28754)
Searches on indexed and non-indexed ENUM
columns could return different results for empty strings.
(Bug#28729)
Executing 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.
(Bug#28728)
The result of evaluation for a view's CHECK
OPTION option over an updated record and records of
merged tables was arbitrary and dependant on the order of
records in the merged tables during the execution of the
SELECT statement.
(Bug#28716)
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, ALTER TABLE could trigger
an assertion failure due to occurrence of a deadlock when
committing changes.
(Bug#28652)
After an upgrade, the names of stored routines referenced by
views were no longer displayed by SHOW CREATE
VIEW.
(Bug#28605)
This regression was introduced by Bug#23491
Killing from one connection a long-running EXPLAIN
QUERY started from another connection caused
mysqld to crash.
(Bug#28598)
Outer join queries with ON conditions over
constant outer tables did not return
NULL-complemented rows when conditions were
evaluated to FALSE.
(Bug#28571)
An update on a multiple-table view with the CHECK OPTION clause and a subquery in the WHERE condition could cause an assertion failure. (Bug#28561)
PURGE MASTER LOGS BEFORE
( caused a server
crash. Subqueries are forbidden in the subquery)BEFORE
clause now.
(Bug#28553)
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)
Passing a DECIMAL value as a parameter of a
statement prepared with PREPARE resulted in
an error.
(Bug#28509)
mysql_affected_rows() could
return an incorrect result for INSERT ... ON DUPLICATE
KEY UPDATE if the CLIENT_FOUND_ROWS
flag was set.
(Bug#28505)
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)
Subselects returning LONG values in MySQL
versions later than 5.0.24a returned LONGLONG
prior to this. The previous behavior was restored.
(Bug#28492)
This regression 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.
(Bug#28476)
The result of executing of a prepared statement created with
PREPARE s FROM "SELECT 1 LIMIT ?"
was not replicated correctly.
(Bug#28464)
The query SELECT '2007-01-01' + INTERVAL
caused
mysqld to fail.
(Bug#28450)column_name DAY FROM
table_name
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
MyISAM table.
(Bug#28449)
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
bin-log disabled.
(Bug#28372)
Attempting to 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.
(Bug#28366)
A buffer overflow could occur when using
DECIMAL columns on Windows operating systems.
(Bug#28361)
libmysql.dll could not be dynamically loaded
on Windows.
(Bug#28358)
Grouping queries with correlated subqueries in
WHERE conditions could produce incorrect
results.
(Bug#28337)
mysqltest used a too-large stack size on PPC/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 crash.
(Bug#28272)
The IS_UPDATABLE column in the
INFORMATION_SCHEMA.VIEWS table was not always
set correctly.
(Bug#28266)
Comparing a DATETIME column value with a user
variable yielded incorrect results.
(Bug#28261)
For CAST() of a
NULL value with type
DECIMAL, the return value was incorrectly
initialized, producing a runtime error for binaries built using
Visual C++ 2005.
(Bug#28250)
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)
Portability problems caused by use of isinf()
were corrected.
(Bug#28240)
When dumping procedures, mysqldump
--compact generated output that
restored the session variable SQL_MODE
without first capturing it. When dumping routines,
mysqldump --compact neither
set nor retrieved the value of SQL_MODE.
(Bug#28223)
Comparison of the string value of a date showed as unequal to
CURTIME(). Similar behavior was
exhibited for DATETIME values.
(Bug#28208)
The Bytes_received and
Bytes_sent status variables could hold only
32-bit values (not 64-bit values) on some platforms.
(Bug#28149)
Storing a large number into a FLOAT or
DOUBLE column with a fixed length could
result in incorrect truncation of the number if the column's
length was greater than 31.
(Bug#28121)
DECIMAL values beginning with nine
9 digits could be incorrectly rounded.
(Bug#27984)
The second execution of a prepared statement from a
UNION query with ORDER BY
RAND() caused the server to crash. This problem could
also occur when invoking a stored procedure containing such a
query.
(Bug#27937)
For attempts to open a non-existent table, the server should
report ER_NO_SUCH_TABLE but sometimes
reported ER_TABLE_NOT_LOCKED.
(Bug#27907)
A stored program that uses a variable name containing multibyte characters could fail to execute. (Bug#27876)
ON conditions from JOIN
expressions were ignored when checking the CHECK
OPTION clause while updating a multiple-table view
that included such a clause.
(Bug#27827)
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 udf_example.c.
(Bug#27741)
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
MEMORY table with unique key constraints. A
consequence was that internal MEMORY tables
used for GROUP BY calculation contained
duplicate rows that resulted in duplicate-key errors when
converting those temporary tables to MyISAM,
and that error was incorrectly reported as a table is
full error.
(Bug#27643)
An error occurred trying to connect to mysqld-debug.exe. (Bug#27597)
Selecting MIN() on an indexed
column that contained only NULL values caused
NULL to be returned for other result columns.
(Bug#27573)
If a stored function or trigger was killed, it aborted but no error was thrown, allowing the calling statement to continue without noticing the problem. This could lead to incorrect results. (Bug#27563)
When ALTER TABLE was used to add a new
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
DATETIME columns.
(Bug#27507)
Using a TEXT local variable in a stored
routine in an expression such as SET
produced
an incorrect result.
(Bug#27415)var =
SUBSTRING(var, 3)
The error message for error number 137 did
not report which database/table combination reported the
problem.
(Bug#27173)
A large filesort could result in a division by zero error and a server crash. (Bug#27119)
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
FEDERATED tables.
(Bug#26664)
See also Bug#29083
Some test suite files were missing from some MySQL-test packages. (Bug#26609)
Statements within triggers ignored the value of the
low_priority_updates system variable.
(Bug#26162)
See also Bug#29963
Running CHECK TABLE concurrently with a
SELECT, INSERT or other
statement on Windows could corrupt a MyISAM table.
(Bug#25712)
On Windows, connection handlers did not properly decrement the server's thread count when exiting. (Bug#25621)
Due to a race condition, executing FLUSH
PRIVILEGES in one thread could cause brief table
unavailability in other threads.
(Bug#24988)
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
problem.
(Bug#24611)
Implicit conversion of 9912101 to
DATE did not match
CAST(9912101 AS DATE).
(Bug#23093)
Conversion errors could occur when constructing the condition
for an IN predicate. The predicate was
treated as if the affected column contains
NULL, but if the IN
predicate is inside NOT, incorrect results
could be returned.
(Bug#22855)
When using transactions and replication, shutting down the master in the middle of a transaction would cause all slaves to stop replicating. (Bug#22725)
Linux binaries were unable to dump core after executing a
setuid() call.
(Bug#21723)
Stack overflow caused server crashes. (Bug#21476)
CURDATE() is less than
NOW(), either when comparing
CURDATE() directly
(CURDATE() < NOW() is true) or when
casting CURDATE() to
DATE (CAST(CURDATE() AS DATE) <
NOW() is true). However, storing
CURDATE() in a
DATE column and comparing
incorrectly yielded false. This is fixed by comparing a
col_name < NOW()DATE column as DATETIME
for comparisons to a DATETIME constant.
(Bug#21103)
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
DATE_ADD(),
DATE_SUB(), +
INTERVAL, and - INTERVAL. (For
example, DATE_ADD('0050-01-01 00:00:00',
INTERVAL 0 SECOND) became '2050-01-01
00:00:00'.)
(Bug#18997)
Using CREATE TABLE LIKE ... would raise an
assertion when replicated to a slave.
(Bug#18950)
Granting access privileges to an individual table where the database or table name contained an underscore would fail. (Bug#18660)
The -lmtmalloc library was removed from the
output of mysql_config on Solaris, as it
caused problems when building DBD::mysql (and
possibly other applications) on that platform that tried to use
dlopen() to access the client library.
(Bug#18322)
The check-cpu script failed to detect AMD64 Turion processors correctly. (Bug#17707)
Trying to shut down the server following a failed LOAD
DATA INFILE caused mysqld to crash.
(Bug#17233)
Using up-arrow for command-line recall in mysql could cause a segmentation fault. (Bug#10218)
The result for CAST() when
casting a value to UNSIGNED was limited to
the maximum signed BIGINT value
(9223372036854775808), rather than the maximum unsigned value
(18446744073709551615).
(Bug#8663)

User Comments
Add your own comment.