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

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. #ifndef UTIL_TRANSACTIONS_HPP
  14. #define UTIL_TRANSACTIONS_HPP
  15. #include <NDBT.hpp>
  16. typedef int (ReadCallBackFn)(NDBT_ResultRow*);
  17. class UtilTransactions {
  18. public:
  19.   enum ScanLock {
  20.     SL_Read = 0,
  21.     SL_ReadHold = 1,
  22.     SL_Exclusive = 2
  23.   };
  24.   UtilTransactions(const NdbDictionary::Table&);
  25.   UtilTransactions(Ndb* ndb, const char * tableName);
  26.   int clearTable(Ndb*, 
  27.  int records = 0,
  28.  int parallelism = 0);
  29.   
  30.   // Delete all records from the table using a scan
  31.   int clearTable1(Ndb*, 
  32.   int records = 0,
  33.   int parallelism = 0);
  34.   // Delete all records from the table using a scan
  35.   // Using batching
  36.   int clearTable2(Ndb*, 
  37.   int records = 0,
  38.   int parallelism = 0);
  39.   
  40.   int clearTable3(Ndb*, 
  41.   int records = 0,
  42.   int parallelism = 0);
  43.   
  44.   int selectCount(Ndb*, 
  45.   int parallelism = 0,
  46.   int* count_rows = NULL,
  47.   NdbOperation::LockMode lm = NdbOperation::LM_CommittedRead,
  48.   NdbConnection* pTrans = NULL);
  49.   int scanReadRecords(Ndb*,
  50.       int parallelism,
  51.       NdbOperation::LockMode lm,
  52.       int records,
  53.       int noAttribs,
  54.       int* attrib_list,
  55.       ReadCallBackFn* fn = NULL);
  56.   int verifyIndex(Ndb*,
  57.   const char* indexName,
  58.   int parallelism = 0,
  59.   bool transactional = false);
  60.   int copyTableData(Ndb*,
  61. const char* destName);
  62.   
  63. private:
  64.   static int takeOverAndDeleteRecord(Ndb*, 
  65.      NdbOperation*);
  66.   int addRowToDelete(Ndb* pNdb, 
  67.      NdbConnection* pDelTrans,
  68.      NdbOperation* pOrgOp);
  69.   
  70.   int addRowToInsert(Ndb* pNdb, 
  71.      NdbConnection* pInsTrans,
  72.      NDBT_ResultRow & row,
  73.      const char* insertTabName);
  74.   int verifyUniqueIndex(Ndb*,
  75. const NdbDictionary::Index *,
  76. int parallelism = 0,
  77. bool transactional = false);
  78.   int scanAndCompareUniqueIndex(Ndb* pNdb,
  79. const NdbDictionary::Index *,
  80. int parallelism,
  81. bool transactional);
  82.   
  83.   int readRowFromTableAndIndex(Ndb* pNdb,
  84.        NdbConnection* pTrans,
  85.        const NdbDictionary::Index *,
  86.        NDBT_ResultRow& row );
  87.   int verifyOrderedIndex(Ndb*,
  88.  const NdbDictionary::Index *,
  89.  int parallelism = 0,
  90.  bool transactional = false);
  91.   
  92.   int get_values(NdbOperation* op, NDBT_ResultRow& dst);
  93.   int equal(const NdbDictionary::Table*, NdbOperation*, const NDBT_ResultRow&);
  94.   int equal(const NdbDictionary::Index*, NdbOperation*, const NDBT_ResultRow&);
  95. protected:
  96.   int m_defaultClearMethod;
  97.   const NdbDictionary::Table& tab;
  98. };
  99. #endif