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_user
root
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 readline
caused 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 n
ALTER 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 = 0
or
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.