Mercurial > hg > orthanc-databases
comparison Framework/MySQL/MySQLDatabase.h @ 135:e26690365c25
MySQL: Added an advisory lock to avoid race conditions during database setup
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 08 May 2019 21:09:18 +0200 |
parents | 714c5d2bee76 |
children | 52b3859ee0b7 |
comparison
equal
deleted
inserted
replaced
134:cc3dc759c989 | 135:e26690365c25 |
---|---|
42 | 42 |
43 void OpenInternal(const char* database); | 43 void OpenInternal(const char* database); |
44 | 44 |
45 void Close(); | 45 void Close(); |
46 | 46 |
47 bool RunAdvisoryLockStatement(const std::string& statement); | |
48 | |
47 public: | 49 public: |
48 MySQLDatabase(const MySQLParameters& parameters); | 50 MySQLDatabase(const MySQLParameters& parameters); |
49 | 51 |
50 virtual ~MySQLDatabase(); | 52 virtual ~MySQLDatabase(); |
51 | 53 |
68 const std::string& variable); | 70 const std::string& variable); |
69 | 71 |
70 bool LookupGlobalIntegerVariable(int64_t& value, | 72 bool LookupGlobalIntegerVariable(int64_t& value, |
71 const std::string& variable); | 73 const std::string& variable); |
72 | 74 |
75 bool AcquireAdvisoryLock(int32_t lock); | |
76 | |
77 bool ReleaseAdvisoryLock(int32_t lock); | |
78 | |
73 void AdvisoryLock(int32_t lock); | 79 void AdvisoryLock(int32_t lock); |
74 | 80 |
75 void Execute(const std::string& sql, | 81 void Execute(const std::string& sql, |
76 bool arobaseSeparator); | 82 bool arobaseSeparator); |
77 | 83 |
91 virtual ITransaction* CreateTransaction(bool isImplicit); | 97 virtual ITransaction* CreateTransaction(bool isImplicit); |
92 | 98 |
93 static void GlobalFinalization(); | 99 static void GlobalFinalization(); |
94 | 100 |
95 static bool IsValidDatabaseIdentifier(const std::string& s); | 101 static bool IsValidDatabaseIdentifier(const std::string& s); |
102 | |
103 class TransientAdvisoryLock | |
104 { | |
105 private: | |
106 MySQLDatabase& database_; | |
107 int32_t lock_; | |
108 | |
109 public: | |
110 TransientAdvisoryLock(MySQLDatabase& database, | |
111 int32_t lock); | |
112 | |
113 ~TransientAdvisoryLock(); | |
114 }; | |
96 }; | 115 }; |
97 } | 116 } |