InnoDB now supports also transaction isolation levels READ COMMITTED
and READ UNCOMMITTED. READ COMMITTED more closely emulates Oracle
and makes porting of applications from Oracle to MySQL easier.
Deadlock resolution is now selective: we try to pick as victims
transactions with less modified or inserted rows.
FOREIGN KEY definitions are now aware of the
lower_case_table_names setting in my.cnf.
SHOW CREATE TABLE does not output the database name
to a FOREIGN KEY definition if the referred table is
in the same database as the table.
InnoDB does a consistency check to most index pages
before writing them to a datafile.
If you set innodb_force_recovery > 0, InnoDB tries to
jump over corrupt index records and pages when doing
SELECT * FROM table. This helps in dumping.
InnoDB now again uses asynchronous unbuffered I/O in
Windows 2000 and XP; only unbuffered simulated async
I/O in NT, 95/98/ME.
Fixed a bug: the InnoDB range estimator greatly exaggerated
the size of a short index range if the paths to the
endpoints of the range in the index tree happened
to branch already in the root. This could cause
unnecessary table scans in SQL queries.
The fix will also be backported to 3.23.54.
Fixed a bug present in 3.23.52, 4.0.3, 4.0.4:
InnoDB startup could take very long or even
crash on some Windows 95/98/ME computers.
Fixed a bug: the AUTO-INC lock was held to the end
of the transaction if it was granted after a
lock wait. This could cause unnecessary deadlocks.
Fixed a bug: if SHOW INNODB STATUS, innodb_monitor,
or innodb_lock_monitor had to print several hundred
transactions in one report, and the output became
truncated, InnoDB would hang, printing to the error
log many waits for a mutex created at srv0srv.c, line 1621.
Fixed a bug: SHOW INNODB STATUS on Unix always
reported average file read size as 0 bytes.
Fixed a potential bug in 4.0.4: InnoDB now
does ORDER BY ... DESC like MyISAM.
Fixed a bug: DROP TABLE could cause crash or a
hang if there was a rollback concurrently running
on the table. The fix will only be backported to 3.23
if this appears a real problem for users.
Fixed a bug: ORDER BY could fail if you had not
created a primary key to a table, but had defined
several indexes of which at least one was a UNIQUE
index with all its columns declared as NOT NULL.
Fixed a bug: a lock wait timeout in connection
with ON DELETE CASCADE could cause corruption in indexes.
Fixed a bug: if a SELECT was done with a unique
key from a primary index, and the search matched
to a delete-marked record, InnoDB could return the NEXT record.
Outstanding bugs: in 4.0.4 two bugs were introduced
to AUTO_INCREMENT. REPLACE can cause the counter to
be left 1 too low. A deadlock or a lock wait timeout
can cause the same problem. These will be fixed in 4.0.6.