diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-04-11 19:46:45 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-04-11 19:46:45 -0700 |
commit | c3bed1dab8ec429d100d383ad93410d1cfaa16fb (patch) | |
tree | d54859fa4910a9b443892dc60e9495a6143c2cba /platform/default/sqlite3.hpp | |
parent | be47e35a975ff7c43755e8c3898512147bb37904 (diff) | |
download | qtlocation-mapboxgl-c3bed1dab8ec429d100d383ad93410d1cfaa16fb.tar.gz |
[core] Fix race condition that could lead to a UNIQUE constraint failure (#4677)
Diffstat (limited to 'platform/default/sqlite3.hpp')
-rw-r--r-- | platform/default/sqlite3.hpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/platform/default/sqlite3.hpp b/platform/default/sqlite3.hpp index abe83a2d44..57ee18e9f3 100644 --- a/platform/default/sqlite3.hpp +++ b/platform/default/sqlite3.hpp @@ -88,5 +88,29 @@ private: sqlite3_stmt *stmt = nullptr; }; +class Transaction { +private: + Transaction(const Transaction&) = delete; + Transaction(Transaction&&) = delete; + Transaction& operator=(const Transaction&) = delete; + +public: + enum Mode { + Deferred, + Immediate, + Exclusive + }; + + Transaction(Database&, Mode = Deferred); + ~Transaction(); + + void commit(); + void rollback(); + +private: + Database& db; + bool needRollback = true; +}; + } } |