[QGIS-Developer] Warning: auto-transaction groups is broken for recent GDAL versions
Even Rouault
even.rouault at spatialys.com
Tue Dec 17 06:04:21 PST 2024
Le 17/12/2024 à 08:39, Alessandro Pasotti a écrit :
>
> Can/should we fix it upstream in GDAL?
GDAL vector drivers have never really thought about the possibility of a
rollback after a OGRLayer::CreateField()/AlterFieldDefn()/DeleteField().
That's a change that must be done *per driver* that supports those
operations and transactions. I'd suspect the expected behaviour woud be
to update the layer definition to reflect that state it had before
StartTransaction(). That probably requires to have some generic logic to
memorize changes and undo them, but can't probably do just a simple
"clone layer definition" and restore it, because it would invalidate
field definitions that aren't affected.
Ideally we'd want the following to work:
my_field_defn = layer.GetFieldDefn(0)
layer.StartTransaction()
layer.CreateField(ogr.FieldDefn("foo"))
new_field_defn = layer.GetFieldDefn("foo")
layer.RollbackTransaction() <-- new_field_defn should be put into a
"ghost" list that is destroyed at layer de-instanciation
my_field_defn.GetName() <-- hopefully that object is still alive ...
new_field_defn.GetName() <-- shouldn't crash.
Eveb
--
http://www.spatialys.com
My software is free, but my time generally not.
Butcher of all kinds of standards, open or closed formats. At the end, this is just about bytes.
More information about the QGIS-Developer
mailing list