Bug #2176
exceptions to rereadnolock
0%
Related issues
History
#1 Updated by Ovidiu Maxiniuc over 10 years ago
This looks like an optimization of some kind that Progress uses to reduce accesses to db.
When the search for a record is done using the ROWID
or RECID
, the record is not re-fetched from db, instead the value found in any existing buffer. Only if there is only one buffer the value is refreshed from db.
In other words if a record is looked up using its ROWID
or RECID
Progress will behave like the rereadnolock is off even if it was explicitly added to command-line.
Current implementation does not honor this.
I am thinking of checking for these functions ROWID
or RECID
in the hql parser. The difficulty here is to detect the form of the where hql expression the ROWID
or RECID
appear in order to qualify as the above exception.
For example:FIND FIRST person WHERE crecid EQ RECID(person) NO-LOCK.
- will not re-fetch in rereadnolock and multi-bufferFIND FIRST person WHERE crecid EQ RECID(person) OR person.id EQ 0 NO-LOCK.
- will not re-fetch in rereadnolock and multi-buffer
but FIND FIRST person WHERE crecid EQ RECID(person) OR otherid EQ RECID(person) NO-LOCK.
- will do re-fetch in rereadnolock and multi-buffer.
#2 Updated by Eric Faulhaber about 8 years ago
- Target version set to Milestone 17
Possible candidate for performance improvement.
#3 Updated by Greg Shah over 7 years ago
- Target version changed from Milestone 17 to Performance and Scalability Improvements
#4 Updated by Greg Shah over 1 year ago
- Parent task deleted (
#2175) - Target version deleted (
Performance and Scalability Improvements)
#5 Updated by Greg Shah over 1 year ago
- Related to Feature #2175: add support for -rereadnolock startup parameter added