Fix a bug: a race condition could cause that the first B-tree page splits would get a corrupt page directory, whic often results in the assertion in page_dir_find_slot(); found with a test of 3000 startups/shutdowns; it is not clear that this would have caused any corruption which users have reported
Prevent the InnoDB main thread from hogging CPU if a table lingers in the background drop queue (though it is essentially a bug if a table end up there at all)
Add diagnostic prints if insert buffer merge is tried to a page whose type is not an index page, try to recover from the situation by discarding the insert buffer records
Backport from 4.0: Fix a major bug in InnoDB query estimator for queries of type SELECT ... WHERE col < x and SELECT ... WHERE col > x; MySQL could pick a table scan though the result set was only a few rows in a big table
The problem yesterday in ERROR_LOCK_VIOLATION was not InnoDB Hot Backup, but some file system backup tool: add to file writes 100 retries with 1 second waits
Backport bugfix from 4.0: combined log file size >= 2 GB could cause log to be written in wrong place
btr0pcur.c:
Backport bugfix from 4.0: index cursor restoration could theoretically fail
Backport from 4.0: Fix bug in MySQL-3.23 ORDER BY from a table with no PRIMARY KEY and where the user had added UNIQUE indexes with CREATE INDEX
pars0grm.y:
Move inclusion of math.h after univ.i also in the .y file; this fix is already done in 4.0
Do not let range estimator to return over 1 / 2 of total rows in table; use longlong in range estimation
btr0cur.h, ha_innobase.cc:
Use longlong in range estimation, in case there are > 4 billion rows
Fix bug: if SHOW INNODB STATUS or innodb_monitor printed several hundred transactions, the output was truncated and we forgot to release the kernel mutex
Change srv_flush_log_at_trx_commit to ulint, note that ibool is defined as ulint, so this is purely formal change
os0file.c:
Start using unbuffered i/o again in Windows because sequential read using normal i/o was 4 times slower in XP
Put 'last millisecond' test to make sure page checksum errors do not result from memory corruption in InnoDB
os0thread.c, configure.in:
Make sure stack size in InnoDB threads in AIX is at least 32 kB
The lexer of InnoDB to 8-bit, it was 7-bit which made it crash on table names containing char codes > 127
pars0lex.l, pars0grm.y:
Add InnoDB internal SQL interpreter grammar and lexer sources
Redefine sprintf as ut_sprintf inside InnoDB code; some old Unixes may have a pointer as the return type of sprintf
lock0lock.c:
Add safety against buffer overruns in latest deadlock info
srv0srv.c:
Add safety against buffer overruns in SHOW INNODB STATUS
os0thread.h, os0thread.c:
Fix a portability bug introduced in Windows when we changed os_thread_id_t to be the same as os_thread_t