Skip to content

Commit 53475e2

Browse files
author
jef
committed
fix #3542
git-svn-id: http://svn.osgeo.org/qgis/trunk@15395 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 432d4ce commit 53475e2

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

src/providers/ogr/qgsogrprovider.cpp

+7-6
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ QString QgsOgrProvider::storageType() const
416416
return ogrDriverName;
417417
}
418418

419-
void QgsOgrProvider::setIgnoredFields( bool fetchGeometry, const QgsAttributeList& fetchAttributes )
419+
void QgsOgrProvider::setRelevantFields( bool fetchGeometry, const QgsAttributeList &fetchAttributes )
420420
{
421421
#if defined(GDAL_VERSION_NUM) && GDAL_VERSION_NUM >= 1800
422422
if ( OGR_L_TestCapability( ogrLayer, OLCIgnoreFields ) )
@@ -447,7 +447,7 @@ bool QgsOgrProvider::featureAtId( int featureId,
447447
bool fetchGeometry,
448448
QgsAttributeList fetchAttributes )
449449
{
450-
setIgnoredFields( fetchGeometry, fetchAttributes );
450+
setRelevantFields( fetchGeometry, fetchAttributes );
451451

452452
OGRFeatureH fet = OGR_L_GetFeature( ogrLayer, featureId );
453453
if ( fet == NULL )
@@ -462,7 +462,6 @@ bool QgsOgrProvider::featureAtId( int featureId,
462462
return false;
463463
}
464464

465-
466465
/* fetch geometry */
467466
if ( fetchGeometry )
468467
{
@@ -633,7 +632,7 @@ void QgsOgrProvider::select( QgsAttributeList fetchAttributes, QgsRectangle rect
633632
OGR_G_DestroyGeometry( filter );
634633
}
635634

636-
setIgnoredFields( fetchGeometry, fetchAttributes );
635+
setRelevantFields( fetchGeometry, fetchAttributes );
637636

638637
//start with first feature
639638
OGR_L_ResetReading( ogrLayer );
@@ -875,6 +874,8 @@ bool QgsOgrProvider::addFeature( QgsFeature& f )
875874

876875
bool QgsOgrProvider::addFeatures( QgsFeatureList & flist )
877876
{
877+
setRelevantFields( true, mAttributeFields.keys() );
878+
878879
bool returnvalue = true;
879880
for ( QgsFeatureList::iterator it = flist.begin(); it != flist.end(); ++it )
880881
{
@@ -943,7 +944,7 @@ bool QgsOgrProvider::changeAttributeValues( const QgsChangedAttributesMap & attr
943944

944945
clearMinMaxCache();
945946

946-
setIgnoredFields( true, QgsAttributeList() );
947+
setRelevantFields( true, mAttributeFields.keys() );
947948

948949
for ( QgsChangedAttributesMap::const_iterator it = attr_map.begin(); it != attr_map.end(); ++it )
949950
{
@@ -1014,7 +1015,7 @@ bool QgsOgrProvider::changeGeometryValues( QgsGeometryMap & geometry_map )
10141015
OGRFeatureH theOGRFeature = 0;
10151016
OGRGeometryH theNewGeometry = 0;
10161017

1017-
setIgnoredFields( true, QgsAttributeList() );
1018+
setRelevantFields( true, mAttributeFields.keys() );
10181019

10191020
for ( QgsGeometryMap::iterator it = geometry_map.begin(); it != geometry_map.end(); ++it )
10201021
{

src/providers/ogr/qgsogrprovider.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,8 @@ class QgsOgrProvider : public QgsVectorDataProvider
251251
/** find out the number of features of the whole layer */
252252
void recalculateFeatureCount();
253253

254-
/** tell OGR which fields not to fetch in nextFeature/featureAtId */
255-
void setIgnoredFields( bool fetchGeometry, const QgsAttributeList& fetchAttributes );
254+
/** tell OGR, which fields to fetch in nextFeature/featureAtId (ie. which not to ignore) */
255+
void setRelevantFields( bool fetchGeometry, const QgsAttributeList& fetchAttributes );
256256

257257
private:
258258
unsigned char *getGeometryPointer( OGRFeatureH fet );

0 commit comments

Comments
 (0)