HugoOperations.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 HUGO_OPERATIONS_HPP
  14. #define HUGO_OPERATIONS_HPP
  15. #include <NDBT.hpp>
  16. #include <HugoCalculator.hpp>
  17. #include <UtilTransactions.hpp>
  18. #include <Vector.hpp>
  19. class HugoOperations : public UtilTransactions {
  20. public:  
  21.   HugoOperations(const NdbDictionary::Table&);
  22.   ~HugoOperations();
  23.   int startTransaction(Ndb*);
  24.   int closeTransaction(Ndb*);
  25.   NdbConnection* getTransaction();
  26.   void refresh();
  27.   void setTransactionId(Uint64);
  28.   
  29.   int pkInsertRecord(Ndb*,
  30.      int recordNo,
  31.      int numRecords = 1,
  32.      int updatesValue = 0);
  33.   
  34.   int pkWriteRecord(Ndb*,
  35.     int recordNo,
  36.     int numRecords = 1,
  37.     int updatesValue = 0);
  38.   
  39.   int pkReadRecord(Ndb*,
  40.    int recordNo,
  41.    int numRecords = 1,
  42.    NdbOperation::LockMode lm = NdbOperation::LM_Read);
  43.   
  44.   int pkUpdateRecord(Ndb*,
  45.      int recordNo,
  46.      int numRecords = 1,
  47.      int updatesValue = 0);
  48.   
  49.   int pkDeleteRecord(Ndb*,
  50.      int recordNo,
  51.      int numRecords = 1);
  52.   
  53.   int execute_Commit(Ndb*, 
  54.      AbortOption ao = AbortOnError);
  55.   int execute_NoCommit(Ndb*,
  56.        AbortOption ao = AbortOnError);
  57.   int execute_Rollback(Ndb*);
  58.   
  59.   int saveCopyOfRecord(int numRecords = 1);
  60.   int compareRecordToCopy(int numRecords = 1);
  61.   BaseString getRecordStr(int recordNum);
  62.   int getRecordGci(int recordNum);
  63.   int setValueForAttr(NdbOperation*,
  64.       int attrId, 
  65.       int rowId,
  66.       int updateId);
  67.   int equalForAttr(NdbOperation*,
  68.    int attrId, 
  69.    int rowId);
  70.   int verifyUpdatesValue(int updatesValue, int _numRows = 0);
  71.   int indexReadRecords(Ndb*, const char * idxName, int recordNo,
  72.        bool exclusive = false,
  73.        int records = 1);
  74.   
  75.   int indexUpdateRecord(Ndb*,
  76. const char * idxName, 
  77. int recordNo,
  78. int numRecords = 1,
  79. int updatesValue = 0);
  80.   int scanReadRecords(Ndb*, NdbScanOperation::LockMode = 
  81.       NdbScanOperation::LM_CommittedRead, 
  82.       int numRecords = 1);
  83.   int execute_async(Ndb*, ExecType, AbortOption = AbortOnError);
  84.   int wait_async(Ndb*, int timeout = -1);
  85. protected:
  86.   void allocRows(int rows);
  87.   void deallocRows();
  88.   Vector<NDBT_ResultRow*> rows;
  89.   HugoCalculator calc;
  90.   Vector<BaseString> savedRecords;
  91.   struct RsPair { NdbResultSet* m_result_set; int records; };
  92.   Vector<RsPair> m_result_sets;
  93.   Vector<RsPair> m_executed_result_sets;
  94.   NdbConnection* pTrans;
  95.   int m_async_reply;
  96.   int m_async_return;
  97.   friend void HugoOperations_async_callback(int, NdbConnection*, void*);
  98.   void callback(int res, NdbConnection*);
  99. };
  100. #endif