Fix a little bug in InnoDB: we looked at the physical size of a stored SQL NULL value from a wrong field in the index; this has probably caused no bugs visible to the user, only caused some extra space usage in some rare cases; we may later backport the fix to 4.0
Print a more descriptive error and refuse to start InnoDB if the size of ibdata files is smaller than what is stored in the tablespace header; innodb_force_recovery will override this
Fix bug: if we dropped a table where an INSERT was waiting for a lock to check a FOREIGN KEY constraint, then an assertion would fail in lock_reset_all_on_table(), since that operation assumes no waiting locks on the table or its records
row0mysql.c:
Fix bug: InnoDB failed to drop a table in the background drop queue if the table was referenced by a foreign key constraint
Fix InnoDB critical bug #7496; we scan the InnoDB data dictionary also at a normal mysqld startup, and create the spaces, so that we know the mapping space id -> .ibd file name; fix an infinite loop if DISCARD TABLESPACE coincides with INSERT or some other table operation; fix a potential crash if DISCARD TABLESPACE coincides with a cascaded FOREIGN KEY operation in the same table; do not allow DISCARD TABLESPACE of a referenced table if FOREIGN_KEY_CHECKS=1
Fix InnoDB bug: on HP-UX, with a 32-bit binary, InnoDB was only able to read or write <= 2 GB files; the reason was that InnoDB treated the return value of lseek() as a 32-bit integer; lseek was used on HP-UX-11 as a replacement for pread() and pwrite() because HAVE_BROKEN_PREAD was defined on that platform
Fix for the 0xA0 character problem in the InnoDB FOREIGN KEY parser: if my_isspace() treats 0xA0 as space, then let InnoDB do the same; this might break some multi-byte charset id's, though for big5, ujis, sjis this seems not to change the current behavior (I checked the tables in /share/charsets); this fix must NOT be merged to 4.1 because in 4.1 everything is in UTF-8
Fix the bug that the character 0xA0 that EMS MySQL Manager in ALTER TABLE adds after a table name confuses the InnoDB FOREIGN KEY parser, causing an error 121 when we try to add a new constraint; a full fix would require the lexer to be aware of thd->charset_info() and UTF-8
srv_printf_innodb_monitor(): Removed extraneous rewind() call.
The caller of this function calls rewind() if necessary.
In this way, we avoid rewind()ing stderr in
srv_lock_timeout_and_monitor_thread().
Let MySQL check the existence of readdir_r with 3 arguments; Solaris seems to have just 2 args
Check the existence of readdir_r and localtime_r; even though MySQL does check these too, we need our own check for Hot Backup code
os0file.c:
Use re-entrant readdir_r where available
ut0ut.c:
Make a function to use thread-safe localtime_r where available; that particular function was not called from anywhere, though
Fix bug #6817 and bug #6827 : do not crash the server if the buffer pool becomes filled by the locks of ONE huge transaction, return error 1206 instead; do not crash the server, but return error if we cannot allocate memory for the buffer pool at a mysqld startup
Print a warning to the .err log if the InnoDB history list length is > 20 000 even though purge reaches the list head; this is to track corruption reported on the MySQL mailing list Nov 9, 2004
lock0lock.c:
Let SHOW INNODB STATUS print the history list length