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. 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:
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)
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.
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.
Added the cp932 Japanese character set.
Added a --debug option
to my_print_defaults.
Bugs fixed:
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.
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)
Security Fix:
mysql_install_db created the
mysql_install_db.X file with a predictable
file name and insecure permissions, which allowed local users to
execute arbitrary SQL statements by modifying the file's
contents.
(CVE-2005-1636)
MySQL Cluster:
AUTO_INCREMENT did not work with
INSERT..SELECT on
NDB tables.
(Bug#9675)
MERGE tables could fail on Windows due to
incorrect interpretation of path name separator characters for
file names 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)
Floats and doubles were not handled correctly when using the prepared statement API in the embedded server. (Bug#10443)
The --delimiter option for the
nds_select program was nonfunctional.
(Bug#10287)
mysql.cc did not compile correctly using
VC++ on Windows.
(Bug#10245)
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)
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)
awk script portability problems were found 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)
Concurrent inserts were allowed 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)
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 nonportable 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)
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)
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)
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)
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)
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)
A problem with readlinecaused the
mysql client to crash when the user pressed
Control-R..
(Bug#9568)
Memory block allocation did not function correctly 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)
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)
myisampack run on 64-bit systems 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)
The optimizer did not compute the union of two ranges for the
OR operator correctly.
(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)
Indexes on MyISAM tables could sometimes be
corrupted; this was the result 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 required a repair.
(Bug#9188)
mysqldump dumped core when invoked with
--tmp and
--single-transaction options
and a nonexistent 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)
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)
The server did not compile correctly with MinGW. Our thanks to Nils Durner for the patch. (Bug#8872)
In the client/server protocol for prepared statements, reconnection failed when the connection was killed with reconnection 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)
configure did not check the system for atomic operations capabilities. (Bug#7970)
A deadlock resulted from using
FLUSH TABLES WITH READ
LOCK while an INSERT
DELAYED statement was 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 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)
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: 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 lower case, so that the tablespace name was consistent with
the InnoDB internal data dictionary.

User Comments
Add your own comment.