[QGIS-Developer] QGIS/OGR: FeatureIds reassigned on write to data provider?

Even Rouault even.rouault at spatialys.com
Tue Sep 19 10:15:58 PDT 2017


On mardi 19 septembre 2017 18:30:50 CEST Sandro Mani wrote:
> On 11.07.2017 14:31, Even Rouault wrote:
> > We could potentially imagine to defer the repacking at
> > leaveUpdateMode() time, actually in the close() method which is called
> > when the reference counter of the update mode drops to zero (*),
> > instead of doing it at the end of each operation.
> 
> To come back to this, I was looking at moving replack() to close(), but
> noticed that syncToDisc() has the logic "for shapefiles, remove spatial
> index files and create a new index" which calls close. And syncToDisk is
> still called after every change. So should syncToDisk be also moved to
> close(), or at least blocked if an updateMode is active?
> 

Yes that would probably make sense to block syncToDisk() while in updateMode (so when 
mUpdateModeStackDepth > 0), but probably only if enterUpdateMode() is called by 
QgsVectorLayer::startEditing(), and not when called implicitly by doInitialActionsForEdition(), 
which might be the case if someone directly works at the provider level

bool QgsOgrProvider::doInitialActionsForEdition()
{
  if ( !mValid )
    return false;

  if ( !mWriteAccess && mWriteAccessPossible && mDynamicWriteAccess )
  {
    QgsDebugMsg( "Enter update mode implictly" );
    if ( !enterUpdateMode() )
      return false;
  }

  return true;
}

So probably a mImplicitUpdateMode flag should be set above near the QgsDebugMsg(), and 
the check to decide whether we can defer syncToDisk() would be ( !mImplicitUpdateMode && 
mUpdateModeStackDepth > 0)


> Thanks
> Sandro
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer


-- 
Spatialys - Geospatial professional services
http://www.spatialys.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20170919/45711445/attachment.html>


More information about the QGIS-Developer mailing list