| MySQL 5.6.14 Source Code Document
    | 
#include <buf0buf.h>

| Public Attributes | |
| Optimistic search field | |
| ib_uint64_t | modify_clock | 
| Hash search fields (unprotected) | |
| NOTE that these fields are NOT protected by any semaphore! | |
| ulint | n_hash_helps | 
| ulint | n_fields | 
| ulint | n_bytes | 
| ibool | left_side | 
| Hash search fields | |
| These 5 fields may only be modified when we have an x-latch on btr_search_latch AND 
 An exception to this is when we init or create a page in the buffer pool in buf0buf.cc. Another exception is that assigning block->index = NULL is allowed whenever holding an x-latch on btr_search_latch. | |
| unsigned | curr_n_fields:10 | 
| unsigned | curr_n_bytes:15 | 
| unsigned | curr_left_side:1 | 
| dict_index_t * | index | 
| General fields | |
| buf_page_t | page | 
| byte * | frame | 
| ib_mutex_t | mutex | 
| rw_lock_t | lock | 
| unsigned | lock_hash_val:32 | 
| ibool | check_index_page_at_flush | 
| UT_LIST_NODE_T (buf_block_t) unzip_LRU | |
| buf_block_t::UT_LIST_NODE_T | ( | buf_block_t | ) | 
node of the decompressed LRU list; a block is in the unzip_LRU list if page.state == BUF_BLOCK_FILE_PAGE and page.zip.data != NULL
| ibool buf_block_t::check_index_page_at_flush | 
TRUE if we know that this is an index page, and want the database to check its consistency before flush; note that there may be pages in the buffer pool which are index pages, but this flag is not set because we do not keep track of all pages; NOT protected by any mutex
| unsigned buf_block_t::curr_left_side | 
| unsigned buf_block_t::curr_n_bytes | 
| unsigned buf_block_t::curr_n_fields | 
| byte* buf_block_t::frame | 
| dict_index_t* buf_block_t::index | 
| ibool buf_block_t::left_side | 
| rw_lock_t buf_block_t::lock | 
| unsigned buf_block_t::lock_hash_val | 
hashed value of the page address in the record lock hash table; protected by buf_block_t::lock (or buf_block_t::mutex, buf_pool->mutex in buf_page_get_gen(), buf_page_init_for_read() and buf_page_create())
| ib_uint64_t buf_block_t::modify_clock | 
this clock is incremented every time a pointer to a record on the page may become obsolete; this is used in the optimistic cursor positioning: if the modify clock has not changed, we know that the pointer is still valid; this field may be changed if the thread (1) owns the pool mutex and the page is not bufferfixed, or (2) the thread has an x-latch on the block
| ib_mutex_t buf_block_t::mutex | 
| ulint buf_block_t::n_bytes | 
| ulint buf_block_t::n_fields | 
| ulint buf_block_t::n_hash_helps | 
| buf_page_t buf_block_t::page | 
page information; this must be the first field, so that buf_pool->page_hash can point to buf_page_t or buf_block_t