From 52bdbdf332536cca7c0077deef5852584fb02360 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Mon, 25 Sep 2017 13:19:09 +0200 Subject: [PATCH] [OGR] Followup: Add orig_ogc_fid as last field to avoid changing field order --- src/providers/ogr/qgsogrfeatureiterator.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/providers/ogr/qgsogrfeatureiterator.cpp b/src/providers/ogr/qgsogrfeatureiterator.cpp index 2dfd500b47a7..1857b67f08f8 100644 --- a/src/providers/ogr/qgsogrfeatureiterator.cpp +++ b/src/providers/ogr/qgsogrfeatureiterator.cpp @@ -327,11 +327,16 @@ bool QgsOgrFeatureIterator::readFeature( OGRFeatureH fet, QgsFeature& feature ) { if ( mOrigFidAdded ) { + OGRFeatureDefnH fdef = OGR_L_GetLayerDefn( ogrLayer ); + int lastField = OGR_FD_GetFieldCount( fdef ) - 1; + if ( lastField >= 0 ) #if defined(GDAL_VERSION_NUM) && GDAL_VERSION_NUM >= 2000000 - feature.setFeatureId( OGR_F_GetFieldAsInteger64( fet, 0 ) ); + feature.setFeatureId( OGR_F_GetFieldAsInteger64( fet, lastField ) ); #else - feature.setFeatureId( OGR_F_GetFieldAsInteger( fet, 0 ) ); + feature.setFeatureId( OGR_F_GetFieldAsInteger( fet, lastField ) ); #endif + else + feature.setFeatureId( OGR_F_GetFID( fet ) ); } else {