summaryrefslogtreecommitdiff
path: root/ndb/test/include/HugoTransactions.hpp
blob: 5ff1fef16bce8dc241ff820bc7a324091c2e49a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/* Copyright (C) 2003 MySQL AB

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

#ifndef HUGO_TRANSACTIONS_HPP
#define HUGO_TRANSACTIONS_HPP


#include <NDBT.hpp>
#include <HugoCalculator.hpp>
#include <HugoOperations.hpp>


class HugoTransactions : public HugoOperations {
public:
  HugoTransactions(const NdbDictionary::Table&);
  ~HugoTransactions();
  int createEvent(Ndb*);
  int eventOperation(Ndb*, void* stats,
		     int records);
  int loadTable(Ndb*, 
		int records,
		int batch = 512,
		bool allowConstraintViolation = true,
		int doSleep = 0);
  int scanReadRecords(Ndb*, 
		      int records,
		      int abort = 0,
		      int parallelism = 1,
		      bool committed = false);
  int scanReadCommittedRecords(Ndb*, 
			      int records,
			      int abort = 0,
			      int parallelism = 1);
  int pkReadRecords(Ndb*, 
		    int records,
		    int batchsize = 1,
		    bool dirty = false);

  int scanUpdateRecords(Ndb*, 
			int records,
			int abort = 0,
			int parallelism = 1);

  int scanUpdateRecords1(Ndb*, 
			 int records,
			 int abort = 0,
			 int parallelism = 1);
  int scanUpdateRecords2(Ndb*, 
			 int records,
			 int abort = 0,
			 int parallelism = 1);
  int scanUpdateRecords3(Ndb*, 
			 int records,
			 int abort = 0,
			 int parallelism = 1);

  int pkUpdateRecords(Ndb*, 
		      int records,
		      int batchsize = 1,
		      int doSleep = 0);
  int pkInterpretedUpdateRecords(Ndb*, 
				 int records,
				 int batchsize = 1);
  int pkDelRecords(Ndb*, 
		   int records = 0,
		   int batch = 1,
		   bool allowConstraintViolation = true,
		   int doSleep = 0);
  int lockRecords(Ndb*,
		  int records,
		  int percentToLock = 1,
		  int lockTime = 1000);
  int fillTable(Ndb*,
		int batch=512);

  /**
   * Reading using UniqHashIndex with key = pk
   */
  int indexReadRecords(Ndb*, 
		       const char * idxName,
		       int records,
		       int batchsize = 1);

  int indexUpdateRecords(Ndb*,
			 const char * idxName,
			 int records,
			 int batchsize = 1);
  
protected:  
  int takeOverAndUpdateRecord(Ndb*, 
			      NdbOperation*);
#if 0
  int setValueForAttr(NdbOperation*,
		      int attrId, 
		      int rowId,
		      int updateId);
public:
  int equalForAttr(NdbOperation*,
		   int attrId, 
		   int rowId);
#endif
  
  int addRowToUpdate(Ndb* pNdb, 
		     NdbConnection* pUpdTrans,
		     NdbOperation* pOrgOp);
  

  NDBT_ResultRow row;
  int m_defaultScanUpdateMethod;
};




#endif