innobase/ibuf/ibuf0ibuf.c:
Applied innodb-4.1-ss32 snapshot.
ibuf_fixed_addr_page(): Add parameter space. As the insert
buffer B-tree is only located in the system tablespace
(space 0), IBUF_TREE_ROOT_PAGE_NO is only special in space 0.
Fixed BUG#19727 "InnoDB crashed server and crashed tables
are not recoverable".
innobase/row/row0mysql.c:
Applied innodb-4.1-ss31 snapshot.
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx).
Fix BUG#19542 "InnoDB doesn't increase the Handler_read_prev counter.
innobase/os/os0file.c:
Applied innodb-4.1-ss29 snapshot.
Check the page trailers also after writing to disk.
This improves the chances of diagnosing Bug 18886.
os_file_check_page_trailers(): New function for checking
that two copies of the LSN stamped on the pages match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
sql/ha_innodb.cc:
Applied innodb-4.1-ss29 snapshot.
Increment statistic counter in ha_innobase::index_prev().
Fix BUG#16814: "SHOW INNODB STATUS format error in LATEST FOREIGN KEY ERROR section"
Add a missing newline to the LAST FOREIGN KEY ERROR section in SHOW INNODB STATUS
output.
Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID".
Refuse tables that use reserved column names.
innobase/dict/dict0dict.c:
Applied innodb-4.1-ss22 snapshot.
dict_foreign_error_report(): Always print a newline after invoking
dict_print_info_on_foreign_key_in_create_format() (Bug#16814).
Refuse tables that use reserved column names (Bug#18934).
innobase/dict/dict0mem.c:
Applied innodb-4.1-ss22 snapshot.
Refuse tables that use reserved column names (Bug#18934).
innobase/include/dict0dict.h:
Applied innodb-4.1-ss22 snapshot.
Refuse tables that use reserved column names (Bug#18934).
innobase/include/dict0mem.h:
Applied innodb-4.1-ss22 snapshot.
Refuse tables that use reserved column names (Bug#18934).
innobase/include/univ.i:
Applied innodb-4.1-ss22 snapshot.
innobase/row/row0mysql.c:
Applied innodb-4.1-ss22 snapshot.
Refuse tables that use reserved column names (Bug#18934).
Applied innodb-4.1-ss20 snapshot.
innobase/btr/btr0sea.c:
Applied innodb-4.1-ss20 snapshot.
Account for a race condition when dropping the adaptive
hash index for a B-tree page (Bug #16582).
btr_search_drop_page_hash_index(): Retry the operation if a hash
index with different parameters was built meanwhile. Add
diagnostics for the case that hash node pointers to the page
remain. This fix is from Heikki.
btr_search_info_update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
innobase/fil/fil0fil.c:
Applied innodb-4.1-ss20 snapshot.
Keep track on unflushed modifications to file spaces. When
there are tens of thousnads of file spaces, flushing all files
in fil_flush_file_spaces() would be very slow (Bug #16582).
fil_flush_file_spaces(): Only flush unflushed file spaces.
fil_space_t, fil_system_t: Add a list of unflushed spaces.
innobase/include/btr0sea.ic:
Applied innodb-4.1-ss20 snapshot.
btr_search_info_update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
Fixed BUG#14056: Column prefix index on UTF-8 primary key
causes "Can't find record.."
Also fixed bug 15991.
innobase/include/os0file.h:
Changes from innodb-4.1-ss14 snapshot
os_file_hadle_error(): Map the error codes EXDEV, ENOTDIR, and EISDIR
to the new code OS_FILE_PATH_ERROR. Treat this code as OS_FILE_PATH_ERROR.
This fixes the crash on RENAME TABLE when the .ibd file is a symbolic
link to a different file system. (Bug 15991)
innobase/os/os0file.c:
Changes from innodb-4.1-ss14 snapshot
os_file_hadle_error(): Map the error codes EXDEV, ENOTDIR, and EISDIR
to the new code OS_FILE_PATH_ERROR. Treat this code as OS_FILE_PATH_ERROR.
This fixes the crash on RENAME TABLE when the .ibd file is a symbolic
link to a different file system. (Bug 15991)
mysql-test/r/innodb.result:
Changes from innodb-4.1-ss14 snapshot
Fixed BUG#14056: Column prefix index on UTF-8 primary key
causes "Can't find record.."
mysql-test/t/innodb.test:
Changes from innodb-4.1-ss14 snapshot
Fixed BUG#14056: Column prefix index on UTF-8 primary key
causes "Can't find record.."
sql/ha_innodb.cc:
Changes from innodb-4.1-ss14 snapshot
Fixed BUG#14056: Column prefix index on UTF-8 primary key
causes "Can't find record.."
into ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-4.1
include/config-netware.h:
Auto merged
innobase/os/os0thread.c:
Auto merged
netware/mysqld_safe.c:
Merge from 4.0 to 4.1
sql/mysqld.cc:
Merge from 4.0 to 4.1
Changes to Netware specific mysqld_safe.c
include/config-netware.h:
NetWare specific change to increase thread stack size.
innobase/os/os0thread.c:
NetWare specific change to increase thread stack size.
netware/mysqld_safe.c:
NetWare specific change to make multiple mysqld_safe instances
work when called through a NCF file.
sql/mysqld.cc:
NetWare specific change to increase thread stack size.
table' lockup".
Changes from the innodb-4.1-ss11 snapshot.
Do not call os_file-create_tmpfile() at runtime. Instead, create
a tempfile at startup and guard access to it with a mutex.
Also, fix bugs:
10511: "Wrong padding of UCS2 CHAR columns in ON UPDATE CASCADE";
13778: "If FOREIGN_KEY_CHECKS=0, one can create inconsistent FOREIGN
KEYs". When FOREIGN_KEY_CHECKS=0 we still need to check that
datatypes between foreign key references are compatible.
Also, added test cases (also for bug 9802).
innobase/dict/dict0dict.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/dict/dict0load.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/include/dict0dict.h:
Changes from the innodb-4.1-ss11 snapshot
innobase/include/dict0load.h:
Changes from the innodb-4.1-ss11 snapshot
innobase/include/os0file.h:
Changes from the innodb-4.1-ss11 snapshot
innobase/include/rem0cmp.h:
Changes from the innodb-4.1-ss11 snapshot
innobase/include/srv0srv.h:
Changes from the innodb-4.1-ss11 snapshot
innobase/rem/rem0cmp.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/row/row0ins.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/row/row0mysql.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/srv/srv0srv.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/srv/srv0start.c:
Changes from the innodb-4.1-ss11 snapshot
libmysqld/ha_blackhole.cc:
Changes from the innodb-4.1-ss11 snapshot
mysql-test/r/innodb.result:
Changes from the innodb-4.1-ss11 snapshot
mysql-test/t/innodb.test:
Changes from the innodb-4.1-ss11 snapshot
sql/ha_innodb.cc:
Changes from the innodb-4.1-ss11 snapshot
Add diagnostic code to track an assertion failure of 0 == pthread_mutex_destroy(); this was reported on the MySQL mailing list Sept 23, 2005
innobase/os/os0sync.c:
Add diagnostic code to track an assertion failure of 0 == pthread_mutex_destroy(); this was reported on the MySQL mailing list Sept 23, 2005
innobase/srv/srv0start.c:
added line to error message clearly indicating that to get AWE support
the user must compile InnoDB with __WIN2000__ defined.
Fix a bug: InnoDB could in a crash recovery print a big false corruption warning if the first page of an ibdata file was 'recreated' in the buffer pool; this could happen, for example, if a table was dropped, and the page used later
innobase/buf/buf0buf.c:
Fix a bug: InnoDB could in a crash recovery print a big false corruption warning if the first page of an ibdata file was 'recreated' in the buffer pool; this could happen, for example, if a table was dropped, and the page used later
data files. Previously, writes were flushed until the doublewrite
buffer was created. That would be too slow on systems where
os_file_flush() [or fsync(2)] is slow. (Bug #12125)
innobase/include/os0file.h:
Disable os_do_not_call_flush_at_each_write unless #ifdef UNIV_DO_FLUSH
innobase/os/os0file.c:
Disable os_do_not_call_flush_at_each_write unless #ifdef UNIV_DO_FLUSH
innobase/trx/trx0sys.c:
Disable os_do_not_call_flush_at_each_write unless #ifdef UNIV_DO_FLUSH
up CREATE TABLE in innodb_file_per_table=1 mode.
innobase/fil/fil0fil.c:
fil_extend_space_to_desired_size(): Do not allocate or initialize
more memory than is necessary. Write at most one megabyte at a time.
innobase/include/os0file.h:
os_file_set_size(): Corrected the synopsis
innobase/os/os0file.c:
os_file_set_size(): Corrected the synopsis and some comments.
s/offset/current_size; s/low/desired_size/;
Do not allocate or initialize more memory than is necessary.
Write at most one megabyte at a time.
InnoDB wrongly complained in the .err log that MySQL is trying to drop a non-existent table, if tablespace ran out (Bug #10607)
innobase/row/row0mysql.c:
InnoDB wrongly complained in the .err log that MySQL is trying to drop a non-existent table, if tablespace ran out (Bug #10607)
Fix a problem in crash recovery of .ibd files on Windows if the user used lower_case_table_names=0 or 2; the directory scan in crash recovery forgot to put all paths to lower case, so that the tablespace name would be consistent with the internal data dictionary of InnoDB; remember that InnoDB puts internally all database names and table names to lower case on Windows, regardless of the value of lower_case_table_names
innobase/fil/fil0fil.c:
Fix a problem in crash recovery of .ibd files on Windows if the user used lower_case_table_names=0 or 2; the directory scan in crash recovery forgot to put all paths to lower case, so that the tablespace name would be consistent with the internal data dictionary of InnoDB; remember that InnoDB puts internally all database names and table names to lower case on Windows, regardless of the value of lower_case_table_names
innobase/include/dict0dict.h:
Fix a problem in crash recovery of .ibd files on Windows if the user used lower_case_table_names=0 or 2; the directory scan in crash recovery forgot to put all paths to lower case, so that the tablespace name would be consistent with the internal data dictionary of InnoDB; remember that InnoDB puts internally all database names and table names to lower case on Windows, regardless of the value of lower_case_table_names
innobase/dict/dict0dict.c:
Fix a problem in crash recovery of .ibd files on Windows if the user used lower_case_table_names=0 or 2; the directory scan in crash recovery forgot to put all paths to lower case, so that the tablespace name would be consistent with the internal data dictionary of InnoDB; remember that InnoDB puts internally all database names and table names to lower case on Windows, regardless of the value of lower_case_table_names
of active transactions, if necessary and possible. (Bug #5436)
innobase/include/lock0lock.h:
Split lock_print_info() into lock_print_info_summary()
and lock_print_info_all_transactions().
innobase/lock/lock0lock.c:
Split lock_print_info() into lock_print_info_summary()
and lock_print_info_all_transactions().
innobase/include/srv0srv.h:
srv_printf_innodb_monitor(): Add output parameters trx_start and trx_end.
innobase/srv/srv0srv.c:
srv_printf_innodb_monitor(): Add output parameters trx_start and trx_end.
sql/ha_innodb.cc:
innodb_show_status(): Truncate oversized output at the beginning
of the list of active transactions, if possible.
Backported from 5.0.3.
innobase/row/row0ins.c:
If the SQL-query will update or replace duplicate records we take X-lock
for duplicate records.
sql/ha_innodb.cc:
INSERT ON DUPLICATE KEY UPDATE will also update duplicate records and we should
take X-lock in this case for duplicate records.
Add fault tolerance in the scan of .ibd files at a crash recovery; formerly a single failure of readdir_get_next caused the rest of the directory to be skipped
innobase/fil/fil0fil.c:
Add fault tolerance in the scan of .ibd files at a crash recovery; formerly a single failure of readdir_get_next caused the rest of the directory to be skipped
At the shutdown, write the latest lsn only to the first pages of the ibdata files of the system tablespace, NOT to the .ibd files; writing to tens of thousands .ibd files can take minutes
innobase/fil/fil0fil.c:
At the shutdown, write the latest lsn only to the first pages of the ibdata files of the system tablespace, NOT to the .ibd files; writing to tens of thousands .ibd files can take minutes
Do not test the value of err if the lock operation was skipped because innodb_logs_unsafe_for_binlog was TRUE; though this did not cause any bugs visible to the user, because err is inited to DB_SUCCESS at the start of the function row_search_for_mysql()
innobase/row/row0sel.c:
Do not test the value of err if the lock operation was skipped because innodb_logs_unsafe_for_binlog was TRUE; though this did not cause any bugs visible to the user, because err is inited to DB_SUCCESS at the start of the function row_search_for_mysql()
if foreign_key_checks=0. (Bug #9802)
innobase/dict/dict0dict.c:
dict_foreign_add_to_cache(): Add flag check_types.
If the flag is FALSE, ignore character set mismatch.
innobase/dict/dict0load.c:
dict_load_foreign(), dict_load_foreigns(): Add flag check_types.
If the flag is FALSE, differences in character sets will be ignored.
innobase/include/dict0dict.h:
dict_foreign_add_to_cache(): Add flag check_types.
If the flag is FALSE, differences in character sets will be ignored.
innobase/include/dict0load.h:
dict_load_foreigns(): Add flag check_types.
If the flag is FALSE, differences in character sets will be ignored.
innobase/row/row0mysql.c:
row_table_add_foreign_constraints(), row_rename_table_for_mysql():
Pass trx->check_foreigns to dict_load_foreigns()
sql/ha_innodb.cc:
ha_innobase::rename_table(): Clear trx->check_foreign if necessary.
between two server instances at server shutdown/startup.
This conflict on advisory locks appears to be the result of a bug
in the operating system; these locks should be released when the
files are closed, but somehow that does not always happen
immediately in Linux. (Bug #9381)
innobase/include/os0file.h:
Add OS_FILE_OPEN_RETRY for os_file_create()ing ibdata1
innobase/os/os0file.c:
os_file_lock(): Do not close the file on failure, but let the
callers do that.
os_file_create(): If create_mode==OS_FILE_OPEN_RETRY and
os_file_lock() fails, keep retrying for 100 seconds.
innobase/srv/srv0start.c:
open_or_create_data_files(): Open the first data file with
OS_FILE_OPEN_RETRY, to resolve a conflict with a shutting-down
instance of the MySQL server.
Add diagnostic code to track assertion failure in ut_a(cursor->old_stored == BTR_PCUR_OLD_STORED); the failure happened in OPTIMIZE TABLE, and in 4.0.24 in some other context
innobase/include/btr0pcur.h:
Add diagnostic code to track assertion failure in ut_a(cursor->old_stored == BTR_PCUR_OLD_STORED); the failure happened in OPTIMIZE TABLE, and in 4.0.24 in some other context
innobase/include/btr0pcur.ic:
Add diagnostic code to track assertion failure in ut_a(cursor->old_stored == BTR_PCUR_OLD_STORED); the failure happened in OPTIMIZE TABLE, and in 4.0.24 in some other context
innobase/btr/btr0pcur.c:
Add diagnostic code to track assertion failure in ut_a(cursor->old_stored == BTR_PCUR_OLD_STORED); the failure happened in OPTIMIZE TABLE, and in 4.0.24 in some other context
innobase/row/row0sel.c:
Add diagnostic code to track assertion failure in ut_a(cursor->old_stored == BTR_PCUR_OLD_STORED); the failure happened in OPTIMIZE TABLE, and in 4.0.24 in some other context
Add a note that ENUM in new tables cannot reference ENUM in old tables, in FOREIGN KEY constraints
innobase/dict/dict0dict.c:
Add a note that ENUM in new tables cannot reference ENUM in old tables, in FOREIGN KEY constraints
If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)
innobase/trx/trx0trx.c:
If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)
If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)
innobase/include/trx0trx.h:
If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)
innobase/trx/trx0trx.c:
If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)
Add diagnostics to track why ut_a(block->state == BUF_BLOCK_FILE_PAGE) failed in buf_flush_ready_for_replace() for a user
innobase/buf/buf0flu.c:
Add diagnostics to track why ut_a(block->state == BUF_BLOCK_FILE_PAGE) failed in buf_flush_ready_for_replace() for a user
dict_load_table(): Refuse to open ROW_FORMAT=COMPACT tables
of MySQL 5.0.3 and later.
innobase/dict/dict0load.c:
dict_load_table(): Refuse to open ROW_FORMAT=COMPACT tables
of MySQL 5.0.3 and later.
Better ibbackup message
Add a message explaining why we do a 'crash recovery' after an ibbackup restore; suggested by Tim Smith
innobase/log/log0recv.c:
Better ibbackup message
dict_load_table(): Do not complain about mix_len != 0,
because MySQL 3.23.4x left garbage in that column.
innobase/dict/dict0load.c:
dict_load_table(): Do not complain about mix_len != 0,
because MySQL 3.23.4x left garbage in that column.
dict_load_table(): Remove the check for row_format=compact for now,
because the flag bit we used (high-order bit of mix_len)
has not been zero for at least two customers.
innobase/dict/dict0load.c:
dict_load_table(): Remove the check for row_format=compact for now,
because the flag bit we used (high-order bit of mix_len)
has not been zero for at least two customers.
correct the definition of srv_max_buf_pool_modified_pct.
innobase/include/srv0srv.h:
Declare srv_max_buf_pool_modified_pct
innobase/srv/srv0srv.c:
Define srv_max_buf_pool_modified_pct as ulong,
as it is declared in ha_innodb.h.
Print a hex dump of the trx_t object if trx->n_mysql_tables_in_use != 0 at trx_free()
innobase/trx/trx0trx.c:
Print a hex dump of the trx_t object if trx->n_mysql_tables_in_use != 0 at trx_free()
innobase/buf/buf0lru.c:
Portability fix: Use %p for printing pointers
innobase/dict/dict0dict.c:
Properly cast the arguments of toupper()
innobase/eval/eval0proc.c:
Declare loop_var_value with a matching data type.
innobase/include/mem0mem.ic:
Remove implicit type conversion
innobase/include/page0page.ic:
Portability fix: Use %p for printing pointers
innobase/include/pars0pars.h:
Remove implicit type conversion
innobase/include/pars0sym.h:
Remove implicit type conversion
innobase/mem/mem0dbg.c:
Portability fix: Use %p for printing pointers
innobase/os/os0file.c:
Add DWORD casts for Windows
innobase/os/os0sync.c:
Add DWORD casts for Windows
innobase/os/os0thread.c:
Add DWORD casts for Windows
innobase/rem/rem0cmp.c:
Make implicit type conversions explicit
innobase/row/row0mysql.c:
Make implicit type conversions explicit
innobase/row/row0sel.c:
Portability fix: Use %p for printing pointers
innobase/trx/trx0sys.c:
Declare trx_sys_mysql_bin_log_pos_high and
trx_sys_mysql_bin_log_pos_low with a matching data type
innobase/ut/ut0ut.c:
Make implicit type conversion explicit
If InnoDB cannot allocate memory, keep retrying for 60 seconds before we crash mysqld; maybe the memory shortage is just temporary
innobase/ut/ut0mem.c:
If InnoDB cannot allocate memory, keep retrying for 60 seconds before we crash mysqld; maybe the memory shortage is just temporary
Do not assert, but print diagnostics if MySQL tries to free a trx where n_mysql_tables_in_use > 0
innobase/trx/trx0trx.c:
Do not assert, but print diagnostics if MySQL tries to free a trx where n_mysql_tables_in_use > 0