Skip to content

Commit 9f3b907

Browse files
committedOct 15, 2018
More efficient field calculator iteration
1 parent 0db9f05 commit 9f3b907

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed
 

‎src/app/qgsattributetabledialog.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,10 @@ void QgsAttributeTableDialog::runFieldCalculation( QgsVectorLayer *layer, const
536536

537537
QgsField fld = layer->fields().at( fieldindex );
538538

539+
QSet< QString >referencedColumns = exp.referencedColumns();
540+
referencedColumns.insert( fld.name() ); // need existing column value to store old attribute when changing field values
541+
request.setSubsetOfAttributes( referencedColumns, layer->fields() );
542+
539543
//go through all the features and change the new attributes
540544
QgsFeatureIterator fit = layer->getFeatures( request );
541545
QgsFeature feature;

‎src/app/qgsfieldcalculator.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,9 @@ void QgsFieldCalculator::accept()
281281
emptyAttribute = QVariant( field.type() );
282282

283283
QgsFeatureRequest req = QgsFeatureRequest().setFlags( useGeometry ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry );
284+
QSet< QString > referencedColumns = exp.referencedColumns();
285+
referencedColumns.insert( field.name() ); // need existing column value to store old attribute when changing field values
286+
req.setSubsetOfAttributes( referencedColumns, mVectorLayer->fields() );
284287
if ( mOnlyUpdateSelectedCheckBox->isChecked() )
285288
{
286289
req.setFilterFids( mVectorLayer->selectedFeatureIds() );

0 commit comments

Comments
 (0)
Please sign in to comment.