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:
MySQL did not properly do stack dumps on
x86_64
and i386/NPTL
systems. (Note that the initial fix for this problem was
discovered not to be correct. Further work on the problem was
undertaken only for MySQL 5.1 and up. See Bug#31891.)
(Bug#21250)
The mysqld man page 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.5.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 nondescriptive 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.4, “MySQL Cluster 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 nonprimary 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 nondescriptive 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 nongroup 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
http://dev.mysql.com/downloads/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 “nontable”
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, if you choose a
nondefault 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 file system
could return a nonstandard 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 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.