diff options
author | tsmith/tim@siva.hindu.god <> | 2006-12-18 18:41:38 -0700 |
---|---|---|
committer | tsmith/tim@siva.hindu.god <> | 2006-12-18 18:41:38 -0700 |
commit | d60550a4d6310a52aab55fa4c7c1d0f96bd5ba4f (patch) | |
tree | 71350d152b8e2b1979b7b4d1fd2566eb731baabe /innobase/include | |
parent | 35cfb3876d0ab1a1838ac871ca68a689c0360bb0 (diff) | |
download | mariadb-git-d60550a4d6310a52aab55fa4c7c1d0f96bd5ba4f.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
Diffstat (limited to 'innobase/include')
-rw-r--r-- | innobase/include/sync0rw.h | 14 | ||||
-rw-r--r-- | innobase/include/sync0sync.h | 32 | ||||
-rw-r--r-- | innobase/include/sync0sync.ic | 4 |
3 files changed, 32 insertions, 18 deletions
diff --git a/innobase/include/sync0rw.h b/innobase/include/sync0rw.h index 741f9500612..4cd26ba1921 100644 --- a/innobase/include/sync0rw.h +++ b/innobase/include/sync0rw.h @@ -61,8 +61,12 @@ Creates, or rather, initializes an rw-lock object in a specified memory location (which must be appropriately aligned). The rw-lock is initialized to the non-locked state. Explicit freeing of the rw-lock with rw_lock_free is necessary only if the memory block containing it is freed. */ -#define rw_lock_create(L) rw_lock_create_func((L), __FILE__, __LINE__, #L) - +#ifdef UNIV_DEBUG +# define rw_lock_create(L) rw_lock_create_func((L), #L, __FILE__, __LINE__) +#else /* UNIV_DEBUG */ +# define rw_lock_create(L) rw_lock_create_func((L), __FILE__, __LINE__) +#endif /* UNIV_DEBUG */ + /*=====================*/ /********************************************************************** Creates, or rather, initializes an rw-lock object in a specified memory @@ -74,9 +78,11 @@ void rw_lock_create_func( /*================*/ rw_lock_t* lock, /* in: pointer to memory */ +#ifdef UNIV_DEBUG + const char* cmutex_name, /* in: mutex name */ +#endif /* UNIV_DEBUG */ const char* cfile_name, /* in: file name where created */ - ulint cline, /* in: file line where created */ - const char* cmutex_name); /* in: mutex name */ + ulint cline); /* in: file line where created */ /********************************************************************** Calling this function is obligatory only if the memory buffer containing the rw-lock is freed. Removes an rw-lock object from the global list. The diff --git a/innobase/include/sync0sync.h b/innobase/include/sync0sync.h index 9893921c5d2..769c2a98244 100644 --- a/innobase/include/sync0sync.h +++ b/innobase/include/sync0sync.h @@ -39,7 +39,11 @@ location (which must be appropriately aligned). The mutex is initialized in the reset state. Explicit freeing of the mutex with mutex_free is necessary only if the memory block containing it is freed. */ -#define mutex_create(M) mutex_create_func((M), __FILE__, __LINE__, #M) +#ifdef UNIV_DEBUG +# define mutex_create(M) mutex_create_func((M), #M, __FILE__, __LINE__) +#else +# define mutex_create(M) mutex_create_func((M), __FILE__, __LINE__) +#endif /*===================*/ /********************************************************************** Creates, or rather, initializes a mutex object in a specified memory @@ -51,9 +55,11 @@ void mutex_create_func( /*==============*/ mutex_t* mutex, /* in: pointer to memory */ +#ifdef UNIV_DEBUG + const char* cmutex_name, /* in: mutex name */ +#endif /* UNIV_DEBUG */ const char* cfile_name, /* in: file name where created */ - ulint cline, /* in: file line where created */ - const char* cmutex_name); /* in: mutex name */ + ulint cline); /* in: file line where created */ /********************************************************************** Calling this function is obligatory only if the memory buffer containing the mutex is freed. Removes a mutex object from the mutex list. The mutex @@ -479,15 +485,17 @@ struct mutex_struct { ulint cline; /* Line where created */ ulint magic_n; #ifndef UNIV_HOTBACKUP - ulong count_using; /* count of times mutex used */ - ulong count_spin_loop; /* count of spin loops */ - ulong count_spin_rounds; /* count of spin rounds */ - ulong count_os_wait; /* count of os_wait */ - ulong count_os_yield; /* count of os_wait */ - ulonglong lspent_time; /* mutex os_wait timer msec */ - ulonglong lmax_spent_time; /* mutex os_wait timer msec */ - const char* cmutex_name;/* mutex name */ - ulint mutex_type;/* 0 - usual mutex 1 - rw_lock mutex */ + ulong count_os_wait; /* count of os_wait */ +# ifdef UNIV_DEBUG + ulong count_using; /* count of times mutex used */ + ulong count_spin_loop; /* count of spin loops */ + ulong count_spin_rounds; /* count of spin rounds */ + ulong count_os_yield; /* count of os_wait */ + ulonglong lspent_time; /* mutex os_wait timer msec */ + ulonglong lmax_spent_time; /* mutex os_wait timer msec */ + const char* cmutex_name;/* mutex name */ + ulint mutex_type;/* 0 - usual mutex 1 - rw_lock mutex */ +# endif /* UNIV_DEBUG */ #endif /* !UNIV_HOTBACKUP */ }; diff --git a/innobase/include/sync0sync.ic b/innobase/include/sync0sync.ic index b3fde61db5e..a32a82d6e8b 100644 --- a/innobase/include/sync0sync.ic +++ b/innobase/include/sync0sync.ic @@ -250,9 +250,9 @@ mutex_enter_func( /* Note that we do not peek at the value of lock_word before trying the atomic test_and_set; we could peek, and possibly save time. */ -#ifndef UNIV_HOTBACKUP +#if defined UNIV_DEBUG && !defined UNIV_HOTBACKUP mutex->count_using++; -#endif /* UNIV_HOTBACKUP */ +#endif /* UNIV_DEBUG && !UNIV_HOTBACKUP */ if (!mutex_test_and_set(mutex)) { |