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

MySQL数据库

开发平台:

Visual C++

  1. /******************************************************
  2. Data dictionary creation and booting
  3. (c) 1996 Innobase Oy
  4. Created 4/18/1996 Heikki Tuuri
  5. *******************************************************/
  6. /**************************************************************************
  7. Writes the current value of the row id counter to the dictionary header file
  8. page. */
  9. void
  10. dict_hdr_flush_row_id(void);
  11. /*=======================*/
  12. /**************************************************************************
  13. Returns a new row id. */
  14. UNIV_INLINE
  15. dulint
  16. dict_sys_get_new_row_id(void)
  17. /*=========================*/
  18. /* out: the new id */
  19. {
  20. dulint id;
  21. mutex_enter(&(dict_sys->mutex));
  22. id = dict_sys->row_id;
  23. if (0 == (ut_dulint_get_low(id) % DICT_HDR_ROW_ID_WRITE_MARGIN)) {
  24. dict_hdr_flush_row_id();
  25. }
  26. UT_DULINT_INC(dict_sys->row_id);
  27. mutex_exit(&(dict_sys->mutex));
  28. return(id);
  29. }
  30. /**************************************************************************
  31. Reads a row id from a record or other 6-byte stored form. */
  32. UNIV_INLINE
  33. dulint
  34. dict_sys_read_row_id(
  35. /*=================*/
  36. /* out: row id */
  37. byte* field) /* in: record field */
  38. {
  39. ut_ad(DATA_ROW_ID_LEN == 6);
  40. return(mach_read_from_6(field));
  41. }
  42. /**************************************************************************
  43. Writes a row id to a record or other 6-byte stored form. */
  44. UNIV_INLINE
  45. void
  46. dict_sys_write_row_id(
  47. /*==================*/
  48. byte* field, /* in: record field */
  49. dulint row_id) /* in: row id */
  50. {
  51. ut_ad(DATA_ROW_ID_LEN == 6);
  52. mach_write_to_6(field, row_id);
  53. }