Kbase P98844: What is an Index Cursor (IC) ?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  11/12/2008 |
|
Status: Verified
GOAL:
What is an Index Cursor
GOAL:
What is a CI?
GOAL:
What is a Cursor Index?
FACT(s) (Environment):
All Supported Operating Systems
Progress/OpenEdge Product Family
FIX:
Index Cursors are essentially place holders during file access. They have size 6 by default; that is, they support up to five levels of indirect access.
For each active buffer, We have a CI (Cursor Index).
For the RECORD, I have an ICB (in-core Buffer).
The locking occurs at the ICB level, not at the CI level.
Therefore, although I had a no-lock on the record CI, when the CI asked for the exclusive-lock, the ICB upgraded the record to exclusive-lock.
When the transaction ended, the ICB downgrades the record to share-lock.
When the record scope ends, the ICB breaks the connection with the CI, but since the ICB for the record is still active, it leaves the record SHARE locked.
The database contains one instance of a record and locks are applied to that. In the 4gl runtime, there is a copy of the record in an internal buffer, called an ICB. The ICB is filled when a record is fetched from the database or when one is created in the application.
The 4GL program's buffers point to an ICB, but more than one buffer can point to the same ICB when they refer to the same record.
See also the -brl Startup Parameter Option on how to change this behavior.
See Solution