@@ -44,21 +44,8 @@ QgsDelimitedTextFeatureIterator::QgsDelimitedTextFeatureIterator( QgsDelimitedTe
4444 mTestGeometry = false ;
4545
4646 mMode = FileScan;
47- if ( request.filterType () == QgsFeatureRequest::FilterFid )
48- {
49- QgsDebugMsg ( " Configuring for returning single id" );
50- mFeatureIds .append ( request.filterFid () );
51- mMode = FeatureIds;
52- mTestSubset = false ;
53- }
54- // If have geometry and testing geometry then evaluate options...
55- // If we don't have geometry then all records pass geometry filter.
56- // CC: 2013-05-09
57- // Not sure about intended relationship between filtering on geometry and
58- // requesting no geometry? Have preserved current logic of ignoring spatial filter
59- // if not requesting geometry.
6047
61- else if ( request.filterType () == QgsFeatureRequest::FilterRect && hasGeometry )
48+ if ( ! request.filterRect (). isNull () && hasGeometry )
6249 {
6350 QgsDebugMsg ( " Configuring for rectangle select" );
6451 mTestGeometry = true ;
@@ -98,13 +85,32 @@ QgsDelimitedTextFeatureIterator::QgsDelimitedTextFeatureIterator( QgsDelimitedTe
9885 }
9986 }
10087
101- // If we have a subset index then use it..
102- if ( mMode == FileScan && mSource ->mUseSubsetIndex )
88+ if ( request.filterType () == QgsFeatureRequest::FilterFid )
10389 {
104- QgsDebugMsg ( QString ( " Layer has subset index - use %1 items from subset index" ).arg ( mSource ->mSubsetIndex .size () ) );
90+ QgsDebugMsg ( " Configuring for returning single id" );
91+ if ( request.filterRect ().isNull () || ( !request.filterRect ().isNull () && mFeatureIds .contains ( request.filterFid () ) ) )
92+ {
93+ mFeatureIds = QList<QgsFeatureId>() << request.filterFid ();
94+ }
95+ mMode = FeatureIds;
10596 mTestSubset = false ;
106- mMode = SubsetIndex;
10797 }
98+ // If have geometry and testing geometry then evaluate options...
99+ // If we don't have geometry then all records pass geometry filter.
100+ // CC: 2013-05-09
101+ // Not sure about intended relationship between filtering on geometry and
102+ // requesting no geometry? Have preserved current logic of ignoring spatial filter
103+ // if not requesting geometry.
104+
105+ else
106+
107+ // If we have a subset index then use it..
108+ if ( mMode == FileScan && mSource ->mUseSubsetIndex )
109+ {
110+ QgsDebugMsg ( QString ( " Layer has subset index - use %1 items from subset index" ).arg ( mSource ->mSubsetIndex .size () ) );
111+ mTestSubset = false ;
112+ mMode = SubsetIndex;
113+ }
108114
109115 // Otherwise just have to scan the file
110116 if ( mMode == FileScan )
0 commit comments