X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fabstractsqlstorage.cpp;h=b20d1dcdcbe9f31d1c03eb6ddeff50a972e5f6db;hp=b29c88cf17a0bc341d66a0382af5883504062e14;hb=6c5dfecc534c825a628221e0bc2f6fec2feafe7c;hpb=4b41d8800c38aa3bc4e88a76289b45bc888ba088 diff --git a/src/core/abstractsqlstorage.cpp b/src/core/abstractsqlstorage.cpp index b29c88cf..b20d1dcd 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(); @@ -44,7 +50,7 @@ QSqlDatabase AbstractSqlStorage::logDb() { return db; if(!openDb()) { - qWarning() << "Unable to Open Database" << engineName(); + qWarning() << "Unable to Open Database" << displayName(); qWarning() << " -" << db.lastError().text(); } @@ -96,13 +102,23 @@ 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(); - QFileInfo queryInfo(QString(":/SQL/%1/%2/%3.sql").arg(engineName()).arg(version).arg(queryName)); + QFileInfo queryInfo(QString(":/SQL/%1/%2/%3.sql").arg(displayName()).arg(version).arg(queryName)); if(!queryInfo.exists() || !queryInfo.isFile() || !queryInfo.isReadable()) { - qWarning() << "Unable to read SQL-Query" << queryName << "for Engine" << engineName(); + qWarning() << "Unable to read SQL-Query" << queryName << "for engine" << displayName(); return QString(); } @@ -126,7 +142,6 @@ QSqlQuery *AbstractSqlStorage::cachedQuery(const QString &queryName, int version query->prepare(queryString(queryName, version)); _queryCache[queryId] = query; } - return _queryCache[queryId]; } @@ -136,7 +151,7 @@ QSqlQuery *AbstractSqlStorage::cachedQuery(const QString &queryName) { QStringList AbstractSqlStorage::setupQueries() { QStringList queries; - QDir dir = QDir(QString(":/SQL/%1/%2/").arg(engineName()).arg(schemaVersion())); + QDir dir = QDir(QString(":/SQL/%1/%2/").arg(displayName()).arg(schemaVersion())); foreach(QFileInfo fileInfo, dir.entryInfoList(QStringList() << "setup*", QDir::NoFilter, QDir::Name)) { queries << queryString(fileInfo.baseName()); } @@ -163,10 +178,9 @@ bool AbstractSqlStorage::setup(const QVariantMap &settings) { QStringList AbstractSqlStorage::upgradeQueries(int version) { QStringList queries; - QDir dir = QDir(QString(":/SQL/%1/%2/").arg(engineName()).arg(version)); + QDir dir = QDir(QString(":/SQL/%1/%2/").arg(displayName()).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; } @@ -198,7 +212,7 @@ int AbstractSqlStorage::schemaVersion() { int version; bool ok; - QDir dir = QDir(":/SQL/" + engineName()); + QDir dir = QDir(":/SQL/" + displayName()); foreach(QFileInfo fileInfo, dir.entryInfoList()) { if(!fileInfo.isDir()) continue; @@ -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; }