From b5146db92edb25f26bffaf3b6a49cd6639adfde1 Mon Sep 17 00:00:00 2001 From: nirvn Date: Tue, 26 Feb 2019 16:55:25 +0700 Subject: [PATCH] Use the QgsSqliteUtils system tables list in DB Manager --- .../core/auto_generated/qgssqliteutils.sip.in | 63 +++++++++++++++++++ python/core/core_auto.sip | 1 + .../db_plugins/spatialite/connector.py | 16 +---- src/core/qgssqliteutils.h | 22 +++---- 4 files changed, 77 insertions(+), 25 deletions(-) create mode 100644 python/core/auto_generated/qgssqliteutils.sip.in diff --git a/python/core/auto_generated/qgssqliteutils.sip.in b/python/core/auto_generated/qgssqliteutils.sip.in new file mode 100644 index 00000000000..df34c608bbf --- /dev/null +++ b/python/core/auto_generated/qgssqliteutils.sip.in @@ -0,0 +1,63 @@ +/************************************************************************ + * This file has been generated automatically from * + * * + * src/core/qgssqliteutils.h * + * * + * Do not edit manually ! Edit header and run scripts/sipify.pl again * + ************************************************************************/ + + + + + + + +class QgsSqliteUtils +{ +%Docstring +Contains utilities for working with Sqlite data sources. + +.. versionadded:: 3.4 +%End + +%TypeHeaderCode +#include "qgssqliteutils.h" +%End + public: + + static QString quotedString( const QString &value ); +%Docstring +Returns a quoted string ``value``, surround by ' characters and with special +characters correctly escaped. +%End + + static QString quotedIdentifier( const QString &identifier ); +%Docstring +Returns a properly quoted version of ``identifier``. + +.. versionadded:: 3.6 +%End + + static QString quotedValue( const QVariant &value ); +%Docstring +Returns a properly quoted and escaped version of ``value`` +for use in SQL strings. + +.. versionadded:: 3.6 +%End + + static QStringList systemTables(); +%Docstring +Returns a string list of SQLite (and spatialite) system tables + +.. versionadded:: 3.8 +%End +}; + +/************************************************************************ + * This file has been generated automatically from * + * * + * src/core/qgssqliteutils.h * + * * + * Do not edit manually ! Edit header and run scripts/sipify.pl again * + ************************************************************************/ diff --git a/python/core/core_auto.sip b/python/core/core_auto.sip index d0edd173169..0b594b6656a 100644 --- a/python/core/core_auto.sip +++ b/python/core/core_auto.sip @@ -120,6 +120,7 @@ %Include auto_generated/qgsspatialindexkdbush.sip %Include auto_generated/qgsspatialindexkdbushdata.sip %Include auto_generated/qgssqlstatement.sip +%Include auto_generated/qgssqliteutils.sip %Include auto_generated/qgsstatisticalsummary.sip %Include auto_generated/qgsstringstatisticalsummary.sip %Include auto_generated/qgsstringutils.sip diff --git a/python/plugins/db_manager/db_plugins/spatialite/connector.py b/python/plugins/db_manager/db_plugins/spatialite/connector.py index 08750fbb04b..412b91e00b4 100644 --- a/python/plugins/db_manager/db_plugins/spatialite/connector.py +++ b/python/plugins/db_manager/db_plugins/spatialite/connector.py @@ -23,7 +23,7 @@ from builtins import str from functools import cmp_to_key -from qgis.core import Qgis +from qgis.core import Qgis, QgsSqliteUtils from qgis.PyQt.QtCore import QFile from qgis.PyQt.QtWidgets import QApplication @@ -171,19 +171,7 @@ class SpatiaLiteDBConnector(DBConnector): tablenames = [] items = [] - sys_tables = ["SpatialIndex", "geom_cols_ref_sys", "geometry_columns", "geometry_columns_auth", - "views_geometry_columns", "virts_geometry_columns", "spatial_ref_sys", "spatial_ref_sys_all", "spatial_ref_sys_aux", - "sqlite_sequence", "tableprefix_metadata", "tableprefix_rasters", - "layer_params", "layer_statistics", "layer_sub_classes", "layer_table_layout", - "pattern_bitmaps", "symbol_bitmaps", "project_defs", "raster_pyramids", - "sqlite_stat1", "sqlite_stat2", "spatialite_history", - "geometry_columns_field_infos", - "geometry_columns_statistics", "geometry_columns_time", - "sql_statements_log", "vector_layers", "vector_layers_auth", "vector_layers_field_infos", "vector_layers_statistics", - "views_geometry_columns_auth", "views_geometry_columns_field_infos", "views_geometry_columns_statistics", - "virts_geometry_columns_auth", "virts_geometry_columns_field_infos", "virts_geometry_columns_statistics", - "virts_layer_statistics", "views_layer_statistics", "ElementaryGeometries" - ] + sys_tables = QgsSqliteUtils.systemTables() try: vectors = self.getVectorTables(schema) diff --git a/src/core/qgssqliteutils.h b/src/core/qgssqliteutils.h index 22a86fd750d..c6dd84c9887 100644 --- a/src/core/qgssqliteutils.h +++ b/src/core/qgssqliteutils.h @@ -18,8 +18,6 @@ #ifndef QGSSQLITEUTILS_H #define QGSSQLITEUTILS_H -#define SIP_NO_FILE - #include "qgis_core.h" #include "qgis_sip.h" @@ -30,6 +28,8 @@ struct sqlite3; struct sqlite3_stmt; class QVariant; +#ifndef SIP_RUN + /** * \ingroup core * @@ -150,9 +150,17 @@ class CORE_EXPORT sqlite3_database_unique_ptr : public std::unique_ptr< sqlite3, int exec( const QString &sql, QString &errorMessage SIP_OUT ) const; }; +/** + * Wraps sqlite3_mprintf() by automatically freeing the memory. + * \note not available in Python bindings. + * \since QGIS 3.2 + */ +QString CORE_EXPORT QgsSqlite3Mprintf( const char *format, ... ); + +#endif + /** * Contains utilities for working with Sqlite data sources. - * \note not available in Python bindings * \ingroup core * \since QGIS 3.4 */ @@ -189,12 +197,4 @@ class CORE_EXPORT QgsSqliteUtils static QStringList systemTables(); }; -/** - * Wraps sqlite3_mprintf() by automatically freeing the memory. - * \note not available in Python bindings. - * \since QGIS 3.2 - */ -QString CORE_EXPORT QgsSqlite3Mprintf( const char *format, ... ); - - #endif // QGSSQLITEUTILS_H