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).
Note: The fix for interpretation
of MERGE table .MRG files
(Bug#10687) was made for Windows builds after MySQL 4.1.12 was
released and is present in MySQL 4.1.12a.
Functionality added or changed:
Incompatible change: The
behavior of LOAD DATA INFILE and
SELECT ... INTO OUTFILE has changed when
the FIELDS TERMINATED BY and
FIELDS ENCLOSED BY values both are empty.
Formerly, a column was read or written the display width of
the column. For example, INT(4) was read or
written using a field with a width of 4. Now columns are read
and written using a field width wide enough to hold all values
in the field. However, data files written before this change
was made might not be reloaded correctly with LOAD
DATA INFILE for MySQL 4.1.12 and up. This change
also affects data files read by mysqlimport
and written by mysqldump --tab, which use
LOAD DATA INFILE and SELECT ...
INTO OUTFILE. For more information, see
Section 13.2.5, “LOAD DATA INFILE Syntax”. (Bug#12564)
Added --debug option to
my_print_defaults.
When the server cannot read a table because it cannot read the
.frm file, print a message that the table
was created with a different version of MySQL. (This can
happen if you create tables that use new features and then
downgrade to an older version of MySQL.) (Bug#10435)
New /*> prompt for
mysql. This prompt indicates that a
/* ... */ comment was begun on an earlier
line and the closing */ sequence has not
yet been seen. (Bug#9186)
Added cp1250_croatian_ci collation. (Bug#6505)
Updated version of libedit to 2.9. (Bug#2596)
InnoDB: When the maximum length of
SHOW INNODB STATUS output would be
exceeded, truncate the beginning of the list of active
transactions, instead of truncating the end of the output.
(Bug#5436)
InnoDB: When
FOREIGN_KEY_CHECKS=0, ALTER
TABLE and RENAME TABLE will
ignore any type incompatibilities between referencing and
referenced columns. Thus, it will be possible to convert the
character sets of columns that participate in a foreign key.
Be sure to convert all tables before modifying any data! (Bug#9802)
InnoDB: Setting the initial
AUTO_INCREMENT value for an
InnoDB table using CREATE TABLE
... AUTO_INCREMENT =
now works, and nALTER TABLE ... AUTO_INCREMENT =
resets the current
value. (Bug#7061)
n
InnoDB: If
innodb_locks_unsafe_for_binlog option set
and isolation level of the transaction is not set to
serializable then InnoDB uses a consistent
read for select in clauses like INSERT INTO ...
SELECT and UPDATE ... (SELECT)
that do not specify FOR UPDATE or
IN SHARE MODE. Thus no locks are set to
rows read from selected table.
Previously in MySQL 4.1, an Illegal mix of
collations error occurred when mixing strings from
same character set when one had a non-binary collation and the
other a binary collation. Now the binary collation takes
precedence, so that both strings are treated as having the
binary collation. This restores compatibility with MySQL 4.0
behavior.
Added the cp932 Japanese character set.
Bugs fixed:
Security fix: If
mysqld was started with
--user=,
it would run using the privileges of the account it was
invoked from, even if that was non_existent_userroot. (Bug#9833)
Fixed handling of floats and doubles when using prepared statement API in the embedded server. (Bug#10443)
An error in the implementation of the
MyISAM compression algorithm caused
myisampack to fail with very large sets of
data (total size of all the records in a single column needed
to be >= 3 GB in order to trigger this issue). (Bug#8321)
When SELECT
was the final
constantSELECT in a UNION, a
trailing LIMIT ... worked, but a trailing
ORDER BY ... or ORDER BY ... LIMIT
... did not. (Bug#10032)
MERGE tables could fail on Windows due to
incorrect interpretation of pathname separator characters for
filenames in the .MRG file. (Bug#10687)
CHAR and VARCHAR columns
that used the sjis character set were not
being saved correctly, causing the following columns to be
corrupted. (Bug#10493)
For a user-defined function invoked from within a prepared
statement, the UDF's initialization routine was invoked for
each execution of the statement, but the deinitialization
routine was not. (It was invoked only when the statement was
closed.) For UDFs that have an expensive deinit function (such
as myperl), this bugfix will have negative
performance consequences. (Bug#9913)
Fix CREATE TABLE ... LIKE to work when
lower_case_table_names is set on a
case-sensitive filesystem and the source table name is not
given in lowercase. (Bug#9761)
my_print_defaults was ignoring the
--defaults-extra-file option or crashing when
the option was given. (Bug#9136, Bug#9851)
For MERGE tables, avoid writing absolute
pathnames in the .MRG file for the names
of the constituent MyISAM tables so that if
the data directory is moved, MERGE tables
will not break. For mysqld, write just the
MyISAM table name if it is in the same
database as the MERGE table, and a path
relative to the data directory otherwise. For the embedded
servers, absolute pathnames may still be used. (Bug#5964)
Corrected the error message for exceeding the
MAX_CONNECTIONS_PER_HOUR limit to say
max_connections_per_hour instead of
max_connections. (Bug#9947)
Fixed incorrect memory block allocation for the query cache in the embedded server. (Bug#9549)
Fixed a configure problem in checking for capability of performing atomic operations. (Bug#7970)
net_read_timeout and
net_write_timeout were not being respected
on Windows. (Bug#9721)
An error occurred if you specified a default value of
TRUE or FALSE for a
BOOL column. (Bug#9666)
Corrected some failures of prepared statements for SQL
(PREPARE plus EXECUTE)
to return all rows for some SELECT
statements. (Bug#9096, Bug#9777)
Remove extra slashes in --tmpdir value (for
example, convert /var//tmp to
/var/tmp, because they caused various
errors. (Bug#8497)
Fixed a sort order problem with the
latin2_croatian_ci collation. All tables
that have indexes that use this collation will be treated as
crashed. After upgrading, for each such table, you must use
CHECK TABLE and possibly repair the table.
(Bug#6505)
mysqld was not checking whether the PID file was successfully created. (Bug#5843)
With DISTINCT
CONCAT( returned
incorrect results when the arguments to
col,...)CONCAT() were columns with an integer data
type declared with a display width narrower than the values in
the column. (For example, if an INT(1)
column contain 1111.) (Bug#4082)
Fixed configure to properly recognize whether NPTL is available on Linux. (Bug#2173)
Fixed a portability problem in compiling
mysql.cc with VC++ on
Windows. (Bug#10245)
CAST( didn't work for big integers above the
signed range. Now this function and
string_argument AS
UNSIGNED)CAST( also produces warnings for wrong string
arguments. (Bug#7036)
string_argument AS
SIGNED)
Fixed compile problem with MinGW. Thanks to Nils Durner for patch! (Bug#8872)
MySQL no longer automatically blocks IP numbers for which
gethostbyname_r() fails when the reason is
that the DNS server is down. Thanks to Jeremy Cole for patch.
(Bug#8467)
Fixed a bug in the key cache that caused a core dump. (Bug#10167)
The --delimiter option for the
nds_select program was non-functional. (Bug#10287)
MAX() for an INT
UNSIGNED (unsigned 4-byte integer) column could
return negative values if the column contained values larger
than 231. (Bug#9298)
Fixed a deadlock resulting from use of FLUSH TABLES
WITH READ LOCK while an INSERT
DELAYED statement is in progress. (Bug#7823)
Multiple-table updates could produce spurious data-truncation warnings if they used a join across columns that are indexed using a column prefix. (Bug#9103)
Use of a subquery that used WITH ROLLUP in
the FROM clause of the main query sometimes
resulted in a Column cannot be null error.
(Bug#9681)
RENAME TABLE for an
ARCHIVE table failed if the
.arn file was not present. (Bug#9911)
Fixed an optimizer problem where extraneous comparisons
between NULL values in indexed columns were
being done for operators such as = that are
never true for NULL. (Bug#8877)
SELECT
ROUND( produced a
different result from expr)CREATE TABLE ... SELECT
ROUND(. (Bug#9837)
expr)
Fixed some awk script portability problems in cmd-line-utils/libedit/makelist.sh. (Bug#9954)
Changed metadata for result of SHOW KEYS:
Data type for Sub_part column now is
SMALLINT rather than
TINYINT because key part length can be
longer than 255. (Bug#9439)
Fixed some problems with myisampack on 64-bit systems that resulted in segmentation violations. (Bug#9487)
Fixed an optimizer bug in computing the union of two ranges
for the OR operator. (Bug#9348)
Fixed an index corruption problem for
MyISAM tables that resulted from the 4.1
behavior of padding values with blanks for comparison: Dumping
a table with mysqldump, reloading it, and
then re-running the binary log against it crashed the index
and necessitated a repair. (Bug#9188)
Fixed a segmentation fault in mysqlcheck
that occurred when the last table checked in
--auto-repair mode returned an error (such as
the table being a MERGE table). (Bug#9492)
Fixed the client/server protocol for prepared statements so that reconnection works properly when the connection is killed while reconnect is enabled. (Bug#8866)
INSERT ... ON DUPLICATE KEY UPDATE
incorrectly updated a TIMESTAMP column to
the current timestamp, even if the update list included
for that column
to prevent the update. (Bug#7806)
col_name =
col_name
Starting mysqld with the
--skip-innodb and
--default-storage-engine=innodb (or
--default-table-type=innodb caused a server
crash. (Bug#9815)
Queries containing CURRENT_USER()
incorrectly were registered in the query cache. (Bug#9796)
A server installed as a Windows service and started with
--shared-memory could not be stopped. (Bug#9665)
mysqldump dumped core when invoked with
--tmp and
--single-transaction options and a
non-existent table name. (Bug#9175)
Additional fix for mysql_server_init() and
mysql_server_end() C API functions so that
stopping and restarting the embedded server will not cause a
crash. (Bug#7344)
mysql.server no longer uses non-portable alias command or LSB functions. (Bug#9852)
Fixed a readline-related crash in
mysql when the user pressed Control-R. (Bug#9568)
TIMEDIFF() with a negative time first
argument and positive time second argument produced incorrect
results. (Bug#8068)
Fixed a bug that caused concurrent inserts to be allowed into
the tables in the SELECT ... UNION ... part
of INSERT ... SELECT ... UNION .... This
could result in the incorrect order of queries in the binary
log. (Bug#9922)
The warning message from GROUP_CONCAT() did
not always indicate the correct number of lines. (Bug#8681)
InnoDB: ENUM and SET
columns were treated incorrectly as character strings. This
bug did not manifest itself with latin1
collations, but it caused malfunction with
utf8. Old tables will continue to work. In
new tables, ENUM and SET
will be internally stored as unsigned integers. (Bug#9526)
InnoDB: Avoid test suite failures caused by a locking conflict between two server instances at server shutdown/startup. This conflict on advisory locks appears to be the result of a bug in the operating system; these locks should be released when the files are closed, but somehow that does not always happen immediately in Linux. (Bug#9381)
InnoDB: Prevent ALTER
TABLE from changing the storage engine if there are
foreign key constraints on the table. (Bug#5574, Bug#5670)
InnoDB: Fixed a deadlock without any
locking, simple select and update. (Bug#7975)
InnoDB now takes an exclusive lock when
INSERT ON DUPLICATE KEY UPDATE is checking
duplicate keys.
InnoDB: Fix a problem in crash recovery of
.ibd files on Windows if the user used
lower_case_table_names=0 or
2; the directory scan in crash recovery
forgot to put all paths to lower case, so that the tablespace
name would be consistent with the internal data dictionary of
InnoDB.
InnoDB: Add fault tolerance in the scan of
.ibd files at a crash recovery; formerly
a single failure of readdir_get_next caused
the rest of the directory to be skipped.
InnoDB: Fix assertion failures of type
ut_a(cursor->old_stored ==
BTR_PCUR_OLD_STORED) and
prebuilt->template_type == 0. This bug
was introduced in 4.1.10 and 4.0.24. (Bug#9670)
InnoDB: Fix a performance bug: At the
shutdown, write the latest lsn only to the first pages of the
ibdata files of the system tablespace,
NOT to the .ibd files; writing to tens of
thousands .ibd files can take minutes.
Fix for auto-increment not working with
INSERT..SELECT and NDB storage engine. (Bug#9675)

User Comments
Add your own comment.