diff options
| author | 2021-12-17 07:07:47 -0500 | |
|---|---|---|
| committer | 2021-12-17 07:07:47 -0500 | |
| commit | 558b1e35fd0777ac97763c1b28056ac984e583e7 (patch) | |
| tree | 1eb2557119a117ea76535c89cd14a49e510b96bf /SQLiteStudio3/coreSQLiteStudio/dbversionconverter.h | |
| parent | c22eb635c11fd45f9c30f911d70e1d79111a49ce (diff) | |
| parent | 1fdc150116cad39aae5c5da407c3312b47a59e3a (diff) | |
Update upstream source from tag 'upstream/3.3.3+dfsg1'
Update to upstream version '3.3.3+dfsg1'
with Debian dir 9a301fff4922aed2fec0c04c7d011947168c42f1
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/dbversionconverter.h')
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/dbversionconverter.h | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/dbversionconverter.h b/SQLiteStudio3/coreSQLiteStudio/dbversionconverter.h deleted file mode 100644 index 5fafc93..0000000 --- a/SQLiteStudio3/coreSQLiteStudio/dbversionconverter.h +++ /dev/null @@ -1,160 +0,0 @@ -#ifndef DBVERSIONCONVERTER_H -#define DBVERSIONCONVERTER_H - -#include "parser/ast/sqlitequery.h" -#include "parser/ast/sqliteorderby.h" -#include <QList> -#include <QStringList> -#include <QPair> -#include <QMutex> - -class Db; -class SchemaResolver; -class SqliteCreateTable; -class SqliteCreateTrigger; -class SqliteCreateIndex; -class SqliteCreateView; -class SqliteCreateVirtualTable; -class SqliteIndexedColumn; -class SqliteSelect; -class SqliteDelete; -class SqliteUpdate; -class SqliteInsert; -class SqliteExpr; -class SqliteBeginTrans; - -class API_EXPORT DbVersionConverter : public QObject -{ - Q_OBJECT - - public: - typedef std::function<bool(const QList<QPair<QString,QString>>& diffs)> ConversionConfimFunction; - typedef std::function<bool(const QSet<QString>& errors)> ConversionErrorsConfimFunction; - - DbVersionConverter(); - virtual ~DbVersionConverter(); - - void convert(Dialect from, Dialect to, Db* srcDb, const QString& targetFile, const QString& targetName, ConversionConfimFunction confirmFunc, - ConversionErrorsConfimFunction errorsConfirmFunc); - void convert(Dialect from, Dialect to, Db* db); - void convert3To2(Db* db); - void convert2To3(Db* db); - QString convert(Dialect from, Dialect to, const QString& sql); - QString convert3To2(const QString& sql); - QString convert2To3(const QString& sql); - SqliteQueryPtr convert(Dialect from, Dialect to, SqliteQueryPtr query); - SqliteQueryPtr convert3To2(SqliteQueryPtr query); - SqliteQueryPtr convert2To3(SqliteQueryPtr query); - - const QList<QPair<QString, QString> >& getDiffList() const; - const QSet<QString>& getErrors() const; - const QList<SqliteQueryPtr>& getConverted() const; - QStringList getConvertedSqls() const; - void reset(); - QList<Dialect> getSupportedVersions() const; - QStringList getSupportedVersionNames() const; - - private: - struct FullConversionConfig - { - Dialect from; - Dialect to; - Db* srcDb = nullptr; - QString targetFile; - QString targetName; - ConversionConfimFunction confirmFunc = nullptr; - ConversionErrorsConfimFunction errorsConfirmFunc = nullptr; - }; - - void fullConvertStep1(); - void fullConvertStep2(); - bool fullConvertCreateObjectsStep1(Db* db, QStringList& tables); - bool fullConvertCreateObjectsStep2(Db* db); - bool fullConvertCopyData(Db* db, const QStringList& tables); - bool checkForInterrupted(Db* db, bool rollback); - void convertDb(); - QList<SqliteQueryPtr> parse(const QString& sql, Dialect dialect); - bool modifySelectForVersion2(SqliteSelect* select); - bool modifyDeleteForVersion2(SqliteDelete* del); - bool modifyInsertForVersion2(SqliteInsert* insert); - bool modifyUpdateForVersion2(SqliteUpdate* update); - bool modifyCreateTableForVersion2(SqliteCreateTable* createTable); - bool modifyCreateTriggerForVersion2(SqliteCreateTrigger* createTrigger); - bool modifyCreateIndexForVersion2(SqliteCreateIndex* createIndex); - bool modifyCreateViewForVersion2(SqliteCreateView* createView); - bool modifyVirtualTableForVesion2(SqliteQueryPtr& query, SqliteCreateVirtualTable* createVirtualTable); - bool modifyAllExprsForVersion2(SqliteStatement* stmt); - bool modifySingleExprForVersion2(SqliteExpr* expr); - bool modifyAllIndexedColumnsForVersion2(SqliteStatement* stmt); - bool modifySingleIndexedColumnForVersion2(SqliteExtendedIndexedColumn* idxCol); - bool modifyBeginTransForVersion3(SqliteBeginTrans* begin); - bool modifyCreateTableForVersion3(SqliteCreateTable* createTable); - QString getSqlForDiff(SqliteStatement* stmt); - void storeDiff(const QString& sql1, SqliteStatement* stmt); - void storeErrorDiff(SqliteStatement* stmt); - QList<Db*> getAllPossibleDbInstances() const; - QString generateQueryPlaceholders(int argCount); - void sortConverted(); - void setInterrupted(bool value); - bool isInterrupted(); - void conversionInterrupted(Db* db, bool rollback); - - template <class T> - bool modifyAllIndexedColumnsForVersion2(const QList<T*> columns) - { - for (T* idxCol : columns) - { - if (!modifySingleIndexedColumnForVersion2(idxCol)) - return false; - } - return true; - } - - - template <class T> - QSharedPointer<T> copyQuery(SqliteQueryPtr query) - { - return QSharedPointer<T>::create(*(query.dynamicCast<T>().data())); - } - - Db* db = nullptr; - Dialect targetDialect = Dialect::Sqlite3; - SchemaResolver* resolver = nullptr; - QList<QPair<QString,QString>> diffList; - QSet<QString> errors; - QList<SqliteQueryPtr> newQueries; - FullConversionConfig* fullConversionConfig = nullptr; - bool interrupted = false; - QMutex interruptMutex; - - /** - * @brief Whether to include non-DDL statements in diff list. - * - * The non-DDL statements are INSERTs, SELECTs, etc. - * Normally, for DB conversion we only care about DDL modifications, - * that is for CREATE statements. Other statements may appear inside of - * triggers or views, but we don't need their diffs separately. - * - * This variable is not used currently, but may be in future, - * when for example individual INSERT statement would need to be converted. - * Right now there's no such need, but it would be pity to remove the code - * from that non-DDL statements. - */ - bool diffsForNonDDL = false; - - private slots: - void conversionError(Db* db, const QString& errMsg); - void confirmConversion(); - void registerDbAfterSuccessfulConversion(); - - public slots: - void interrupt(); - - signals: - void askUserForConfirmation(); - void conversionSuccessful(); - void conversionAborted(); - void conversionFailed(const QString& errorMsg); -}; - -#endif // DBVERSIONCONVERTER_H |
