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:
MySQL Cluster:
The parsing of the CLUSTERLOG command by
ndb_mgm was corrected to allow multiple
items.
(Bug#12833)
The limit of 255 characters on the input buffer for mysql on Windows has been lifted. The exact limit depends on what the system allows, but can be up to 64K characters. A typical limit is 16K characters. (Bug#12929)
Added the myisam_stats_method, which controls
whether NULL values in indexes are considered
the same or different when collecting statistics for
MyISAM tables. This influences the query
optimizer as described in
Section 7.4.7, “MyISAM Index Statistics Collection”.
(Bug#12232)
A new command line argument was added to mysqld to ignore client character set information sent during handshake, and use server side settings instead, to reproduce 4.0 behavior :
mysqld --skip-character-set-client-handshake
(Bug#9948)
RAND() no longer allows
non-constant initializers. (Prior to MySQL 4.1.15, the effect of
non-constant initializers is undefined.)
(Bug#6172)
When using IF NOT EXISTS with CREATE
DATABASE or CREATE TABLE, a warning
now is generated if the database or table already exists. :
(Bug#6008)
Better detection of connection timeout for replication servers
on Windows allows elimination of extraneous Lost
connection errors in the error log.
(Bug#5588)
Bugs fixed:
MySQL Cluster: Adding an index to a table with a large number of columns (more then 100) crashed the storage node. (Bug#13316)
MySQL Cluster:
The cluster management client START BACKUP
command could be interrupted by a SHOW
command.
(Bug#13054)
MySQL Cluster:
Updating a column of one of the TEXT types
during a cluster backup could cause the ndbd
process to crash, due to the incorrect use of charset-normalized
reads. This could also lead to character data having the wrong
lettercase in the backup if such a column was updated during the
backup; for example, supposing that the column used
latin_ci, then
“aAa” might be stored in the
backup as “AAA”.
(Bug#12950)
MySQL Cluster: When it could not copy a fragment, ndbd exited without printing a message about the condition to the error log. Now the message is written. (Bug#12900)
MySQL Cluster: When a Disk is full condition occurred, ndbd exited without reporting this condition in the error log. (Bug#12716)
MySQL Cluster:
An ALTER TABLE command caused loss of data
stored prior to the issuing of the command.
(Bug#12118)
MySQL Cluster:
Invalid values in config.ini caused
ndb_mgmd to crash.
(Bug#12043)
MySQL Cluster: Multiple ndb_mgmd processes in a cluster did not know each other's IP addresses. (Bug#12037)
MySQL Cluster: When a schema was detected to be corrupt, ndb neglected to close it, resulting in a file already open error if the schema was opened again later. written. (Bug#12027)
MySQL Cluster:
With two mgmd processes in a cluster,
ndb_mgm output for SHOW
would display the same IP address for both processes, even when
they were on different hosts.
(Bug#11595)
MySQL Cluster:
MySQL failed to compile when --with-ndb-ccflags
was specified.
(Bug#11538)
MySQL Cluster: Improved error messages related to filesystem issues. (Bug#11218)
MySQL Cluster:
LOAD DATA INFILE with a large data file
failed.
(Bug#10694)
MySQL Cluster: A cluster shutdown following the crash of a data node failed to terminate any remaining node processes, even though ndb_mgm showed the shutdown request as having been completed. (Bug#9996, Bug#10938, Bug#11623)
MySQL Cluster:
When deleting a great many (tens of thousands of) rows at once
from an NDB table, an improperly dereferenced
pointer could cause the mysqld process to
crash.
(Bug#9282)
The server could over-allocate memory when performing a
FULLTEXT search for stopwords only.
(Bug#13582)
After running configure with the
--with-embedded-privilege-control option, the
embedded server failed to build.
(Bug#13501)
UNION of two DECIMAL
columns returned wrong field type.
(Bug#13372)
Comparisons involving row constructors containing constants could cause a server crash. (Bug#13356)
MySQL would pass an incorrect key length to storage engines for
MIN(). This could cause spurious
warnings such as InnoDB: Warning: using a
partial-field key prefix in search to appear in the
.err log.
(Bug#13218, Bug#11039)
Aggregate functions sometimes incorrectly were allowed in the
WHERE clause of UPDATE and
DELETE statements.
(Bug#13180)
If special characters such as '_' ,
'%', or the escape character were included
within the prefix of a column index, LIKE
pattern matching on the indexed column did not return the
correct result.
(Bug#13046, Bug#13919)
SHOW CREATE TABLE did not display any
FOREIGN KEY clauses if a temporary file could
not be created. Now SHOW CREATE TABLE
displays an error message in an SQL comment if this occurs.
(Bug#13002)
On HP-UX 11.x (PA-RISC), the -L option caused
mysqlimport to crash.
(Bug#12958)
The counters for the Key_read_requests,
Key_reads,
Key_write_requests, and
Key_writes status variables were changed from
unsigned long to unsigned
longlong to accommodate larger values before the
variables roll over and restart from 0.
(Bug#12920)
For queries with DISTINCT and WITH
ROLLUP, the DISTINCT should be
applied after the rollup operation, but was not always.
(Bug#12887)
A column that can be NULL was not handled
properly for WITH ROLLUP in a subquery or
view.
(Bug#12885)
MIN() and
MAX() sometimes returned a
non-NULL value for an empty row set (for
example, SELECT MAX(1) FROM empty_table).
(Bug#12882)
GROUP_CONCAT() ignored an empty
string if it was the first value to occur in the result.
(Bug#12863)
SELECT GROUP_CONCAT(...) FROM DUAL in a
subquery could cause the client to hang.
(Bug#12861)
If a client has opened an InnoDB table for
which the .ibd file is missing,
InnoDB would not honor a DROP
TABLE statement for the table.
(Bug#12852)
The server crashed when one thread resized the query cache while another thread was using it. (Bug#12848)
A concurrency problem for CREATE ... SELECT
could cause a server crash.
(Bug#12845)
The ARCHIVE storage engine does not support
deletes, but it was possible to delete by using
DELETE or TRUNCATE TABLE
with a FEDERATED table that points to an
ARCHIVE table.
(Bug#12836)
After changing the character set with SET CHARACTER
SET, the result of the
GROUP_CONCAT() function was not
converted to the proper character set.
(Bug#12829)
Reverted a change introduced in MySQL 4.1.13 (SHOW
FIELDS truncated the TYPE column to
40 characters). This fix was reverted for MySQL 4.1 because it
broke existing applications. The fix will be made in MySQL 5.0
instead (5.0.13).
(Bug#12817)
The patch for the following bugs was reverted: Bug#7142.
An optimizer estimate of zero rows for a non-empty
InnoDB table used in a left or right join
could cause incomplete rollback for the table.
(Bug#12779)
Shared-memory connections were not working on Windows. (Bug#12723)
Performing an IS NULL check on
the MIN() or
MAX() of an indexed column in a
complex query could produce incorrect results.
(Bug#12695)
CHECKSUM TABLE locked
InnoDB tables and did not use a consistent
read.
(Bug#12669)
A SELECT DISTINCT query with a constant value
for one of the columns would return only a single row.
(Bug#12625)
The LIKE ... ESCAPE syntax produced invalid
results when escape character was larger than one byte.
(Bug#12611)
DELETE or UPDATE for an
indexed MyISAM table could fail. This was due
to a change in end-space comparison behavior from 4.0 to 4.1.
(Bug#12565)
When any --replicate-wild-* option is used, the
slave ignores SET ONE_SHOT TIME_ZONE
statements as belonging to a non-replicated table.
(Bug#12542)
A UNION of long utf8
VARCHAR columns was sometimes returned as a
column with a LONGTEXT data type rather than
VARCHAR. This could prevent such queries from
working at all if selected into a MEMORY
table because the MEMORY storage engine does
not support the TEXT data types.
(Bug#12537)
A client connection thread cleanup problem caused the server to crash when closing the connection if the binary log was enabled. (Bug#12517)
MEMORY tables using B-Tree
index on 64-bit platforms could produce false table is full
errors.
(Bug#12460)
Deadlock occurred when several account management statements
were run (particularly between FLUSH
PRIVILEGES/SET PASSWORD and
GRANT/REVOKE statements).
(Bug#12423)
InnoDB was too permissive with LOCK
TABLE ... READ LOCAL and allowed new inserts into the
table. Now READ LOCAL is equivalent to
READ for InnoDB. This will
cause slightly more locking in mysqldump, but
makes InnoDB table dumps consistent with
MyISAM table dumps.
(Bug#12410)
A prepared statement failed with Illegal mix of
collations if the client character set was
utf8 and the statement used a table that had
a character set of latin1.
(Bug#12371)
The value of character_set_results could be
set to NULL, but returned the string
"NULL" when retrieved.
(Bug#12363)
On Windows, the server was preventing tables from being created
if the table name was a prefix of a forbidden name. For example,
nul is a forbidden name because it's the same
as a Windows device name, but a table with the name of
n or nu was being
forbidden as well.
(Bug#12325)
Users created using an IP address or other alias rather than a
hostname listed in /etc/hosts could not set
their own passwords.
(Bug#12302)
CHECKSUM TABLE command returned incorrect
results for tables with deleted rows. After upgrading, users who
used stored checksum information to detect table changes should
rebuild their checksum data.
(Bug#12296)
For VARCHAR columns with the
ucs2 character set, InnoDB
trimmed trailing 0x20 bytes rather than
0x0020 words, resulting in incorrect index
lookups later.
(Bug#12178)
Outer join elimination was erroneously applied for some queries
that used a NOT BETWEEN condition, an
IN(
condition, or an value_list)IF() condition.
(Bug#12102, Bug#12101)
LOAD DATA INFILE did not respect the
NO_AUTO_VALUE_ON_ZERO SQL mode setting.
(Bug#12053)
TRUNCATE TABLE did not work with
TEMPORARY InnoDB tables.
(Bug#11816)
Queries that created implicit temporary tables could return incorrect data types for some columns. (Bug#11718)
Use of a user-defined function within the
HAVING clause of a query resulted in an
Unknown column error.
(Bug#11553)
ALTER TABLE did not move the table to
default database unless the new name was qualified with the
database name.
(Bug#11493)db_name.t RENAME
t
mysqld_multi now quotes arguments on command lines that it constructs to avoid problems with arguments that contain shell metacharacters. (Bug#11280)
The --replicate-rewrite-db and
--replicate-do-table options did not work for
statements in which tables were aliased to names other than
those listed by the options.
(Bug#11139)
Spatial index corruption could occur during updates. (Bug#9645)
The have_innodb read-only system variable
could not be selected with SELECT
@@have_innodb.
(Bug#9613)
Queries against a MERGE table that has a
composite index could produce incorrect results.
(Bug#9112)
Display of the AUTO_INCREMENT attribute by
SHOW CREATE TABLE was not controlled by the
NO_FIELD_OPTIONS SQL mode as it should have
been.
(Bug#7977)
The data type for DECIMAL columns was not
respected when updating the column from another column. For
example, updating a DECIMAL(10,1) column with
the value from a DECIMAL(10,5) column
resulted in a DECIMAL(10,5) value being
stored. Similarly, altering a column with a
DECIMAL(10,5) datatype to a
DECIMAL(10,1) data type did not properly
convert data values.
(Bug#7598)
MySQL programs in binary distributions for Solaris 8/9/10 x86 systems would not run on Pentium III machines. (Bug#6772)
On Windows when the
--innodb_buffer_pool_awe_mem_mb option has been
given, the server detects whether AWE support is available and
has been compiled into the server, and displays an appropriate
error message if not.
(Bug#6581)
If a DROP DATABASE fails on a master server
due to the presence of a non-database file in the database
directory, the master have the database tables deleted, but not
the slaves. To deal with failed database drops, we now write
DROP TABLE statements to the binary log for
the tables so that they are dropped on slaves.
(Bug#4680)
myisampack did not properly pack
BLOB values larger than
224 bytes.
(Bug#4214)

User Comments
Add your own comment.