diff options
| author | 2025-01-16 01:58:22 -0500 | |
|---|---|---|
| committer | 2025-01-16 01:58:22 -0500 | |
| commit | a5ae79be08125b31bb6b8d9703090a98c6fd2e30 (patch) | |
| tree | 569ee612c9de85b2bb423efa485688ef1d43852e /SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp | |
| parent | 21966b4f924b0a1933d9662e75ff253bd154fdb7 (diff) | |
| parent | 81a21e6ce040e7740de86340c8ea4dba30e69bc3 (diff) | |
Update upstream source from tag 'upstream/3.4.13+dfsg'
Update to upstream version '3.4.13+dfsg'
with Debian dir bf81ee0219cb8e4562a4751df17d75814772d2d6
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp')
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp b/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp index 1c206f9..eb01b86 100644 --- a/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp @@ -137,7 +137,6 @@ void DbObjectOrganizer::copyOrMoveObjectsToDb(Db* srcDb, const QSet<QString>& ob void DbObjectOrganizer::processPreparation() { - StrHash<SqliteQueryPtr> allParsedObjects = srcResolver->getAllParsedObjects(); StrHash<SchemaResolver::ObjectDetails> details = srcResolver->getAllObjectDetails(); for (const QString& srcName : srcNames) { @@ -151,7 +150,7 @@ void DbObjectOrganizer::processPreparation() { case SchemaResolver::TABLE: srcTables << srcName; - collectReferencedTables(srcName, allParsedObjects); + collectReferencedTables(srcName); collectReferencedIndexes(srcName); collectReferencedTriggersForTable(srcName); break; @@ -488,7 +487,7 @@ bool DbObjectOrganizer::copyDataUsingAttach(const QString& table) QString wrappedSrcTable = wrapObjIfNeeded(srcTable); QString wrappedDstTable = wrapObjIfNeeded(table); QStringList srcColumns = srcResolver->getTableColumns(srcTable, true); - QString srcColumnsStr = srcColumns.join(", "); + QString srcColumnsStr = wrapObjNamesIfNeeded(srcColumns).join(", "); SqlQueryPtr results = srcDb->exec(insertTpl.arg(attachName, wrappedDstTable, srcColumnsStr, wrappedSrcTable)); if (results->isError()) { @@ -544,7 +543,12 @@ bool DbObjectOrganizer::copySimpleObjectToDb(const QString& name, const QString& if (ddl.isNull()) return false; - SqlQueryPtr result = srcDb->exec(ddl); + SqlQueryPtr result; + if (attachName.isNull()) + result = dstDb->exec(ddl); + else + result = srcDb->exec(ddl); // uses attachName to create object in attached db + if (result->isError()) { notifyError(errorMessage.arg(result->getErrorText())); @@ -555,28 +559,9 @@ bool DbObjectOrganizer::copySimpleObjectToDb(const QString& name, const QString& return true; } -QSet<QString> DbObjectOrganizer::resolveReferencedTables(const QString& table, const QList<SqliteCreateTablePtr>& parsedTables) +void DbObjectOrganizer::collectReferencedTables(const QString& table) { - QSet<QString> tables = toSet(SchemaResolver::getFkReferencingTables(table, parsedTables)); - for (const QString& fkTable : tables) - tables += toSet(SchemaResolver::getFkReferencingTables(fkTable, parsedTables)); - - tables.remove(table); // if it appeared somewhere in the references - we still don't need it here, it's the table we asked by in the first place - return tables; -} - -void DbObjectOrganizer::collectReferencedTables(const QString& table, const StrHash<SqliteQueryPtr>& allParsedObjects) -{ - QList<SqliteCreateTablePtr> parsedTables; - SqliteCreateTablePtr parsedTable; - for (SqliteQueryPtr& query : allParsedObjects.values()) - { - parsedTable = query.dynamicCast<SqliteCreateTable>(); - if (parsedTable) - parsedTables << parsedTable; - } - - QSet<QString> tables = resolveReferencedTables(table, parsedTables); + QStringList tables = srcResolver->getFkReferencedTables(table); for (const QString& refTable : tables) { if (!referencedTables.contains(refTable) && !srcTables.contains(refTable)) |
