The feature set of 3.23 is frozen from this version on. New features go the 4.0 branch, and only bugfixes are made to the 3.23 branch.
Many CPU-bound join queries now run faster. On Windows also many other CPU-bound queries run faster.
A new SQL statement SHOW INNODB STATUS returns the output of
InnoDB Monitor to the client. The
InnoDB Monitor now prints detailed
information on the latest detected deadlock.
InnoDB made the SQL query optimizer to
avoid too much index-only range scans and choose full table
scans instead. This is now fixed.
COMMIT are now added in the
binary log around transactions. The MySQL replication now
respects transaction borders: a user no longer sees half
transactions in replication slaves.
A replication slave now prints in crash recovery the last master binary log position it was able to recover to.
A new setting
InnoDB to write the log to the operating
system file cache at each commit. This is almost as fast as
the setting innodb_flush_log_at_trx_commit = 0, and the
setting 2 also has the nice feature that in a crash where the
operating system does not crash, no committed transaction is
lost. If the operating system crashes or there is a power
outage, then the setting 2 is no safer than the setting 0.
Added checksum fields to log blocks.
SET foreign_key_checks = 0 helps in
importing tables in an arbitrary order which does not respect
the foreign key rules.
SET unique_checks = 0 speeds up table
InnoDB if you have UNIQUE
constraints on secondary indexes. This flag should be used
only if you are certain that the input records contain no
UNIQUE constraint violations.
SHOW TABLE STATUS now lists also possible ON DELETE CASCADE or ON DELETE SET NULL in the comment field of the table.
When CHECK TABLE is run on any
table, it now checks also the adaptive hash index for all
If you defined ON DELETE CASCADE or SET NULL and updated the
referenced key in the parent row,
deleted or updated the child row. This is now changed to
conform to standard SQL: you get the error 'Cannot delete
Improved the auto-increment algorithm: now the first insert or SHOW TABLE STATUS initializes the auto-increment counter for the table. This removes almost all surprising deadlocks caused by SHOW TABLE STATUS.
Aligned some buffers used in reading and writing to data files. This enables using unbuffered raw devices as data files in Linux.
Fixed a bug: If you updated the primary key of a table so that only the case of characters changed, that could cause assertion failures, mostly in page0page.ic line 515.
Fixed a bug: If you delete or update a row referenced in a foreign key constraint and the foreign key check has to wait for a lock, then the check may report an erroneous result. This affects also the ON DELETE... operation.
Fixed a bug: A deadlock or a lock wait timeout error in
roll back the whole transaction, but MySQL could still write
the earlier SQL statements to the binary log, even though
InnoDB rolled them back. This could, for
example, cause replicated databases to get out-of-sync.
Fixed a bug: If the database happened to crash in the middle of a commit, then the recovery might leak tablespace pages.
Fixed a bug: If you specified a non-
character set in my.cnf, then, in contrary to what is stated
in the manual, in a foreign key constraint a string type
column had to have the same length specification in the
referencing table and the referenced table.
Fixed a bug: DROP TABLE or DROP DATABASE could fail if there simultaneously was a CREATE TABLE running.
Fixed a bug: If you configured the buffer pool bigger than 2GB
in a 32-bit computer,
InnoDB would assert
in buf0buf.ic line 214.
Fixed a bug: on 64-bit computers updating rows which contained the SQL NULL in some column could cause the undo log and the ordinary log to become corrupt.
Fixed a bug: innodb_log_monitor caused a hang if it suppressed lock prints for a page.
Fixed a bug: in the HP-UX-10.20 version mutexes would leak and
cause race conditions and crashes in any part of
Fixed a bug: If you ran in the
autocommit mode, executed a
SELECT, and immediately after that a RENAME TABLE, then RENAME
would fail and MySQL would complain about error 1192.
Fixed a bug: If compiled on 64-bit Solaris,
InnoDB produced a bus error at startup.