Don't query foreign key settings repeatedly in Edit Table dialog

When changing the table name in the Edit Table dialog, don't query the
foreign key pragma for every key stroke.

See issue #1130.
This commit is contained in:
Martin Kleusberg
2017-10-05 23:32:06 +02:00
parent b24894f4c3
commit 59b39bbb95
2 changed files with 5 additions and 3 deletions

View File

@@ -56,6 +56,9 @@ EditTableDialog::EditTableDialog(DBBrowserDB& db, const sqlb::ObjectIdentifier&
// And create a savepoint
pdb.setSavepoint(m_sRestorePointName);
// Check now if foreign keys are enabled so we don't have to query this later again and again
m_bForeignKeysEnabled = (pdb.getPragma("foreign_keys") == "1");
// Update UI
ui->editTableName->setText(curTable.name());
updateColumnWidth();
@@ -206,8 +209,6 @@ void EditTableDialog::checkInput()
m_table.setName(normTableName);
m_fkEditorDelegate->updateTablesList(oldTableName);
bool fksEnabled = (pdb.getPragma("foreign_keys") == "1");
// update fk's that refer to table itself recursively
sqlb::FieldVector fields = m_table.fields();
foreach(sqlb::FieldPtr f, fields) {
@@ -215,7 +216,7 @@ void EditTableDialog::checkInput()
if(!fk.isNull()) {
if (oldTableName == fk->table()) {
fk->setTable(normTableName);
if(!fksEnabled)
if(!m_bForeignKeysEnabled)
pdb.renameColumn(curTable, m_table, f->name(), f, 0);
}
}

View File

@@ -69,6 +69,7 @@ private:
QStringList fields;
bool m_bNewTable;
QString m_sRestorePointName;
bool m_bForeignKeysEnabled;
};
#endif