40
40
41
41
QgsOgrFeatureIterator::QgsOgrFeatureIterator ( QgsOgrFeatureSource *source, bool ownSource, const QgsFeatureRequest &request )
42
42
: QgsAbstractFeatureIteratorFromSource<QgsOgrFeatureSource>( source, ownSource, request )
43
- , mSubsetStringSet( false )
44
- , mOrigFidAdded( false )
45
- , mFetchGeometry( false )
46
- , mExpressionCompiled( false )
47
43
, mFilterFids( mRequest .filterFids() )
48
44
, mFilterFidsIt( mFilterFids .constBegin() )
49
45
{
@@ -56,21 +52,21 @@ QgsOgrFeatureIterator::QgsOgrFeatureIterator( QgsOgrFeatureSource *source, bool
56
52
57
53
if ( mSource ->mLayerName .isNull () )
58
54
{
59
- ogrLayer = GDALDatasetGetLayer ( mConn ->ds , mSource ->mLayerIndex );
55
+ mOgrLayer = GDALDatasetGetLayer ( mConn ->ds , mSource ->mLayerIndex );
60
56
}
61
57
else
62
58
{
63
- ogrLayer = GDALDatasetGetLayerByName ( mConn ->ds , mSource ->mLayerName .toUtf8 ().constData () );
59
+ mOgrLayer = GDALDatasetGetLayerByName ( mConn ->ds , mSource ->mLayerName .toUtf8 ().constData () );
64
60
}
65
- if ( !ogrLayer )
61
+ if ( !mOgrLayer )
66
62
{
67
63
return ;
68
64
}
69
65
70
66
if ( !mSource ->mSubsetString .isEmpty () )
71
67
{
72
- ogrLayer = QgsOgrProviderUtils::setSubsetString ( ogrLayer , mConn ->ds , mSource ->mEncoding , mSource ->mSubsetString , mOrigFidAdded );
73
- if ( !ogrLayer )
68
+ mOgrLayer = QgsOgrProviderUtils::setSubsetString ( mOgrLayer , mConn ->ds , mSource ->mEncoding , mSource ->mSubsetString , mOrigFidAdded );
69
+ if ( !mOgrLayer )
74
70
{
75
71
return ;
76
72
}
@@ -131,17 +127,17 @@ QgsOgrFeatureIterator::QgsOgrFeatureIterator( QgsOgrFeatureSource *source, bool
131
127
// filter if we choose to ignore them (fixes #11223)
132
128
if ( ( mSource ->mDriverName != QLatin1String ( " VRT" ) && mSource ->mDriverName != QLatin1String ( " OGR_VRT" ) ) || mFilterRect .isNull () )
133
129
{
134
- QgsOgrProviderUtils::setRelevantFields ( ogrLayer , mSource ->mFields .count (), mFetchGeometry , attrs, mSource ->mFirstFieldIsFid );
130
+ QgsOgrProviderUtils::setRelevantFields ( mOgrLayer , mSource ->mFields .count (), mFetchGeometry , attrs, mSource ->mFirstFieldIsFid );
135
131
}
136
132
137
133
// spatial query to select features
138
134
if ( !mFilterRect .isNull () )
139
135
{
140
- OGR_L_SetSpatialFilterRect ( ogrLayer , mFilterRect .xMinimum (), mFilterRect .yMinimum (), mFilterRect .xMaximum (), mFilterRect .yMaximum () );
136
+ OGR_L_SetSpatialFilterRect ( mOgrLayer , mFilterRect .xMinimum (), mFilterRect .yMinimum (), mFilterRect .xMaximum (), mFilterRect .yMaximum () );
141
137
}
142
138
else
143
139
{
144
- OGR_L_SetSpatialFilter ( ogrLayer , nullptr );
140
+ OGR_L_SetSpatialFilter ( mOgrLayer , nullptr );
145
141
}
146
142
147
143
if ( request.filterType () == QgsFeatureRequest::FilterExpression
@@ -161,7 +157,7 @@ QgsOgrFeatureIterator::QgsOgrFeatureIterator( QgsOgrFeatureSource *source, bool
161
157
if ( result == QgsSqlExpressionCompiler::Complete || result == QgsSqlExpressionCompiler::Partial )
162
158
{
163
159
QString whereClause = compiler->result ();
164
- if ( OGR_L_SetAttributeFilter ( ogrLayer , mSource ->mEncoding ->fromUnicode ( whereClause ).constData () ) == OGRERR_NONE )
160
+ if ( OGR_L_SetAttributeFilter ( mOgrLayer , mSource ->mEncoding ->fromUnicode ( whereClause ).constData () ) == OGRERR_NONE )
165
161
{
166
162
// if only partial success when compiling expression, we need to double-check results using QGIS' expressions
167
163
mExpressionCompiled = ( result == QgsSqlExpressionCompiler::Complete );
@@ -170,14 +166,14 @@ QgsOgrFeatureIterator::QgsOgrFeatureIterator( QgsOgrFeatureSource *source, bool
170
166
}
171
167
else
172
168
{
173
- OGR_L_SetAttributeFilter ( ogrLayer , nullptr );
169
+ OGR_L_SetAttributeFilter ( mOgrLayer , nullptr );
174
170
}
175
171
176
172
delete compiler;
177
173
}
178
174
else
179
175
{
180
- OGR_L_SetAttributeFilter ( ogrLayer , nullptr );
176
+ OGR_L_SetAttributeFilter ( mOgrLayer , nullptr );
181
177
}
182
178
183
179
@@ -204,12 +200,12 @@ bool QgsOgrFeatureIterator::fetchFeatureWithId( QgsFeatureId id, QgsFeature &fea
204
200
gdal::ogr_feature_unique_ptr fet;
205
201
if ( mOrigFidAdded )
206
202
{
207
- OGR_L_ResetReading ( ogrLayer );
208
- OGRFeatureDefnH fdef = OGR_L_GetLayerDefn ( ogrLayer );
203
+ OGR_L_ResetReading ( mOgrLayer );
204
+ OGRFeatureDefnH fdef = OGR_L_GetLayerDefn ( mOgrLayer );
209
205
int lastField = OGR_FD_GetFieldCount ( fdef ) - 1 ;
210
206
if ( lastField >= 0 )
211
207
{
212
- while ( fet.reset ( OGR_L_GetNextFeature ( ogrLayer ) ), fet )
208
+ while ( fet.reset ( OGR_L_GetNextFeature ( mOgrLayer ) ), fet )
213
209
{
214
210
if ( OGR_F_GetFieldAsInteger64 ( fet.get (), lastField ) == id )
215
211
{
@@ -220,7 +216,7 @@ bool QgsOgrFeatureIterator::fetchFeatureWithId( QgsFeatureId id, QgsFeature &fea
220
216
}
221
217
else
222
218
{
223
- fet.reset ( OGR_L_GetFeature ( ogrLayer , FID_TO_NUMBER ( id ) ) );
219
+ fet.reset ( OGR_L_GetFeature ( mOgrLayer , FID_TO_NUMBER ( id ) ) );
224
220
}
225
221
226
222
if ( !fet )
@@ -239,7 +235,7 @@ bool QgsOgrFeatureIterator::fetchFeature( QgsFeature &feature )
239
235
{
240
236
feature.setValid ( false );
241
237
242
- if ( mClosed || !ogrLayer )
238
+ if ( mClosed || !mOgrLayer )
243
239
return false ;
244
240
245
241
if ( mRequest .filterType () == QgsFeatureRequest::FilterFid )
@@ -264,7 +260,7 @@ bool QgsOgrFeatureIterator::fetchFeature( QgsFeature &feature )
264
260
265
261
gdal::ogr_feature_unique_ptr fet;
266
262
267
- while ( fet.reset ( OGR_L_GetNextFeature ( ogrLayer ) ), fet )
263
+ while ( fet.reset ( OGR_L_GetNextFeature ( mOgrLayer ) ), fet )
268
264
{
269
265
if ( !readFeature ( std::move ( fet ), feature ) )
270
266
continue ;
@@ -286,10 +282,10 @@ bool QgsOgrFeatureIterator::fetchFeature( QgsFeature &feature )
286
282
287
283
bool QgsOgrFeatureIterator::rewind ()
288
284
{
289
- if ( mClosed || !ogrLayer )
285
+ if ( mClosed || !mOgrLayer )
290
286
return false ;
291
287
292
- OGR_L_ResetReading ( ogrLayer );
288
+ OGR_L_ResetReading ( mOgrLayer );
293
289
294
290
mFilterFidsIt = mFilterFids .constBegin ();
295
291
@@ -305,14 +301,14 @@ bool QgsOgrFeatureIterator::close()
305
301
iteratorClosed ();
306
302
307
303
// Will for example release SQLite3 statements
308
- if ( ogrLayer )
304
+ if ( mOgrLayer )
309
305
{
310
- OGR_L_ResetReading ( ogrLayer );
306
+ OGR_L_ResetReading ( mOgrLayer );
311
307
}
312
308
313
309
if ( mSubsetStringSet )
314
310
{
315
- GDALDatasetReleaseResultSet ( mConn ->ds , ogrLayer );
311
+ GDALDatasetReleaseResultSet ( mConn ->ds , mOgrLayer );
316
312
}
317
313
318
314
if ( mConn )
@@ -322,7 +318,7 @@ bool QgsOgrFeatureIterator::close()
322
318
}
323
319
324
320
mConn = nullptr ;
325
- ogrLayer = nullptr ;
321
+ mOgrLayer = nullptr ;
326
322
327
323
mClosed = true ;
328
324
return true ;
@@ -350,7 +346,7 @@ bool QgsOgrFeatureIterator::readFeature( gdal::ogr_feature_unique_ptr fet, QgsFe
350
346
{
351
347
if ( mOrigFidAdded )
352
348
{
353
- OGRFeatureDefnH fdef = OGR_L_GetLayerDefn ( ogrLayer );
349
+ OGRFeatureDefnH fdef = OGR_L_GetLayerDefn ( mOgrLayer );
354
350
int lastField = OGR_FD_GetFieldCount ( fdef ) - 1 ;
355
351
if ( lastField >= 0 )
356
352
feature.setId ( OGR_F_GetFieldAsInteger64 ( fet.get (), lastField ) );
0 commit comments