diff --git a/src/providers/postgres/qgspostgresfeatureiterator.cpp b/src/providers/postgres/qgspostgresfeatureiterator.cpp index 0ecf3e09595c..82cd6d32609d 100644 --- a/src/providers/postgres/qgspostgresfeatureiterator.cpp +++ b/src/providers/postgres/qgspostgresfeatureiterator.cpp @@ -132,7 +132,11 @@ bool QgsPostgresFeatureIterator::nextFeature( QgsFeature& feature ) QgsDebugMsg( QString( "Finished after %1 features" ).arg( mFetched ) ); close(); - if ( P->mFeaturesCounted < mFetched ) + /* only updates the feature count if it was already once. + * Otherwise, this would lead to false feature count if + * an existing project is open at a restrictive extent. + */ + if ( P->mFeaturesCounted > 0 && P->mFeaturesCounted < mFetched ) { QgsDebugMsg( QString( "feature count adjusted from %1 to %2" ).arg( P->mFeaturesCounted ).arg( mFetched ) ); P->mFeaturesCounted = mFetched; diff --git a/src/providers/postgres/qgspostgresprovider.cpp b/src/providers/postgres/qgspostgresprovider.cpp index 91ab32c64aca..113c99d1acf2 100644 --- a/src/providers/postgres/qgspostgresprovider.cpp +++ b/src/providers/postgres/qgspostgresprovider.cpp @@ -1779,7 +1779,8 @@ bool QgsPostgresProvider::addFeatures( QgsFeatureList &flist ) mConnectionRW->PQexecNR( "DEALLOCATE addfeatures" ); mConnectionRW->PQexecNR( "COMMIT" ); - mFeaturesCounted += flist.size(); + if ( mFeaturesCounted >= 0 ) + mFeaturesCounted += flist.size(); } catch ( PGException &e ) { @@ -1835,8 +1836,8 @@ bool QgsPostgresProvider::deleteFeatures( const QgsFeatureIds & id ) dropOrphanedTopoGeoms(); } - - mFeaturesCounted -= id.size(); + if ( mFeaturesCounted >= 0 ) + mFeaturesCounted -= id.size(); } catch ( PGException &e ) {