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

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 NDBT_DATA_SET_TRANSACTION_HPP
  14. #define NDBT_DATA_SET_TRANSACTION_HPP
  15. #include "NDBT_Table.hpp"
  16. #include <NdbApi.hpp>
  17. class NDBT_DataSet;
  18. /**
  19.  * This class contains a bunch a methods
  20.  * that operates on NDB together with a NDBT_DataSet
  21.  * using <b>one</b> transaction
  22.  */
  23. class NDBT_DataSetTransaction {
  24. public:
  25.   /**
  26.    * Store the data into ndb
  27.    */
  28.   static void insert(Ndb * theNdbObject,
  29.      const NDBT_DataSet *,
  30.      bool rollback = false);
  31.   
  32.   /**
  33.    * Read data (using pk) from ndb
  34.    */
  35.   static void readByPk(Ndb * theNdbObject,
  36.        NDBT_DataSet *,
  37.        bool rollback = false);
  38.   
  39.   /**
  40.    * Update data using pk
  41.    *
  42.    */
  43.   static void updateByPk(Ndb * theNdbObject,
  44.  const NDBT_DataSet *,
  45.  bool rollback = false);
  46.   /**
  47.    * Delete 
  48.    */
  49.   static void deleteByPk(Ndb * theNdbObject,
  50.  const NDBT_DataSet *,
  51.  bool rollback = false);
  52. };
  53. class NDBT_DataSetAsyncTransaction {
  54. public:
  55.   enum OperationType {
  56.     OT_Insert,
  57.     OT_ReadByPk,
  58.     OT_UpdateByPk,
  59.     OT_DeleteByPk
  60.   };
  61.   /**
  62.    * A callback for the NDBT_DataSetAsyncTransaction 
  63.    * interface.
  64.    *
  65.    * The callback method returns:
  66.    * - the operation performed
  67.    * - the data set
  68.    * - if the transaction was commited or aborted
  69.    */
  70.   typedef (* NDBT_DataSetAsyncTransactionCallback)(OperationType,
  71.    const NDBT_DataSet *,
  72.    bool commit,
  73.    void * anyObject);
  74.   /**
  75.    * Store the data into ndb
  76.    */
  77.   static void insert(Ndb * theNdbObject,
  78.      const NDBT_DataSet *,
  79.      bool rollback = false,
  80.      NDBT_DataSetAsyncTransactionCallback fun,
  81.      void * anyObject);
  82.   
  83.   /**
  84.    * Read data (using pk) from ndb
  85.    */
  86.   static void readByPk(Ndb * theNdbObject,
  87.        NDBT_DataSet *,
  88.        bool rollback = false,
  89.        NDBT_DataSetAsyncTransactionCallback fun,
  90.        void * anyObject);
  91.   
  92.   /**
  93.    * Update data using pk
  94.    *
  95.    */
  96.   static void updateByPk(Ndb * theNdbObject,
  97.  const NDBT_DataSet *,
  98.  bool rollback = false,
  99.  NDBT_DataSetAsyncTransactionCallback fun,
  100.  void * anyObject);
  101.   /**
  102.    * Delete 
  103.    */
  104.   static void deleteByPk(Ndb * theNdbObject,
  105.  const NDBT_DataSet *,
  106.  bool rollback = false,
  107.  NDBT_DataSetAsyncTransactionCallback fun,
  108.  void * anyObject);
  109.   
  110. };
  111. class NDBT_DataSetBulkOperation {
  112. public:
  113.   /**
  114.    * Store the data into ndb
  115.    */
  116.   static void insert(Ndb * theNdbObject,
  117.      const NDBT_DataSet *,
  118.      int parallellTransactions = 1,
  119.      int operationsPerTransaction = 10);
  120.   
  121.   /**
  122.    * Read data (using pk) from ndb
  123.    */
  124.   static void readByPk(Ndb * theNdbObject,
  125.        NDBT_DataSet *,
  126.        int parallellTransactions = 1,
  127.        int operationsPerTransaction = 10);
  128.   
  129.   /**
  130.    * Update data using pk
  131.    *
  132.    */
  133.   static void updateByPk(Ndb * theNdbObject,
  134.  const NDBT_DataSet *,
  135.  int parallellTransactions = 1,
  136.  int operationsPerTransaction = 10);
  137.   /**
  138.    * Delete 
  139.    */
  140.   static void deleteByPk(Ndb * theNdbObject,
  141.  const NDBT_DataSet *,
  142.  int parallellTransactions = 1,
  143.  int operationsPerTransaction = 10);
  144. };
  145. #endif