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.