Fix a debug assertion in rem0rec.ic on AMD64; 4.1 was already fixed
innobase/include/rem0rec.ic:
Fix a debug assertion in rem0rec.ic on AMD64; 4.1 was already fixed
(Bug #7788 "Table is full" occurs during a multitable update")
client/mysqldump.c:
Style fixes
innobase/include/univ.i:
UNIV_DEBUG should not depend on configure --debug but on --debug=full
mysql-test/r/compare.result:
Added test to find bug in previous bugfix
mysql-test/t/compare.test:
Added test to find bug in previous bugfix
mysys/my_handler.c:
Proper fix for comparision with ' '
strings/ctype-big5.c:
Proper fix for comparision with ' '
strings/ctype-bin.c:
Proper fix for comparision with ' '
strings/ctype-gbk.c:
Proper fix for comparision with ' '
strings/ctype-latin1.c:
Proper fix for comparision with ' '
strings/ctype-mb.c:
Proper fix for comparision with ' '
strings/ctype-simple.c:
Proper fix for comparision with ' '
strings/ctype-sjis.c:
Proper fix for comparision with ' '
strings/ctype-tis620.c:
Proper fix for comparision with ' '
strings/ctype-ucs2.c:
Proper fix for comparision with ' '
strings/ctype-utf8.c:
Proper fix for comparision with ' '
Fix an assertion failure in 64-bit computers if UNIV_MEM_DEBUG is defined
innobase/mem/mem0pool.c:
Fix an assertion failure in 64-bit computers if UNIV_MEM_DEBUG is defined
Use a 32-bit right-shift implementation through a 64-bit integer that should work ok for both gcc and Visual C++; the code depended on defining SIZEOF_LONG, and that is not set when compiling ibbackup
innobase/ut/ut0ut.c:
Use a 32-bit right-shift implementation through a 64-bit integer that should work ok for both gcc and Visual C++; the code depended on defining SIZEOF_LONG, and that is not set when compiling ibbackup
Fix Windows porting bugs that broke ibbackup: 1) wrong error check in for CreateDirectory(), 2) wrong error check if the file did not exist in DeleteFile(), 3) too strict sharing restrictions in os_file_create_simple(): when ibbackup called that function, it would not allow mysqld to write to the file
innobase/os/os0file.c:
Fix Windows porting bugs that broke ibbackup: 1) wrong error check in for CreateDirectory(), 2) wrong error check if the file did not exist in DeleteFile(), 3) too strict sharing restrictions in os_file_create_simple(): when ibbackup called that function, it would not allow mysqld to write to the file
We accidentally checked if the DIRECTORY is of type OS_FILE_TYPE_UNKNOWN; our intention was to check if the FILE is that; best to remove the check altogether, as in crash recovery it is safest to try to open also files whose type is unknown
os0file.c:
Fix a bug: in Windows, os_file_readdir_next_file() returned OS_FILE_TYPE_UNKNOWN as the type of a regular file; this did not break mysqld, but did break ibbackup on Windows
innobase/os/os0file.c:
Fix a bug: in Windows, os_file_readdir_next_file() returned OS_FILE_TYPE_UNKNOWN as the type of a regular file; this did not break mysqld, but did break ibbackup on Windows
innobase/fil/fil0fil.c:
We accidentally checked if the DIRECTORY is of type OS_FILE_TYPE_UNKNOWN; our intention was to check if the FILE is that; best to remove the check altogether, as in crash recovery it is safest to try to open also files whose type is unknown
Add more diagnostics about why page reads in recovery may hang: print the number of pending pread calls
innobase/buf/buf0rea.c:
Add more diagnostics about why page reads in recovery may hang: print the number of pending pread calls
BitKeeper/etc/ignore:
added libmysqld/examples/mysqltest_embedded
client/mysqlbinlog.cc:
Call mysql_close() before die()
innobase/include/eval0eval.ic:
Remove assert that fails on 64 bit machines
(Tested with BUILD/compile-pentium64-valgrind-max on 64 bit Intel CPU)
sql/mysqld.cc:
Force lower_case_table_names to 0 if set to 2 on case insensitive file name
sql/sql_select.cc:
Remove #if 0
Fix a race condition that could cause the assertion space->n_pending_flushes == 0 to fail in fil0fil.c, in fil_space_free(), in DROP TABLE or in ALTER TABLE
innobase/fil/fil0fil.c:
Fix a race condition that could cause the assertion space->n_pending_flushes == 0 to fail in fil0fil.c, in fil_space_free()
Fix bug #8021 :Windows error number 87 with multiple tablespaces after mysqld restart; still has to be tested on Windows that this now works
innobase/fil/fil0fil.c:
Fix bug #8021 :Windows error number 87 with multiple tablespaces after mysqld restart; still has to be tested on Windows that this now works
Add diagnostic code to track corruption in mix_len; it was reported on the mailing list Jan 14, 2005
innobase/dict/dict0crea.c:
Add diagnostic code to track corruption in mix_len; it was reported on the mailing list Jan 14, 2005
innobase/dict/dict0load.c:
Add diagnostic code to track corruption in mix_len; it was reported on the mailing list Jan 14, 2005
at run-time, so that an executable compiled on Mac OS X 10.2 can
be run on Mac OS X 10.2 (without the work-around) and Mac OS X 10.3
and later with the work-aroud enabled.
innobase/include/srv0start.h:
Mac OS X: Add srv_have_fullfsync
innobase/os/os0file.c:
os_file_flush(): Use F_FULLFSYNC on Mac OS X 10.3, but not on 10.2
innobase/srv/srv0start.c:
innobase_start_or_create_for_mysql(): When compiled on OS X 10.2,
detect if the binary is running on OS X 10.3 or later, and set
srv_have_fullfsync accordingly.
open interface for setting the "delete-on-close" flag.
innobase/os/os0file.c:
Use system-supplied tmpfile() on Netware
sql/ha_innodb.cc:
Remove innobase_mysql_tmpfile() on Netware.
into hundin.mysql.fi:/home/marko/k/mysql-4.1
innobase/include/row0mysql.h:
Auto merged
innobase/row/row0sel.c:
Auto merged
sql/ha_innodb.cc:
Auto merged
key check because we can allow inserts into gaps (Support Issue #4317).
innobase/row/row0ins.c:
Take a shared record lock (LOCK_REC_NOT_GAP) for a matching record in the foreign
key check because we can allow inserts into gaps.
Fix compiler error on those OS X platforms where Apple's special file flush trick with fcntl() is not defined
innobase/os/os0file.c:
Fix compiler error on those OS X platforms where Apple's special file flush trick with fcntl() is not defined
Use the fcntl() file flush method on OS X; Apple disabled fsync() for internal disk drives, which caused corruption in power outages; the patch was recommended by an Apple engineer
innobase/os/os0file.c:
Use the fcntl() file flush method on OS X; Apple disabled fsync() for internal disk drives, which caused corruption in power outages; the patch was recommended by an Apple engineer
Fix a wrong memset in InnoDB Hot Backup code; the bug probably did not affect anything since we do not assume that the header of a log file is filled with zeros before writing the header info there; the bug found by Felix von Leitner
innobase/log/log0recv.c:
Fix a wrong memset in InnoDB Hot Backup code; the bug probably did not affect anything since we do not assume that the header of a log file is filled with zeros before writing the header info there; the bug found by Felix von Leitner
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
innobase/row/row0upd.c:
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
innobase/srv/srv0start.c:
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
Manually merge the latest FOREIGN KEY lock wait + DROP TABLE fix from 4.0
innobase/row/row0mysql.c:
Manually merge the latest FOREIGN KEY lock wait + DROP TABLE fix from 4.0
Fix the previous bug fix: dropping a table with FOREIGN KEY checks running on it caused a cascade of failed drops while the foreign key check was waiting for a lock
innobase/row/row0mysql.c:
Fix the previous bug fix: dropping a table with FOREIGN KEY checks running on it caused a cascade of failed drops while the foreign key check was waiting for a lock
Merge the two FOREIGN KEY bug fixes from 4.0, and add a TODO comment
innobase/row/row0mysql.c:
Merge the two FOREIGN KEY bug fixes from 4.0, and add a TODO comment
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
innobase/row/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
innobase/row/row0ins.c:
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
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
innobase/buf/buf0rea.c:
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
innobase/include/dict0load.h:
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
innobase/include/fil0fil.h:
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
innobase/include/row0mysql.h:
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
innobase/include/trx0trx.h:
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
innobase/dict/dict0load.c:
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
innobase/fil/fil0fil.c:
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
innobase/row/row0ins.c:
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
innobase/row/row0mysql.c:
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
innobase/row/row0sel.c:
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
innobase/srv/srv0start.c:
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
innobase/trx/trx0trx.c:
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
sql/ha_innodb.cc:
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
innobase/os/os0file.c:
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
that affected the UCS2 character set. (Bug #7350)
innobase/data/data0type.c:
Added dtype_get_charset_coll_noninline()
innobase/include/data0type.h:
Added dtype_get_charset_coll_noninline()
innobase/include/row0mysql.h:
Added charset field to mysql_row_templ_struct.
innobase/include/row0mysql.ic:
row_mysql_store_col_in_innobase_format():
When removing trailing spaces, treat the UCS2 character set properly.
innobase/rem/rem0cmp.c:
cmp_whole_field(): Do not remove trailing 0x20 bytes, as
innobase_mysql_cmp() implicitly pads the strings with trailing
spaces as necessary.
innobase/row/row0sel.c:
row_sel_field_store_in_mysql_format(): Do not pad with 0x20 bytes.
row_sel_store_mysql_rec(): Pad VARCHARs with trailing spaces
(0x20, or 0x0020 in UCS2).
sql/ha_innodb.cc:
build_template(): Initialize templ->charset