@@ -416,7 +416,7 @@ QString QgsOgrProvider::storageType() const
416
416
return ogrDriverName;
417
417
}
418
418
419
- void QgsOgrProvider::setIgnoredFields ( bool fetchGeometry, const QgsAttributeList& fetchAttributes )
419
+ void QgsOgrProvider::setRelevantFields ( bool fetchGeometry, const QgsAttributeList & fetchAttributes )
420
420
{
421
421
#if defined(GDAL_VERSION_NUM) && GDAL_VERSION_NUM >= 1800
422
422
if ( OGR_L_TestCapability ( ogrLayer, OLCIgnoreFields ) )
@@ -447,7 +447,7 @@ bool QgsOgrProvider::featureAtId( int featureId,
447
447
bool fetchGeometry,
448
448
QgsAttributeList fetchAttributes )
449
449
{
450
- setIgnoredFields ( fetchGeometry, fetchAttributes );
450
+ setRelevantFields ( fetchGeometry, fetchAttributes );
451
451
452
452
OGRFeatureH fet = OGR_L_GetFeature ( ogrLayer, featureId );
453
453
if ( fet == NULL )
@@ -462,7 +462,6 @@ bool QgsOgrProvider::featureAtId( int featureId,
462
462
return false ;
463
463
}
464
464
465
-
466
465
/* fetch geometry */
467
466
if ( fetchGeometry )
468
467
{
@@ -633,7 +632,7 @@ void QgsOgrProvider::select( QgsAttributeList fetchAttributes, QgsRectangle rect
633
632
OGR_G_DestroyGeometry ( filter );
634
633
}
635
634
636
- setIgnoredFields ( fetchGeometry, fetchAttributes );
635
+ setRelevantFields ( fetchGeometry, fetchAttributes );
637
636
638
637
// start with first feature
639
638
OGR_L_ResetReading ( ogrLayer );
@@ -875,6 +874,8 @@ bool QgsOgrProvider::addFeature( QgsFeature& f )
875
874
876
875
bool QgsOgrProvider::addFeatures ( QgsFeatureList & flist )
877
876
{
877
+ setRelevantFields ( true , mAttributeFields .keys () );
878
+
878
879
bool returnvalue = true ;
879
880
for ( QgsFeatureList::iterator it = flist.begin (); it != flist.end (); ++it )
880
881
{
@@ -943,7 +944,7 @@ bool QgsOgrProvider::changeAttributeValues( const QgsChangedAttributesMap & attr
943
944
944
945
clearMinMaxCache ();
945
946
946
- setIgnoredFields ( true , QgsAttributeList () );
947
+ setRelevantFields ( true , mAttributeFields . keys () );
947
948
948
949
for ( QgsChangedAttributesMap::const_iterator it = attr_map.begin (); it != attr_map.end (); ++it )
949
950
{
@@ -1014,7 +1015,7 @@ bool QgsOgrProvider::changeGeometryValues( QgsGeometryMap & geometry_map )
1014
1015
OGRFeatureH theOGRFeature = 0 ;
1015
1016
OGRGeometryH theNewGeometry = 0 ;
1016
1017
1017
- setIgnoredFields ( true , QgsAttributeList () );
1018
+ setRelevantFields ( true , mAttributeFields . keys () );
1018
1019
1019
1020
for ( QgsGeometryMap::iterator it = geometry_map.begin (); it != geometry_map.end (); ++it )
1020
1021
{
0 commit comments