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.
Functionality added or changed:
Security Fix: A UDF library-loading vulnerability could result in a buffer overflow and code execution. (CVE-2005-2558)
Incompatible Change:
Previously, conversion of
DATETIME
values to numeric form
by adding zero produced a result in
YYYYMMDDHHMMSS
format. The result of
DATETIME+0
is now in
YYYYMMDDHHMMSS.000000
format.
(Bug#12268)
Replication:
Some data definition statements (CREATE
TABLE
where the table was not a temporary table,
TRUNCATE TABLE
,
DROP DATABASE
, and
CREATE DATABASE
) were not being
written to the binary log after a
ROLLBACK
. This
also caused problems with replication.
As a result of this fix, the folowing statements now cause an implicit commit:
(Bug#6883)
System variables are now treated as having
SYSVAR
(system constant) coercibility. For
example, @@version
is now treated like
VERSION()
and
@@character_set_client
is now treated like
CHARSET( USER() )
. See
Section 9.1.7.5, “Special Cases Where Collation Determination Is Tricky”.
(Bug#10904)
MEMORY
tables now support indexes of up to
500 bytes. See Section 13.4, “The MEMORY
(HEAP
) Storage Engine”.
(Bug#10566)
The table
, type
, and
rows
columns of
EXPLAIN
output can now be
NULL
. This is required for using
EXPLAIN
on
SELECT
queries that use no
tables, such as EXPLAIN SELECT 1
).
(Bug#9899)
You can again refer to other tables in the ON DUPLICATE
KEY UPDATE
part of an
INSERT ...
SELECT
statement as long as there is no GROUP
BY
in the SELECT
part.
One side effect of this is that you may have to qualify
nonunique column names in the values part of ON
DUPLICATE KEY UPDATE
.
(Bug#9728, Bug#8147)
Added the
--log-slow-admin-statements
server option to request logging of slow administrative
statements such as OPTIMIZE
TABLE
, ANALYZE TABLE
,
and ALTER TABLE
to the slow query
log. These statements were logged in MySQL 4.0, but not in 4.1.
(Bug#9141)
Expanded on information provided in general log and slow query log for prepared statements. (Bug#8367, Bug#9334)
Added mysql_set_character_set()
C API function for setting the default character set of the
current connection. This allows clients to affect the character
set used by
mysql_real_escape_string()
.
(Bug#8317)
Added the --add-drop-database
option to mysqldump
.
(Bug#3716)
SHOW BINARY LOGS
now displays a
File_size
column that indicates the size of
each file.
InnoDB
: When creating or extending an
InnoDB
data file, allocate at most one
megabyte at a time for initializing the file. Previously,
InnoDB
used to allocate and initialize 1 or 8
megabytes of memory, even if a few 16-kilobyte pages were to be
written. This fix improves the performance of
CREATE TABLE
in
innodb_file_per_table
mode.
Bugs fixed:
Security Fix:
A vulnerability in zlib
could result in a
buffer overflow and arbitrary code execution. Shortly after
MySQL 4.1.13 was released, a second potential
zlib
security flaw was discovered and fixed.
A patch for this flaw was applied to the 4.1.13 sources, and the
result published as MySQL 4.1.13a. The affected binaries were
rebuilt.
(Bug#11844, CVE-2005-2096, CVE-2005-1849)
Security Fix:
On Windows systems, a user with any of the following privileges
on *.*
could crash mysqld
by issuing a USE LPT1;
or USE
PRN;
command:
In addition, any of the commands USE NUL;
,
USE CON;
, USE COM1;
, or
USE AUX;
would report success even though the
database was not in fact changed.
(Bug#9148)
MySQL Cluster:
NDB
failed to build with
gcc 4.0.
(Bug#11377)
MySQL Cluster: When trying to open a table that could not be discovered or unpacked, the cluster returned error codes which the MySQL server falsely interpreted as operating system errors. (Bug#10365)
Replication:
LOAD DATA ... REPLACE INTO ...
on a
replication slave failed for an InnoDB
table
having a unique index in addition to the primary key.
(Bug#11401)
Replication: An invalid comaprison caused warnings for packet length in replication on 64-bit compilers. (Bug#11064)
Replication:
Queries of the form UPDATE ... (SELECT ... ) SET
...
run on a replication master would crash all the
slaves.
(Bug#10442, CVE-2004-4380)
Replication:
An UPDATE
query containing a
subquery caused replication to fail.
(Bug#9361)
When applying the
group_concat_max_len
limit,
GROUP_CONCAT()
could truncate
multi-byte characters in the middle.
(Bug#23451)
Selecting the result of an aggregate function for an
ENUM
or SET
column within a subquery could result in a server crash.
(Bug#11821)
Corrected an optimization failure where a query returned an incorrect result for use of a newly populated table until the table was flushed. (Bug#11700)
The --master-data
option for
mysqldump resulted in no error if the binary
log was not enabled. Now an error occurs unless the
--force
option is given.
(Bug#11678)
Invoking the DES_ENCRYPT()
function could cause a server crash if the server was started
without the --des-key-file
option.
(Bug#11643)
mysqldump now exports HASH
index definitions using USING
rather than
TYPE
when the index name is optional. This
corrects a problem when reloading the output for
PRIMARY KEY
definition, because
TYPE
must be preceded an index name, which is
not given for a PRIMARY KEY
.
(Bug#11635)
IP addresses not shown in ndb_mgm SHOW
command on second ndb_mgmd (or on ndb_mgmd restart).
(Bug#11596)
Modifying a CHAR
column with the
utf8
character set to a shorter length did
not properly truncate values due to not computing their length
in utf8
character units.
(Bug#11591)
MySQL would not compile correctly on QNX due to missing
rint()
function.
(Bug#11544)
A ROLLUP
query could return a wrong result
set when its GROUP BY
clause contained
references to the same column.
(Bug#11543)
Queries with subqueries in the FROM
clause
were not being added to the query cache.
(Bug#11522)
Using CONCAT_WS()
on a column set
NOT NULL
caused incorrect results when used
in a LEFT JOIN
.
(Bug#11469)
Prepared statement with subqueries returned corrupt data. (Bug#11458)
Temporary tables were created in the data directory instead of
tmpdir
.
(Bug#11440)
Errors could occur when performing GROUP BY
on calculated values of a single row table. These could
sometimes cause the server to crash on Windows.
(Bug#11414)
Server crashed when using GROUP BY
on the
result of a DIV
operation on a
DATETIME
value.
(Bug#11385)
Manually inserting a row with host=''
into
mysql.tables_priv
and performing a
FLUSH
PRIVILEGES
would cause the server to crash.
(Bug#11330)
Possible NULL
values in
BLOB
columns could crash the
server when a BLOB
was used in a
GROUP BY
query.
(Bug#11295)
Optimizer performed range check when comparing unsigned integers to negative constants, could cause errors. (Bug#11185)
Some internal functions did not take into account that, for
multi-byte character sets, CHAR
and VARCHAR
columns could exceed
255 bytes, which could cause the server to crash.
(Bug#11167)
Testing for crypt()
support caused
compilation problems when using OpenSSL/yaSSL on HP-UX and Mac
OS X.
(Bug#11150, Bug#10675)
The NULLIF()
function could
produce incorrect results if the first argument was
NULL
.
(Bug#11142)
mysqld_safe
would sometimes fail to remove
the pid file for the old mysql
process after
a crash. As a result, the server would fail to start due to a
false A mysqld process already exists...
error.
(Bug#11122)
SHOW WARNINGS
with a
LIMIT 0
clause returned all messages rather
than an empty result set.
(Bug#11095)
The server could crash due to an attempt to allocate too much
memory when GROUP BY
and
blob_col
COUNT(DISTINCT)
were used.
(Bug#11088)
A CREATE TABLE
statement would crash the server when no
database was selected.
(Bug#11028)db_name
.tbl_name
LIKE ...
The mysql_config
script did not handle
symbolic linking properly.
(Bug#10986)
The value returned by the FIELD()
function was incorrect when its parameter list contained one or
more instances of NULL
.
(Bug#10944)
The host name cache was not working. (Bug#10931)
INSERT ... SELECT ... ON DUPLICATE KEY UPDATE
produced inaccurate results.
(Bug#10886)
A three byte buffer overflow in the client functions caused improper exiting of the client when reading a command from the user. (Bug#10841)
The mysql client would output a prompt twice following input of very long strings, because it incorrectly assumed that a call to the _cgets() function would clear the input buffer. (Bug#10840)
Setting @@sql_mode = NULL
caused an erroneous
error message.
(Bug#10732)
Inserting a DOUBLE
value into a
utf8
string column crashed the server on
Windows.
(Bug#10714)
On Mac OS X, libmysqlclient_r.a
now is built
with --fno-common
to make it possible to link a
shared two-level namespace library against
libmysqlclient_r.a
.
(Bug#10638)
InnoDB
wrongly reported in the
.err
log that MySQL wass trying to drop a
nonexistent table, if no more room remained in the tablespace.
(Bug#10607)
Executing LOAD INDEX
INTO CACHE
for a table while other threads where
selecting from the table caused a deadlock.
(Bug#10602)
DES_ENCRYPT()
and
DES_DECRYPT()
require SSL support
to be enabled, but were not checking for it. Checking for
incorrect arguments or resource exhaustion was also improved for
these functions.
(Bug#10589)
The LAST_DAY()
failed to return
NULL
when supplied with an invalid argument.
See Section 11.6, “Date and Time Functions”.
(Bug#10568)
INSERT ...
ON DUPLICATE KEY UPDATE
with MERGE
tables, which do not have unique indexes, caused the server to
crash.
(Bug#10400)
A problem with the my_global.h
file caused
compilation of MySQL to fail on single-processor Linux systems
running 2.6 kernels.
(Bug#10364)
SUBSTRING()
did not work properly
for input in the ucs2
character set.
(Bug#10344)
DROP DATABASE
failed to check for
all referencing InnoDB
tables from other
databases before dropping any tables.
(Bug#10335)
mysqldump crashed using the
--complete-insert
option while
dumping tables with a large number of long column names.
(Bug#10286)
When used within a subquery,
SUBSTRING()
returned an empty
string.
(Bug#10269)
Queries against a table using a compound index based on the length of a UTF-8 text column produced incorrect results. For example, given a table with an index defined as shown:
CREATE TABLE t ( id INT NOT NULL, city VARCHAR(20) NOT NULL, KEY (city(7),id) ) TYPE=MYISAM CHARACTER SET=utf8;
Assuming that suitable data has been inserted into the table,
then a query such as SELECT * FROM t WHERE city =
'Durban';
would fail.
(Bug#10253)
Using #pragma interface
or #pragma
implementation
in source files caused portability
issues for cygwin
.
(Bug#10241)
A simultaneous CREATE TABLE ... SELECT FROM
and table
ALTER
TABLE
on the same
table caused the server to crash.
(Bug#10224)table
Under certain rare circumstances, inserting into the
mysql.host
table could cause the server to
crash.
(Bug#10181)
For MEMORY
tables, it was possible for
updates to be performed using outdated key statistics when the
updates involved only very small changes in a very few rows.
This resulted in the random failures of queries such as
UPDATE t SET col = col + 1 WHERE col_key = 2;
where the same query with no WHERE
clause
would succeed.
(Bug#10178)
CASE
operator returns incorrect
result when its arguments are not constants and its return value
is put into a regular or temporary table (temporary == created
by SQL engine for
UNION
/nonindexed GROUP
BY
and such operations).
(Bug#10151)
When used in joins, SUBSTRING()
failed to truncate to zero those string values that could not be
converted to numbers.
(Bug#10124)
For a UNION
that involved long
string values, values were not being converted correctly to
TEXT
values.
(Bug#10025)
An overly strict debugging assertion caused debug server builds
to fail for some
, where
col_name
=
const_expr
const_expr
was a constant expression
such as a subquery.
(Bug#10020)
The handling by the HEX()
function of numbers larger than 264
was improved.
(Bug#9854)
A problem with the cp1250_czech_cs
collation
caused some LIKE
comparisons to fail.
(Bug#9759)
On Windows, with
lower_case_table_names
set to
2, using ALTER TABLE
to alter a
MEMORY
or InnoDB
table
that had a mixed-case name also improperly changed the name to
lowercase.
(Bug#9660)
mysqldump --xml
did not format
NULL
column values correctly.
(Bug#9657)
ALTER TABLE ... ENABLE INDEXES
treated
NULL
values as equal when collecting index
statistics for MyISAM
tables, resulting in
different statistics from those generated by
ANALYZE TABLE
and causing the
optimizer to make poor index choices later. The same problem
occurred for bulk insert statistics collection. Now
NULL
values are treated as unequal, just as
for ANALYZE TABLE
.
(Bug#9622)
The --no-data
option for
mysqldump was being ignored if table names
were given after the database name.
(Bug#9558)
MySQL sometimes reported erroneously that certain character values had crashed a table when trying to convert other character sets to UTF-8. (Bug#9557)
CREATE TABLE t AS SELECT UUID()
created a
VARCHAR(12)
column, which is too small to
hold the 36-character result from
UUID()
.
(Bug#9535)
Table names were not handled correctly when
lower_case_table_names = 2
if
the table name lettercase differed in the
FROM
and WHERE
clauses.
(Bug#9500)
SHOW WARNINGS
did not properly
display warnings generated by executing a cached query.
(Bug#9414)
Incorrect results when searching using
IN()
where search items included
NULL
and 0
.
(Bug#9393)
mysqldump could crash for illegal or nonexistent table names. (Bug#9358)
SELECT DISTINCT ... GROUP BY
returned multiple
rows (it should return a single row).
(Bug#8614)constant
The server timed out SSL connections too quickly on Windows. (Bug#8572)
For a MERGE
table with
MyISAM
tables in other, symlinked, databases,
SHOW CREATE TABLE
reported the
MyISAM
tables using the name of the symlinked
directory rather than the database name.
(Bug#8183)
OPTIMIZE
run on an InnoDB
table did not return a Table is full
error if there was insufficient room in the tablespace.
(Bug#8135)
The mysqlhotcopy
script was not parsing the
output of SHOW SLAVE STATUS
correctly when called with the --record_log_pos
option.
(Bug#7967)
An incorrect result was obtained for columns that included an
aggregate function as part of an expression, and when
WITH ROLLUP
was used with GROUP
BY
.
(Bug#7914)
Queries with ROLLUP
returned wrong results
for expressions containingGROUP BY
columns.
(Bug#7894)
A Boolean full-text search where a query contained more query terms than one-third of the query length caused the server to hang or crash. (Bug#7858)
GROUP_CONCAT()
with
DISTINCT
and WITH ROLLUP
ignored DISTINCT
for some rows.
(Bug#7405)
SHOW FIELDS
truncated the
TYPE
column to 40 characters.
This fix was reverted in MySQL 4.1.15 because it broke existing applications.
(Bug#7142)
See also Bug#12817.
Added a missing mutex when rotating the relay logs. Also, the server now logs an error message if the size of a relay log cannot be read. (Bug#6987)
Locking for CREATE
TABLE ... SELECT
for InnoDB
tables
was too weak. It allowed INSERT
statements issued for the created table while the
CREATE TABLE
statement was still
running to appear in the binary log before the
CREATE TABLE
statement.
(Bug#6678)
The incorrect sequence of statements HANDLER
without a
preceding tbl_name
READ
index_name
NEXTHANDLER
for an
tbl_name
READ index_name
=
(value_list
)InnoDB
table resulted in a server crash
rather than an error.
(Bug#5373)
User Comments
Add your own comment.