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

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #include <NdbMain.h>
  14. #include <NdbOut.hpp>
  15. #include <ndb_types.h>
  16. #define ZNEW_PREP_OP_TYPE 0
  17. #define ZPREP_OP_TYPE 1
  18. #define ZCOMMIT_TYPE 2
  19. #define ZABORT_TYPE 3
  20. #define ZFD_TYPE 4
  21. #define ZFRAG_SPLIT_TYPE 5
  22. #define ZNEXT_LOG_RECORD_TYPE 6
  23. #define ZNEXT_MBYTE_TYPE 7
  24. #define ZCOMPLETED_GCI_TYPE 8
  25. #define ZINVALID_COMMIT_TYPE 9
  26. #define MAX_FILE_DESCRIPTORS 40
  27. #define NO_MBYTE_IN_FILE 16
  28. #define PAGESIZE 8192
  29. #define NO_PAGES_IN_MBYTE 32
  30. #define NO_MBYTE_IN_FILE 16
  31. #define COMMITTRANSACTIONRECORDSIZE 9
  32. #define COMPLETEDGCIRECORDSIZE 2
  33. #define PAGEHEADERSIZE 32
  34. #define FILEDESCRIPTORHEADERSIZE 3
  35. #define FILEDESCRIPTORRECORDSIZE 48
  36. #define NEXTMBYTERECORDSIZE 1
  37. #define ABORTTRANSACTIONRECORDSIZE 3
  38. //----------------------------------------------------------------
  39. // 
  40. //----------------------------------------------------------------
  41. class AbortTransactionRecord {
  42.   friend NdbOut& operator<<(NdbOut&, const AbortTransactionRecord&);
  43. public:
  44.   bool check();
  45.   Uint32 getLogRecordSize();
  46. protected:
  47.   Uint32 m_recordType;
  48.   Uint32 m_transactionId1;
  49.   Uint32 m_transactionId2;
  50. };
  51. //----------------------------------------------------------------
  52. // 
  53. //----------------------------------------------------------------
  54. class NextMbyteRecord {
  55.   friend NdbOut& operator<<(NdbOut&, const NextMbyteRecord&);
  56. public:
  57.   bool check();
  58.   Uint32 getLogRecordSize();
  59. protected:
  60.   Uint32 m_recordType;
  61. };
  62. //----------------------------------------------------------------
  63. // 
  64. //----------------------------------------------------------------
  65. class PrepareOperationRecord {
  66.   friend NdbOut& operator<<(NdbOut&, const PrepareOperationRecord&);
  67. public:
  68.   bool check();
  69.   Uint32 getLogRecordSize(Uint32 wordsRead);
  70. protected:
  71.   Uint32 m_recordType;
  72.   Uint32 m_logRecordSize;
  73.   Uint32 m_hashValue;
  74.   Uint32 m_operationType; // 0 READ, 1 UPDATE, 2 INSERT, 3 DELETE
  75.   Uint32 m_attributeLength;
  76.   Uint32 m_keyLength;
  77.   Uint32 *m_keyInfo; // In this order
  78.   Uint32 *m_attrInfo;// In this order
  79. };
  80. //----------------------------------------------------------------
  81. // 
  82. //----------------------------------------------------------------
  83. class CompletedGCIRecord {
  84.   friend NdbOut& operator<<(NdbOut&, const CompletedGCIRecord&);
  85. public:
  86.   bool check();
  87.   Uint32 getLogRecordSize();
  88. protected:
  89.   Uint32 m_recordType;
  90.   Uint32 m_theCompletedGCI;
  91. };
  92. //----------------------------------------------------------------
  93. // 
  94. //----------------------------------------------------------------
  95. class NextLogRecord {
  96.   friend NdbOut& operator<<(NdbOut&, const NextLogRecord&);
  97. public:
  98.   bool check();
  99.   Uint32 getLogRecordSize(Uint32);
  100. protected:
  101.   Uint32 m_recordType;
  102. };
  103. //----------------------------------------------------------------
  104. // 
  105. //----------------------------------------------------------------
  106. class PageHeader {
  107.   friend NdbOut& operator<<(NdbOut&, const PageHeader&);
  108. public:
  109.   bool check();
  110.   Uint32 getLogRecordSize();
  111.   bool lastPage();
  112.   Uint32 lastWord();
  113. protected:
  114.   Uint32 m_checksum;
  115.   Uint32 m_lap;
  116.   Uint32 m_max_gci_completed;
  117.   Uint32 m_max_gci_started;
  118.   Uint32 m_next_page;
  119.   Uint32 m_previous_page;
  120.   Uint32 m_ndb_version;
  121.   Uint32 m_number_of_logfiles;
  122.   Uint32 m_current_page_index;
  123.   Uint32 m_old_prepare_file_number;
  124.   Uint32 m_old_prepare_page_reference;
  125.   Uint32 m_dirty_flag;
  126. /* Debug info Start */
  127.   Uint32 m_log_timer;
  128.   Uint32 m_page_i_value;
  129.   Uint32 m_place_written_from;
  130.   Uint32 m_page_no;
  131.   Uint32 m_file_no;
  132.   Uint32 m_word_written;
  133.   Uint32 m_in_writing_flag;
  134.   Uint32 m_prev_page_no;
  135.   Uint32 m_in_free_list;
  136. /* Debug info End */
  137. };
  138. //----------------------------------------------------------------
  139. // File descriptor.
  140. //----------------------------------------------------------------
  141. class FileDescriptorHeader {
  142. public:
  143.  Uint32 m_recordType;
  144.   Uint32 m_noOfDescriptors;
  145.   Uint32 m_fileNo;
  146. };
  147. class FileDescriptorRecord {
  148. public:
  149.   Uint32 m_maxGciCompleted[16];
  150.   Uint32 m_maxGciStarted[16];
  151.   Uint32 m_lastPreparedReference[16];
  152. };
  153. class FileDescriptor {
  154.   friend NdbOut& operator<<(NdbOut&, const FileDescriptor&);
  155. public:
  156.   bool check();
  157.   Uint32 getLogRecordSize();
  158. protected:
  159.   void printARecord( Uint32 ) const;
  160.   FileDescriptorHeader m_fdHeader;
  161.   FileDescriptorRecord m_fdRecord[1];
  162. };
  163. //----------------------------------------------------------------
  164. // 
  165. //----------------------------------------------------------------
  166. class CommitTransactionRecord {
  167.   friend NdbOut& operator<<(NdbOut&, const CommitTransactionRecord&);
  168. public:
  169.   bool check();
  170.   Uint32 getLogRecordSize();
  171. protected:
  172.   Uint32 m_recordType;
  173.   Uint32 m_tableId;
  174.   Uint32 m_schemaVersion;
  175.   Uint32 m_fragmentId;
  176.   Uint32 m_fileNumberOfPrepareOperation;
  177.   Uint32 m_startPageNumberOfPrepareOperation;
  178.   Uint32 m_startPageIndexOfPrepareOperation;
  179.   Uint32 m_stopPageNumberOfPrepareOperation;
  180.   Uint32 m_globalCheckpoint;
  181. };
  182. //----------------------------------------------------------------
  183. // 
  184. //----------------------------------------------------------------
  185. class InvalidCommitTransactionRecord {
  186.   friend NdbOut& operator<<(NdbOut&, const InvalidCommitTransactionRecord&);
  187. public:
  188.   bool check();
  189.   Uint32 getLogRecordSize();
  190. protected:
  191.   Uint32 m_recordType;
  192.   Uint32 m_tableId;
  193.   Uint32 m_fragmentId;
  194.   Uint32 m_fileNumberOfPrepareOperation;
  195.   Uint32 m_startPageNumberOfPrepareOperation;
  196.   Uint32 m_startPageIndexOfPrepareOperation;
  197.   Uint32 m_stopPageNumberOfPrepareOperation;
  198.   Uint32 m_globalCheckpoint;
  199. };
  200. //----------------------------------------------------------------
  201. // 
  202. //----------------------------------------------------------------
  203. struct NextLogRec {
  204. };
  205. struct NewPrepareOperation {
  206. };
  207. struct FragmentSplit {
  208. };