End of Product LifecycleActive development and support for MySQL Database Server versions 3.23, 4.0, and 4.1 has ended. For details, see http://www.mysql.com/about/legal/lifecycle/#calendar. Please consider upgrading to a recent version. Further updates to the content of this manual will be minimal. All formats of this manual will continue to be available until 31 Dec 2010.
This is a bugfix release for the MySQL 4.1 release family.
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
For a table with an AUTO_INCREMENT column,
SHOW CREATE TABLE now shows the
next AUTO_INCREMENT value to be generated.
(Bug #19025)
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)
Added the --set-charset
option to mysqlbinlog to enable the
character set to be specified for processing binary log files.
(Bug #18351)
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)
A new system variable,
lc_time_names, specifies the
locale that controls the language used to display day and
month names and abbreviations. This variable affects the
output from the DATE_FORMAT(),
DAYNAME() and
MONTHNAME() functions. See
Section 9.8, “MySQL Server Locale Support”.
Bugs Fixed
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)
Security Fix: Invalid
arguments to DATE_FORMAT()
caused a server crash. Thanks to Jean-David Maillefer for
discovering and reporting this problem to the Debian project
and to Christian Hammers from the Debian Team for notifying us
of it. (Bug #20729, CVE-2006-3469)
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)
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: It was
possible to use port numbers greater than 65535 for
ServerPort in the
config.ini file. (Bug #19164)
MySQL Cluster: Repeated use
of the SHOW and ALL
STATUS commands in the ndb_mgm
client could cause the mgmd process to
crash. (Bug #18591)
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: Using
“stale” mysqld
.frm files could cause a newly restored
cluster to fail. This situation could arise when restarting a
MySQL Cluster using the --initial option
while leaving connected mysqld processes
running. (Bug #16875)
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: A Cluster
whose storage nodes were installed from the
MySQL-ndb-storage- RPMs could not perform *
CREATE
or ALTER operations that made use of
nondefault character sets or collations. (Bug #14918)
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: Data node failures could cause excessive CPU usage by ndb_mgmd. (Bug #13987)
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: Some queries
having a WHERE clause of the form
c1=val1 OR c2 LIKE 'val2' were not
evaluated correctly. (Bug #17421)
MySQL Cluster:
TRUNCATE TABLE failed on tables
having BLOB or
TEXT columns with the error
Lock wait timeout exceeded. (Bug
#19201)
MySQL Cluster: An issue with
ndb_mgmd prevented more than 27
mysqld processes from connecting to a
single cluster at one time. (Bug #17150)
MySQL Cluster: The
ndb_mgm client command ALL
CLUSTERLOG STATISTICS=15 had no effect. (Bug #20336)
MySQL Cluster:
LOAD DATA
LOCAL failed to ignore duplicate keys in Cluster
tables. (Bug #19496)
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: The cluster's
data nodes failed while trying to load data when
NoOfFrangmentLogFiles was set equal to 1.
(Bug #19894)
MySQL Cluster:
TRUNCATE TABLE failed to reset
the AUTO_INCREMENT counter. (Bug #18864)
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: 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)
Replication: The binary log
would create an incorrect DROP query when
creating temporary tables during replication. (Bug #17263)
Cluster API: On big-endian
platforms,
NdbOperation::write_attr()
did not update 32-bit fields correctly. (Bug #19537)
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)
Use of MIN() or
MAX() with GROUP
BY on a ucs2 column could cause a
server crash. (Bug #20076)
Multiple-table DELETE
statements containing a subquery that selected from one of the
tables being modified caused a server crash. (Bug #19225)
Concatenating the results of multiple constant subselects produced incorrect results. (Bug #16716)
ANALYZE TABLE for
TEMPORARY tables had no effect. (Bug
#15225)
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)
The binary log lacked character set information for table names when dropping temporary tables. (Bug #14157)
mysqldump did not respect the order of
tables named with the
--tables option. (Bug
#18536)
For a reference to a nonexistent index in FORCE
INDEX, the error message referred to a column, not
an index. (Bug #17873)
DATE_ADD() and
DATE_SUB() returned
NULL when the result date was on the day
'9999-12-31'. (Bug #12356)
The DATA DIRECTORY table option did not
work for TEMPORARY tables. (Bug #8706)
The ARCHIVE storage engine does not support
TRUNCATE TABLE, but the server
was not returning an appropriate error when truncation of an
ARCHIVE table was attempted. (Bug #15558)
Improper character set initialization in the embedded server could result in a server crash. (Bug #20318)
For a DATE parameter sent using
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)
Certain queries having a WHERE clause that
included conditions on multi-part keys with more than 2 key
parts could produce incorrect results and send
[Note] Use_count: Wrong count for key
at... messages to STDERR. (Bug
#16168)
InnoDB unlocked its data directory before
committing a transaction, potentially resulting in
nonrecoverable tables if a server crash occurred before the
commit. (Bug #19727)
Invalid escape sequences in option files caused MySQL programs that read them to abort. (Bug #15328)
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)
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)
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)
IS_USED_LOCK() could return an
incorrect connection identifier. (Bug #16501)
The server no longer uses a signal handler for signal 0 because it could cause a crash on some platforms. (Bug #15869)
A statement containing GROUP BY and
HAVING clauses could return incorrect
results when the HAVING clause contained
logic that returned FALSE for every row.
(Bug #14927)
The use of MIN() and
MAX() on columns with an index
prefix produced incorrect results in some queries. (Bug
#18206)
INSERT INTO ... SELECT ... LIMIT 1 could be
slow because the LIMIT was ignored when
selecting candidate rows. (Bug #9676)
InnoDB failed to increment the
handler_read_prev counter. (Bug #19542)
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)
Closing of temporary tables failed if binary logging was not enabled. (Bug #20919)
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)
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)
Using SELECT and a table join
while running a concurrent
INSERT operation would join
incorrect rows. (Bug #14400)
The fill_help_tables.sql file did not
load properly if the
ANSI_QUOTES SQL mode was
enabled. (Bug #20542)
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)
The ref optimizer could
choose the ref_or_null
access method in cases where it was not applicable. This could
cause inconsistent EXPLAIN or
SELECT results for a given
statement. (Bug #16798)
The mysql client did not understand
help commands that had spaces at the end.
(Bug #20328)
Concurrent reading and writing of privilege structures could crash the server. (Bug #16372)
Slave SQL thread cleanup was not handled properly on Mac OS X when a statement was killed, resulting in a slave crash. (Bug #16900)
When mysqldump disabled keys and locked a
MyISAM table, the lock operation happened
second. If another client performed a query on the table in
the interim, it could take a long time due to indexes not
being used. Now the lock operation happens first. (Bug #15977)
LOAD_FILE() returned an error
if the file did not exist, rather than NULL
as it should according to the manual. (Bug #10418)
SHOW CREATE TABLE did not
display the AUTO_INCREMENT column attribute
if the SQL mode was MYSQL323
or MYSQL40. This also
affected mysqldump, which uses
SHOW CREATE TABLE to get table
definitions. (Bug #14515)
The mysql client did not ignore
client-specific commands (such as use or
help) that occurred as the first word on a
line within multiple-line /* ... */
comments. (Bug #20432)
A number of dependency issues in the RPM
bench and test packages
caused installation of these packages to fail. (Bug #20078)
In a multiple-row INSERT
statement, LAST_INSERT_ID()
should return the same value for each row. However, in some
cases, the value could change if the table being inserted into
had its own AUTO_INCREMENT column. (Bug
#6880)
Some memory leaks in the libmysqld embedded
server were corrected. (Bug #16017)
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)
MONTHNAME(STR_TO_DATE(NULL,
'%m')) could cause a server crash. (Bug #18501)
The omission of leading zeros in dates could lead to erroneous results when these were compared with the output of certain date and time functions.
The patch for this bug was reverted in MySQL 4.1.22.
(Bug #16377)
Repeated DROP TABLE statements
in a stored procedure could sometimes cause the server to
crash. (Bug #19399)
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)
Using SELECT on a corrupt
MyISAM table using the dynamic record
format could cause a server crash. (Bug #19835)
No error message was being issued for storage engines that do
not support ALTER TABLE. Now an
ER_NOT_SUPPORTED_YET error
occurs. (Bug #7643)
A cast problem caused incorrect results for prepared statements that returned float values when MySQL was compiled with gcc 4.0. (Bug #19694)
Use of uninitialized user variables in a subquery in the
FROM clause resulted in invalid entries in
the binary log. (Bug #19136)
When myisamchk needed to rebuild a table,
AUTO_INCREMENT information was lost. (Bug
#10405)
Failure to account for a NULL table pointer
on big-endian machines could cause a server crash during type
conversion. (Bug #21135)

User Comments
Add your own comment.