Skip to content

Commit fa89e29

Browse files
committed
feature iterator: include attributes required by virtual fields first so that
they trigger joins if necessary (fixes #11545)
1 parent 3646e35 commit fa89e29

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

src/core/qgsvectorlayerfeatureiterator.cpp

+2-3
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,12 @@ QgsVectorLayerFeatureIterator::QgsVectorLayerFeatureIterator( QgsVectorLayerFeat
9090
, mFetchedFid( false )
9191
, mEditGeometrySimplifier( 0 )
9292
{
93+
prepareExpressions();
9394

9495
// prepare joins: may add more attributes to fetch (in order to allow join)
9596
if ( mSource->mJoinBuffer->containsJoins() )
9697
prepareJoins();
9798

98-
prepareExpressions();
99-
10099
mHasVirtualAttributes = !mFetchJoinInfo.isEmpty() || !mExpressionFieldInfo.isEmpty();
101100

102101
// by default provider's request is the same
@@ -507,7 +506,7 @@ void QgsVectorLayerFeatureIterator::prepareExpressions()
507506
if ( mRequest.flags() & QgsFeatureRequest::SubsetOfAttributes )
508507
{
509508
QgsAttributeList attrs;
510-
Q_FOREACH ( const QString& col, exp->referencedColumns() )
509+
Q_FOREACH( const QString& col, exp->referencedColumns() )
511510
{
512511
attrs.append( mSource->mFields.fieldNameIndex( col ) );
513512
}

0 commit comments

Comments
 (0)