1 /***************************************************************************
2 * Copyright (C) 2007 by www.databasecache.com *
3 * Contact: praba_tuty@databasecache.com *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 ***************************************************************************/
40 InsertHashIndexOperation
= 3,
41 UpdateHashIndexOperation
= 4,
42 DeleteHashIndexOperation
= 5
48 OperationType opType_
;
52 printf("<UndoLogInfo>\n");
53 printf(" <Size> %d </Size>\n", size_
);
54 printf(" <OperationType> %d </OperationType>\n", opType_
);
55 printf(" <TuplePtr> %x </TuplePtr>\n", ptrToTuple_
);
56 printf("</UndoLogInfo>\n");
70 { tblPtr_
= tuple_
= keyPtr_
= indexPtr_
= bucket_
= NULL
; }
78 IsolationLevel isoLevel_
;
80 TransHasNode
*hasLockList_
;
82 UndoLogInfo
*firstUndoLog_
;
84 LockHashNode
*waitLock_
;
86 DbRetVal
releaseAllLocks(LockManager
*lockManager_
);
88 void updateWaitLock(LockHashNode
*node
) { waitLock_
= node
; }
89 void removeWaitLock() { waitLock_
= NULL
; }
90 DbRetVal
insertIntoHasList(Database
*sysdb
, LockHashNode
*node
);
91 DbRetVal
removeFromHasList(Database
*sysdb
, void *tuple
);
92 bool findInHasList(Database
*sysdb
, LockHashNode
*node
);
94 DbRetVal
appendUndoLog(Database
*sysdb
, OperationType type
, void *data
, size_t size
);
95 DbRetVal
appendLogicalUndoLog(Database
*sysdb
, OperationType type
, void *data
, size_t size
, void *indexPtr
);
96 DbRetVal
appendLogicalHashUndoLog(Database
*sysdb
, OperationType type
, void *data
, size_t size
);
97 UndoLogInfo
* createUndoLog(Database
*sysdb
, OperationType type
, void *data
,
98 size_t size
, DbRetVal
*rv
);
99 void addAtBegin(UndoLogInfo
* logInfo
);
101 UndoLogInfo
* popUndoLog();
102 DbRetVal
removeUndoLogs(Database
*sysdb
);
103 DbRetVal
applyUndoLogs(Database
*sysdb
);
105 void printDebugInfo(Database
*sysdb
);
108 class TransactionManager
111 TransactionManager() { }
112 ~TransactionManager() {}
113 //Transaction *trans;
115 Transaction
*firstTrans
;
117 void setFirstTrans(Transaction
*trans
);
118 void printUsageStatistics();
119 void printDebugInfo(Database
*sysdb
);
121 DbRetVal
startTransaction(LockManager
*lManager
, IsolationLevel level
);
122 DbRetVal
commit(LockManager
*lManager
);
123 DbRetVal
rollback(LockManager
*lManager
, Transaction
*t
=NULL
);