Project

General

Profile

Bug #3144

Provide correct legacy name for a RecordBuffer/TemporaryBuffer

Added by Igor Skornyakov almost 8 years ago. Updated almost 8 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
07/12/2016
Due date:
% Done:

0%

billable:
No
vendor_id:
GCD
case_num:
version:

History

#1 Updated by Igor Skornyakov almost 8 years ago

Before the revision 11067 the legacy names for the temporary tables and buffers was always converted to lower case. In the revision 11067 this was fixed for the DEFINE BUFFER and DEFINE TEMP-TABLE/WORKFILE statements.
It is necessary to fix the issue for all other cases (see #2645 note 86)

#2 Updated by Igor Skornyakov almost 8 years ago

Constantin,
Eric suggested that your comments 105,106 for #2645 should be in the scope of this task as well. Unfortunately I'm not sure that I completely understand these comments. Can you please provide an expanded version here?
Thank you.

#3 Updated by Constantin Asofiei almost 8 years ago

Igor Skornyakov wrote:

Constantin,
Eric suggested that your comments 105,106 for #2645 should be in the scope of this task as well. Unfortunately I'm not sure that I completely understand these comments. Can you please provide an expanded version here?
Thank you.

The idea behind note 105 in #2645 is this. Use a shared temp-table, in two programs:
  1. pr1.p
    def new shared temp-table Tt-1 field f1 as int.
    
    run pr2.p.
    
  2. pr2.p
    def shared temp-table tT-1 field f1 as int.
    find first tt-1.
    

After running pr1.p, you will see the ** FIND FIRST/LAST failed for table tT-1. (565) message. Note how the table name is as defined in pr2.p (the slave temp-table) and not in pr1.p (the master temp-table).

The problem in P2J is that we don't track the slave names, we re-use the names from the master definition. We need to scope the resource name (temp-table, buffer, and maybe others, too - frame, stream, menu) so that the slave versions use the legacy name as defined in the DEFINE SHARED statement, and not the name at the DEFINE NEW SHARED statement.

You can start with temp-table/buffers, but we need to write tests for the other shared resources, too.

#4 Updated by Igor Skornyakov almost 8 years ago

Constantin Asofiei wrote:

The idea behind note 105 in #2645 is this. Use a shared temp-table, in two programs:
  1. pr1.p
    [...]
  2. pr2.p
    [...]

After running pr1.p, you will see the ** FIND FIRST/LAST failed for table tT-1. (565) message. Note how the table name is as defined in pr2.p (the slave temp-table) and not in pr1.p (the master temp-table).

The problem in P2J is that we don't track the slave names, we re-use the names from the master definition. We need to scope the resource name (temp-table, buffer, and maybe others, too - frame, stream, menu) so that the slave versions use the legacy name as defined in the DEFINE SHARED statement, and not the name at the DEFINE NEW SHARED statement.

You can start with temp-table/buffers, but we need to write tests for the other shared resources, too.

Well, it seems that I've understood this. Thank you very much Constantin!

Also available in: Atom PDF