Consultor Eletrônico



Kbase P120712: 4GL/ABL: Error (40) repeatedly calling a procedure that defines an UNDO TEMP-TABLE from within a tra
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   03/02/2009
Status: Verified

SYMPTOM(s):

4GL/ABL: Error (40) repeatedly calling a procedure that defines an UNDO TEMP-TABLE from within a transaction.

SYSTEM ERROR: Attempt to define too many indexes. (40)

Less than 30000 indexes defined in application

No dynamic temp-tables or limited number of dynamic temp-tables

No recursion in program

Limited number of shared temp-tables defined

Using UNDO temp-tables

Procedure that defines UNDO temp-tables is called repeatedly inside transaction

FACT(s) (Environment):

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

CAUSE:

This is a product limitation. If a procedure starts a transaction and repeatedly invokes a second procedure that defines one or more UNDO TEMP-TABLEs, then the SYSTEM ERROR: Attempt to define too many indexes. (40) will be generated unless the transaction ends before the 32K maximum number of indexes allowed in the TEMP-TABLE database is exceeded. This is because Progress can not delete UNDO TEMP-TABLEs information before the end of the transaction since that information is stored to rollback or UNDO the transaction if needed.

FIX:

Use the NO-UNDO option in the TEMP-TABLE definitions or move the UNDO TEMP-TABLE definitions outside the scope of the transaction.

Alternatively, consider breaking up the transaction into several smaller ones.