core: Display problem step if storage setup fails
authorShane Synan <digitalcircuit36939@gmail.com>
Tue, 29 Jan 2019 05:06:58 +0000 (00:06 -0500)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 13 Feb 2019 19:41:34 +0000 (20:41 +0100)
Print the problematic setup step (e.g. 'setup_070_coreinfo') if
storage backend initialization fails.  This may help with debugging.

Modify setupQueries() to return a list of query strings and
resource filenames, used for the above.

src/core/abstractsqlstorage.cpp
src/core/abstractsqlstorage.h

index 40a3bb0..c00ab62 100644 (file)
@@ -190,13 +190,13 @@ QString AbstractSqlStorage::queryString(const QString &queryName, int version)
 }
 
 
 }
 
 
-QStringList AbstractSqlStorage::setupQueries()
+QList<AbstractSqlStorage::SqlQueryResource> AbstractSqlStorage::setupQueries()
 {
 {
-    QStringList queries;
+    QList<SqlQueryResource> queries;
     // The current schema is stored in the root folder, including setup scripts.
     QDir dir = QDir(QString(":/SQL/%1/").arg(displayName()));
     foreach(QFileInfo fileInfo, dir.entryInfoList(QStringList() << "setup*", QDir::NoFilter, QDir::Name)) {
     // The current schema is stored in the root folder, including setup scripts.
     QDir dir = QDir(QString(":/SQL/%1/").arg(displayName()));
     foreach(QFileInfo fileInfo, dir.entryInfoList(QStringList() << "setup*", QDir::NoFilter, QDir::Name)) {
-        queries << queryString(fileInfo.baseName());
+        queries << SqlQueryResource(queryString(fileInfo.baseName()), fileInfo.baseName());
     }
     return queries;
 }
     }
     return queries;
 }
@@ -213,10 +213,11 @@ bool AbstractSqlStorage::setup(const QVariantMap &settings, const QProcessEnviro
     }
 
     db.transaction();
     }
 
     db.transaction();
-    foreach(QString queryString, setupQueries()) {
-        QSqlQuery query = db.exec(queryString);
+    foreach (auto queryResource, setupQueries()) {
+        QSqlQuery query = db.exec(queryResource.queryString);
         if (!watchQuery(query)) {
         if (!watchQuery(query)) {
-            qCritical() << "Unable to setup Logging Backend!";
+            qCritical() << qPrintable(QString("Unable to setup Logging Backend!  Setup query failed (step: %1).")
+                                      .arg(queryResource.queryFilename));
             db.rollback();
             return false;
         }
             db.rollback();
             return false;
         }
index 63d00c5..c911732 100644 (file)
@@ -87,7 +87,12 @@ protected:
      */
     QString queryString(const QString &queryName, int version = 0);
 
      */
     QString queryString(const QString &queryName, int version = 0);
 
-    QStringList setupQueries();
+    /**
+     * Gets the collection of SQL setup queries and filenames to create a new database
+     *
+     * @return List of SQL query strings and filenames
+     */
+    QList<SqlQueryResource> setupQueries();
 
     /**
      * Gets the collection of SQL upgrade queries and filenames for a given schema version
 
     /**
      * Gets the collection of SQL upgrade queries and filenames for a given schema version