diff options
author | Sergei Golubchik <sergii@pisem.net> | 2011-07-18 23:04:24 +0200 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2011-07-18 23:04:24 +0200 |
commit | 4e46d8e5bff140f2549841167dc4b65a3c0a645d (patch) | |
tree | c6612dcc1d0fbd801c084e6c36307d9e5913a293 /storage/xtradb/include/trx0purge.h | |
parent | 9a02c69f5c6766eaf552284a2a4dd0f1d26ecd2c (diff) | |
parent | d4d7a8fa62c406be73f6c0f6d75e795293db548b (diff) | |
download | mariadb-git-4e46d8e5bff140f2549841167dc4b65a3c0a645d.tar.gz |
merge with xtradb-5.5.15
fix test cases
Diffstat (limited to 'storage/xtradb/include/trx0purge.h')
-rw-r--r-- | storage/xtradb/include/trx0purge.h | 52 |
1 files changed, 18 insertions, 34 deletions
diff --git a/storage/xtradb/include/trx0purge.h b/storage/xtradb/include/trx0purge.h index ae5bc6f90be..0b83a76cab7 100644 --- a/storage/xtradb/include/trx0purge.h +++ b/storage/xtradb/include/trx0purge.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2011, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -68,8 +68,9 @@ Creates the global purge system control structure and inits the history mutex. */ UNIV_INTERN void -trx_purge_sys_create(void); -/*======================*/ +trx_purge_sys_create( +/*=================*/ + ib_bh_t* ib_bh); /*!< in/own: UNDO log min binary heap*/ /********************************************************************//** Frees the global purge system control structure. */ UNIV_INTERN @@ -112,27 +113,10 @@ This function runs a purge batch. @return number of undo log pages handled in the batch */ UNIV_INTERN ulint -trx_purge(void); -/*===========*/ -/********************************************************************** -This function runs a purge worker batch */ -UNIV_INTERN -void -trx_purge_worker( -/*=============*/ - ulint worker_id); -/********************************************************************** -This function waits the event for worker batch */ -UNIV_INTERN -void -trx_purge_worker_wait(void); -/*========================*/ -/********************************************************************** -This function wakes the waiting worker batch */ -UNIV_INTERN -void -trx_purge_worker_wake(void); -/*========================*/ +trx_purge( +/*======*/ + ulint limit); /*!< in: the maximum number of records to + purge in one batch */ /******************************************************************//** Prints information of the purge system to stderr. */ UNIV_INTERN @@ -145,25 +129,20 @@ struct trx_purge_struct{ ulint state; /*!< Purge system state */ sess_t* sess; /*!< System session running the purge query */ - trx_t* trx; /*!< System transaction running the purge + trx_t* trx; /*!< System transaction running the + purge query: this trx is not in the trx list of the trx system and it never ends */ que_t* query; /*!< The query graph which will do the parallelized purge operation */ - ulint n_worker; - os_event_t worker_event; - sess_t** sess_arr; - trx_t** trx_arr; - que_t** query_arr; - rw_lock_t latch; /*!< The latch protecting the purge view. - A purge operation must acquire an - x-latch here for the instant at which + rw_lock_t latch; /*!< The latch protecting the purge + view. A purge operation must acquire + an x-latch here for the instant at which it changes the purge view: an undo log operation can prevent this by obtaining an s-latch here. */ read_view_t* view; /*!< The purge will not remove undo logs which are >= this view (purge view) */ - mutex_t mutex; /*!< Mutex protecting the fields below */ ulint n_pages_handled;/*!< Approximate number of undo log pages processed in purge */ ulint handle_limit; /*!< Target of how many pages to get @@ -201,6 +180,11 @@ struct trx_purge_struct{ mem_heap_t* heap; /*!< Temporary storage used during a purge: can be emptied after purge completes */ + /*-----------------------------*/ + ib_bh_t* ib_bh; /*!< Binary min-heap, ordered on + rseg_queue_t::trx_no. It is protected + by the bh_mutex */ + mutex_t bh_mutex; /*!< Mutex protecting ib_bh */ }; #define TRX_PURGE_ON 1 /* purge operation is running */ |