The feature set of 3.23 will be frozen from this version on. New features
will go the 4.0 branch, and only bug fixes will be 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 command SHOW INNODB STATUS returns the output of the
InnoDB Monitor to the client. The InnoDB Monitor now prints detailed
information on
the latest detected deadlock.
InnoDB made the SQL query optimiser to avoid too much index-only
range scans and choose full table scans instead. This is now fixed.
BEGIN and COMMIT are now added in the binlog around transactions.
The MySQL replication now respects transaction borders:
a user will no longer see half transactions in replication slaves.
A replication slave now prints in crash recovery the last
master binlog position it was able to recover to.
A new setting innodb_flush_log_at_trx_commit=2 makes 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 imports into 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 InnoDB type table, it now
checks also the adaptive hash index for all tables.
If you defined ON DELETE CASCADE or SET NULL and updated the
referenced key in the parent row, InnoDB deleted or updated
the child row. This is now changed to conform to SQL-92: you get
the error 'Cannot delete parent row'.
Improved the auto-increment algorithm: now the first insert or
SHOW TABLE STATUS initialises 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 datafiles.
This allows using unbuffered raw devices as datafiles 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 InnoDB
causes InnoDB to roll back the whole transaction, but MySQL could still
write the earlier SQL statements to the binlog, 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-latin1 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 2 GB 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 InnoDB code.
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.