uonedb-qt team mailing list archive
-
uonedb-qt team
-
Mailing list archive
-
Message #00335
[Merge] lp:~uonedb-qt/u1db-qt/cacheReplicaSql into lp:u1db-qt
Christian Dywan has proposed merging lp:~uonedb-qt/u1db-qt/cacheReplicaSql into lp:u1db-qt.
Commit message:
Cache replicaUid and avoid unused SQL queries
Requested reviews:
U1DB Qt developers (uonedb-qt)
For more details, see:
https://code.launchpad.net/~uonedb-qt/u1db-qt/cacheReplicaSql/+merge/245637
--
Your team U1DB Qt developers is requested to review the proposed merge of lp:~uonedb-qt/u1db-qt/cacheReplicaSql into lp:u1db-qt.
=== 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 @@
QString
Database::getReplicaUid()
{
+ if (!m_replicaUid.isEmpty())
+ return m_replicaUid;
+
QSqlQuery query (m_db.exec("SELECT value FROM u1db_config WHERE name = 'replica_uid'"));
- if (!query.lastError().isValid() && query.next())
- return query.value(0).toString();
+ if (!query.lastError().isValid() && query.next()) {
+ m_replicaUid = query.value(0).toString();
+ return m_replicaUid;
+ }
return setError(QString("Failed to get replica UID: %1\n%2").arg(query.lastError().text()).arg(query.lastQuery())) ? QString() : QString();
}
@@ -137,6 +142,9 @@
if (!m_db.isValid())
m_db = QSqlDatabase::addDatabase("QSQLITE",QUuid::createUuid().toString());
+ /* Reset cache */
+ m_replicaUid = QString();
+
if (!m_db.isValid())
return setError("QSqlDatabase error");
@@ -160,8 +168,6 @@
return setError(QString("Failed to open %1: %2").arg(path).arg(m_db.lastError().text()));
if (!isInitialized())
{
- if (!isInitialized())
- {
QFile file(":/dbschema.sql");
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
@@ -181,13 +187,9 @@
query.bindValue(":uuid", QUuid::createUuid().toString());
if (!query.exec())
return setError(QString("Failed to apply internal schema: %1\n%2").arg(m_db.lastError().text()).arg(query.lastQuery()));
- // Double-check
- if (query.boundValue(0).toString() != getReplicaUid())
- return setError(QString("Invalid replica uid: %1").arg(query.boundValue(0).toString()));
}
else
return setError(QString("Failed to read internal schema: FileError %1").arg(file.error()));
- }
}
return true;
}
@@ -286,7 +288,7 @@
return QVariant();
QSqlQuery query(m_db.exec());
- query.prepare("SELECT doc_rev, content FROM document WHERE doc_id = :docId");
+ query.prepare("SELECT content FROM document WHERE doc_id = :docId");
query.bindValue(":docId", docId);
if (query.exec() && query.next())
{
@@ -717,10 +719,10 @@
return list;
QSqlQuery query(m_db.exec());
- query.prepare("SELECT document.doc_id, document.doc_rev, document.content, "
- "count(conflicts.doc_rev) FROM document LEFT OUTER JOIN conflicts "
- "ON conflicts.doc_id = document.doc_id GROUP BY document.doc_id, "
- "document.doc_rev, document.content");
+ query.prepare("SELECT document.doc_id, document.doc_rev "
+ "FROM document LEFT OUTER JOIN conflicts "
+ "ON conflicts.doc_id = document.doc_id "
+ "GROUP BY document.doc_id, document.doc_rev");
if (query.exec())
{
while (query.next())
=== 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 @@
QString m_path;
QSqlDatabase m_db;
QString m_error;
+ QString m_replicaUid;
QString getReplicaUid();
bool isInitialized();
Follow ups