@@ -769,6 +769,27 @@ def _lessdigits(s):
769
769
self .assertEqual (_lessdigits (subSet_vl .extent ().toString ()), filtered_extent )
770
770
self .assertNotEqual (_lessdigits (subSet_vl .extent ().toString ()), unfiltered_extent )
771
771
772
+ def testMalformedSubsetStrings (self ):
773
+ """Test that invalid where clauses always return false"""
774
+
775
+ testPath = TEST_DATA_DIR + '/' + 'lines.shp'
776
+
777
+ vl = QgsVectorLayer (testPath , 'subset_test' , 'ogr' )
778
+ self .assertTrue (vl .isValid ())
779
+ self .assertTrue (vl .setSubsetString ('' ))
780
+ self .assertTrue (vl .setSubsetString ('"Name" = \' Arterial\' ' ))
781
+ self .assertTrue (vl .setSubsetString ('select * from lines where "Name" = \' Arterial\' ' ))
782
+ self .assertFalse (vl .setSubsetString ('this is invalid sql' ))
783
+ self .assertFalse (vl .setSubsetString ('select * from lines where "NonExistentField" = \' someValue\' ' ))
784
+ self .assertFalse (vl .setSubsetString ('select * from lines where "Name" = \' Arte...' ))
785
+ self .assertFalse (vl .setSubsetString ('select * from lines where "Name" in (\' Arterial\' , \' Highway\' ' ))
786
+ self .assertFalse (vl .setSubsetString ('select * from NonExistentTable' ))
787
+ self .assertFalse (vl .setSubsetString ('select NonExistentField from lines' ))
788
+ self .assertFalse (vl .setSubsetString ('"NonExistentField" = \' someValue\' ' ))
789
+ self .assertFalse (vl .setSubsetString ('"Name" = \' Arte...' ))
790
+ self .assertFalse (vl .setSubsetString ('"Name" in (\' Arterial\' , \' Highway\' ' ))
791
+ self .assertTrue (vl .setSubsetString ('' ))
792
+
772
793
def testMultipatch (self ):
773
794
"""Check that we can deal with multipatch shapefiles, returned natively by OGR as GeometryCollection of TIN"""
774
795
0 commit comments