Kbase P122386: What are savepoints?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  2/17/2011 |
|
Status: Verified
GOAL:
What are savepoints?
GOAL:
What has changed about savepoints between OpenEdge 10.1A and 10.1B?
GOAL:
How do savepoints work in ABL?
GOAL:
What is the parameter -nosavepoint and what is its impact ?
GOAL:
How has record creation order changed between versions prior to OpenEdge 10.1A
GOAL:
How has record creation order changed post OpenEdge 10.1B ?
FACT(s) (Environment):
OpenEdge 10.1x
All Supported Operating Systems
FIX:
Starting with version OpenEdge 10.1A, in addition to transaction rollback, the OpenEdge database introduced a new feature to rollback to a savepoint. A savepoint is essentially a marker within a transaction that is recorded in the BI file.
In ABL, a request for a savepoint is made for each program block that could possibly be undone. Using these savepoints, ABL can request that the database rollback to a particular point. This implementation is internal and has no user visibility; its motive is to simplify transaction undo and possibly optimize database undo operations.
This new feature can be disabled with the client startup parameter -nosavepoint, which restores the old mechanism. This parameter should not change the behavior of applications: if it does, then there is likely a bug with the savepoints mechanism and this should be reported to Technical Support for investigation with the appropriate evidence.
There is a known issue specific to 10.1A and savepoints. In 10.1A the savepoints mechanism changes the semantics of record creation. When a record is created and a sub-transaction is opened, the record is created in the database immediately at the beginning of the sub-transaction. This is different than the behavior in versions prior to 10.1A, where record creation is performed only under the following circumstances:
- the buffer goes out of scope
- an index entry needs to be created for the record
- the record is released with RELEASE.
This different behavior specific to 10.1A has been reported as a bug multiple times: #OE00133589, #OE00146112, #OE00148173. The workaround in 10.1A is to use the -nosavepoint startup option on your client processes [_progres, _proapsv, prowin32, mpro ] which disables the savepoints mechanism altogether and reverts to the previous behavior.
This specific issue has been fixed in 10.1B: the savepoints mechanism has the same behavior w.r.t. record creation in 10.1B and later than the versions prior to 10.1A, i.e. the previous behavior has been restored. For this reason it is not necessary to use -nosavepoint in 10.1B to restore the old behavior under these conditions.