End of Product Lifecycle. Active development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
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:
If the user specified the server options
--max-connections=
or N --table-open-cache=, a warning would be given in some cases that some
values were recalculated, with the result that
M
--table-open-cache could be assigned greater
value.
It should be noted that, in such cases, both the warning and the
increase in the --table-open-cache value were
completely harmless. Note also that it is not possible for the
MySQL Server to predict or to control limitations on the maximum
number of open files, since this is determined by the operating
system.
The recalculation code has now been fixed to ensure that the
value of --table-open-cache is no longer
increased automatically, and that a warning is now given only if
some values had to be decreased due to operating system limits.
(Bug#21915)
MySQL now can do stack dumps on x86_64 and
i386/NPTL systems.
(Bug#21250)
The mysqld manpage has been reclassified from volume 1 to volume 8. (Bug#21220)
A warning now is issued if the client attempts to set the
SQL_LOG_OFF variable without the
SUPER privilege.
(Bug#16180)
The LOAD DATA FROM MASTER and LOAD
TABLE FROM MASTER statements are deprecated. See
Section 12.6.2.2, “LOAD DATA FROM MASTER Syntax”, for recommended
alternatives.
(Bug#9125, Bug#20596, Bug#14399, Bug#12187, Bug#15025, Bug#18822)
Bugs fixed:
MySQL Cluster: Packaging:
The ndb_mgm program was included in both the
MySQL-ndb-tools and
MySQL-ndb-management RPM packages, resulting
in a conflict if both were installed. Now
ndb_mgm is included only in
MySQL-ndb-tools.
(Bug#21058)
MySQL Cluster: Backup of a cluster failed if there were any tables with 128 or more columns. (Bug#23502)
MySQL Cluster:
INSERT ... ON DUPLICATE KEY UPDATE on an
NDB table could lead to deadlocks and memory
leaks.
(Bug#23200)
MySQL Cluster: If a node restart could not be performed from the REDO log, no node takeover took place. This could cause partitions to be left empty during a system restart. (Bug#22893)
MySQL Cluster: Multiple node restarts in rapid succession could cause a system restart to fail , or induce a race condition. (Bug#22892, Bug#23210)
MySQL Cluster:
(NDB API): Attempting to read a nonexistent tuple using
Commit mode for
NdbTransaction::execute() caused node
failures.
(Bug#22672)
MySQL Cluster:
Setting TransactionDeadlockDetectionTimeout
to a value greater than 12000 would cause scans to deadlock,
time out, fail to release scan records, until the cluster ran
out of scan records and stopped processing.
(Bug#21800)
MySQL Cluster:
The node recovery algorithm was missing a version check for
tables in the ALTER_TABLE_COMMITTED state (as
opposed to the TABLE_ADD_COMMITTED state,
which has the version check). This could cause inconsistent
schemas across nodes following node recovery.
(Bug#21756)
MySQL Cluster: The server provided a non-descriptive error message when encountering a fatally corrupted REDO log. (Bug#21615)
MySQL Cluster:
The output for the --help option used with
NDB executable programs (such as
ndbd, ndb_mgm,
ndb_restore, ndb_config,
and others mentioned in
Section 15.10, “Cluster Utility Programs”) referred to the
Ndb.cfg file, instead of to
my.cnf.
(Bug#21585)
MySQL Cluster: A partial rollback could lead to node restart failures. (Bug#21536)
MySQL Cluster: The ndb_mgm management client did not set the exit status on errors, always returning 0 instead. (Bug#21530)
MySQL Cluster: The failure of a unique index read due to an invalid schema version could be handled incorrectly in some cases, leading to unpredictable results. (Bug#21384)
MySQL Cluster:
Attempting to create an NDB table on a MySQL
with an existing non-Cluster table with the same name in the
same database could result in data loss or corruption. MySQL now
issues a warning when a SHOW TABLES or other
statement causing table discovery finds such a table.
(Bug#21378)
MySQL Cluster: Cluster logs were not rotated following the first rotation cycle. (Bug#21345)
MySQL Cluster: In a cluster with more than 2 replicas, a manual restart of one of the data nodes could fail and cause the other nodes in the same node group to shut down. (Bug#21213)
MySQL Cluster:
The ndb_size.pl script did not account for
TEXT and BLOB column
values correctly.
(Bug#21204)
MySQL Cluster:
When inserting a row into an NDB table with a
duplicate value for a non-primary unique key, the error issued
would reference the wrong key.
(Bug#21072)
MySQL Cluster:
Some queries involving joins on very large
NDB tables could crash the MySQL server.
(Bug#21059)
MySQL Cluster: In some situations with a high disk-load, writing of the redo log could hang, causing a crash with the error message GCP STOP detected. (Bug#20904)
MySQL Cluster: Under some circumstances, local checkpointing would hang, keeping any unstarted nodes from being started. (Bug#20895)
MySQL Cluster:
When the redo buffer ran out of space, a Pointer too
large error was raised and the cluster could become
unusable until restarted with --initial.
(Bug#20892)
MySQL Cluster: ndb_size.pl and ndb_error_reporter were missing from RPM packages. (Bug#20426)
MySQL Cluster:
In some cases where SELECT COUNT(*) from an
NDB table should have yielded an error,
MAX_INT was returned instead.
(Bug#19914)
MySQL Cluster: ndb_restore did not always make clear that it had recovered successfully from temporary errors while restoring a cluster backup. (Bug#19651)
MySQL Cluster: The server failed with a non-descriptive error message when out of data memory. (Bug#18475)
MySQL Cluster:
SELECT ... FOR UPDATE failed to lock the
selected rows.
(Bug#18184)
MySQL Cluster: A problem with takeover during a system restart caused ordered indexes to be rebuilt incorrectly. (Bug#15303)
Insufficient memory (myisam_sort_buffer_size)
could cause a server crash for several operations on
MyISAM tables: repair table, create index by
sort, repair by sort, parallel repair, bulk insert.
(Bug#23175)
REPAIR TABLE ... USE_FRM could cause a server
crash or hang when used for a MyISAM table in
a database other than the default database.
(Bug#22562)
Deleting entries from a large MyISAM index
could cause index corruption when it needed to shrink. Deletes
from an index can happen when a record is deleted, when a key
changes and must be moved, and when a key must be un-inserted
because of a duplicate key. This can also happen in
REPAIR TABLE when a duplicate key is found
and in myisamchk when sorting the records by
an index.
(Bug#22384)
Some Linux-x86_64-icc packages (of previous releases) mistakenly contained 32-bit binaries. Only ICC builds are affected, not gcc builds. Solaris and FreeBSD x86_64 builds are not affected. (Bug#22238)
Execution of a prepared statement that uses an
IN subquery with aggregate functions in the
HAVING clause could cause a server crash.
(Bug#22085)
Running SHOW MASTER LOGS at the same time as
binary log files were being switched would cause
mysqld to hang.
(Bug#21965)
character_set_results can be
NULL to signify “no conversion,”
but some code did not check for NULL,
resulting in a server crash.
(Bug#21913)
The optimizer sometimes mishandled R-tree indexes for
GEOMETRY data types, resulting in a server
crash.
(Bug#21888)
A query that used GROUP BY and an
ALL or ANY quantified
subquery in a HAVING clause could trigger an
assertion failure.
(Bug#21853)
COUNT(*) queries with
ORDER BY and LIMIT could
return the wrong result.
This problem was introduced by the fix for Bug#9676, which
limited the rows stored in a temporary table to the
LIMIT clause. This optimization is not
applicable to non-group queries with aggregate functions. The
current fix disables the optimization in such cases.
Redundant binary log LAST_INSERT_ID events
could be generated;
LAST_INSERT_ID(
did not return the value of expr)expr;
LAST_INSERT_ID() could return
the value generated by the current statement if the call
occurred after value generation, as in:
CREATE TABLE t1 (i INT AUTO_INCREMENT PRIMARY KEY, j INT); INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());
Selecting from a MERGE table could result in
a server crash if the underlying tables had fewer indexes than
the MERGE table itself.
(Bug#21617, Bug#22937)
For INSERT ... ON DUPLICATE KEY UPDATE, use
of
VALUES(
within the col_name)UPDATE clause sometimes was
handled incorrectly.
(Bug#21555)
EXPORT_SET() did not accept
arguments with coercible character sets.
(Bug#21531)
Adding ORDER BY to a SELECT
DISTINCT( query could
produce incorrect results.
(Bug#21456)expr)
Table aliases in multiple-table DELETE
statements sometimes were not resolved.
(Bug#21392)
For multiple-table UPDATE statements, storage
engines were not notified of duplicate-key errors.
(Bug#21381)
Within a prepared statement, SELECT (COUNT(*) =
1) (or similar use of other aggregate functions) did
not return the correct result for statement re-execution.
(Bug#21354)
In the package of pre-built time zone tables that is available
for download at timezones.html, the tables now
explicitly use the utf8 character set so that
they work the same way regardless of the system character set
value.
(Bug#21208)
Under heavy load (executing more than 1024 simultaneous complex queries), a problem in the code that handles internal temporary tables could lead to writing beyond allocated space and memory corruption. (Bug#21206)
A subquery that uses an index for both the
WHERE and ORDER BY clauses
produced an empty result.
(Bug#21180)
Certain malformed INSERT statements could
crash the mysql client.
(Bug#21142)
Creating a TEMPORARY table with the same name
as an existing table that was locked by another client could
result in a lock conflict for DROP TEMPORARY
TABLE because the server unnecessarily tried to
acquire a name lock.
(Bug#21096)
For InnoDB tables, the server could crash
when executing NOT IN(...) subqueries.
(Bug#21077)
The myisam_stats_method variable was
mishandled when set from an option file or on the command line.
(Bug#21054)
A query using WHERE did not
return consistent results on successive invocations. The
column =
constant OR
column IS NULLcolumn in each part of the
WHERE clause could be either the same column,
or two different columns, for the effect to be observed.
(Bug#21019)
A query using WHERE NOT
( yielded a
different result from the same query using the same
column < ANY
(subquery))column and
subquery with WHERE
(.
(Bug#20975)column > ANY
(subquery))
Under certain circumstances,
AVG(
returned a value but
key_val)MAX(
returned an empty set due to incorrect application of
key_val)MIN()/MAX() optimization.
(Bug#20954)
Using ALTER TABLE to add an
ENUM column with an enumeration value
containing 0xFF caused the name of the first
table column to be lost.
(Bug#20922)
WITH ROLLUP could group unequal values.
(Bug#20825)
Using aggregate functions in subqueries yielded incorrect
results under certain circumstances due to incorrect application
of
MIN()/MAX()
optimization.
(Bug#20792)
mysql_install_db incorrectly had a blank first line. (Bug#20721)
Character set collation was ignored in GROUP
BY clauses.
(Bug#20709)
If a column definition contained a character set declaration,
but a DEFAULT value began with an introducer,
the introducer character set was used as the column character
set.
(Bug#20695)
The MD5(),
SHA1(), and
ENCRYPT() functions should
return a binary string, but the result sometimes was converted
to the character set of the argument.
MAKE_SET() and
EXPORT_SET() now use the correct
character set for their default separators, resulting in
consistent result strings which can be coerced according to
normal character set rules.
(Bug#20536)
LIKE searches failed for indexed
utf8 character columns.
(Bug#20471)
User names have a maximum length of 16 characters (even if they contain multi-byte characters), but were being truncated to 16 bytes. (Bug#20393)
PROCEDURE ANALYSE() returned incorrect values
of M
FLOAT( and
M,
D)DOUBLE(.
(Bug#20305)M,
D)
SUBSTRING() results sometimes
were stored improperly into a temporary table when multi-byte
character sets were used.
(Bug#20204)
For an ENUM column that used the
ucs2 character set, using ALTER
TABLE to modify the column definition caused the
default value to be lost.
(Bug#20108)
mysqld --flush failed to flush
MyISAM table changes to disk following an
UPDATE statement for which no updated column
had an index.
(Bug#20060)
libmysqld returned TEXT
columns to the client as number of bytes, not number of
characters (which can be different for multi-byte character
sets).
(Bug#19983)
For TIME_FORMAT(), the
%H and %k format
specifiers can return values larger than two digits (if the hour
is greater than 99), but for some query results that contained
three-character hours, column values were truncated.
(Bug#19844)
On 64-bit systems, use of the cp1250
character set with a primary key column in a
LIKE clause caused a server crash for
patterns having letters in the range 128..255.
(Bug#19741)
For a MyISAM table with a
FULLTEXT index, compression with
myisampack or a check with
myisamchk after compression resulted in table
corruption.
(Bug#19702)
The build process incorrectly tried to overwrite
sql/lex_hash.h. This caused the build to
fail when using a shadow link tree pointing to original sources
that were owned by another account.
(Bug#18888)
Setting myisam_repair_threads caused any
repair operation on a MyISAM table to fail to
update the cardinality of indexes, instead making them always
equal to 1.
(Bug#18874)
DELETE IGNORE could hang for foreign key
parent deletes.
(Bug#18819)
Using > ALL with subqueries that return no
rows yielded incorrect results under certain circumstances due
to incorrect application of
MIN()/MAX()
optimization.
(Bug#18503)
Multiple invocations of the
REVERSE() function could return
different results.
(Bug#18243)
For table-format output, mysql did not always calculate columns widths correctly for columns containing multi-byte characters in the column name or contents. (Bug#17939)
Views could not be updated within a stored function or trigger. (Bug#17591)
Using the extended syntax for
TRIM() — that is,
TRIM(... FROM ...) — in a
SELECT statement defining a view caused an
invalid syntax error when selecting from the view.
(Bug#17526)
Use of the join cache in favor of an index for ORDER
BY operations could cause incorrect result sorting.
(Bug#17212)
Queries containing a subquery that used aggregate functions could return incorrect results. (Bug#16792)
Conversion of TIMESTAMP values between UTC
and the local time zone resulted in some values having the year
2069 rather than 1969.
(Bug#16327)
Using ANY with “non-table”
subqueries such as SELECT 1 yielded incorrect
results under certain circumstances due to incorrect application
of
MIN()/MAX()
optimization.
(Bug#16302)
Parallel builds occasionally failed on Solaris. (Bug#16282)
A subquery in the WHERE clause of the outer
query and using IN and GROUP
BY returned an incorrect result.
(Bug#16255)
The --collation-server server option was being
ignored. With the fix for this problem, if you choose a
non-default character set with
--character-set-server, you should also use
--collation-server to specify the collation.
(Bug#15276)
When using tables containing VARCHAR columns
created under MySQL 4.1 with a 5.0 or later server, for some
queries the metadata sent to the client could have an empty
column name.
(Bug#14897)
The use of WHERE in col_name IS
NULLSELECT statements reset the
value of LAST_INSERT_ID() to
zero.
(Bug#14553)
A literal string in a GROUP BY clause could
be interpreted as a column name.
(Bug#14019)
libmysqld produced some warnings to
stderr which could not be silenced. These
warnings now are suppressed.
(Bug#13717)
The source distribution failed to compile when configured with
the --without-geometry option.
(Bug#12991)
On Mac OS X, zero-byte read() or
write() calls to an SMB-mounted filesystem
could return a non-standard return value, leading to data
corruption. Now such calls are avoided.
(Bug#12620)
Entries in the slow query log could have an incorrect
Rows_examined value.
(Bug#12240)
The server returns a more informative error message when it
attempts to open a MERGE table that has been
defined to use non-MyISAM tables.
(Bug#10974)
DELETE with WHERE
condition on a BTREE-indexed column for a
MEMORY table deleted only the first matched
row.
(Bug#9719)
A server or network failure with an open client connection would cause the client to hang even though the server was no longer available.
As a result of this change, the
MYSQL_OPT_READ_TIMEOUT and
MYSQL_OPT_WRITE_TIMEOUT options for
mysql_options() now apply to
TCP/IP connections on all platforms. Previously, they applied
only to Windows.
(Bug#9678)
The optimizer could produce an incorrect result after
AND with collations such as
latin1_german2_ci,
utf8_czech_ci, and
utf8_lithianian_ci.
(Bug#9509)
FROM_UNIXTIME() did not accept
arguments up to POWER(2,31)-1,
which it had previously.
(Bug#9191)
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)
OPTIMIZE TABLE with
myisam_repair_threads > 1 could result in
MyISAM table corruption.
(Bug#8283)
For cross-database multiple-table UPDATE
statements, a user with all privileges for the default database
could update tables in another database for which the user did
not have UPDATE privileges.
(Bug#7391)
The --with-collation option was not honored for
client connections.
(Bug#7192)
Incorporated some portability fixes into the definition of
__attribute__ in
my_global.h.
(Bug#2717)
A patch fixing the omission of leading zeros in dates in MySQL 4.1.21 was reverted.
The patch for the following bugs was reverted: Bug#16377.

User Comments
Add your own comment.