InnoDB
now supports the
SAVEPOINT
and
ROLLBACK TO
SAVEPOINT
SQL statements. See
http://www.innodb.com/ibman.php#Savepoints for the syntax.
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.
Fixed the checksum calculation of data pages. Previously most
OS file system corruption went unnoticed. Note that if you
downgrade from version 4.0.14 or up to a version earlier than
4.0.14, InnoDB
prints warnings in the first
startup:
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
information could slow down
REPLACE
significantly. We no
longer store or print the info.
Fixed a bug: SET foreign_key_checks = 0
was
not replicated properly in the MySQL replication. The fix will
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 binary logging was not on, and for
SELECT
statements did not
commit regardless of binary logging 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 binary logging 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 binary log, reporting there a nonzero 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.
User Comments
Add your own comment.