End of Product Lifecycle. Active 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:
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)
For a table with an AUTO_INCREMENT
column,
SHOW CREATE TABLE
now shows the
next AUTO_INCREMENT
value to be generated.
(Bug#19025)
Added the --set-charset
option
to mysqlbinlog to allow 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:
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)
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)
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:
The ndb_mgm client command ALL
CLUSTERLOG STATISTICS=15
had no effect.
(Bug#20336)
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: 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:
The cluster's data nodes failed while trying to load data when
NoOfFrangmentLogFiles
was set equal to 1.
(Bug#19894)
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:
(NDBAPI): On big-endian platforms,
NdbOperation::write_attr()
did not update
32-bit fields correctly.
(Bug#19537)
MySQL Cluster:
LOAD DATA
LOCAL
failed to ignore duplicate keys in Cluster
tables.
(Bug#19496)
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:
TRUNCATE TABLE
failed on tables
having BLOB
or
TEXT
columns with the error
Lock wait timeout exceeded.
(Bug#19201)
MySQL Cluster:
It was possible to use port numbers greater than 65535 for
ServerPort
in the
config.ini
file.
(Bug#19164)
MySQL Cluster:
TRUNCATE TABLE
failed to reset
the AUTO_INCREMENT
counter.
(Bug#18864)
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:
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:
Some queries having a WHERE
clause of the
form c1=val1 OR c2 LIKE 'val2'
were not
evaluated correctly.
(Bug#17421)
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:
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 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: Data node failures could cause excessive CPU usage by ndb_mgmd. (Bug#13987)
Replication:
The binary log would create an incorrect DROP
query when creating temporary tables during replication.
(Bug#17263)
Failure to account for a NULL
table pointer
on big-endian machines could cause a server crash during type
conversion.
(Bug#21135)
Closing of temporary tables failed if binary logging was not enabled. (Bug#20919)
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 fill_help_tables.sql
file did not load
properly if the ANSI_QUOTES
SQL mode was enabled.
(Bug#20542)
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)
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)
The mysql client did not understand
help
commands that had spaces at the end.
(Bug#20328)
Improper character set initialization in the embedded server could result in a server crash. (Bug#20318)
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)
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)
Using SELECT
on a corrupt
MyISAM
table using the dynamic record format
could cause a server crash.
(Bug#19835)
InnoDB
unlocked its data directory before
committing a transaction, potentially resulting in
nonrecoverable tables if a server crash occurred before the
commit.
(Bug#19727)
A cast problem caused incorrect results for prepared statements that returned float values when MySQL was compiled with gcc 4.0. (Bug#19694)
InnoDB
failed to increment the
handler_read_prev
counter.
(Bug#19542)
Repeated DROP TABLE
statements in
a stored procedure could sometimes cause the server to crash.
(Bug#19399)
Multiple-table DELETE
statements
containing a subquery that selected from one of the tables being
modified caused a server crash.
(Bug#19225)
Use of uninitialized user variables in a subquery in the
FROM
clause resulted in invalid entries in
the binary log.
(Bug#19136)
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)
mysqldump did not respect the order of tables
named with the --tables
option.
(Bug#18536)
MONTHNAME(STR_TO_DATE(NULL,
'%m'))
could cause a server crash.
(Bug#18501)
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)
The use of MIN()
and
MAX()
on columns with an index
prefix produced incorrect results in some queries.
(Bug#18206)
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)
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)
Slave SQL thread cleanup was not handled properly on Mac OS X when a statement was killed, resulting in a slave crash. (Bug#16900)
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)
Concatenating the results of multiple constant subselects produced incorrect results. (Bug#16716)
IS_USED_LOCK()
could return an
incorrect connection identifier.
(Bug#16501)
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)
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.
Concurrent reading and writing of privilege structures could crash the server. (Bug#16372)
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)
Some memory leaks in the libmysqld
embedded
server were corrected.
(Bug#16017)
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)
The server no longer uses a signal handler for signal 0 because it could cause a crash on some platforms. (Bug#15869)
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)
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)
ANALYZE TABLE
for
TEMPORARY
tables had no effect.
(Bug#15225)
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)
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)
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)
Using SELECT
and a table join
while running a concurrent INSERT
operation would join incorrect rows.
(Bug#14400)
The binary log lacked character set information for table names when dropping temporary tables. (Bug#14157)
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)
LOAD_FILE()
returned an error if
the file did not exist, rather than NULL
as
it should according to the manual.
(Bug#10418)
When myisamchk needed to rebuild a table,
AUTO_INCREMENT
information was lost.
(Bug#10405)
INSERT INTO ... SELECT ... LIMIT 1
could be
slow because the LIMIT
was ignored when
selecting candidate rows.
(Bug#9676)
The DATA DIRECTORY
table option did not work
for TEMPORARY
tables.
(Bug#8706)
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)
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 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)
User Comments
Add your own comment.