diff options
author | unknown <tnurnberg@sin.intern.azundris.com> | 2007-07-17 09:39:44 +0200 |
---|---|---|
committer | unknown <tnurnberg@sin.intern.azundris.com> | 2007-07-17 09:39:44 +0200 |
commit | ba6b937620a1502b42a4e841e8e787b6fac4c653 (patch) | |
tree | e0d68b7c27b5daca9d11af79a3343a8adb34f783 /sql/sql_class.h | |
parent | 154908d84da15095200468fb5cd2086ca96ccd1f (diff) | |
parent | 8631c57b0c7e690860f38791f5faae2388caa983 (diff) | |
download | mariadb-git-ba6b937620a1502b42a4e841e8e787b6fac4c653.tar.gz |
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into sin.intern.azundris.com:/home/tnurnberg/27198/51-27198
sql/sql_class.h:
Auto merged
Diffstat (limited to 'sql/sql_class.h')
-rw-r--r-- | sql/sql_class.h | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/sql/sql_class.h b/sql/sql_class.h index 52feee47499..b9aa6ce66a2 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1569,11 +1569,27 @@ public: proc_info = old_msg; pthread_mutex_unlock(&mysys_var->mutex); } + + static inline void safe_time(time_t *t) + { + /** + Wrapper around time() which retries on error (-1) + + @details + This is needed because, despite the documentation, time() may fail + in some circumstances. Here we retry time() until it succeeds, and + log the failure so that performance problems related to this can be + identified. + */ + while(unlikely(time(t) == ((time_t) -1))) + sql_print_information("time() failed with %d", errno); + } + inline time_t query_start() { query_start_used=1; return start_time; } - inline void set_time() { if (user_time) start_time=time_after_lock=user_time; else time_after_lock=time(&start_time); } - inline void end_time() { time(&start_time); } + inline void set_time() { if (user_time) start_time=time_after_lock=user_time; else { safe_time(&start_time); time_after_lock= start_time; }} + inline void end_time() { safe_time(&start_time); } inline void set_time(time_t t) { time_after_lock=start_time=user_time=t; } - inline void lock_time() { time(&time_after_lock); } + inline void lock_time() { safe_time(&time_after_lock); } inline ulonglong found_rows(void) { return limit_found_rows; |