Project

General

Profile

Bug #6904

fix TRANSACTION block issues

Added by Constantin Asofiei over 1 year ago. Updated over 1 year ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
Due date:
% Done:

0%

billable:
No
vendor_id:
GCD
case_num:
version:

kb13974.pdf (49.1 KB) Constantin Asofiei, 11/02/2022 08:54 AM

History

#1 Updated by Constantin Asofiei over 1 year ago

For example, this program:

procedure proc0.
   def input param p1 as log.

   for each book exclusive-lock:
      pause.
      message locked(book).
      for each customer exclusive-lock:
         if p1 then delete customer.
      end.
   end.

   for each customer exclusive-lock:
      if p1 then delete customer.
   end.
end.

run proc0(no).

will show no TX support for the outer FOR EACH book block:
Also, the listing of the program:
.\p1.p                                10/27/2022 13:12:25   PROGRESS(R) Page 1   

{} Line Blk
-- ---- ---
      1     procedure proc0.
      2        def input param p1 as log.
      3        
      4   1    for each book exclusive-lock:
      5   1       pause.
      6   1       message locked(book).
      7   2       for each customer exclusive-lock:
      8   2         if p1 then delete customer.
      9   1       end.
     10        end.
     11        
     12   1    for each customer exclusive-lock:
     13   1       if p1 then delete customer.
     14        end.
     15     end.
     16     
     17     run proc0(no).
.\p1.p                                10/27/2022 13:12:25   PROGRESS(R) Page 2   

     File Name       Line Blk. Type   Tran            Blk. Label            
-------------------- ---- ----------- ---- --------------------------------
.\p1.p                  1 Procedure   No   Procedure proc0                  
.\p1.p                  4 For         No                                    
.\p1.p                  7 For         Yes                                   
.\p1.p                 12 For         Yes                                   
.\p1.p                  0 Procedure   No                                    
    Buffers: p2j_test.customer
             p2j_test.Book

In FWD, the block will have full TX mark.

Also, if you duplicate proc0 in a proc1 (after the proc0 definition), then in proc1, the outer FOR EACH block will not have a full TX in FWD.

KB13974 mentions some cases where full TX is not being set at a block.

In #6339 there was some work done to fix this, but this case was not fixed:

.\a.p                                 06/27/2022 14:53:25   PROGRESS(R) Page 1   

{} Line Blk
-- ---- ---
      1     procedure proc1.
      2   1    for each book exclusive-lock.
      3   1       message transaction book.isbn locked(book).
      4        end.
      5     end.
      6     
      7     run proc1.
.\a.p                                 06/27/2022 14:53:25   PROGRESS(R) Page 2   

     File Name       Line Blk. Type   Tran            Blk. Label            
-------------------- ---- ----------- ---- --------------------------------
.\a.p                   1 Procedure   No   Procedure proc1                  
.\a.p                   2 For         No                                    
.\a.p                   0 Procedure   No                                    
    Buffers: p2j_test.Book

My assumption at this time is because the book scope is expanded to the external program, then full TX is not emitted in OE.

Also available in: Atom PDF