Merge lp:~uonedb-qt/u1db-qt/cacheReplicaSql into lp:u1db-qt

Proposed by Cris Dywan
Status: Needs review
Proposed branch: lp:~uonedb-qt/u1db-qt/cacheReplicaSql
Merge into: lp:u1db-qt
Diff against target: 89 lines (+16/-13)
2 files modified
src/database.cpp (+15/-13)
src/database.h (+1/-0)
To merge this branch: bzr merge lp:~uonedb-qt/u1db-qt/cacheReplicaSql
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve
U1DB Qt developers Pending
Review via email: mp+245637@code.launchpad.net

Commit message

Cache replicaUid and avoid unused SQL queries

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)

Unmerged revisions

122. By Cris Dywan

Cache replicaUid and avoid unused SQL queries

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/database.cpp'
--- src/database.cpp 2014-11-07 14:30:31 +0000
+++ src/database.cpp 2015-01-06 10:43:51 +0000
@@ -78,9 +78,14 @@
78QString78QString
79Database::getReplicaUid()79Database::getReplicaUid()
80{80{
81 if (!m_replicaUid.isEmpty())
82 return m_replicaUid;
83
81 QSqlQuery query (m_db.exec("SELECT value FROM u1db_config WHERE name = 'replica_uid'"));84 QSqlQuery query (m_db.exec("SELECT value FROM u1db_config WHERE name = 'replica_uid'"));
82 if (!query.lastError().isValid() && query.next())85 if (!query.lastError().isValid() && query.next()) {
83 return query.value(0).toString();86 m_replicaUid = query.value(0).toString();
87 return m_replicaUid;
88 }
84 return setError(QString("Failed to get replica UID: %1\n%2").arg(query.lastError().text()).arg(query.lastQuery())) ? QString() : QString();89 return setError(QString("Failed to get replica UID: %1\n%2").arg(query.lastError().text()).arg(query.lastQuery())) ? QString() : QString();
85}90}
8691
@@ -137,6 +142,9 @@
137 if (!m_db.isValid())142 if (!m_db.isValid())
138 m_db = QSqlDatabase::addDatabase("QSQLITE",QUuid::createUuid().toString());143 m_db = QSqlDatabase::addDatabase("QSQLITE",QUuid::createUuid().toString());
139144
145 /* Reset cache */
146 m_replicaUid = QString();
147
140 if (!m_db.isValid())148 if (!m_db.isValid())
141 return setError("QSqlDatabase error");149 return setError("QSqlDatabase error");
142150
@@ -160,8 +168,6 @@
160 return setError(QString("Failed to open %1: %2").arg(path).arg(m_db.lastError().text()));168 return setError(QString("Failed to open %1: %2").arg(path).arg(m_db.lastError().text()));
161 if (!isInitialized())169 if (!isInitialized())
162 {170 {
163 if (!isInitialized())
164 {
165 QFile file(":/dbschema.sql");171 QFile file(":/dbschema.sql");
166 if (file.open(QIODevice::ReadOnly | QIODevice::Text))172 if (file.open(QIODevice::ReadOnly | QIODevice::Text))
167 {173 {
@@ -181,13 +187,9 @@
181 query.bindValue(":uuid", QUuid::createUuid().toString());187 query.bindValue(":uuid", QUuid::createUuid().toString());
182 if (!query.exec())188 if (!query.exec())
183 return setError(QString("Failed to apply internal schema: %1\n%2").arg(m_db.lastError().text()).arg(query.lastQuery()));189 return setError(QString("Failed to apply internal schema: %1\n%2").arg(m_db.lastError().text()).arg(query.lastQuery()));
184 // Double-check
185 if (query.boundValue(0).toString() != getReplicaUid())
186 return setError(QString("Invalid replica uid: %1").arg(query.boundValue(0).toString()));
187 }190 }
188 else191 else
189 return setError(QString("Failed to read internal schema: FileError %1").arg(file.error()));192 return setError(QString("Failed to read internal schema: FileError %1").arg(file.error()));
190 }
191 }193 }
192 return true;194 return true;
193}195}
@@ -286,7 +288,7 @@
286 return QVariant();288 return QVariant();
287289
288 QSqlQuery query(m_db.exec());290 QSqlQuery query(m_db.exec());
289 query.prepare("SELECT doc_rev, content FROM document WHERE doc_id = :docId");291 query.prepare("SELECT content FROM document WHERE doc_id = :docId");
290 query.bindValue(":docId", docId);292 query.bindValue(":docId", docId);
291 if (query.exec() && query.next())293 if (query.exec() && query.next())
292 {294 {
@@ -717,10 +719,10 @@
717 return list;719 return list;
718720
719 QSqlQuery query(m_db.exec());721 QSqlQuery query(m_db.exec());
720 query.prepare("SELECT document.doc_id, document.doc_rev, document.content, "722 query.prepare("SELECT document.doc_id, document.doc_rev "
721 "count(conflicts.doc_rev) FROM document LEFT OUTER JOIN conflicts "723 "FROM document LEFT OUTER JOIN conflicts "
722 "ON conflicts.doc_id = document.doc_id GROUP BY document.doc_id, "724 "ON conflicts.doc_id = document.doc_id "
723 "document.doc_rev, document.content");725 "GROUP BY document.doc_id, document.doc_rev");
724 if (query.exec())726 if (query.exec())
725 {727 {
726 while (query.next())728 while (query.next())
727729
=== modified file 'src/database.h'
--- src/database.h 2014-01-24 11:13:35 +0000
+++ src/database.h 2015-01-06 10:43:51 +0000
@@ -80,6 +80,7 @@
80 QString m_path;80 QString m_path;
81 QSqlDatabase m_db;81 QSqlDatabase m_db;
82 QString m_error;82 QString m_error;
83 QString m_replicaUid;
8384
84 QString getReplicaUid();85 QString getReplicaUid();
85 bool isInitialized();86 bool isInitialized();

Subscribers

People subscribed via source and target branches

to all changes: