@@ -209,7 +209,7 @@ def executeSql(self):
209209 self .update ()
210210 QApplication .restoreOverrideCursor ()
211211
212- def _getSqlLayer (self ):
212+ def _getSqlLayer (self , _filter ):
213213 hasUniqueField = self .uniqueColumnCheck .checkState () == Qt .Checked
214214 if hasUniqueField :
215215 if self .allowMultiColumnPk :
@@ -258,24 +258,23 @@ def _getSqlLayer(self):
258258
259259 # create the layer
260260 layer = self .db .toSqlLayer (query , geomFieldName , uniqueFieldName , newLayerName , layerType ,
261- self .avoidSelectById .isChecked (), self . filter )
261+ self .avoidSelectById .isChecked (), _filter )
262262 if layer .isValid ():
263263 return layer
264264 else :
265265 return None
266266
267267 def loadSqlLayer (self ):
268268 QApplication .setOverrideCursor (QCursor (Qt .WaitCursor ))
269- layer = self ._getSqlLayer ()
270- QApplication .restoreOverrideCursor ()
271-
272- if layer == None :
273- return
269+ try :
270+ layer = self ._getSqlLayer (self .filter )
271+ if layer == None :
272+ return
274273
275- from qgis .core import QgsMapLayerRegistry
276- QApplication . setOverrideCursor ( QCursor ( Qt . WaitCursor ) )
277- QgsMapLayerRegistry . instance (). addMapLayers ([ layer ], True )
278- QApplication .restoreOverrideCursor ()
274+ from qgis .core import QgsMapLayerRegistry
275+ QgsMapLayerRegistry . instance (). addMapLayers ([ layer ], True )
276+ finally :
277+ QApplication .restoreOverrideCursor ()
279278
280279 def fillColumnCombos (self ):
281280 query = self ._getSqlQuery ()
@@ -460,18 +459,12 @@ def uniqueTextChanged(self, text):
460459
461460 def setFilter (self ):
462461 from qgis .gui import QgsQueryBuilder
463- layer = self ._getSqlLayer ()
464-
465- if layer == None :
466- # probably the defined filter does not work for the query, so try to create the layer without the filter
467- filter = self .filter
468- self .filter = ""
469- layer = self ._getSqlLayer ()
470- self .filter = filter
471- if layer == None :
472- return
462+ layer = self ._getSqlLayer ("" )
463+ if not layer :
464+ return
473465
474466 dlg = QgsQueryBuilder (layer )
475467 dlg .setSql (self .filter )
476468 if dlg .exec_ ():
477469 self .filter = dlg .sql ()
470+ layer .deleteLater ()
0 commit comments