btr0sea.ic
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /************************************************************************
  2. The index tree adaptive search
  3. (c) 1996 Innobase Oy
  4. Created 2/17/1996 Heikki Tuuri
  5. *************************************************************************/
  6. #include "dict0mem.h"
  7. #include "btr0cur.h"
  8. #include "buf0buf.h"
  9. /*************************************************************************
  10. Updates the search info. */
  11. void
  12. btr_search_info_update_slow(
  13. /*========================*/
  14. btr_search_t* info, /* in: search info */
  15. btr_cur_t* cursor);/* in: cursor which was just positioned */
  16. /************************************************************************
  17. Returns search info for an index. */
  18. UNIV_INLINE
  19. btr_search_t*
  20. btr_search_get_info(
  21. /*================*/
  22. /* out: search info; search mutex reserved */
  23. dict_index_t* index) /* in: index */
  24. {
  25. ut_ad(index);
  26. return(index->search_info);
  27. }
  28. /*************************************************************************
  29. Updates the search info. */
  30. UNIV_INLINE
  31. void
  32. btr_search_info_update(
  33. /*===================*/
  34. dict_index_t* index, /* in: index of the cursor */
  35. btr_cur_t* cursor) /* in: cursor which was just positioned */
  36. {
  37. btr_search_t* info;
  38. #ifdef UNIV_SYNC_DEBUG
  39. ut_ad(!rw_lock_own(&btr_search_latch, RW_LOCK_SHARED));
  40. ut_ad(!rw_lock_own(&btr_search_latch, RW_LOCK_EX));
  41. #endif /* UNIV_SYNC_DEBUG */
  42. info = btr_search_get_info(index);
  43. info->hash_analysis++;
  44. if (info->hash_analysis < BTR_SEARCH_HASH_ANALYSIS) {
  45. /* Do nothing */
  46. return;
  47. }
  48. ut_ad(cursor->flag != BTR_CUR_HASH);
  49. btr_search_info_update_slow(info, cursor);
  50. }