Hi! InnoDB is a MySQL table type which supports foreign keys, transactions, row level locking, and a non-free online backup tool. InnoDB is included in all MySQL-4.0 and MySQL-4.1 downloads from http://www.mysql.com.
MySQL/InnoDB-4.0.14 is mainly a bugfix release of the stable 4.0 branch. There are two new features, though: - Transaction SAVEPOINT and ROLLBACK TO SAVEPOINT commands. See http://www.innodb.com/ibman.html#Savepoints - Indexes on prefixes of columns, like in CREATE TABLE t (a BLOB, INDEX (a(10))). Of the bug fixes, we can note that SET FOREIGN_KEY_CHECKS=0 now replicates properly in MySQL replication. Another important bug fix is that the data page checksum formula is now corrected. Previously, most file corruption caused by the operating system went unnoticed. It is recommended that InnoDB Hot Backup users upgrade to >= ibbackup-1.40 when they upgrade to >= MySQL-4.0.14. The full changelog: Functionality added or modified: * InnoDB now supports the SAVEPOINT and ROLLBACK TO SAVEPOINT SQL statements. * You can now create column prefix keys like in CREATE TABLE t (a BLOB, INDEX (a(10))). * You can also use O_DIRECT as the innodb_flush_method on the latest versions of Linux and FreeBSD. Beware of possible bugs in those operating systems, though. * Corrected the checksum calculation of data pages. Previously most OS file system corruption went unnoticed. Note that if you downgrade from version >= 4.0.14 to an earlier version < 4.0.14 then in the first startup(s) InnoDB will print warnings: " InnoDB: Warning: an inconsistent page in the doublewrite buffer InnoDB: space id 2552202359 page number 8245, 127'th page in dblwr buf. " but that is not dangerous and can be ignored. * Modified the buffer pool replacement algorithm so that it tries to flush modified pages if there are no replaceable pages in the last 10 % of the LRU list. This can reduce disk i/o if the workload is a mixture of reads and writes. * The buffer pool checkpoint flush algorithm now tries to flush also close neighbors of the page at the end of the flush list. This can speed up database shutdown, and can also speed up disk writes if InnoDB log files are very small compared to the buffer pool size. * In 4.0.13 we made SHOW INNODB STATUS to print detailed info on the latest UNIQUE KEY error, but storing that info could slow down REPLACE significantly. We no longer store or print the info. Bug fixes: * Fixed a bug: SET FOREIGN_KEY_CHECKS=0 was not replicated properly in the MySQL replication. The fix will probably not be backported to 3.23. * Fixed a bug: the parameter innodb_max_dirty_pages_pct forgot to take into account the free pages in the buffer pool. This could lead to excessive flushing even though there were lots of free pages in the buffer pool. Workaround: SET GLOBAL innodb_max_dirty_pages_pct = 100. * Fixed a bug: if there were big index scans then a file read request could starve and InnoDB could assert because of a very long semaphore wait. * Fixed a bug: if AUTOCOMMIT=1 then inside LOCK TABLES MySQL failed to do the commit after an updating SQL statement if binlogging was not on, and for SELECTS did not commit regardless of binlogging state. * Fixed a bug: InnoDB could make the index page directory corrupt in the first B-tree page splits after a mysqld startup. A symptom would be an assertion in page0page.c, in function page_dir_find_slot(). * Fixed a bug: if in a FOREIGN KEY with an UPDATE CASCADE clause the parent column was of a different internal storage length than the child column, then a cascaded update would make the column length wrong in the child table and corrupt the child table. Because of MySQL's 'silent column specification changes' a fixed-length CHAR column can change internally to a VARCHAR and cause this error. * Fixed a bug: if a non-latin1 character set was used and if in a FOREIGN KEY the parent column was of a different internal storage length than the child column, then all inserts to the child table would fail in a foreign key error. * Fixed a bug: InnoDB could complain that it cannot find the clustered index record, or in rare cases return an extraneous row if a rollback, purge, and a SELECT coincided. * Fixed a possible hang over the btr0sea.c latch if SELECT was used inside LOCK TABLES. * Fixed a bug: contrary to what the release note of 4.0.13 said, the group commit still did not work if the MySQL binlogging was on. * Fixed a bug: os_event_wait() did not work properly in Unix, which might have caused starvation in various log operations. * Fixed a bug: if a single DELETE statement first managed to delete some rows and then failed in a FOREIGN KEY error or a 'Table is full error', MySQL did not roll back the whole SQL statement as it should, and also wrote the failed statement to the binlog, reporting there a non-zero error_code. * Fixed a bug: the maximum allowed number of columns in a table is 1000, but InnoDB did not check that limit in CREATE TABLE, and a subsequent INSERT or SELECT from that table could cause an assertion. Outstanding bugs: MySQL/InnoDB-4.0.15, September x, 2003 * Fixed a bug: if you updated a row so that the 8000 byte maximum length (without BLOB and TEXT) was exceeded, InnoDB simply removed the record from the clustered index. In a similar insert, InnoDB would leak reserved file space extents, which would only be freed at the next mysqld startup. * Fixed a bug: if you used big BLOBs or TEXTs, and your log files were relatively small, InnoDB could in a big BLOB operation temporarily write over the log produced AFTER the latest checkpoint. If InnoDB would crash at that moment, then the crash recovery would fail, because InnoDB would not be able to scan the log even up to the latest checkpoint. Starting from this version, InnoDB tries to ensure the latest checkpoint is young enough. If that is not possible, InnoDB prints a warning to the .err log of MySQL and advises you to make the log files bigger. Best regards, Heikki Tuuri Innobase Oy http://www.innodb.com -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]