diff options
author | unknown <tsmith/tim@siva.hindu.god> | 2006-12-18 18:41:38 -0700 |
---|---|---|
committer | unknown <tsmith/tim@siva.hindu.god> | 2006-12-18 18:41:38 -0700 |
commit | 306f42701cdbf0801c710f3c0fe0e74c521455fc (patch) | |
tree | 71350d152b8e2b1979b7b4d1fd2566eb731baabe /sql | |
parent | 3d033fb322f4d747c42ce15e50dab951c6811ca2 (diff) | |
download | mariadb-git-306f42701cdbf0801c710f3c0fe0e74c521455fc.tar.gz |
This ChangeSet must be null-merged to 5.1.
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Bugs fixed:
- Bug #21468: InnoDB crash during recovery with corrupted data pages: XA bug?
- Bug #24299: Identifiers in foreign keys cannot contain U+0160, U+0360, ..., U+FF60
- Bug #24386: Performance degradation caused by instrumentation in mutex_struct
- Bug #24712: SHOW TABLE STATUS for file-per-table showing incorrect time fields
innobase/dict/dict0dict.c:
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Revision r1030:
branches/5.0: Replace isspace() with a wrapper ib_isspace(), because on
Win32 isspace(0xa0) appears to hold. (Bug #24299)
innobase/include/sync0rw.h:
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Revision r1040:
branches/5.0: Port r1039 from trunk:
Port r1034 from branches/zip: Remove some instrumentation and reduce
the output of SHOW MUTEX STATUS in non-debug builds. (Bug #24386)
innobase/include/sync0sync.h:
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Revision r1040:
branches/5.0: Port r1039 from trunk:
Port r1034 from branches/zip: Remove some instrumentation and reduce
the output of SHOW MUTEX STATUS in non-debug builds. (Bug #24386)
innobase/include/sync0sync.ic:
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Revision r1040:
branches/5.0: Port r1039 from trunk:
Port r1034 from branches/zip: Remove some instrumentation and reduce
the output of SHOW MUTEX STATUS in non-debug builds. (Bug #24386)
innobase/log/log0recv.c:
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Revision r1076:
branches/5.0: Remove the unintentionally committed change to univ.i in r1075.
Fix assertion failure sync0sync.c line 1239
(the latter ut_error in sync_thread_reset_level())
in crash recovery when UNIV_SYNC_DEBUG is enabled.
Revision r1079:
branches/5.0: recv_recovery_from_checkpoint_finish(): Add 1 sec delay
before switching on the sync order checks in crash recovery, so that
file I/O threads have time to suspend themselves.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Revision r1075:
branches/5.0: Fix assertion failure sync0sync.c line 1239
(the latter ut_error in sync_thread_reset_level())
in crash recovery when UNIV_SYNC_DEBUG is enabled.
Revision r1077:
branches/5.0: innobase_start_or_create_for_mysql(): Remove unnecessary delay
now that we moved the setting sync_order_checks_on=TRUE to log0recv.c,
to the start of the rollback phase in crash recovery.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Revision r1040:
branches/5.0: Port r1039 from trunk:
Port r1034 from branches/zip: Remove some instrumentation and reduce
the output of SHOW MUTEX STATUS in non-debug builds. (Bug #24386)
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Revision r1040:
branches/5.0: Port r1039 from trunk:
Port r1034 from branches/zip: Remove some instrumentation and reduce
the output of SHOW MUTEX STATUS in non-debug builds. (Bug #24386)
innobase/trx/trx0roll.c:
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Revision r1067:
branches/5.0: trx_rollback_for_mysql(), trx_commit_for_mysql():
Protect the creation of trx_dummy_sess with kernel_mutex.
This error was introduced in r1046 and r1050.
Revision r1050:
branches/5.0: trx_rollback_for_mysql(): Fix the comment introduced in r1046.
trx_commit_for_mysql(): Use the dummy trx->sess also for committing a prepared
transaction in XA recovery, just in case our code would need the session
object also in that case (does not seem to need it right now).
Revision r1048:
branches/5.0: trx_rollback_for_mysql(): Do not set trx->sess back to NULL.
This bug was introduced in r1046.
Revision r1046:
branches/5.0: trx_rollback_for_mysql(): Ensure that trx->sess is non-NULL
when calling trx_general_rollback_for_mysql(). This removes a segmentation
fault when rolling back a prepared transaction in XA recovery. (Bug #21468)
innobase/trx/trx0trx.c:
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Revision r1067:
branches/5.0: trx_rollback_for_mysql(), trx_commit_for_mysql():
Protect the creation of trx_dummy_sess with kernel_mutex.
This error was introduced in r1046 and r1050.
Revision r1050:
branches/5.0: trx_rollback_for_mysql(): Fix the comment introduced in r1046.
trx_commit_for_mysql(): Use the dummy trx->sess also for committing a prepared
transaction in XA recovery, just in case our code would need the session
object also in that case (does not seem to need it right now).
sql/ha_innodb.cc:
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.
Revision r1040:
branches/5.0: Port r1039 from trunk:
Port r1034 from branches/zip: Remove some instrumentation and reduce
the output of SHOW MUTEX STATUS in non-debug builds. (Bug #24386)
Revision r1099:
branches/5.0: Merge revision 1098 from trunk: Fix bug #24712: SHOW TABLE
STATUS for file-per-table showing incorrect time fields
Diffstat (limited to 'sql')
-rw-r--r-- | sql/ha_innodb.cc | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index e9ccc0ccede..617712d72bb 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -5309,19 +5309,11 @@ ha_innobase::info( prebuilt->trx->op_info = (char*) "returning various info to MySQL"; - - if (ib_table->space != 0) { - my_snprintf(path, sizeof(path), "%s/%s%s", - mysql_data_home, ib_table->name, - ".ibd"); - unpack_filename(path,path); - } else { - my_snprintf(path, sizeof(path), "%s/%s%s", + my_snprintf(path, sizeof(path), "%s/%s%s", mysql_data_home, ib_table->name, reg_ext); - unpack_filename(path,path); - } + unpack_filename(path,path); /* Note that we do not know the access time of the table, nor the CHECK TABLE time, nor the UPDATE or INSERT time. */ @@ -6378,14 +6370,17 @@ innodb_mutex_show_status( Protocol *protocol= thd->protocol; List<Item> field_list; mutex_t* mutex; +#ifdef UNIV_DEBUG ulint rw_lock_count= 0; ulint rw_lock_count_spin_loop= 0; ulint rw_lock_count_spin_rounds= 0; ulint rw_lock_count_os_wait= 0; ulint rw_lock_count_os_yield= 0; ulonglong rw_lock_wait_time= 0; +#endif /* UNIV_DEBUG */ DBUG_ENTER("innodb_mutex_show_status"); +#ifdef UNIV_DEBUG field_list.push_back(new Item_empty_string("Mutex", FN_REFLEN)); field_list.push_back(new Item_empty_string("Module", FN_REFLEN)); field_list.push_back(new Item_uint("Count", 21)); @@ -6394,19 +6389,23 @@ innodb_mutex_show_status( field_list.push_back(new Item_uint("OS_waits", 21)); field_list.push_back(new Item_uint("OS_yields", 21)); field_list.push_back(new Item_uint("OS_waits_time", 21)); +#else /* UNIV_DEBUG */ + field_list.push_back(new Item_empty_string("File", FN_REFLEN)); + field_list.push_back(new Item_uint("Line", 21)); + field_list.push_back(new Item_uint("OS_waits", 21)); +#endif /* UNIV_DEBUG */ if (protocol->send_fields(&field_list, Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF)) DBUG_RETURN(TRUE); -#ifdef MUTEX_PROTECT_TO_BE_ADDED_LATER - mutex_enter(&mutex_list_mutex); -#endif + mutex_enter_noninline(&mutex_list_mutex); mutex = UT_LIST_GET_FIRST(mutex_list); while ( mutex != NULL ) { +#ifdef UNIV_DEBUG if (mutex->mutex_type != 1) { if (mutex->count_using > 0) @@ -6423,9 +6422,7 @@ innodb_mutex_show_status( if (protocol->write()) { -#ifdef MUTEX_PROTECT_TO_BE_ADDED_LATER - mutex_exit(&mutex_list_mutex); -#endif + mutex_exit_noninline(&mutex_list_mutex); DBUG_RETURN(1); } } @@ -6439,10 +6436,25 @@ innodb_mutex_show_status( rw_lock_count_os_yield += mutex->count_os_yield; rw_lock_wait_time += mutex->lspent_time; } +#else /* UNIV_DEBUG */ + protocol->prepare_for_resend(); + protocol->store(mutex->cfile_name, system_charset_info); + protocol->store((ulonglong)mutex->cline); + protocol->store((ulonglong)mutex->count_os_wait); + + if (protocol->write()) + { + mutex_exit_noninline(&mutex_list_mutex); + DBUG_RETURN(1); + } +#endif /* UNIV_DEBUG */ mutex = UT_LIST_GET_NEXT(list, mutex); } + mutex_exit_noninline(&mutex_list_mutex); + +#ifdef UNIV_DEBUG protocol->prepare_for_resend(); protocol->store("rw_lock_mutexes", system_charset_info); protocol->store("", system_charset_info); @@ -6457,10 +6469,8 @@ innodb_mutex_show_status( { DBUG_RETURN(1); } +#endif /* UNIV_DEBUG */ -#ifdef MUTEX_PROTECT_TO_BE_ADDED_LATER - mutex_exit(&mutex_list_mutex); -#endif send_eof(thd); DBUG_RETURN(FALSE); } |