Skip to content

Commit 13a888d

Browse files
committedDec 19, 2017
[ogr] Fix ExactIntersection flag should be ignored if filter rect
is not set And add provider test case to ensure no other providers have this issue
1 parent e678bfa commit 13a888d

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed
 

‎src/providers/ogr/qgsogrfeatureiterator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ bool QgsOgrFeatureIterator::readFeature( gdal::ogr_feature_unique_ptr fet, QgsFe
363363
feature.initAttributes( mSource->mFields.count() );
364364
feature.setFields( mSource->mFields ); // allow name-based attribute lookups
365365

366-
bool useIntersect = mRequest.flags() & QgsFeatureRequest::ExactIntersect;
366+
bool useIntersect = !mRequest.filterRect().isNull() && mRequest.flags() & QgsFeatureRequest::ExactIntersect;
367367
bool geometryTypeFilter = mSource->mOgrGeometryTypeFilter != wkbUnknown;
368368
if ( mFetchGeometry || useIntersect || geometryTypeFilter )
369369
{

‎tests/src/python/featuresourcetestbase.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,14 @@ def testGetFeaturesFilterRectTests(self):
485485
assert set(features) == set([1, 2, 3, 4, 5]), 'Got {} instead'.format(features)
486486
self.assertTrue(all_valid)
487487

488+
# ExactIntersection flag set, but no filter rect set. Should be ignored.
489+
request = QgsFeatureRequest()
490+
request.setFlags(QgsFeatureRequest.ExactIntersect)
491+
features = [f['pk'] for f in self.source.getFeatures(request)]
492+
all_valid = (all(f.isValid() for f in self.source.getFeatures(request)))
493+
assert set(features) == set([1, 2, 3, 4, 5]), 'Got {} instead'.format(features)
494+
self.assertTrue(all_valid)
495+
488496
def testRectAndExpression(self):
489497
extent = QgsRectangle(-70, 67, -60, 80)
490498
request = QgsFeatureRequest().setFilterExpression('"cnt">200').setFilterRect(extent)

0 commit comments

Comments
 (0)