End of Product LifecycleActive 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.
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 12.2.5, “LOAD DATA INFILE
Syntax”. (Bug #12564)
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 a --debug
option to my_print_defaults.
Updated version of libedit to 2.9. (Bug
#2596)
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: 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)
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)
Added the cp932 Japanese character set.
Previously in MySQL 4.1, an Illegal mix of
collations error occurred when mixing strings from
same character set when one had a nonbinary 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.
InnoDB: If
innodb_locks_unsafe_for_binlog
is enabled and the isolation level of the transaction is not
set to SERIALIZABLE,
InnoDB uses a consistent read for select in
clauses such as
INSERT INTO ...
SELECT and UPDATE ... (SELECT)
that do not specify FOR UPDATE or
LOCK IN SHARE MODE. Thus, no locks are set
to rows read from selected table.
Bugs Fixed
Security Fix:
mysql_install_db created the
mysql_install_db.X file with a
predictable file name and insecure permissions, which
permitted local users to execute arbitrary SQL statements by
modifying the file's contents. (CVE-2005-1636)
Security Fix: Starting
mysqld with
--user=
caused it to run using the privileges of the account from
which it was invoked, including the non_existent_userroot
account. (Bug #9833)
Performance:
InnoDB: At shutdown, the latest lsn is now
written only to the first pages of the
ibdata files of the system tablespace,
and not to the .ibd files, saving up to
several minutes in some cases.
MySQL Cluster:
AUTO_INCREMENT did not work with
INSERT..SELECT on
NDB tables. (Bug #9675)
Queries containing
CURRENT_USER() incorrectly were
registered in the query cache. (Bug #9796)
Concurrent inserts were permitted into the tables in the
SELECT part of INSERT
... SELECT ... UNION .... This could result in the
incorrect order of queries in the binary log. (Bug #9922)
myisampack run on 64-bit systems resulted in segmentation violations. (Bug #9487)
InnoDB: Assertion failures of types
ut_a(cursor->old_stored ==
BTR_PCUR_OLD_STORED) and
prebuilt->template_type == 0 could occur
when performing multi-table updates. This bug was introduced
in 4.1.10 and 4.0.24. (Bug #9670)
mysqld was not checking whether the PID file was successfully created. (Bug #5843)
awk script portability problems were found
in
cmd-line-utils/libedit/makelist.sh
. (Bug #9954)
SELECT
ROUND( produced a
different result from
expr)CREATE
TABLE ... SELECT
ROUND(. (Bug #9837)
expr)
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
The --delimiter option for the
nds_select program was nonfunctional. (Bug
#10287)
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 at least 3 GB to trigger this issue). (Bug #8321)
The error message for exceeding
MAX_CONNECTIONS_PER_HOUR mistakenly
referred to max_connections. (Bug #9947)
A problem with readlinecaused the
mysql client to crash when the user pressed
Control+R.. (Bug #9568)
The warning message from
GROUP_CONCAT() did not always
indicate the correct number of lines. (Bug #8681)
Additional fix for
mysql_server_init() and
mysql_server_end() C API
functions so that stopping and restarting the embedded server
would not cause a crash. (Bug #7344)
The latin2_croatian_ci collation was not
sorted correctly. After upgrading to MySQL 4.1.12, all tables
that have indexes using this collation are treated as crashed;
for each such table, you must use CHECK
TABLE and possibly repair the table.
Support for the cp1250_croatian_ci
collation was also added as part of the fix for this bug. (Bug
#6505)
A deadlock resulted from using
FLUSH TABLES WITH READ
LOCK while an INSERT
DELAYED statement was in progress. (Bug #7823)
InnoDB: Prevent ALTER
TABLE from changing the storage engine if there are
foreign key constraints on the table. (Bug #5574, Bug #5670)
The optimizer did not compute the union of two ranges for the
OR operator correctly. (Bug #9348)
ENUM and
SET columns in
InnoDB tables 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 stored internally
as unsigned integers. (Bug #9526)
MySQL no longer automatically blocks IP addresses for which
gethostbyname_r() fails when the reason is
that the DNS server is down. Thanks to Jeremy Cole for patch.
(Bug #8467)
Setting the initial AUTO_INCREMENT value
for an InnoDB table using
CREATE TABLE ...
AUTO_INCREMENT = did
not work, and
nALTER TABLE ...
AUTO_INCREMENT = did
not reset the current value. (Bug #7061)
n
MAX() for an INT
UNSIGNED (unsigned 4-byte integer) column could
return negative values if the column contained values larger
than 231. (Bug #9298)
Floats and doubles were not handled correctly when using the prepared statement API in the embedded server. (Bug #10443)
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 fix has negative
performance consequences. (Bug #9913)
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)
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)
Memory block allocation did not function correctly for the query cache in the embedded server. (Bug #9549)
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)
A deadlock could occur on an update followed by a
SELECT on an
InnoDB table without any explicit locks
being taken. InnoDB now takes an exclusive
lock when INSERT ON DUPLICATE KEY UPDATE is
checking duplicate keys. (Bug #7975)
mysql.cc did not compile correctly using
VC++ on Windows. (Bug #10245)
CREATE TABLE ...
LIKE did not work correctly when
lower_case_table_names was
set on a case-sensitive file system and the source table name
was not given in lowercase. (Bug #9761)
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)
In the client/server protocol for prepared statements, reconnection failed when the connection was killed with reconnection enabled. (Bug #8866)
my_print_defaults was ignoring the
--defaults-extra-file option
or crashing when the option was given. (Bug #9851, Bug #9136)
mysql.server no longer uses nonportable alias command or LSB functions. (Bug #9852)
InnoDB: Crash recovery of
.ibd files on Windows did not work
correctly if lower_case_table_names = 0or
lower_case_table_names = 2 had been used;
the directory scan used in crash recovery failed to force all
paths to lowercase, so that the tablespace name was consistent
with the InnoDB internal data dictionary.
mysqldump dumped core when invoked with
--tmp and
--single-transaction options
and a nonexistent table name. (Bug #9175)
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.
An InnoDB test suite failure was caused by
a locking conflict between two server instances at server
shutdown or 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)
When SELECT was the final constant
SELECT
in a UNION, a trailing
LIMIT ... worked, but a trailing
ORDER BY ... or ORDER BY ... LIMIT
... did not. (Bug #10032)
CHAR and
VARCHAR columns that used the
sjis character set were not being saved
correctly, causing the following columns to be corrupted. (Bug
#10493)
A server installed as a Windows service and started with
--shared-memory could not be
stopped. (Bug #9665)
Extraneous comparisons between NULL values
in indexed columns were performed by the optimzer for
operators such as = that are never true for
NULL. (Bug #8877)
In some cases, concurrent
DELETE and
INSERT...SELECT queries could crash the
MySQL server. The issue was a problem in the key cache. (Bug
#10167)
For MERGE tables, avoid writing absolute
path names 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 path names may still be used. (Bug #5964)
Indexes on MyISAM tables could sometimes be
corrupted; this was the result of padding values with spaces
for comparison: Dumping a table with
mysqldump, reloading it, and then
re-running the binary log against it crashed the index and
required a repair. (Bug #9188)
With DISTINCT,
CONCAT(
returned incorrect results when the arguments to
col_name,...)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 contained
1111.) (Bug #4082)
RENAME TABLE for an
ARCHIVE table failed if the
.arn file was not present. (Bug #9911)
An error occurred if you specified a default value of
TRUE or FALSE for a
BOOL column. (Bug #9666)
Starting mysqld with the
--skip-innodb
and
--default-storage-engine=innodb
(or --default-table-type=innodb
caused a server crash. (Bug #9815)
MERGE tables could fail on Windows due to
incorrect interpretation of path name separator characters for
file names in the .MRG file. (Bug #10687)
net_read_timeout and
net_write_timeout were not
being respected on Windows. (Bug #9721)
TIMEDIFF() with a negative time
first argument and positive time second argument produced
incorrect results. (Bug #8068)
A segmentation fault in mysqlcheck occurred
when the last table checked in
--auto-repair mode returned
an error (such as the table being a MERGE
table). (Bug #9492)
Remove extra slashes in --tmpdir value (for
example, convert /var//tmp to
/var/tmp, because they caused various
errors. (Bug #8497)
Corrected some failures of prepared statements for SQL
(PREPARE plus
EXECUTE) to return all rows for
some SELECT statements. (Bug
#9777, Bug #9096)
The server did not compile correctly with MinGW. Our thanks to Nils Durner for the patch. (Bug #8872)
configure did not properly recognize whether NPTL was available on Linux. (Bug #2173)
configure did not check the system for atomic operations capabilities. (Bug #7970)

User Comments
Add your own comment.