diff options
| author | 2021-12-17 07:06:30 -0500 | |
|---|---|---|
| committer | 2021-12-17 07:06:30 -0500 | |
| commit | 1fdc150116cad39aae5c5da407c3312b47a59e3a (patch) | |
| tree | 123c79a4d7ad2d45781ba03ce939f7539fb428d8 /Plugins/DbAndroid | |
| parent | feda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (diff) | |
New upstream version 3.3.3+dfsg1.upstream/3.3.3+dfsg1
Diffstat (limited to 'Plugins/DbAndroid')
| -rw-r--r--[-rwxr-xr-x] | Plugins/DbAndroid/copy.sh | 0 | ||||
| -rw-r--r-- | Plugins/DbAndroid/dbandroid.json | 4 | ||||
| -rw-r--r-- | Plugins/DbAndroid/dbandroidinstance.cpp | 32 | ||||
| -rw-r--r-- | Plugins/DbAndroid/dbandroidinstance.h | 1 | ||||
| -rw-r--r-- | Plugins/DbAndroid/dbandroidshellconnection.cpp | 36 | ||||
| -rw-r--r-- | Plugins/DbAndroid/dbandroidshellconnection.h | 10 | ||||
| -rw-r--r-- | Plugins/DbAndroid/package.xml | 18 | ||||
| -rw-r--r-- | Plugins/DbAndroid/sqlqueryandroid.cpp | 2 |
8 files changed, 69 insertions, 34 deletions
diff --git a/Plugins/DbAndroid/copy.sh b/Plugins/DbAndroid/copy.sh index d3e1a1e..d3e1a1e 100755..100644 --- a/Plugins/DbAndroid/copy.sh +++ b/Plugins/DbAndroid/copy.sh 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 <QJsonObject> #include <QJsonArray> #include <QJsonDocument> @@ -26,6 +27,37 @@ DbAndroidInstance::~DbAndroidInstance() closeInternal(); } +QList<AliasedColumn> 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<AliasedColumn>(); + } + + if (!isDataReturningQuery(parser.getQueries().last()->queryType)) + return QList<AliasedColumn>(); + + 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<AliasedColumn>(); + } + + QList<AliasedColumn> 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<QString, QVariant>& connOptions); ~DbAndroidInstance(); + QList<AliasedColumn> 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<DataType>(types.indexOf(AdbManager::decode(type).trimmed())); + SqliteDataType dataType = static_cast<SqliteDataType>(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<QList<QByteArray> >& 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 @@ -<?xml version="1.0"?>
-<Package>
- <DisplayName>Android plugin</DisplayName>
- <Description>Plugin for accessing Android SQLite databases directly on the Android device from your computer.</Description>
- <Version>%VERSION%</Version>
- <ReleaseDate>%DATE%</ReleaseDate>
- <Name>pl.com.salsoft.sqlitestudio.plugins.dbandroid</Name>
- <Dependencies>pl.com.salsoft.sqlitestudio.plugins</Dependencies>
- <Default>true</Default>
+<?xml version="1.0"?> +<Package> + <DisplayName>Android plugin</DisplayName> + <Description>Plugin for accessing Android SQLite databases directly on the Android device from your computer.</Description> + <Version>%VERSION%</Version> + <ReleaseDate>%DATE%</ReleaseDate> + <Name>pl.com.salsoft.sqlitestudio.plugins.dbandroid</Name> + <Dependencies>pl.com.salsoft.sqlitestudio.plugins</Dependencies> + <Default>true</Default> </Package>
\ 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() |
