Combines updates and inserts reducing the number of actions in the commit.
This is in response to an issue where the FID is not known until after the commit so if a
Feature is inserted then later updated(using a FID filter to identify the feature to update)
within a single transactin then the commit will fail because the fid filter will be not apply
once the insert action is processed.
For Example:
- Insert Feature.
Transaction assigns it the id: NewFeature.
- Update Feature.
Fid filter is used to update NewFeature.
- Commit.
Update will fail because when the Insert action is processed NewFeature will not refer to any
feature.
The algorithm is essentially foreach( insertAction ){ Apply each update and Delete action
that applies to the inserted feature move insertAction to end of list }
Mind you this only works assuming there aren't any direct dependencies between the actions
beyond the ones specified by the API. For example if the value of an update depends directly
on an earlier feature object (which is bad practice and should never be done). Then we may
have problems with this solution. But I think that this solution is better than doing nothing
because at least in the proper use of the API the correct result will be obtained. Whereas
before the correct use of the API could obtain incorrect results.
|