summaryrefslogtreecommitdiff
path: root/storage/innobase/include/btr0sea.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/include/btr0sea.h')
-rw-r--r--storage/innobase/include/btr0sea.h255
1 files changed, 0 insertions, 255 deletions
diff --git a/storage/innobase/include/btr0sea.h b/storage/innobase/include/btr0sea.h
deleted file mode 100644
index 6d1c2bb86d3..00000000000
--- a/storage/innobase/include/btr0sea.h
+++ /dev/null
@@ -1,255 +0,0 @@
-/************************************************************************
-The index tree adaptive search
-
-(c) 1996 Innobase Oy
-
-Created 2/17/1996 Heikki Tuuri
-*************************************************************************/
-
-#ifndef btr0sea_h
-#define btr0sea_h
-
-#include "univ.i"
-
-#include "rem0rec.h"
-#include "dict0dict.h"
-#include "btr0types.h"
-#include "mtr0mtr.h"
-#include "ha0ha.h"
-
-/*********************************************************************
-Creates and initializes the adaptive search system at a database start. */
-
-void
-btr_search_sys_create(
-/*==================*/
- ulint hash_size); /* in: hash index hash table size */
-/************************************************************************
-Returns search info for an index. */
-UNIV_INLINE
-btr_search_t*
-btr_search_get_info(
-/*================*/
- /* out: search info; search mutex reserved */
- dict_index_t* index); /* in: index */
-/*********************************************************************
-Creates and initializes a search info struct. */
-
-btr_search_t*
-btr_search_info_create(
-/*===================*/
- /* out, own: search info struct */
- mem_heap_t* heap); /* in: heap where created */
-/*********************************************************************
-Returns the value of ref_count. The value is protected by
-btr_search_latch. */
-ulint
-btr_search_info_get_ref_count(
-/*==========================*/
- /* out: ref_count value. */
- btr_search_t* info); /* in: search info. */
-/*************************************************************************
-Updates the search info. */
-UNIV_INLINE
-void
-btr_search_info_update(
-/*===================*/
- dict_index_t* index, /* in: index of the cursor */
- btr_cur_t* cursor);/* in: cursor which was just positioned */
-/**********************************************************************
-Tries to guess the right search position based on the hash search info
-of the index. Note that if mode is PAGE_CUR_LE, which is used in inserts,
-and the function returns TRUE, then cursor->up_match and cursor->low_match
-both have sensible values. */
-
-ibool
-btr_search_guess_on_hash(
-/*=====================*/
- /* out: TRUE if succeeded */
- dict_index_t* index, /* in: index */
- btr_search_t* info, /* in: index search info */
- dtuple_t* tuple, /* in: logical record */
- ulint mode, /* in: PAGE_CUR_L, ... */
- ulint latch_mode, /* in: BTR_SEARCH_LEAF, ... */
- btr_cur_t* cursor, /* out: tree cursor */
- ulint has_search_latch,/* in: latch mode the caller
- currently has on btr_search_latch:
- RW_S_LATCH, RW_X_LATCH, or 0 */
- mtr_t* mtr); /* in: mtr */
-/************************************************************************
-Moves or deletes hash entries for moved records. If new_page is already hashed,
-then the hash index for page, if any, is dropped. If new_page is not hashed,
-and page is hashed, then a new hash index is built to new_page with the same
-parameters as page (this often happens when a page is split). */
-
-void
-btr_search_move_or_delete_hash_entries(
-/*===================================*/
- page_t* new_page, /* in: records are copied
- to this page */
- page_t* page, /* in: index page */
- dict_index_t* index); /* in: record descriptor */
-/************************************************************************
-Drops a page hash index. */
-
-void
-btr_search_drop_page_hash_index(
-/*============================*/
- page_t* page); /* in: index page, s- or x-latched */
-/************************************************************************
-Drops a page hash index when a page is freed from a fseg to the file system.
-Drops possible hash index if the page happens to be in the buffer pool. */
-
-void
-btr_search_drop_page_hash_when_freed(
-/*=================================*/
- ulint space, /* in: space id */
- ulint page_no); /* in: page number */
-/************************************************************************
-Updates the page hash index when a single record is inserted on a page. */
-
-void
-btr_search_update_hash_node_on_insert(
-/*==================================*/
- btr_cur_t* cursor);/* in: cursor which was positioned to the
- place to insert using btr_cur_search_...,
- and the new record has been inserted next
- to the cursor */
-/************************************************************************
-Updates the page hash index when a single record is inserted on a page. */
-
-void
-btr_search_update_hash_on_insert(
-/*=============================*/
- btr_cur_t* cursor);/* in: cursor which was positioned to the
- place to insert using btr_cur_search_...,
- and the new record has been inserted next
- to the cursor */
-/************************************************************************
-Updates the page hash index when a single record is deleted from a page. */
-
-void
-btr_search_update_hash_on_delete(
-/*=============================*/
- btr_cur_t* cursor);/* in: cursor which was positioned on the
- record to delete using btr_cur_search_...,
- the record is not yet deleted */
-/************************************************************************
-Validates the search system. */
-
-ibool
-btr_search_validate(void);
-/*======================*/
- /* out: TRUE if ok */
-
-/* The search info struct in an index */
-
-struct btr_search_struct{
- ulint ref_count; /* Number of blocks in this index tree
- that have search index built
- i.e. block->index points to this index.
- Protected by btr_search_latch except
- when during initialization in
- btr_search_info_create(). */
-
- /* The following fields are not protected by any latch.
- Unfortunately, this means that they must be aligned to
- the machine word, i.e., they cannot be turned into bit-fields. */
- page_t* root_guess; /* the root page frame when it was last time
- fetched, or NULL */
- ulint hash_analysis; /* when this exceeds BTR_SEARCH_HASH_ANALYSIS,
- the hash analysis starts; this is reset if no
- success noticed */
- ibool last_hash_succ; /* TRUE if the last search would have
- succeeded, or did succeed, using the hash
- index; NOTE that the value here is not exact:
- it is not calculated for every search, and the
- calculation itself is not always accurate! */
- ulint n_hash_potential;
- /* number of consecutive searches
- which would have succeeded, or did succeed,
- using the hash index;
- the range is 0 .. BTR_SEARCH_BUILD_LIMIT + 5 */
- /*----------------------*/
- ulint n_fields; /* recommended prefix length for hash search:
- number of full fields */
- ulint n_bytes; /* recommended prefix: number of bytes in
- an incomplete field;
- see also BTR_PAGE_MAX_REC_SIZE */
- ibool left_side; /* TRUE or FALSE, depending on whether
- the leftmost record of several records with
- the same prefix should be indexed in the
- hash index */
- /*----------------------*/
-#ifdef UNIV_SEARCH_PERF_STAT
- ulint n_hash_succ; /* number of successful hash searches thus
- far */
- ulint n_hash_fail; /* number of failed hash searches */
- ulint n_patt_succ; /* number of successful pattern searches thus
- far */
- ulint n_searches; /* number of searches */
-#endif /* UNIV_SEARCH_PERF_STAT */
-#ifdef UNIV_DEBUG
- ulint magic_n; /* magic number */
-# define BTR_SEARCH_MAGIC_N 1112765
-#endif /* UNIV_DEBUG */
-};
-
-/* The hash index system */
-
-typedef struct btr_search_sys_struct btr_search_sys_t;
-
-struct btr_search_sys_struct{
- hash_table_t* hash_index;
-};
-
-extern btr_search_sys_t* btr_search_sys;
-
-/* The latch protecting the adaptive search system: this latch protects the
-(1) hash index;
-(2) columns of a record to which we have a pointer in the hash index;
-
-but does NOT protect:
-
-(3) next record offset field in a record;
-(4) next or previous records on the same page.
-
-Bear in mind (3) and (4) when using the hash index.
-*/
-
-extern rw_lock_t* btr_search_latch_temp;
-
-#define btr_search_latch (*btr_search_latch_temp)
-
-#ifdef UNIV_SEARCH_PERF_STAT
-extern ulint btr_search_n_succ;
-extern ulint btr_search_n_hash_fail;
-#endif /* UNIV_SEARCH_PERF_STAT */
-
-/* After change in n_fields or n_bytes in info, this many rounds are waited
-before starting the hash analysis again: this is to save CPU time when there
-is no hope in building a hash index. */
-
-#define BTR_SEARCH_HASH_ANALYSIS 17
-
-/* Limit of consecutive searches for trying a search shortcut on the search
-pattern */
-
-#define BTR_SEARCH_ON_PATTERN_LIMIT 3
-
-/* Limit of consecutive searches for trying a search shortcut using the hash
-index */
-
-#define BTR_SEARCH_ON_HASH_LIMIT 3
-
-/* We do this many searches before trying to keep the search latch over calls
-from MySQL. If we notice someone waiting for the latch, we again set this
-much timeout. This is to reduce contention. */
-
-#define BTR_SEA_TIMEOUT 10000
-
-#ifndef UNIV_NONINL
-#include "btr0sea.ic"
-#endif
-
-#endif