Replace begin_transaction with begin_read_transaction and begin_write_transaction.
This commit is contained in:
parent
4c803a1a75
commit
b34cfef4d0
@ -288,8 +288,11 @@ class DialogDbImpl final : public DialogDbSyncInterface {
|
||||
return std::move(notification_groups);
|
||||
}
|
||||
|
||||
Status begin_transaction() final {
|
||||
return db_.begin_transaction();
|
||||
Status begin_read_transaction() final {
|
||||
return db_.begin_read_transaction();
|
||||
}
|
||||
Status begin_write_transaction() final {
|
||||
return db_.begin_write_transaction();
|
||||
}
|
||||
Status commit_transaction() final {
|
||||
return db_.commit_transaction();
|
||||
@ -463,7 +466,7 @@ class DialogDbAsync final : public DialogDbAsyncInterface {
|
||||
if (pending_writes_.empty()) {
|
||||
return;
|
||||
}
|
||||
sync_db_->begin_transaction().ensure();
|
||||
sync_db_->begin_write_transaction().ensure();
|
||||
for (auto &query : pending_writes_) {
|
||||
query.set_value(Unit());
|
||||
}
|
||||
|
@ -55,7 +55,8 @@ class DialogDbSyncInterface {
|
||||
|
||||
virtual Result<int32> get_secret_chat_count(FolderId folder_id) = 0;
|
||||
|
||||
virtual Status begin_transaction() = 0;
|
||||
virtual Status begin_read_transaction() = 0;
|
||||
virtual Status begin_write_transaction() = 0;
|
||||
virtual Status commit_transaction() = 0;
|
||||
};
|
||||
|
||||
|
@ -1313,7 +1313,7 @@ void LanguagePackManager::save_strings_to_database(SqliteKeyValue *kv, int32 new
|
||||
return;
|
||||
}
|
||||
|
||||
kv->begin_transaction().ensure();
|
||||
kv->begin_write_transaction().ensure();
|
||||
for (auto str : strings) {
|
||||
if (!is_valid_key(str.first)) {
|
||||
LOG(ERROR) << "Have invalid key \"" << str.first << '"';
|
||||
|
@ -809,8 +809,8 @@ class MessagesDbImpl final : public MessagesDbSyncInterface {
|
||||
return std::move(result);
|
||||
}
|
||||
|
||||
Status begin_transaction() final {
|
||||
return db_.begin_transaction();
|
||||
Status begin_write_transaction() final {
|
||||
return db_.begin_write_transaction();
|
||||
}
|
||||
Status commit_transaction() final {
|
||||
return db_.commit_transaction();
|
||||
@ -1176,7 +1176,7 @@ class MessagesDbAsync final : public MessagesDbAsyncInterface {
|
||||
if (pending_writes_.empty()) {
|
||||
return;
|
||||
}
|
||||
sync_db_->begin_transaction().ensure();
|
||||
sync_db_->begin_write_transaction().ensure();
|
||||
for (auto &query : pending_writes_) {
|
||||
query.set_value(Unit());
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ class MessagesDbSyncInterface {
|
||||
virtual Result<MessagesDbCallsResult> get_calls(MessagesDbCallsQuery query) = 0;
|
||||
virtual Result<MessagesDbFtsResult> get_messages_fts(MessagesDbFtsQuery query) = 0;
|
||||
|
||||
virtual Status begin_transaction() = 0;
|
||||
virtual Status begin_write_transaction() = 0;
|
||||
virtual Status commit_transaction() = 0;
|
||||
};
|
||||
|
||||
|
@ -27387,7 +27387,7 @@ MessagesManager::MessageNotificationGroup MessagesManager::get_message_notificat
|
||||
CHECK(d != nullptr);
|
||||
} else if (G()->parameters().use_message_db) {
|
||||
auto *dialog_db = G()->td_db()->get_dialog_db_sync();
|
||||
dialog_db->begin_transaction().ensure(); // read transaction
|
||||
dialog_db->begin_read_transaction().ensure();
|
||||
auto r_value = dialog_db->get_notification_group(group_id);
|
||||
if (r_value.is_ok()) {
|
||||
VLOG(notifications) << "Loaded " << r_value.ok() << " from database by " << group_id;
|
||||
@ -27682,7 +27682,7 @@ vector<NotificationGroupKey> MessagesManager::get_message_notification_group_key
|
||||
<< from_group_key;
|
||||
|
||||
auto *dialog_db = G()->td_db()->get_dialog_db_sync();
|
||||
dialog_db->begin_transaction().ensure(); // read transaction
|
||||
dialog_db->begin_read_transaction().ensure();
|
||||
Result<vector<NotificationGroupKey>> r_notification_group_keys =
|
||||
dialog_db->get_notification_groups_by_last_notification_date(from_group_key, limit);
|
||||
r_notification_group_keys.ensure();
|
||||
|
@ -6924,8 +6924,7 @@ void StickersManager::on_get_emoji_keywords_difference(
|
||||
}
|
||||
version = keywords->version_;
|
||||
auto *pmc = G()->td_db()->get_sqlite_sync_pmc();
|
||||
pmc->begin_transaction().ensure();
|
||||
// set must be the first operation to start a write transaction
|
||||
pmc->begin_write_transaction().ensure();
|
||||
pmc->set(get_emoji_language_code_version_database_key(language_code), to_string(version));
|
||||
pmc->set(get_emoji_language_code_last_difference_time_database_key(language_code), to_string(G()->unix_time()));
|
||||
for (auto &keyword_ptr : keywords->keywords_) {
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include "td/utils/format.h"
|
||||
#include "td/utils/logging.h"
|
||||
#include "td/utils/misc.h"
|
||||
#include "td/utils/ScopeGuard.h"
|
||||
#include "td/utils/Slice.h"
|
||||
#include "td/utils/SliceBuilder.h"
|
||||
#include "td/utils/Status.h"
|
||||
@ -78,10 +77,7 @@ class FileDb final : public FileDbInterface {
|
||||
|
||||
void clear_file_data(FileDbId id, const string &remote_key, const string &local_key, const string &generate_key) {
|
||||
auto &pmc = file_pmc();
|
||||
pmc.begin_transaction().ensure();
|
||||
SCOPE_EXIT {
|
||||
pmc.commit_transaction().ensure();
|
||||
};
|
||||
pmc.begin_write_transaction().ensure();
|
||||
|
||||
if (id > current_pmc_id_) {
|
||||
pmc.set("file_id", to_string(id.get()));
|
||||
@ -102,14 +98,13 @@ class FileDb final : public FileDbInterface {
|
||||
if (!generate_key.empty()) {
|
||||
pmc.erase(generate_key);
|
||||
}
|
||||
|
||||
pmc.commit_transaction().ensure();
|
||||
}
|
||||
void store_file_data(FileDbId id, const string &file_data, const string &remote_key, const string &local_key,
|
||||
const string &generate_key) {
|
||||
auto &pmc = file_pmc();
|
||||
pmc.begin_transaction().ensure();
|
||||
SCOPE_EXIT {
|
||||
pmc.commit_transaction().ensure();
|
||||
};
|
||||
pmc.begin_write_transaction().ensure();
|
||||
|
||||
if (id > current_pmc_id_) {
|
||||
pmc.set("file_id", to_string(id.get()));
|
||||
@ -127,13 +122,12 @@ class FileDb final : public FileDbInterface {
|
||||
if (!generate_key.empty()) {
|
||||
pmc.set(generate_key, to_string(id.get()));
|
||||
}
|
||||
|
||||
pmc.commit_transaction().ensure();
|
||||
}
|
||||
void store_file_data_ref(FileDbId id, FileDbId new_id) {
|
||||
auto &pmc = file_pmc();
|
||||
pmc.begin_transaction().ensure();
|
||||
SCOPE_EXIT {
|
||||
pmc.commit_transaction().ensure();
|
||||
};
|
||||
pmc.begin_write_transaction().ensure();
|
||||
|
||||
if (id > current_pmc_id_) {
|
||||
pmc.set("file_id", to_string(id.get()));
|
||||
@ -141,18 +135,18 @@ class FileDb final : public FileDbInterface {
|
||||
}
|
||||
|
||||
do_store_file_data_ref(id, new_id);
|
||||
|
||||
pmc.commit_transaction().ensure();
|
||||
}
|
||||
|
||||
void optimize_refs(const std::vector<FileDbId> ids, FileDbId main_id) {
|
||||
LOG(INFO) << "Optimize " << ids.size() << " ids in file database to " << main_id.get();
|
||||
auto &pmc = file_pmc();
|
||||
pmc.begin_transaction().ensure();
|
||||
SCOPE_EXIT {
|
||||
pmc.commit_transaction().ensure();
|
||||
};
|
||||
pmc.begin_write_transaction().ensure();
|
||||
for (size_t i = 0; i + 1 < ids.size(); i++) {
|
||||
do_store_file_data_ref(ids[i], main_id);
|
||||
}
|
||||
pmc.commit_transaction().ensure();
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -175,13 +175,20 @@ Status SqliteDb::set_user_version(int32 version) {
|
||||
return exec(PSLICE() << "PRAGMA user_version = " << version);
|
||||
}
|
||||
|
||||
Status SqliteDb::begin_transaction() {
|
||||
Status SqliteDb::begin_read_transaction() {
|
||||
if (raw_->on_begin()) {
|
||||
return exec("BEGIN");
|
||||
}
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
Status SqliteDb::begin_write_transaction() {
|
||||
if (raw_->on_begin()) {
|
||||
return exec("BEGIN IMMEDIATE");
|
||||
}
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
Status SqliteDb::commit_transaction() {
|
||||
TRY_RESULT(need_commit, raw_->on_commit());
|
||||
if (need_commit) {
|
||||
|
@ -46,7 +46,9 @@ class SqliteDb {
|
||||
Result<bool> has_table(Slice table);
|
||||
Result<string> get_pragma(Slice name);
|
||||
Result<string> get_pragma_string(Slice name);
|
||||
Status begin_transaction() TD_WARN_UNUSED_RESULT;
|
||||
|
||||
Status begin_read_transaction() TD_WARN_UNUSED_RESULT;
|
||||
Status begin_write_transaction() TD_WARN_UNUSED_RESULT;
|
||||
Status commit_transaction() TD_WARN_UNUSED_RESULT;
|
||||
|
||||
Result<int32> user_version();
|
||||
|
@ -51,8 +51,11 @@ class SqliteKeyValue {
|
||||
|
||||
SeqNo erase(Slice key);
|
||||
|
||||
Status begin_transaction() TD_WARN_UNUSED_RESULT {
|
||||
return db_.begin_transaction();
|
||||
Status begin_read_transaction() TD_WARN_UNUSED_RESULT {
|
||||
return db_.begin_read_transaction();
|
||||
}
|
||||
Status begin_write_transaction() TD_WARN_UNUSED_RESULT {
|
||||
return db_.begin_write_transaction();
|
||||
}
|
||||
Status commit_transaction() TD_WARN_UNUSED_RESULT {
|
||||
return db_.commit_transaction();
|
||||
|
@ -121,7 +121,7 @@ class SqliteKeyValueAsync final : public SqliteKeyValueAsyncInterface {
|
||||
wakeup_at_ = 0;
|
||||
cnt_ = 0;
|
||||
|
||||
kv_->begin_transaction().ensure();
|
||||
kv_->begin_write_transaction().ensure();
|
||||
for (auto &it : buffer_) {
|
||||
if (it.second) {
|
||||
kv_->set(it.first, it.second.value());
|
||||
|
Loading…
Reference in New Issue
Block a user