From c869fa29b6d8ab5d6f47196743f23422fe40e30e Mon Sep 17 00:00:00 2001 From: rldhont Date: Tue, 25 Apr 2017 18:03:28 +0200 Subject: [PATCH] [BUGFIX][Server] Filter restorer modifying layers and not well restoring them The Subsetstring is updated through QgsVectorLayer::setSubsetString and restored by QgsVectorDataProvider::setSubsetString and it's not idempotent. The solution is to use QgsVectorLayer::setSubsetString in the 2 cases. --- src/server/qgsfilterrestorer.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/server/qgsfilterrestorer.cpp b/src/server/qgsfilterrestorer.cpp index 40bf9402573..ab399b202fc 100644 --- a/src/server/qgsfilterrestorer.cpp +++ b/src/server/qgsfilterrestorer.cpp @@ -61,10 +61,9 @@ void QgsOWSServerFilterRestorer::restoreLayerFilters( const QHash( filterIt.key() ); if ( filteredLayer ) { - QgsVectorDataProvider *dp = filteredLayer->dataProvider(); - if ( dp ) + if ( !filteredLayer->setSubsetString( filterIt.value() ) ) { - dp->setSubsetString( filterIt.value() ); + QgsMessageLog::logMessage( QStringLiteral( "Layer does not support Subset String" ) ); } } }