diff --git a/include/my_pthread.h b/include/my_pthread.h index 038030540e8..a822d2db484 100644 --- a/include/my_pthread.h +++ b/include/my_pthread.h @@ -522,11 +522,13 @@ typedef struct _my_rw_lock_t { #define rw_unlock(A) my_rw_unlock((A)) #define rwlock_destroy(A) my_rwlock_destroy((A)) -extern int my_rwlock_init( my_rw_lock_t *, void * ); -extern int my_rwlock_destroy( my_rw_lock_t * ); -extern int my_rw_rdlock( my_rw_lock_t * ); -extern int my_rw_wrlock( my_rw_lock_t * ); -extern int my_rw_unlock( my_rw_lock_t * ); +extern int my_rwlock_init(my_rw_lock_t *, void *); +extern int my_rwlock_destroy(my_rw_lock_t *); +extern int my_rw_rdlock(my_rw_lock_t *); +extern int my_rw_wrlock(my_rw_lock_t *); +extern int my_rw_unlock(my_rw_lock_t *); +extern int my_rw_tryrdlock(my_rw_lock_t *); +extern int my_rw_trywrlock(my_rw_lock_t *); #endif /* USE_MUTEX_INSTEAD_OF_RW_LOCKS */ #define GETHOSTBYADDR_BUFF_SIZE 2048 diff --git a/innobase/srv/srv0start.c b/innobase/srv/srv0start.c index fa4f4bc9419..f5a0c62aaf9 100644 --- a/innobase/srv/srv0start.c +++ b/innobase/srv/srv0start.c @@ -1351,7 +1351,8 @@ innobase_shutdown_for_mysql(void) srv_conc_n_threads); } +#ifdef NOT_WORKING_YET ut_free_all_mem(); - +#endif return((int) DB_SUCCESS); } diff --git a/myisam/mi_check.c b/myisam/mi_check.c index b325f350c2b..7fa30fcca83 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -2503,6 +2503,10 @@ static int sort_key_read(MI_SORT_PARAM *sort_param, void *key) (info->s->rec_reflength+ _mi_make_key(info, sort_param->key, (uchar*) key, sort_param->record, sort_param->filepos)); +#ifdef HAVE_purify + bzero(key+sort_param->real_key_length, + (sort_param->key_length-sort_param->real_key_length)); +#endif DBUG_RETURN(sort_write_record(sort_param)); } /* sort_key_read */ @@ -2536,8 +2540,14 @@ static int sort_ft_key_read(MI_SORT_PARAM *sort_param, void *key) wptr=(FT_WORD*)(sort_param->wordptr); } - sort_param->real_key_length=info->s->rec_reflength+_ft_make_key(info, - sort_param->key,key,wptr++,sort_param->filepos); + sort_param->real_key_length=(info->s->rec_reflength+ + _ft_make_key(info, sort_param->key, + key, wptr++, sort_param->filepos)); +#ifdef HAVE_purify + if (sort_param->key_length > sort_param->real_key_length) + bzero(key+sort_param->real_key_length, + (sort_param->key_length-sort_param->real_key_length)); +#endif if (!wptr->pos) { my_free((char*) sort_param->wordlist, MYF(0)); @@ -2546,10 +2556,10 @@ static int sort_ft_key_read(MI_SORT_PARAM *sort_param, void *key) else sort_param->wordptr=(void*)wptr; - DBUG_RETURN(error); } /* sort_ft_key_read */ + /* Read next record from file using parameters in sort_info */ /* Return -1 if end of file, 0 if ok and > 0 if error */ diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result index ac9665ad906..8750ea94125 100644 --- a/mysql-test/r/myisam.result +++ b/mysql-test/r/myisam.result @@ -96,4 +96,7 @@ INSERT INTO t1 (post_text) VALUES ('ceci est un test'),('ceci est un test'),('ce REPAIR TABLE t1; Table Op Msg_type Msg_text test.t1 repair status OK +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK drop table t1; diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test index 8a65ffcc72f..c607cb4d63e 100644 --- a/mysql-test/t/myisam.test +++ b/mysql-test/t/myisam.test @@ -91,5 +91,5 @@ CREATE TABLE `t1` ( INSERT INTO t1 (post_text) VALUES ('ceci est un test'),('ceci est un test'),('ceci est un test'),('ceci est un test'),('ceci est un test'); REPAIR TABLE t1; +CHECK TABLE t1; drop table t1; - diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c index 54513ba73de..f5e381cf026 100644 --- a/mysys/mf_iocache.c +++ b/mysys/mf_iocache.c @@ -468,9 +468,11 @@ static int lock_io_cache(IO_CACHE *info) very beginning, that is returns 1 and does not unlock the mutex. */ if (++(info->share->count)) - return pthread_mutex_unlock(&info->share->mutex); - else - return 1; + { + pthread_mutex_unlock(&info->share->mutex); + return 0; + } + return 1; } static void unlock_io_cache(IO_CACHE *info) @@ -479,6 +481,7 @@ static void unlock_io_cache(IO_CACHE *info) pthread_mutex_unlock(&info->share->mutex); } + /* Read from IO_CACHE when it is shared between several threads. It works as follows: when a thread tries to read from a file @@ -488,6 +491,7 @@ static void unlock_io_cache(IO_CACHE *info) returns 1, the thread does actual IO and unlock_io_cache(), which signals all the waiting threads that data is in the buffer. */ + int _my_b_read_r(register IO_CACHE *info, byte *Buffer, uint Count) { my_off_t pos_in_file; @@ -1068,8 +1072,9 @@ int _flush_io_cache(IO_CACHE *info, int need_append_buffer_lock) if ((length=(uint) (info->write_pos - info->write_buffer))) { pos_in_file=info->pos_in_file; - /* if we have append cache, we always open the file with - O_APPEND which moves the pos to EOF automatically on every write + /* + If we have append cache, we always open the file with + O_APPEND which moves the pos to EOF automatically on every write */ if (!append_cache && info->seek_not_done) { /* File touched, do seek */ diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 8c9854fdcb9..ce52bdc152e 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -229,7 +229,11 @@ SHOW_COMP_OPTION have_openssl=SHOW_OPTION_YES; #else SHOW_COMP_OPTION have_openssl=SHOW_OPTION_NO; #endif +#ifdef HAVE_BROKEN_REALPATH +SHOW_COMP_OPTION have_symlink=SHOW_OPTION_NO; +#else SHOW_COMP_OPTION have_symlink=SHOW_OPTION_YES; +#endif #ifdef HAVE_QUERY_CACHE SHOW_COMP_OPTION have_query_cache=SHOW_OPTION_YES; #else