From d4ce11b8ce05cab2639c0c89fe352b3100085f87 Mon Sep 17 00:00:00 2001 From: schdub Date: Sat, 20 Jun 2015 23:14:35 +0300 Subject: [PATCH] fix: renameColumn 'no error' after errors --- src/sqlitedb.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/sqlitedb.cpp b/src/sqlitedb.cpp index 7c2cd351..c7d0cbb0 100644 --- a/src/sqlitedb.cpp +++ b/src/sqlitedb.cpp @@ -931,18 +931,20 @@ bool DBBrowserDB::renameColumn(const QString& tablename, const QString& name, sq // Create the new table if(!executeSQL(newSchema.sql())) { - lastErrorMessage = tr("renameColumn: creating new table failed. DB says: %1").arg(lastErrorMessage); - qWarning() << lastErrorMessage; + QString error(tr("renameColumn: creating new table failed. DB says: %1").arg(lastErrorMessage)); + qWarning() << error; executeSQL("ROLLBACK TO SAVEPOINT sqlitebrowser_rename_column;"); + lastErrorMessage = error; return false; } // Copy the data from the old table to the new one if(!executeSQL(QString("INSERT INTO sqlitebrowser_rename_column_new_table SELECT %1 FROM `%2`;").arg(select_cols).arg(tablename))) { - lastErrorMessage = tr("renameColumn: copying data to new table failed. DB says:\n%1").arg(lastErrorMessage); - qWarning() << lastErrorMessage; + QString error(tr("renameColumn: copying data to new table failed. DB says:\n%1").arg(lastErrorMessage)); + qWarning() << error; executeSQL("ROLLBACK TO SAVEPOINT sqlitebrowser_rename_column;"); + lastErrorMessage = error; return false; } @@ -958,9 +960,10 @@ bool DBBrowserDB::renameColumn(const QString& tablename, const QString& name, sq // Delete the old table if(!executeSQL(QString("DROP TABLE `%1`;").arg(tablename))) { - lastErrorMessage = tr("renameColumn: deleting old table failed. DB says: %1").arg(lastErrorMessage); - qWarning() << lastErrorMessage; + QString error(tr("renameColumn: deleting old table failed. DB says: %1").arg(lastErrorMessage)); + qWarning() << error; executeSQL("ROLLBACK TO SAVEPOINT sqlitebrowser_rename_column;"); + lastErrorMessage = error; return false; }