Skip to content

Commit

Permalink
Prepare expression and only request required pieces
Browse files Browse the repository at this point in the history
  • Loading branch information
m-kuhn committed Feb 20, 2019
1 parent 5fe225b commit 9f77b2d
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/core/fieldformatter/qgsrelationreferencefieldformatter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,12 +130,20 @@ QVariant QgsRelationReferenceFieldFormatter::createCache( QgsVectorLayer *layer,
return QVariant();
}

QgsExpression expr( referencedLayer->displayExpression() );

QgsFeatureRequest request;
request.setFlags( QgsFeatureRequest::NoGeometry );
QgsAttributeList requiredAttributes = expr.referencedAttributeIndexes( referencedLayer->fields() ).toList();
requiredAttributes << referencedFieldIdx;
request.setSubsetOfAttributes( requiredAttributes );
QgsFeature feature;
auto iterator = referencedLayer->getFeatures();
auto iterator = referencedLayer->getFeatures( request );

QgsExpression expr( referencedLayer->displayExpression() );
QgsExpressionContext context( QgsExpressionContextUtils::globalProjectLayerScopes( referencedLayer ) );

expr.prepare( &context );

while ( iterator.nextFeature( feature ) )
{
context.setFeature( feature );
Expand Down

0 comments on commit 9f77b2d

Please sign in to comment.