Mercurial > hg > orthanc-databases
comparison Framework/PostgreSQL/PostgreSQLTransaction.cpp @ 237:35598014f140
refactoring to remove GlobalProperties.cpp
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 08 Apr 2021 19:09:04 +0200 |
parents | d1b124d116c1 |
children | 16aac0287485 |
comparison
equal
deleted
inserted
replaced
236:d1d2edbbe6fb | 237:35598014f140 |
---|---|
44 { | 44 { |
45 LOG(INFO) << "PostgreSQL: An active PostgreSQL transaction was dismissed"; | 45 LOG(INFO) << "PostgreSQL: An active PostgreSQL transaction was dismissed"; |
46 | 46 |
47 try | 47 try |
48 { | 48 { |
49 database_.Execute("ABORT"); | 49 database_.ExecuteMultiLines("ABORT"); |
50 } | 50 } |
51 catch (Orthanc::OrthancException&) | 51 catch (Orthanc::OrthancException&) |
52 { | 52 { |
53 // Ignore possible exceptions due to connection loss | 53 // Ignore possible exceptions due to connection loss |
54 } | 54 } |
62 { | 62 { |
63 LOG(ERROR) << "PostgreSQL: Beginning a transaction twice!"; | 63 LOG(ERROR) << "PostgreSQL: Beginning a transaction twice!"; |
64 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | 64 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); |
65 } | 65 } |
66 | 66 |
67 database_.Execute("BEGIN"); | 67 database_.ExecuteMultiLines("BEGIN"); |
68 | 68 |
69 switch (type) | 69 switch (type) |
70 { | 70 { |
71 case TransactionType_ReadWrite: | 71 case TransactionType_ReadWrite: |
72 database_.Execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE READ WRITE"); | 72 database_.ExecuteMultiLines("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE READ WRITE"); |
73 break; | 73 break; |
74 | 74 |
75 case TransactionType_ReadOnly: | 75 case TransactionType_ReadOnly: |
76 database_.Execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY"); | 76 database_.ExecuteMultiLines("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY"); |
77 break; | 77 break; |
78 | 78 |
79 default: | 79 default: |
80 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); | 80 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); |
81 } | 81 } |
91 LOG(ERROR) << "PostgreSQL: Attempting to rollback a nonexistent transaction. " | 91 LOG(ERROR) << "PostgreSQL: Attempting to rollback a nonexistent transaction. " |
92 << "Did you remember to call Begin()?"; | 92 << "Did you remember to call Begin()?"; |
93 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | 93 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); |
94 } | 94 } |
95 | 95 |
96 database_.Execute("ABORT"); | 96 database_.ExecuteMultiLines("ABORT"); |
97 isOpen_ = false; | 97 isOpen_ = false; |
98 } | 98 } |
99 | 99 |
100 | 100 |
101 void PostgreSQLTransaction::Commit() | 101 void PostgreSQLTransaction::Commit() |
105 LOG(ERROR) << "PostgreSQL: Attempting to roll back a nonexistent transaction. " | 105 LOG(ERROR) << "PostgreSQL: Attempting to roll back a nonexistent transaction. " |
106 << "Did you remember to call Begin()?"; | 106 << "Did you remember to call Begin()?"; |
107 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | 107 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); |
108 } | 108 } |
109 | 109 |
110 database_.Execute("COMMIT"); | 110 database_.ExecuteMultiLines("COMMIT"); |
111 isOpen_ = false; | 111 isOpen_ = false; |
112 } | 112 } |
113 | 113 |
114 | 114 |
115 IResult* PostgreSQLTransaction::Execute(IPrecompiledStatement& statement, | 115 IResult* PostgreSQLTransaction::Execute(IPrecompiledStatement& statement, |