Skip to content

Commit

Permalink
Fix FilterExpression feature requests will ignore expression if
Browse files Browse the repository at this point in the history
using virtual fields or other complex filters

refs #13695
  • Loading branch information
nyalldawson authored and m-kuhn committed Nov 2, 2015
1 parent 556d87a commit dddd043
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/core/qgsvectorlayerfeatureiterator.cpp
Expand Up @@ -236,6 +236,17 @@ bool QgsVectorLayerFeatureIterator::fetchFeature( QgsFeature& f )
if ( mHasVirtualAttributes )
addVirtualAttributes( f );

if ( mRequest.filterType() == QgsFeatureRequest::FilterExpression && mProviderRequest.filterType() != QgsFeatureRequest::FilterExpression )
{
//filtering by expression, and couldn't do it on the provider side
mRequest.expressionContext()->setFeature( f );
if ( !mRequest.filterExpression()->evaluate( mRequest.expressionContext() ).toBool() )
{
//feature did not match filter
continue;
}
}

// update geometry
// TODO[MK]: FilterRect check after updating the geometry
if ( !( mRequest.flags() & QgsFeatureRequest::NoGeometry ) )
Expand Down

0 comments on commit dddd043

Please sign in to comment.