X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fabstractsqlstorage.cpp;h=99289f9805f9351dba9fbdf15eb46ea60ce58158;hp=b29c88cf17a0bc341d66a0382af5883504062e14;hb=cce93cda2ae1634eaaa50d1aa9065277444f8d46;hpb=4b41d8800c38aa3bc4e88a76289b45bc888ba088 diff --git a/src/core/abstractsqlstorage.cpp b/src/core/abstractsqlstorage.cpp index b29c88cf..99289f98 100644 --- a/src/core/abstractsqlstorage.cpp +++ b/src/core/abstractsqlstorage.cpp @@ -30,6 +30,12 @@ AbstractSqlStorage::AbstractSqlStorage(QObject *parent) } AbstractSqlStorage::~AbstractSqlStorage() { + QHash, QSqlQuery *>::iterator iter = _queryCache.begin(); + while(iter != _queryCache.end()) { + delete *iter; + iter = _queryCache.erase(iter); + } + { QSqlDatabase db = QSqlDatabase::database("quassel_connection"); db.commit(); @@ -96,6 +102,16 @@ bool AbstractSqlStorage::init(const QVariantMap &settings) { return true; } +void AbstractSqlStorage::sync() { + QHash, QSqlQuery *>::iterator iter = _queryCache.begin(); + while(iter != _queryCache.end()) { + delete *iter; + iter = _queryCache.erase(iter); + } + + logDb().commit(); +} + QString AbstractSqlStorage::queryString(const QString &queryName, int version) { if(version == 0) version = schemaVersion(); @@ -126,7 +142,6 @@ QSqlQuery *AbstractSqlStorage::cachedQuery(const QString &queryName, int version query->prepare(queryString(queryName, version)); _queryCache[queryId] = query; } - return _queryCache[queryId]; } @@ -165,8 +180,7 @@ QStringList AbstractSqlStorage::upgradeQueries(int version) { QStringList queries; QDir dir = QDir(QString(":/SQL/%1/%2/").arg(engineName()).arg(version)); foreach(QFileInfo fileInfo, dir.entryInfoList(QStringList() << "upgrade*", QDir::NoFilter, QDir::Name)) { - qDebug() << queryString(fileInfo.baseName()); - queries << queryString(fileInfo.baseName()); + queries << queryString(fileInfo.baseName(), version); } return queries; } @@ -216,13 +230,13 @@ int AbstractSqlStorage::schemaVersion() { bool AbstractSqlStorage::watchQuery(QSqlQuery *query) { if(query->lastError().isValid()) { qWarning() << "unhandled Error in QSqlQuery!"; - qWarning() << " last Query:" << query->lastQuery(); - qWarning() << " executed Query:" << query->executedQuery(); - qWarning() << " bound Values:" << query->boundValues(); - qWarning() << " Error Number:" << query->lastError().number(); - qWarning() << " Error Message:" << query->lastError().text(); - qWarning() << " Driver Message:" << query->lastError().driverText(); - qWarning() << " DB Message:" << query->lastError().databaseText(); + qWarning() << " last Query:\n" << query->lastQuery(); + qWarning() << " executed Query:\n" << query->executedQuery(); + qWarning() << " bound Values:" << query->boundValues(); + qWarning() << " Error Number:" << query->lastError().number(); + qWarning() << " Error Message:" << query->lastError().text(); + qWarning() << " Driver Message:" << query->lastError().driverText(); + qWarning() << " DB Message:" << query->lastError().databaseText(); return false; }