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 }