From 0eb302d5e873d21e778630abe93e028e0d960fa6 Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Thu, 17 Aug 2017 20:42:34 +0200 Subject: [PATCH] Geopackage try to remove optional entries + fix build warnings --- src/providers/ogr/qgsgeopackagedataitems.cpp | 18 ++++++++++++++++++ src/providers/ogr/qgsgeopackagedataitems.h | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/providers/ogr/qgsgeopackagedataitems.cpp b/src/providers/ogr/qgsgeopackagedataitems.cpp index c92fa283016..3862765b5ba 100644 --- a/src/providers/ogr/qgsgeopackagedataitems.cpp +++ b/src/providers/ogr/qgsgeopackagedataitems.cpp @@ -595,6 +595,24 @@ bool QgsGeoPackageRasterLayerItem::executeDeleteLayer( QString &errCause ) &errmsg /* Error msg written here */ ); sqlite3_free( sql ); + // Remove from optional tables, may silently fail + for ( const auto tableName : QStringList() + << QStringLiteral( "gpkg_extensions" ) + << QStringLiteral( "gpkg_metadata" ) + << QStringLiteral( "gpkg_metadata_reference" ) ) + { + char *sql = sqlite3_mprintf( "DELETE FROM table %w WHERE table_name = '%q", + tableName.toUtf8().constData(), + layerName.toUtf8().constData() ); + status = sqlite3_exec( + handle, /* An open database */ + sql, /* SQL to be evaluated */ + NULL, /* Callback function */ + NULL, /* 1st argument to callback */ + NULL /* Error msg written here */ + ); + sqlite3_free( sql ); + } if ( status == SQLITE_OK ) { result = true; diff --git a/src/providers/ogr/qgsgeopackagedataitems.h b/src/providers/ogr/qgsgeopackagedataitems.h index 85308d02bab..5b2f41fb846 100644 --- a/src/providers/ogr/qgsgeopackagedataitems.h +++ b/src/providers/ogr/qgsgeopackagedataitems.h @@ -76,7 +76,7 @@ class QgsGeoPackageConnectionItem : public QgsDataCollectionItem #ifdef HAVE_GUI virtual bool acceptDrop() override { return true; } virtual bool handleDrop( const QMimeData *data, Qt::DropAction action ) override; - QList actions(); + QList actions() override; #endif //! Return the layer type from \a geometryType @@ -106,7 +106,7 @@ class QgsGeoPackageRootItem : public QgsDataCollectionItem #ifdef HAVE_GUI virtual QWidget *paramWidget() override; - QList actions(); + QList actions() override; public slots: void newConnection();