From: Marcus Eggenberger Date: Tue, 3 Mar 2009 15:46:53 +0000 (+0100) Subject: handling some sqlite inconsistencies more gracefully X-Git-Tag: 0.5-rc1~325 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=d2e0e3150248063f7d8c27ae1680ce7ea665f227;ds=sidebyside handling some sqlite inconsistencies more gracefully --- diff --git a/src/core/abstractsqlstorage.cpp b/src/core/abstractsqlstorage.cpp index 8523d506..6886c0fa 100644 --- a/src/core/abstractsqlstorage.cpp +++ b/src/core/abstractsqlstorage.cpp @@ -460,8 +460,6 @@ bool AbstractSqlMigrationReader::transferMo(MigrationObject moType, T &mo) { while(readMo(mo)) { if(!_writer->writeMo(mo)) { abortMigration(QString("AbstractSqlMigrationReader::transferMo(): unable to transfer Migratable Object of type %1!").arg(AbstractSqlMigrator::migrationObject(moType))); - rollback(); - _writer->rollback(); return false; } i++; diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp index 04212249..8d23a2dd 100644 --- a/src/core/postgresqlstorage.cpp +++ b/src/core/postgresqlstorage.cpp @@ -1490,6 +1490,7 @@ bool PostgreSqlMigrationWriter::prepareQuery(MigrationObject mo) { query = queryString("migrate_write_sender"); break; case Identity: + _validIdentities.clear(); query = queryString("migrate_write_identity"); break; case IdentityNick: @@ -1532,6 +1533,7 @@ bool PostgreSqlMigrationWriter::writeMo(const SenderMO &sender) { //bool PostgreSqlMigrationWriter::writeIdentity(const IdentityMO &identity) { bool PostgreSqlMigrationWriter::writeMo(const IdentityMO &identity) { + _validIdentities << identity.id.toInt(); bindValue(0, identity.id.toInt()); bindValue(1, identity.userid.toInt()); bindValue(2, identity.identityname); @@ -1569,7 +1571,10 @@ bool PostgreSqlMigrationWriter::writeMo(const NetworkMO &network) { bindValue(0, network.networkid.toInt()); bindValue(1, network.userid.toInt()); bindValue(2, network.networkname); - bindValue(3, network.identityid.toInt()); + if(_validIdentities.contains(network.identityid.toInt())) + bindValue(3, network.identityid.toInt()); + else + bindValue(3, QVariant()); bindValue(4, network.encodingcodec); bindValue(5, network.decodingcodec); bindValue(6, network.servercodec); diff --git a/src/core/postgresqlstorage.h b/src/core/postgresqlstorage.h index af8aa9c3..e3b4e369 100644 --- a/src/core/postgresqlstorage.h +++ b/src/core/postgresqlstorage.h @@ -176,6 +176,8 @@ private: QLatin1String field; Sequence(const char *table, const char *field) : table(table), field(field) {} }; + + QSet _validIdentities; }; #endif