Kbase P138926: Dynamic temp-table not deleted properly from super procedure.
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  29/12/2008 |
|
Status: Unverified
SYMPTOM(s):
Dynamic temp-table not deleted properly from super procedure.
Dynamic temp-table appears to exist after code intended to delete it is executed.
Error messages are received when creating a new temp-table that refer to a previously created and supposedly deleted temp-table.
The caller's temp-table parameter does not match to the target temp-table . (5363)
Try switching TEMP-TABLE method ADD-FIELDS-FROM for CREATE-LIKE. (9030)
FACT(s) (Environment):
Super procedure takes a table name as an INPUT parameter and passes back the temp-table as an OUTPUT parameter.
Super procedure runs persistently on AppServer.
Super procedure is run from stub which also runs on AppServer.
Stub also takes a table name as an INPUT parameter and passes back the temp-table as an OUTPUT parameter.
Client program calls AppServer stub multiple times using different table names as INPUT parameters.
Temp-table parameters are passed using the TABLE-HANDLE form.
Temp-table parameters are not passed by reference or by binding.
All Supported Operating Systems
Progress 9.1E
OpenEdge 10.x
CAUSE:
The temp-table is deleted properly in the super-procedure. Because the temp-table parameters are passed by value, a copy is created in the stub procedure when the parameter is passed back. Another copy is created in the client when the AppServer stub passes the temp table back to it. The copy in the stub is deleted properly, but the copy in the client program is not deleted due to a coding error. When the super procedure is run a second time, the temp-table handle passed in as an OUTPUT parameter still refers to the client's copy of the temp-table.
FIX:
Ensure that the handle used for a temp-table OUTPUT parameter does not refer to an existing temp-table.