← Back to team overview

uonedb-qt team mailing list archive

[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