From 1fdc150116cad39aae5c5da407c3312b47a59e3a Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Fri, 17 Dec 2021 07:06:30 -0500 Subject: New upstream version 3.3.3+dfsg1. --- Plugins/DbAndroid/copy.sh | 0 Plugins/DbAndroid/dbandroid.json | 4 +-- Plugins/DbAndroid/dbandroidinstance.cpp | 32 +++++++++++++++++++++++ Plugins/DbAndroid/dbandroidinstance.h | 1 + Plugins/DbAndroid/dbandroidshellconnection.cpp | 36 +++++++++++++++++--------- Plugins/DbAndroid/dbandroidshellconnection.h | 10 ------- Plugins/DbAndroid/package.xml | 18 ++++++------- Plugins/DbAndroid/sqlqueryandroid.cpp | 2 +- 8 files changed, 69 insertions(+), 34 deletions(-) mode change 100755 => 100644 Plugins/DbAndroid/copy.sh (limited to 'Plugins/DbAndroid') diff --git a/Plugins/DbAndroid/copy.sh b/Plugins/DbAndroid/copy.sh old mode 100755 new mode 100644 diff --git a/Plugins/DbAndroid/dbandroid.json b/Plugins/DbAndroid/dbandroid.json index 689316f..8bc6263 100644 --- a/Plugins/DbAndroid/dbandroid.json +++ b/Plugins/DbAndroid/dbandroid.json @@ -2,9 +2,9 @@ "type": "DbPlugin", "title": "Android SQLite", "description": "Provides support for remote SQLite databases on Android devices.", - "version": 10201, + "version": 10200, "author": "SalSoft", - "minAppVersion": 30100, + "minAppVersion": 30300, "gui": true, "loadByDefault": false } diff --git a/Plugins/DbAndroid/dbandroidinstance.cpp b/Plugins/DbAndroid/dbandroidinstance.cpp index 900b929..7dce61c 100644 --- a/Plugins/DbAndroid/dbandroidinstance.cpp +++ b/Plugins/DbAndroid/dbandroidinstance.cpp @@ -10,6 +10,7 @@ #include "schemaresolver.h" #include "services/notifymanager.h" #include "db/dbsqlite3.h" +#include "parser/parser.h" #include #include #include @@ -26,6 +27,37 @@ DbAndroidInstance::~DbAndroidInstance() closeInternal(); } +QList DbAndroidInstance::columnsForQuery(const QString& query) +{ + Parser parser; + bool res = parser.parse(query); + if (!res) + { + qWarning() << "Could not parse query for providing columnsForQuery from DbAndroid:" << query; + return QList(); + } + + if (!isDataReturningQuery(parser.getQueries().last()->queryType)) + return QList(); + + SqlQueryPtr results = exec(query); + if (results->isError()) + { + qWarning() << "Could not execute query for providing columnsForQuery from DbAndroid:" << query + << ". The error was:" << results->getErrorText(); + return QList(); + } + + QList columns; + AliasedColumn column; + for (const QString& colName : results->getColumnNames()) + { + column.setAlias(colName); + columns << column; + } + return columns; +} + SqlQueryPtr DbAndroidInstance::prepare(const QString& query) { return SqlQueryPtr(new SqlQueryAndroid(this, connection, query)); diff --git a/Plugins/DbAndroid/dbandroidinstance.h b/Plugins/DbAndroid/dbandroidinstance.h index 157caae..5ddbd85 100644 --- a/Plugins/DbAndroid/dbandroidinstance.h +++ b/Plugins/DbAndroid/dbandroidinstance.h @@ -19,6 +19,7 @@ class DbAndroidInstance : public AbstractDb DbAndroidInstance(DbAndroid* plugin, const QString& name, const QString& path, const QHash& connOptions); ~DbAndroidInstance(); + QList columnsForQuery(const QString& query); SqlQueryPtr prepare(const QString& query); QString getTypeLabel(); bool deregisterFunction(const QString& name, int argCount); diff --git a/Plugins/DbAndroid/dbandroidshellconnection.cpp b/Plugins/DbAndroid/dbandroidshellconnection.cpp index e48416d..6ead847 100644 --- a/Plugins/DbAndroid/dbandroidshellconnection.cpp +++ b/Plugins/DbAndroid/dbandroidshellconnection.cpp @@ -129,7 +129,13 @@ QStringList DbAndroidShellConnection::getDbList() } QStringList finalList; - for (const QString& dbName : out.trimmed().split("\n", QString::SkipEmptyParts)) + for (const QString& dbName : out.trimmed().split("\n", +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + Qt::SkipEmptyParts +#else + QString::SkipEmptyParts +#endif + )) { if (dbName.trimmed().endsWith("-journal")) continue; @@ -148,7 +154,13 @@ QStringList DbAndroidShellConnection::getAppList() return QStringList(); QStringList appList; - for (const QString& line : out.trimmed().split("\n", QString::SkipEmptyParts)) + for (const QString& line : out.trimmed().split("\n", +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + Qt::SkipEmptyParts +#else + QString::SkipEmptyParts +#endif + )) { if (!line.startsWith("package:")) continue; // some other message @@ -182,7 +194,7 @@ DbAndroidConnection::ExecutionResult DbAndroidShellConnection::executeQuery(cons // In case of SELECT we want to union typeof() for all columns first, then original query bool isSelect = false; - getQueryAccessMode(query, Dialect::Sqlite3, &isSelect); + getQueryAccessMode(query, &isSelect); QStringList columnNames; bool firstHalfForTypes = false; if (isSelect) @@ -272,7 +284,7 @@ QString DbAndroidShellConnection::appendTypeQueryPart(const QString& query, cons QString wrappedCol; for (const QString& colName : columnNames) { - wrappedCol = wrapObjIfNeeded(colName, Dialect::Sqlite3); + wrappedCol = wrapObjIfNeeded(colName); typeColumns << typeTpl.arg(wrappedCol); hexColumns << hexTpl.arg(wrappedCol); } @@ -337,25 +349,25 @@ QVariant DbAndroidShellConnection::valueFromString(const QByteArray& bytes, cons { static const QStringList types = QStringList({"null", "integer", "real", "text", "blob"}); - DataType dataType = static_cast(types.indexOf(AdbManager::decode(type).trimmed())); + SqliteDataType dataType = static_cast(types.indexOf(AdbManager::decode(type).trimmed())); QByteArray decodedBytes = QByteArray::fromHex(bytes); switch (dataType) { - case DataType::BLOB: + case SqliteDataType::BLOB: return decodedBytes; - case DataType::INTEGER: + case SqliteDataType::INTEGER: return QString::fromLatin1(decodedBytes).toLongLong(); - case DataType::REAL: + case SqliteDataType::REAL: return QString::fromLatin1(decodedBytes).toDouble(); - case DataType::TEXT: + case SqliteDataType::TEXT: return QString::fromUtf8(decodedBytes); - case DataType::_NULL: + case SqliteDataType::_NULL: break; - case DataType::UNKNOWN: + case SqliteDataType::UNKNOWN: qCritical() << "Unknown type passed to DbAndroidShellConnection::valueFromString():" << type; break; } - return QVariant(QString::null); + return QVariant(QString()); } void DbAndroidShellConnection::checkForDisconnection(const QStringList& devices) diff --git a/Plugins/DbAndroid/dbandroidshellconnection.h b/Plugins/DbAndroid/dbandroidshellconnection.h index 205d9bb..0be841b 100644 --- a/Plugins/DbAndroid/dbandroidshellconnection.h +++ b/Plugins/DbAndroid/dbandroidshellconnection.h @@ -28,16 +28,6 @@ class DbAndroidShellConnection : public DbAndroidConnection ExecutionResult executeQuery(const QString& query); private: - enum class DataType - { - UNKNOWN = -1, - _NULL = 0, - INTEGER = 1, - REAL = 2, - TEXT = 3, - BLOB = 4 - }; - QStringList findColumns(const QStringList& originalArgs, const QString& query); QString appendTypeQueryPart(const QString& query, const QStringList& columnNames); void extractResultData(const QList >& deserialized, bool firstHalfForTypes, ExecutionResult& results); diff --git a/Plugins/DbAndroid/package.xml b/Plugins/DbAndroid/package.xml index 32c4a32..af3d133 100644 --- a/Plugins/DbAndroid/package.xml +++ b/Plugins/DbAndroid/package.xml @@ -1,10 +1,10 @@ - - - Android plugin - Plugin for accessing Android SQLite databases directly on the Android device from your computer. - %VERSION% - %DATE% - pl.com.salsoft.sqlitestudio.plugins.dbandroid - pl.com.salsoft.sqlitestudio.plugins - true + + + Android plugin + Plugin for accessing Android SQLite databases directly on the Android device from your computer. + %VERSION% + %DATE% + pl.com.salsoft.sqlitestudio.plugins.dbandroid + pl.com.salsoft.sqlitestudio.plugins + true \ No newline at end of file diff --git a/Plugins/DbAndroid/sqlqueryandroid.cpp b/Plugins/DbAndroid/sqlqueryandroid.cpp index 08fe5cc..787cdc5 100644 --- a/Plugins/DbAndroid/sqlqueryandroid.cpp +++ b/Plugins/DbAndroid/sqlqueryandroid.cpp @@ -11,7 +11,7 @@ SqlQueryAndroid::SqlQueryAndroid(DbAndroidInstance* db, DbAndroidConnection* connection, const QString& query) : db(db), connection(connection), queryString(query) { - tokenizedQuery = Lexer::tokenize(query, Dialect::Sqlite3); + tokenizedQuery = Lexer::tokenize(query); } SqlQueryAndroid::~SqlQueryAndroid() -- cgit v1.2.3