X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fabstractsqlstorage.cpp;h=d43f59ef20c2433cacc7dba5377d21fc582f922a;hp=5aa7465c36d5f27e189d331dfa7ab8921ba8a597;hb=6e3574a163f07c28d44276318f2d9f92e169f491;hpb=f91f3faa1432894e6d6ecaaf0a1f60a483dd0129 diff --git a/src/core/abstractsqlstorage.cpp b/src/core/abstractsqlstorage.cpp index 5aa7465c..d43f59ef 100644 --- a/src/core/abstractsqlstorage.cpp +++ b/src/core/abstractsqlstorage.cpp @@ -20,11 +20,14 @@ #include "abstractsqlstorage.h" +#include +#include #include #include #include #include #include +#include #include "quassel.h" @@ -180,13 +183,13 @@ QString AbstractSqlStorage::queryString(const QString& queryName, int version) return query.trimmed(); } -QStringList AbstractSqlStorage::setupQueries() +std::vector AbstractSqlStorage::setupQueries() { - QStringList queries; + std::vector 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)) { - queries << queryString(fileInfo.baseName()); + queries.emplace_back(queryString(fileInfo.baseName()), fileInfo.baseName()); } return queries; } @@ -201,10 +204,11 @@ bool AbstractSqlStorage::setup(const QVariantMap& settings, const QProcessEnviro } db.transaction(); - foreach (QString queryString, setupQueries()) { - QSqlQuery query = db.exec(queryString); + foreach (auto queryResource, setupQueries()) { + QSqlQuery query = db.exec(queryResource.queryString); 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; } @@ -217,13 +221,13 @@ bool AbstractSqlStorage::setup(const QVariantMap& settings, const QProcessEnviro return success; } -QList AbstractSqlStorage::upgradeQueries(int version) +std::vector AbstractSqlStorage::upgradeQueries(int version) { - QList queries; + std::vector queries; // Upgrade queries are stored in the 'version/##' subfolders. QDir dir = QDir(QString(":/SQL/%1/version/%2/").arg(displayName()).arg(version)); foreach (QFileInfo fileInfo, dir.entryInfoList(QStringList() << "upgrade*", QDir::NoFilter, QDir::Name)) { - queries << SqlQueryResource(queryString(fileInfo.baseName(), version), fileInfo.baseName()); + queries.emplace_back(queryString(fileInfo.baseName(), version), fileInfo.baseName()); } return queries; } @@ -308,14 +312,6 @@ bool AbstractSqlStorage::upgradeDb() } } - // Update the schema version for the final step. Split this out to offer more informative - // logging (though setting schema version really should not fail). - if (!updateSchemaVersion(schemaVersion())) { - // Updating the final schema version failed, bail out - qCritical() << "Unable to upgrade Logging Backend! Setting final schema version" << schemaVersion() << "failed."; - return false; - } - // If we made it here, everything seems to have worked! return true; } @@ -391,7 +387,7 @@ bool AbstractSqlStorage::watchQuery(QSqlQuery& query) valueStrings << QString("%1=%2").arg(iter.key(), value); } qCritical() << " bound Values:" << qPrintable(valueStrings.join(", ")); - qCritical() << " Error Number:" << query.lastError().number(); + qCritical() << " Error Code:" << qPrintable(query.lastError().nativeErrorCode()); qCritical() << " Error Message:" << qPrintable(query.lastError().text()); qCritical() << " Driver Message:" << qPrintable(query.lastError().driverText()); qCritical() << " DB Message:" << qPrintable(query.lastError().databaseText()); @@ -499,7 +495,7 @@ void AbstractSqlMigrator::dumpStatus() QList list = boundValues(); for (int i = 0; i < list.size(); ++i) qWarning() << i << ": " << list.at(i).toString().toLatin1().data(); - qWarning() << " Error Number:" << lastError().number(); + qWarning() << " Error Code:" << qPrintable(lastError().nativeErrorCode()); qWarning() << " Error Message:" << lastError().text(); }