Project

General

Profile

Bug #4200

verify and fix all temp-table options which must result in different DMO implementations classes in FWD

Added by Constantin Asofiei almost 5 years ago. Updated over 4 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
08/10/2019
Due date:
% Done:

0%

billable:
No
vendor_id:
GCD
case_num:
version_reported:
version_resolved:

History

#1 Updated by Constantin Asofiei almost 5 years ago

There was at least a case where FWD was 'losing' a temp-table option or field option, as it was generating a single DMO implementation class when it needed different versions. This option was serialize-name.

The fix for this (and any other) is at p2o.xml, the tmpTabCrit map.

We need to verify all other field and temp-table options, and any index setting, which must result in different DMO implementation classes. This is required because, for example, these two definitions:

def temp-table tt2 serialize-name "xtt2" field f2-1 as int serialize-name "xf2-1"  field F2-2 as char field F2-3 as dec.

and
def temp-table tt2 serialize-name "y-tt2" field f2-1 as int serialize-name "yf2-1"  field F2-2 as char field F2-3 as dec.

are different resources in 4GL. In FWD, we keep these legacy settings at the DMO implementation class, via the 'legacy' annotations. And, if we don't compute the 'table match' properly, we will lose this legacy information.

#2 Updated by Eric Faulhaber almost 5 years ago

TODO: are there places in the runtime where we are using the DMO implementation class legacy annotations directly (as opposed to using TableMapper)? I want to avoid adding any more such direct dependencies and ultimately eliminate any that currently exist.

In the next few months, the DMO annotations are going to be modified considerably, and they will be moving to the interface. DMO implementation classes will no longer be emitted by default during conversion. Having all access to annotation information go through TableMapper will be key in making this transition smooth.

#3 Updated by Constantin Asofiei over 4 years ago

Another part I needed to add is BEFORE-TABLE - if this doesn't match between two tables, then we must emit two different DMOs (for Hibernate, this will be the Impl DMO; for the new, non-hibernate approach, I guess these will be at the DMO Iface).

Also available in: Atom PDF