Consultor Eletrônico



Kbase P71257: 4GL/ABL: Error (915) doing a FIND FIRST with ROWID.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   29/12/2008
Status: Verified

SYMPTOM(s):

4GL/ABL: Error (915) doing a FIND FIRST with ROWID.

Lock table overflow, increase -L on server (915)

The error IS generated when executing a statement similar to:

FIND FIRST customer WHERE STRING(ROWID(customer)) = '0x00000071'.
UPDATE customer EXCEPT comments.

The error is NOT generated when executing a statement similar to:

FIND FIRST customer WHERE STRING(ROWID(customer)) = '0x00000071'.
DISPLAY customer EXCEPT comments.

FACT(s) (Environment):

All Supported Operating Systems
Progress 8.x
Progress 9.x
OpenEdge 10.x

CAUSE:

Using the STRING function in the WHERE clause of the FIND statement causes Progress/OpenEdge to use the primary index to sequentially access the records SHARE-LOCK till it reaches the desired one. Using the UPDATE statement causes Progress/OpenEdge to start a transaction causing all the accessed records to be held SHARE-LOCK records till the end of the transaction.

FIX:

To avoid having to read and hold in SHARE-LOCK all the records prior to the desired one , go after the record directly using the ROWID function. That is modify the WHERE clause as per the following example:

FIND FIRST customer WHERE ROWID(customer) = TO-ROWID('0x00000071').
UPDATE customer EXCEPT comments.