@@ -31,14 +31,19 @@ void PostgresTransaction::Rollback() {
31
31
}
32
32
}
33
33
34
+ static string GetBeginTransactionQuery (AccessMode access_mode) {
35
+ string result = " BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ" ;
36
+ if (access_mode == AccessMode::READ_ONLY) {
37
+ result += " READ ONLY" ;
38
+ }
39
+ return result;
40
+ }
41
+
34
42
PostgresConnection &PostgresTransaction::GetConnection () {
35
43
auto &con = GetConnectionRaw ();
36
44
if (transaction_state == PostgresTransactionState::TRANSACTION_NOT_YET_STARTED) {
37
45
transaction_state = PostgresTransactionState::TRANSACTION_STARTED;
38
- string query = " BEGIN TRANSACTION" ;
39
- if (access_mode == AccessMode::READ_ONLY) {
40
- query += " READ ONLY" ;
41
- }
46
+ string query = GetBeginTransactionQuery (access_mode);
42
47
con.Execute (query);
43
48
}
44
49
return con;
@@ -56,10 +61,7 @@ unique_ptr<PostgresResult> PostgresTransaction::Query(const string &query) {
56
61
auto &con = GetConnectionRaw ();
57
62
if (transaction_state == PostgresTransactionState::TRANSACTION_NOT_YET_STARTED) {
58
63
transaction_state = PostgresTransactionState::TRANSACTION_STARTED;
59
- string transaction_start = " BEGIN TRANSACTION" ;
60
- if (access_mode == AccessMode::READ_ONLY) {
61
- transaction_start += " READ ONLY" ;
62
- }
64
+ string transaction_start = GetBeginTransactionQuery (access_mode);
63
65
transaction_start += " ;\n " ;
64
66
return con.Query (transaction_start + query);
65
67
}
@@ -70,10 +72,7 @@ vector<unique_ptr<PostgresResult>> PostgresTransaction::ExecuteQueries(const str
70
72
auto &con = GetConnectionRaw ();
71
73
if (transaction_state == PostgresTransactionState::TRANSACTION_NOT_YET_STARTED) {
72
74
transaction_state = PostgresTransactionState::TRANSACTION_STARTED;
73
- string transaction_start = " BEGIN TRANSACTION" ;
74
- if (access_mode == AccessMode::READ_ONLY) {
75
- transaction_start += " READ ONLY" ;
76
- }
75
+ string transaction_start = GetBeginTransactionQuery (access_mode);
77
76
transaction_start += " ;\n " ;
78
77
return con.ExecuteQueries (transaction_start + queries);
79
78
}
0 commit comments