Skip to content
This repository was archived by the owner on Sep 27, 2019. It is now read-only.

Commit e506f17

Browse files
committed
remove default read_only for transactions (#1396:1-3)
1 parent 50411cb commit e506f17

File tree

4 files changed

+32
-31
lines changed

4 files changed

+32
-31
lines changed

src/concurrency/transaction_context.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,24 +48,26 @@ namespace concurrency {
4848
* i : insert
4949
*/
5050

51-
TransactionContext::TransactionContext(const size_t thread_id,
51+
TransactionContext::TransactionContext(bool read_only, const size_t thread_id,
5252
const IsolationLevelType isolation,
5353
const cid_t &read_id) {
54-
Init(thread_id, isolation, read_id);
54+
Init(read_only, thread_id, isolation, read_id);
5555
}
5656

57-
TransactionContext::TransactionContext(const size_t thread_id,
57+
TransactionContext::TransactionContext(bool read_only, const size_t thread_id,
5858
const IsolationLevelType isolation,
5959
const cid_t &read_id,
6060
const cid_t &commit_id) {
61-
Init(thread_id, isolation, read_id, commit_id);
61+
Init(read_only, thread_id, isolation, read_id, commit_id);
6262
}
6363

6464
TransactionContext::~TransactionContext() {}
6565

66-
void TransactionContext::Init(const size_t thread_id,
66+
void TransactionContext::Init(bool read_only, const size_t thread_id,
6767
const IsolationLevelType isolation,
6868
const cid_t &read_id, const cid_t &commit_id) {
69+
read_only_ = read_only;
70+
6971
read_id_ = read_id;
7072

7173
// commit id can be set at a transaction's commit phase.

src/concurrency/transaction_manager.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ ConflictAvoidanceType TransactionManager::conflict_avoidance_ =
3232
ConflictAvoidanceType::ABORT;
3333

3434
TransactionContext *TransactionManager::BeginTransaction(
35-
const size_t thread_id, const IsolationLevelType type, bool read_only) {
35+
bool read_only, const size_t thread_id, const IsolationLevelType type) {
3636
TransactionContext *txn = nullptr;
3737

3838
if (type == IsolationLevelType::SNAPSHOT) {
@@ -45,9 +45,10 @@ TransactionContext *TransactionManager::BeginTransaction(
4545
cid_t commit_id = EpochManagerFactory::GetInstance().EnterEpoch(
4646
thread_id, TimestampType::COMMIT);
4747

48-
txn = new TransactionContext(thread_id, type, read_id, commit_id);
48+
txn = new TransactionContext(read_only, thread_id, type, read_id,
49+
commit_id);
4950
} else {
50-
txn = new TransactionContext(thread_id, type, read_id);
51+
txn = new TransactionContext(read_only, thread_id, type, read_id);
5152
}
5253

5354
} else {
@@ -58,11 +59,7 @@ TransactionContext *TransactionManager::BeginTransaction(
5859
// transaction processing with decentralized epoch manager
5960
cid_t read_id = EpochManagerFactory::GetInstance().EnterEpoch(
6061
thread_id, TimestampType::READ);
61-
txn = new TransactionContext(thread_id, type, read_id);
62-
}
63-
64-
if (read_only) {
65-
txn->SetReadOnly();
62+
txn = new TransactionContext(read_only, thread_id, type, read_id);
6663
}
6764

6865
txn->SetTimestamp(function::DateFunctions::Now());

src/include/concurrency/transaction_context.h

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,25 +44,27 @@ class TransactionContext : public Printable {
4444
TransactionContext(TransactionContext const &) = delete;
4545

4646
public:
47-
TransactionContext(const size_t thread_id, const IsolationLevelType isolation,
48-
const cid_t &read_id);
47+
TransactionContext(bool read_only, const size_t thread_id,
48+
const IsolationLevelType isolation, const cid_t &read_id);
4949

50-
TransactionContext(const size_t thread_id, const IsolationLevelType isolation,
51-
const cid_t &read_id, const cid_t &commit_id);
50+
TransactionContext(bool read_only, const size_t thread_id,
51+
const IsolationLevelType isolation, const cid_t &read_id,
52+
const cid_t &commit_id);
5253

5354
/**
5455
* @brief Destroys the object.
5556
*/
5657
~TransactionContext();
5758

5859
private:
59-
void Init(const size_t thread_id, const IsolationLevelType isolation,
60-
const cid_t &read_id) {
61-
Init(thread_id, isolation, read_id, read_id);
60+
void Init(bool read_only, const size_t thread_id,
61+
const IsolationLevelType isolation, const cid_t &read_id) {
62+
Init(read_only, thread_id, isolation, read_id, read_id);
6263
}
6364

64-
void Init(const size_t thread_id, const IsolationLevelType isolation,
65-
const cid_t &read_id, const cid_t &commit_id);
65+
void Init(bool read_only, const size_t thread_id,
66+
const IsolationLevelType isolation, const cid_t &read_id,
67+
const cid_t &commit_id);
6668

6769
public:
6870
//===--------------------------------------------------------------------===//
@@ -265,12 +267,6 @@ class TransactionContext : public Printable {
265267
*/
266268
bool IsReadOnly() const { return read_only_; }
267269

268-
/**
269-
* @brief mark this context as read only
270-
*
271-
*/
272-
void SetReadOnly() { read_only_ = true; }
273-
274270
/**
275271
* @brief Gets the isolation level.
276272
*

src/include/concurrency/transaction_manager.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,19 @@ class TransactionManager {
214214
current_txn->SetResult(result);
215215
}
216216

217+
TransactionContext *BeginTransaction() { return BeginTransaction(false); }
218+
219+
TransactionContext *BeginTransaction(const size_t thread_id) {
220+
return BeginTransaction(false, thread_id, isolation_level_);
221+
}
222+
217223
TransactionContext *BeginTransaction(const IsolationLevelType type) {
218-
return BeginTransaction(0, type, false);
224+
return BeginTransaction(false, 0, type);
219225
}
220226

221227
TransactionContext *BeginTransaction(
222-
const size_t thread_id = 0,
223-
const IsolationLevelType type = isolation_level_, bool read_only = false);
228+
bool read_only, const size_t thread_id = 0,
229+
const IsolationLevelType type = isolation_level_);
224230

225231
/**
226232
* @brief Ends a transaction.

0 commit comments

Comments
 (0)