Tuned the SQL optimizer to favor more often index searches over table scans.
Fixed a performance problem when several large SELECT queries are run concurrently on a multiprocessor Linux computer. Large CPU-bound SELECT queries now also generally run faster on all platforms.
If MySQL binary logging is used,
prints after crash recovery the latest MySQL binary log file
name and the position in that file (= byte offset)
InnoDB was able to recover to. This is
useful, for example, when resynchronizing a master and a slave
database in replication.
Added better error messages to help in installation problems.
One can now recover also MySQL temporary tables which have
become orphaned inside the
InnoDB now prevents a FOREIGN KEY
declaration where the signedness is not the same in the
referencing and referenced integer columns.
Fixed a bug: calling SHOW CREATE TABLE or SHOW TABLE STATUS could cause memory corruption and make mysqld to crash. Especially at risk was mysqldump, because it calls frequently SHOW CREATE TABLE.
Fixed a bug: If on Unix you did an ALTER TABLE to an
InnoDB table and simultaneously did queries
to it, mysqld could crash with an assertion
failure in row0row.c, line 474.
Fixed a bug: If inserts to several tables containing an
AUTO_INCREMENT column were wrapped inside
one LOCK TABLES,
InnoDB asserted in
In 3.23.47 we permitted several NULLS in a UNIQUE secondary index. But CHECK TABLE was not relaxed: it reports the table as corrupt. CHECK TABLE no longer complains in this situation.
Fixed a bug: on Sparc and other high-endian processors SHOW VARIABLES showed innodb_flush_log_at_trx_commit and other boolean-valued startup parameters always OFF even if they were switched on.
Fixed a bug: If you ran mysqld-max-nt as a service on Windows
NT/2000, the service shutdown did not always wait long enough
InnoDB shutdown to finish.