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 data file.
If you set
innodb_force_recovery > 0,
InnoDB tries to jump over corrupt index
records and pages when doing SELECT * FROM table. This helps
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 in the root. This could cause unnecessary table
scans in SQL queries. The fix is also 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:
does ORDER BY ... DESC like
Fixed a bug: DROP TABLE could cause crash or a hang if there was a rollback concurrently running on the table. The fix will be backported to 3.23 only 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
InnoDB could return the NEXT
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 are fixed in 4.0.6.