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.
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).
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)
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)
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)
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)
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)
Updated version of libedit to 2.9.
(Bug#2596)
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.
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.
Added --debug option to
my_print_defaults.
Bugs fixed:
Security Fix:
mysql_install_db created the
mysql_install_db.X file with a predictable
filename and insecure permissions, which allowed local users to
execute arbitrary SQL statements by modifying the file's
contents.
(CVE-2005-1636)
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)
Fixed handling of floats and doubles when using prepared statement API in the embedded server. (Bug#10443)
The --delimiter option for the
nds_select program was non-functional.
(Bug#10287)
Fixed a portability problem in compiling
mysql.cc with VC++ on
Windows.
(Bug#10245)
Fixed a bug in the key cache that caused a core dump. (Bug#10167)
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)
Fixed some awk script portability problems in cmd-line-utils/libedit/makelist.sh. (Bug#9954)
The error message for exceeding
MAX_CONNECTIONS_PER_HOUR mistakenly referred
to max_connections.
(Bug#9947)
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)
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)
RENAME TABLE for an
ARCHIVE table failed if the
.arn file was not present.
(Bug#9911)
mysql.server no longer uses non-portable alias command or LSB functions. (Bug#9852)
my_print_defaults was ignoring the
--defaults-extra-file option or crashing when
the option was given.
(Bug#9851, Bug#9136)
SELECT ROUND(
produced a different result from expr)CREATE TABLE ...
SELECT ROUND(.
(Bug#9837)expr)
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_user
root.
(Bug#9833)
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)
Corrected some failures of prepared statements for SQL
(PREPARE plus EXECUTE) to
return all rows for some SELECT statements.
(Bug#9777, Bug#9096)
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)
net_read_timeout and
net_write_timeout were not being respected on
Windows.
(Bug#9721)
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)
Fix for auto-increment not working with
INSERT..SELECT and NDB storage engine.
(Bug#9675)
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)
An error occurred if you specified a default value of
TRUE or FALSE for a
BOOL column.
(Bug#9666)
A server installed as a Windows service and started with
--shared-memory could not be stopped.
(Bug#9665)
Fixed a readline-related crash in
mysql when the user pressed Control-R.
(Bug#9568)
Fixed incorrect memory block allocation for the query cache in the embedded server. (Bug#9549)
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)
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 some problems with myisampack on 64-bit systems that resulted in segmentation violations. (Bug#9487)
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)
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)
Fixed an optimizer bug in computing the union of two ranges for
the OR operator.
(Bug#9348)
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 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)
mysqldump dumped core when invoked with
--tmp and --single-transaction
options and a non-existent table name.
(Bug#9175)
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)
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)
Fixed compile problem with MinGW. Thanks to Nils Durner for patch! (Bug#8872)
Fixed the client/server protocol for prepared statements so that reconnection works properly when the connection is killed while reconnect is enabled. (Bug#8866)
The warning message from
GROUP_CONCAT() did not always
indicate the correct number of lines.
(Bug#8681)
Remove extra slashes in --tmpdir value (for
example, convert /var//tmp to
/var/tmp, because they caused various
errors.
(Bug#8497)
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)
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 in order to
trigger this issue).
(Bug#8321)
TIMEDIFF() with a negative time
first argument and positive time second argument produced
incorrect results.
(Bug#8068)
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)
Fixed a configure problem in checking for capability of performing atomic operations. (Bug#7970)
Fixed a deadlock resulting from use of FLUSH TABLES
WITH READ LOCK while an INSERT
DELAYED statement is in progress.
(Bug#7823)
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
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)
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
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)
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)
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)
mysqld was not checking whether the PID file was successfully created. (Bug#5843)
InnoDB: Prevent ALTER
TABLE from changing the storage engine if there are
foreign key constraints on the table.
(Bug#5574, Bug#5670)
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)
configure did not properly recognize whether NPTL was available on Linux. (Bug#2173)
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 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: 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.

User Comments
Add your own comment.