Tuned the SQL optimiser 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 will now also generally run faster on
all platforms.
If MySQL binlogging is used,
InnoDB now prints after crash recovery the latest MySQL binlog
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 tablespace.
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-inc column
were wrapped inside one LOCK TABLES, InnoDB asserted in lock0lock.c.
In 3.23.47 we allowed 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 for the InnoDB shutdown
to finish.