Kuzu C++ API
Loading...
Searching...
No Matches
transaction_context.h
Go to the documentation of this file.
1#pragma once
2
3#include <mutex>
4
5#include "transaction.h"
6
7namespace kuzu {
8
9namespace main {
10class ClientContext;
11}
12
13namespace transaction {
14
31enum class TransactionMode : uint8_t { AUTO = 0, MANUAL = 1 };
32
34public:
35 explicit TransactionContext(main::ClientContext& clientContext);
37
38 bool isAutoTransaction() const { return mode == TransactionMode::AUTO; }
39
42 void beginAutoTransaction(bool readOnlyStatement);
44 void validateManualTransaction(bool readOnlyStatement) const;
45
46 void commit();
47 void rollback();
48
49 TransactionMode getTransactionMode() const { return mode; }
50 bool hasActiveTransaction() const { return activeTransaction != nullptr; }
51 Transaction* getActiveTransaction() const { return activeTransaction.get(); }
52
54
55private:
56 void beginTransactionInternal(TransactionType transactionType);
57
58private:
59 std::mutex mtx;
60 main::ClientContext& clientContext;
61 TransactionMode mode;
62 // TODO(Guodong): Should hold a raw pointer. Move ownership to TransactionManager.
63 std::unique_ptr<Transaction> activeTransaction;
64};
65
66} // namespace transaction
67} // namespace kuzu
#define KUZU_API
Definition api.h:25
Contain client side configuration. We make profiler associated per query, so profiler is not maintain...
Definition client_context.h:68
bool isAutoTransaction() const
Definition transaction_context.h:38
bool hasActiveTransaction() const
Definition transaction_context.h:50
TransactionContext(main::ClientContext &clientContext)
Transaction * getActiveTransaction() const
Definition transaction_context.h:51
void validateManualTransaction(bool readOnlyStatement) const
void beginAutoTransaction(bool readOnlyStatement)
TransactionMode getTransactionMode() const
Definition transaction_context.h:49
Definition transaction.h:76
Definition bind_input.h:16
Definition kuzu_fwd.h:58
TransactionType
Definition transaction.h:34
TransactionMode
Definition transaction_context.h:31
@ MANUAL
Definition transaction_context.h:31
@ AUTO
Definition transaction_context.h:31
Definition array_utils.h:7