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:
PRIMARY KEY now implies NOT
NULL. (Bug#390)
The Windows binary packages are now compiled with
--enable-local-infile to match the Unix build
configuration.
Removed timing of tests from
mysql-test-run. time
does not accept all required parameters on many platforms (for
example, QNX) and timing the tests is not really required
(it's not a benchmark anyway).
SHOW MASTER STATUS and SHOW SLAVE
STATUS required the SUPER
privilege; now they accept REPLICATION
CLIENT as well. (Bug#343)
Added multi-threaded MyISAM repair
optimization and myisam_repair_threads
variable to enable it. See
Section 5.1.3, “System Variables”.
Added innodb_max_dirty_pages_pct variable
which controls amount of dirty pages allowed in
InnoDB buffer pool.
CURRENT_USER() and
Access denied error messages now report the
hostname exactly as it was specified in the
GRANT command.
Removed benchmark results from the source and binary distributions. They are still available in the BK source tree, though.
InnoDB tables now support ANALYZE
TABLE.
MySQL now issues an error when it opens a table that was created with MySQL 4.1.
Option --new now changes binary items
(0xFFDF) to be treated as binary strings
instead of numbers by default. This fixes some problems with
character sets where it's convenient to input the string as a
binary item. After this change you have to convert the binary
string to INTEGER with a
CAST if you want to compare two binary
items with each other and know which one is bigger than the
other. SELECT CAST(0xfeff AS UNSIGNED) < CAST(0xff
AS UNSIGNED). This is the default behavior in MySQL
4.1. (Bug#152)
Enabled delayed_insert_timeout on Linux
(most modern glibc libraries have a fixed
pthread_cond_timedwait()). (Bug#211)
Don't create more insert delayed threads than given by
max_delayed_threads. (Bug#211)
Changed UPDATE ... LIMIT to apply the limit
to rows that were matched, whether or not they actually were
changed. Previously the limit was applied as a restriction on
the number of rows changed.
Tuned optimizer to favor clustered index over table scan.
Added warnings to error log of why a secure connection failed
(when running with --log-warnings).
Deprecated options --skip-symlink and
--use-symbolic-links and replaced these with
--symbolic-links.
The default option for
innodb_flush_log_at_trx_commit was changed
from 0 to 1 to make InnoDB tables ACID by
default. See Section 13.2.5, “InnoDB Startup Options and System Variables”.
Added a feature to SHOW KEYS to display
keys that are disabled by ALTER TABLE DISABLE
KEYS command.
When using a non-existing table type with CREATE
TABLE, first try if the default table type exists
before falling back to MyISAM.
Added MEMORY as an alias for
HEAP.
Renamed function rnd to
my_rnd as the name was too generic and is
an exported symbol in libmysqlclient
(thanks to Dennis Haney for the initial patch).
Portability fix: renamed include/dbug.h
to include/my_dbug.h.
mysqldump no longer silently deletes the
binary logs when invoked with the
--master-data or
--first-slave option; while this behavior was
convenient for some users, others may suffer from it. Now you
must explicitly ask for binary logs to be deleted by using the
new --delete-master-logs option.
If the slave is configured (using for example
--replicate-wild-ignore-table=mysql.%) to
exclude mysql.user,
mysql.host, mysql.db,
mysql.tables_priv and
mysql.columns_priv from replication, then
GRANT and REVOKE are not
replicated.
Bugs fixed:
Logged Access denied error message had
incorrect Using password value. (Bug#398)
Fixed bug with NATURAL LEFT JOIN,
NATURAL RIGHT JOIN and RIGHT
JOIN when using many joined tables. The problem was
that the JOIN method was not always
associated with the tables surrounding the
JOIN method. If you have a query that uses
many RIGHT JOIN or NATURAL ...
JOINS you should verify that they work as you
expected after upgrading MySQL to this version. (Bug#291)
Fixed mysql parser not to erroneously
interpret “'” or
“"” characters within
/* ... */ comment as beginning a quoted
string.
mysql command-line client no longer looks
for \* commands inside backtick-quoted
strings.
Fixed Unknown error when using
UPDATE ... LIMIT. (Bug#373)
Fixed problem with ANSI mode and GROUP BY
with constants. (Bug#387)
Fixed bug with UNION and OUTER
JOIN. (Bug#386)
Fixed bug if one used a multiple-table
UPDATE and the query required a temporary
table bigger than tmp_table_size. (Bug#286)
Run mysql_install_db with the
-IN-RPM option for the Mac OS X installation
to not fail on systems with improperly configured hostname
configurations.
LOAD DATA INFILE now reads
000000 as a zero date instead of
"2000-00-00".
Fixed bug that caused DELETE FROM table WHERE
const_expression always to delete the whole table
(even if expression result was false). (Bug#355)
Fixed core dump bug when using
FORMAT('nan',#). (Bug#284)
Fixed name resolution bug with HAVING ...
COUNT(DISTINCT ...).
Fixed incorrect result from truncation operator
(*) in MATCH ...
AGAINST() in some complex joins.
Fixed a crash in REPAIR ... USE_FRM
command, when used on read-only, non-existing table or a table
with a crashed index file.
Fixed a crashing bug in mysql monitor
program. It occurred if program was started with
--no-defaults, with a prompt that contained
the hostname and a connection to a non-existent database was
requested.
Fixed problem when comparing a key for a multi-byte character set. (Bug#152)
Fixed bug in LEFT, RIGHT
and MID when used with multi-byte character
sets and some GROUP BY queries. (Bug#314)
Fix problem with ORDER BY being discarded
for some DISTINCT queries. (Bug#275)
Fixed that SET SQL_BIG_SELECTS=1 works as
documented (This corrects a new bug introduced in 4.0)
Fixed some serious bugs in UPDATE ... ORDER
BY. (Bug#241)
Fixed unlikely problem in optimizing WHERE
clause with constant expression like in WHERE 1 AND
(a=1 AND b=1).
Fixed that SET SQL_BIG_SELECTS=1 works
again.
Introduced proper backtick quoting for db.table in
SHOW GRANTS.
FULLTEXT index stopped working after
ALTER TABLE that converts
TEXT column to CHAR.
(Bug#283)
Fixed a security problem with SELECT and
wildcarded select list, when user only had partial column
SELECT privileges on the table.
Mark a MyISAM table as "analyzed" only when
all the keys are indeed analyzed.
Only ignore world-writable my.cnf files
that are regular files (and not, for example, named pipes or
character devices).
Fixed few smaller issues with SET PASSWORD.
Fixed error message which contained deprecated text.
Fixed a bug with two NATURAL JOINs in the
query.
SUM() didn't return
NULL when there was no rows in result or
when all values was NULL.
On Unix, symbolic link handling was not enabled by default and there was no way to turn this on.
Added missing dashes to parameter
--open-files-limit in
mysqld_safe. (Bug#264)
Fixed incorrect hostname for TCP/IP connections displayed in
SHOW PROCESSLIST.
Fixed a bug with NAN in
FORMAT(...) function ...
Fixed a bug with improperly cached database privileges.
Fixed a bug in ALTER TABLE ENABLE / DISABLE
KEYS which failed to force a refresh of table data
in the cache.
Fixed bugs in replication of LOAD DATA
INFILE for custom parameters
(ENCLOSED, TERMINATED
and so on) and temporary tables. (Bug#183, Bug#222)
Fixed a replication bug when the master is 3.23 and the slave
4.0: the slave lost the replicated temporary tables if
FLUSH LOGS was issued on the master. (Bug#254)
Fixed a bug when doing LOAD DATA INFILE
IGNORE: When reading the binary log,
mysqlbinlog and the replication code read
REPLACE instead of
IGNORE. This could make the slave's table
become different from the master's table. (Bug#218)
Fixed a deadlock when relay_log_space_limit
was set to a too small value. (Bug#79)
Fixed a bug in HAVING clause when an alias is used from the select list.
Fixed overflow bug in MyISAM when a row is
inserted into a table with a large number of columns and at
least one BLOB/TEXT column. Bug was caused
by incorrect calculation of the needed buffer to pack data.
Fixed a bug when SELECT
@non_existent_variable caused
an error in the client/server protocol due to
net_printf() output being sent to the
client twice.
Fixed a bug in setting SQL_BIG_SELECTS
option.
Fixed a bug in SHOW PROCESSLIST which only
displayed a localhost in the "Host" column.
This was caused by a glitch that used only current thread
information instead of information from the linked list of
threads.
Removed unnecessary Mac OS X helper files from server RPM. (Bug#144)
Allow optimization of multiple-table update for
InnoDB tables as well.
Fixed a bug in multiple-table updates that caused some rows to be updated several times.
Fixed a bug in mysqldump when it was called
with --master-data: the CHANGE
MASTER TO commands appended to the SQL dump had
incorrect coordinates. (Bug#159)
Fixed a bug when an updating query using
USER() was replicated on the
slave; this caused a segmentation fault on the slave. (Bug#178). USER() is still badly
replicated on the slave (it is replicated to
"").

User Comments
Add your own comment.