db.src
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1996, 1997, 1998, 1999, 2000
  5.  * Sleepycat Software.  All rights reserved.
  6.  *
  7.  * $Id: db.src,v 11.8 2000/02/17 20:24:07 bostic Exp $
  8.  */
  9. PREFIX db
  10. INCLUDE #include "db_config.h"
  11. INCLUDE
  12. INCLUDE #ifndef NO_SYSTEM_INCLUDES
  13. INCLUDE #include <sys/types.h>
  14. INCLUDE
  15. INCLUDE #include <ctype.h>
  16. INCLUDE #include <errno.h>
  17. INCLUDE #include <string.h>
  18. INCLUDE #endif
  19. INCLUDE
  20. INCLUDE #include "db_int.h"
  21. INCLUDE #include "db_page.h"
  22. INCLUDE #include "db_dispatch.h"
  23. INCLUDE #include "db_am.h"
  24. INCLUDE #include "txn.h"
  25. INCLUDE
  26. /*
  27.  * addrem -- Add or remove an entry from a duplicate page.
  28.  *
  29.  * opcode: identifies if this is an add or delete.
  30.  * fileid: file identifier of the file being modified.
  31.  * pgno: duplicate page number.
  32.  * indx: location at which to insert or delete.
  33.  * nbytes: number of bytes added/removed to/from the page.
  34.  * hdr: header for the data item.
  35.  * dbt: data that is deleted or is to be added.
  36.  * pagelsn: former lsn of the page.
  37.  *
  38.  * If the hdr was NULL then, the dbt is a regular B_KEYDATA.
  39.  * If the dbt was NULL then the hdr is a complete item to be
  40.  * pasted on the page.
  41.  */
  42. BEGIN addrem 41
  43. ARG opcode u_int32_t lu
  44. ARG fileid int32_t ld
  45. ARG pgno db_pgno_t lu
  46. ARG indx u_int32_t lu
  47. ARG nbytes size_t lu
  48. DBT hdr DBT s
  49. DBT dbt DBT s
  50. POINTER pagelsn DB_LSN * lu
  51. END
  52. /*
  53.  * split -- Handles the split of a duplicate page.
  54.  *
  55.  * opcode: defines whether we are splitting from or splitting onto
  56.  * fileid: file identifier of the file being modified.
  57.  * pgno: page number being split.
  58.  * pageimage: entire page contents.
  59.  * pagelsn: former lsn of the page.
  60.  */
  61. DEPRECATED split 42
  62. ARG opcode u_int32_t lu
  63. ARG fileid int32_t ld
  64. ARG pgno db_pgno_t lu
  65. DBT pageimage DBT s
  66. POINTER pagelsn DB_LSN * lu
  67. END
  68. /*
  69.  * big -- Handles addition and deletion of big key/data items.
  70.  *
  71.  * opcode: identifies get/put.
  72.  * fileid: file identifier of the file being modified.
  73.  * pgno: page onto which data is being added/removed.
  74.  * prev_pgno: the page before the one we are logging.
  75.  * next_pgno: the page after the one we are logging.
  76.  * dbt: data being written onto the page.
  77.  * pagelsn: former lsn of the orig_page.
  78.  * prevlsn: former lsn of the prev_pgno.
  79.  * nextlsn: former lsn of the next_pgno. This is not currently used, but
  80.  * may be used later if we actually do overwrites of big key/
  81.  * data items in place.
  82.  */
  83. BEGIN big 43
  84. ARG opcode u_int32_t lu
  85. ARG fileid int32_t ld
  86. ARG pgno db_pgno_t lu
  87. ARG prev_pgno db_pgno_t lu
  88. ARG next_pgno db_pgno_t lu
  89. DBT dbt DBT s
  90. POINTER pagelsn DB_LSN * lu
  91. POINTER prevlsn DB_LSN * lu
  92. POINTER nextlsn DB_LSN * lu
  93. END
  94. /*
  95.  * ovref -- Handles increment/decrement of overflow page reference count.
  96.  *
  97.  * fileid: identifies the file being modified.
  98.  * pgno: page number whose ref count is being incremented/decremented.
  99.  * adjust: the adjustment being made.
  100.  * lsn: the page's original lsn.
  101.  */
  102. BEGIN ovref 44
  103. ARG fileid int32_t ld
  104. ARG pgno db_pgno_t lu
  105. ARG adjust int32_t ld
  106. POINTER lsn DB_LSN * lu
  107. END
  108. /*
  109.  * relink -- Handles relinking around a page.
  110.  *
  111.  * opcode: indicates if this is an addpage or delete page
  112.  * pgno: the page being changed.
  113.  * lsn the page's original lsn.
  114.  * prev: the previous page.
  115.  * lsn_prev: the previous page's original lsn.
  116.  * next: the next page.
  117.  * lsn_next: the previous page's original lsn.
  118.  */
  119. BEGIN relink 45
  120. ARG opcode u_int32_t lu
  121. ARG fileid int32_t ld
  122. ARG pgno db_pgno_t lu
  123. POINTER lsn DB_LSN * lu
  124. ARG prev db_pgno_t lu
  125. POINTER lsn_prev DB_LSN * lu
  126. ARG next db_pgno_t lu
  127. POINTER lsn_next DB_LSN * lu
  128. END
  129. /*
  130.  * Addpage -- Handles adding a new duplicate page onto the end of
  131.  * an existing duplicate page.
  132.  * fileid: identifies the file being changed.
  133.  * pgno: page number to which a new page is being added.
  134.  * lsn: lsn of pgno
  135.  * nextpgno: new page number being added.
  136.  * nextlsn: lsn of nextpgno;
  137.  */
  138. DEPRECATED addpage 46
  139. ARG fileid int32_t ld
  140. ARG pgno db_pgno_t lu
  141. POINTER lsn DB_LSN * lu
  142. ARG nextpgno db_pgno_t lu
  143. POINTER nextlsn DB_LSN * lu
  144. END
  145. /*
  146.  * Debug -- log an operation upon entering an access method.
  147.  * op: Operation (cursor, c_close, c_get, c_put, c_del,
  148.  * get, put, delete).
  149.  * fileid: identifies the file being acted upon.
  150.  * key: key paramater
  151.  * data: data parameter
  152.  * flags: flags parameter
  153.  */
  154. BEGIN debug 47
  155. DBT op DBT s
  156. ARG fileid int32_t ld
  157. DBT key DBT s
  158. DBT data DBT s
  159. ARG arg_flags u_int32_t lu
  160. END
  161. /*
  162.  * noop -- do nothing, but get an LSN.
  163.  */
  164. BEGIN noop 48
  165. ARG fileid int32_t ld
  166. ARG pgno db_pgno_t lu
  167. POINTER prevlsn DB_LSN * lu
  168. END