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:
mysqld_safe no longer tests for the presence of the data directory when using a relatively located server binary. It just assumes the directory is there, and fails to start up if it is not. This allows the data directory location to be specified on the command line, and avoids running a server binary that was not intended. (Bug#7249)
See also Bug#7518.
The MySQL-shared-compat
Linux RPM now
includes the 3.23 as well as the 4.0
libysqlclient.so
shared libraries.
(Bug#6342)
The Mac OS X 10.3 installation disk images now include a MySQL Preference Pane for the Mac OS X Control Panel that enables the user to start and stop the MySQL server via the GUI and activate and deactivate the automatic MySQL server startup on bootup.
The naming scheme of the Windows installation packages has changed slightly:
The platform suffix was changed from -win
to -win32
The product descriptions -noinstall
and
-essential
have been moved in front of
the version number
Examples: mysql-essential-4.1.9-win32.msi
,
mysql-noinstall-4.1.9-win32.zip
See
Section 2.3, “Installing MySQL on Windows”.
Seconds_Behind_Master
is
NULL
(which means “unknown”) if
the slave SQL thread is not running, or if the slave I/O thread
is not running or not connected to master. It is zero if the SQL
thread has caught up with the I/O thread. It no longer grows
indefinitely if the master is idle.
InnoDB
: Do not acquire an internal
InnoDB
table lock in
LOCK TABLES
if
autocommit = 1
. This helps in
porting old MyISAM
applications to
InnoDB
. InnoDB
table locks
in that case caused deadlocks very easily.
The binary log file and binary log index file now behave like
MyISAM
when there is a "disk full" or "quota
exceeded" error. See Section A.5.4.3, “How MySQL Handles a Full Disk”.
The product descriptions -noinstall
and
-essential
have been moved in front of the
version number
InnoDB
: Print a more descriptive error and
refuse to start InnoDB
if the size of
ibdata
files is smaller than what is stored
in the tablespace header;
innodb_force_recovery
overrides
this.
The platform suffix was changed from -win
to
-win32
The MySQL server aborts immediately instead of simply issuing a
warning if it is started with the
--log-bin
option but cannot
initialize the binary log at startup (that is, an error occurs
when writing to the binary log file or binary log index file).
Bugs fixed:
Replication:
A replication slave could crash after replicating many
ANALYZE TABLE
,
OPTIMIZE TABLE
, or
REPAIR TABLE
statements from the
master.
(Bug#6461, Bug#7658)
When encountering a disk full or
quota exceeded write error,
MyISAM
sometimes failed to sleep and retry
the write, resulting in a corrupted table.
(Bug#7714)
Running mysql_fix_privilege_tables could result in grant table columns with lengths that were too short if the server character set had been set to a multi-byte character set first. (Bug#7539)
Added a --default-character-set
option to
mysqladmin to avoid problems when the default
character set is not latin1
.
(Bug#7524)
InnoDB
: When
innodb_file_per_table
was
enabled in my.cnf
, records could disappear
from the secondary indexes of a table after
mysqld was killed.
This fix introduced a new Bug#8021, affecting Windows and
users of
innodb_file_per_table
only.
If you are using
innodb_file_per_table
on
Windows, you can work around this new issue by adding the line
innodb_flush_method= unbuffered
to the
my.cnf
or my.ini
file.
(Bug#7496)
Microseconds were dropped from the string result of the
STR_TO_DATE
function, when there was some
other specifier in the format string following
%f
.
(Bug#7458)
mysqladmin password now checks whether the
server has --old-passwords
turned
on or predates 4.1 and uses the old-format password if so.
(Bug#7451)
Linking both the MySQL client library and IMAP library in the same build failed. (Bug#7428)
Made the MySQL server accept executing SHOW
CREATE DATABASE
even if the connection has an open
transaction or locked tables. Refusing it made
mysqldump --single-transaction sometimes fail
to print a complete CREATE
DATABASE
statement for some dumped databases.
(Bug#7358)
--expire-logs-days
was not
honored if using only transactions.
(Bug#7236)
Include compression library flags in the output from mysql_config --lib_r. (Bug#7021)
Corrected a problem with mysql_config not
producing all relevant flags from CFLAGS
.
(Bug#6964)
Incorrect results were obtained for complex datetime expressions
containing casts of datetime values to
TIME
or
DATE
values.
(Bug#6914)
InnoDB
: 32-bit mysqld
binaries built on HP-UX 11 did not work with
InnoDB
files greater than 2 GB in size.
(Bug#6189)
Corrected a problem with mysqld_safe not properly capturing output from ps. (Bug#5878)
PROCEDURE ANALYSE()
did not quote some
ENUM
values properly.
(Bug#2813)
InnoDB
: Use the
fcntl(F_FULLFSYNC)
flush method on Mac OS X
versions 10.3 and up instead of fsync()
that
could cause corruption at power outages.
InnoDB
: The storgae of an SQL
NULL
value in some rare cases took more space
than should have been required.
InnoDB
: Dropping a table where an
INSERT
was waiting for a lock to
check a FOREIGN KEY
constraint caused an
assertion.
InnoDB
: When DISCARD
TABLESPACE
failed because the table was referenced by
a foreign key, the error code returned did not indicate that
this was the case.
Using INSERT DELAYED
with
prepared statements could lead to table corruption.
InnoDB
: InnoDB
failed to
drop a table in the background drop queue if the table was
referenced by a FOREIGN KEY
constraint.
User Comments
Just one small correction: up above it says that fsync() is disabled on MacOS X 10.3 and above and that InnoDB switched to using an fcntl() instead.
On MacOS X, fsync() behaves the same as it does on all unixes: it writes the data from the host to the drive. This is not good enough because drives will buffer the data and potentially write it in a different order than the app did.
To deal with this MacOS X provides an fcntl() called F_FULLFSYNC which does what fsync does and in addition asks the drive to flush all buffered data to disk. This is the only way for an app to be able to make any guarantees about things like transactions which is why InnoDB uses it!
Add your own comment.