Focal Point Banner


As of December 1, 2020, Focal Point is retired and repurposed as a reference repository. We value the wealth of knowledge that's been shared here over the years. You'll continue to have access to this treasure trove of knowledge, for search purposes only.

Join the TIBCO Community
TIBCO Community is a collaborative space for users to share knowledge and support one another in making the best use of TIBCO products and services. There are several TIBCO WebFOCUS resources in the community.

  • From the Home page, select Predict: WebFOCUS to view articles, questions, and trending articles.
  • Select Products from the top navigation bar, scroll, and then select the TIBCO WebFOCUS product page to view product overview, articles, and discussions.
  • Request access to the private WebFOCUS User Group (login required) to network with fellow members.

Former myibi community members should have received an email on 8/3/22 to activate their user accounts to join the community. Check your Spam folder for the email. Please get in touch with us at community@tibco.com for further assistance. Reference the community FAQ to learn more about the community.


Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     [CASE-OPENED] resolving sort field ambiguity with DEFINE based JOINs

Read-Only Read-Only Topic
Go
Search
Notify
Tools
[CASE-OPENED] resolving sort field ambiguity with DEFINE based JOINs
 Login/Join
 
Gold member
posted
Hello All,

I'm getting surprising sort results if I use a DEFINE based JOIN with a field that has the same name in the host file and the cross-referenced file. I'm not sure if this is a bug or a misunderstanding on my part as to how DEFINE based JOINs work. I can demo this issue with the CAR file.
  

-* SET UP THE EXAMPLE.
SET ASNAMES=ON
-RUN

USE
/udisk/car.foc
END
-RUN

-* Create a file with a subset of all the COUNTRY fields (ITALY).
TABLE FILE CAR
SUM
 SALES AS TOT_SALES
BY COUNTRY
WHERE COUNTRY EQ 'ITALY'
ON TABLE HOLD AS HOLD01 FORMAT FOCUS INDEX COUNTRY
END
-RUN

-* Rename the COUNTRY field in the CAR file to PLACE.
TABLE FILE CAR
PRINT
 CAR
BY COUNTRY AS PLACE
ON TABLE HOLD AS HOLD02 FORMAT ALPHA
END
-RUN

-* Done with the setup. Now use a DEFINE based join to rename PLACE to COUNTRY in the
-* host file. This creates an ambiguous situation where both the host file and cross-
-* referenced file contain a field with the name COUNTRY. When you sort the data using
-* the COUNTRY field, WebFOCUS chooses to sort using the field in the cross-referenced
-* file instead of the DEFINEd field in the host file. 
-*
-* I would have expected WebFOCUS to resolve the ambiguity by choosing the field in the
-* host file since that is what happens with other JOINs. A co-worker modified the master
-* file for the host file, putting the define in the master file and the sort worked as 
-* expected, so the problem only seems to occur when you use "DEFINE FILE filename".

-*
-* Sort field ambiguity resolved - Surprise! COUNTRY in HOLD01 chosen.
JOIN CLEAR
JOIN COUNTRY WITH PLACE IN HOLD02 TO COUNTRY IN HOLD01
DEFINE FILE HOLD02
COUNTRY/A10 = PLACE;
END
TABLE FILE HOLD02
HEADING
"Sort field ambiguity resolved - Surprise! COUNTRY in HOLD01 chosen."
" "
PRINT
 CAR
 TOT_SALES
BY COUNTRY
END



we see the following results (only the country name ITALY shows):

  
SYSPRINT.HTS
  Sort field ambiguity resolved - Surprise! COUNTRY in HOLD01 chosen.

  COUNTRY     CAR               TOT_SALES
  -------     ---               ---------
              JAGUAR                    0
              JENSEN                    0
              TRIUMPH                   0
              PEUGEOT                   0
              DATSUN                    0
              TOYOTA                    0
              AUDI                      0
              BMW                       0
  ITALY       ALFA ROMEO            30200
              MASERATI              30200
SYSPRINT.SCR



I would have expected to see the following:

  
SYSPRINT.HTS
  Ambiguity resolved - Expected ... COUNTRY in host chosen.

  COUNTRY     CAR               TOT_SALES
  -------     ---               ---------
  ENGLAND     JAGUAR                    0
              JENSEN                    0
              TRIUMPH                   0
  FRANCE      PEUGEOT                   0
  ITALY       ALFA ROMEO            30200
              MASERATI              30200
  JAPAN       DATSUN                    0
              TOYOTA                    0
  W GERMANY   AUDI                      0
              BMW                       0
SYSPRINT.SCR


So is this a bug, or is there something about the internal logic of define based joins that I don't understand?

We've tested this code on WebFOCUS 7.1, 7.7 and the behaviour is the same for us.
-James

This message has been edited. Last edited by: Kerry,


WF 7.1.6 moving to WF 7.7, Solaris 10, HTML,PDF,XL
 
Posts: 83 | Location: Dartmouth Hitchcock Medical Center | Registered: April 17, 2003Report This Post
Virtuoso
posted Hide Post
Maybe it exists but I've never seen a written rule as to how [Web]FOCUS would resolve field name ambiguities and, being as paranoid as I am, I wouldn't rely on the assumption that host table field names take precedence over x-ref ones *unless* it's documented (as I said, I've never seen it).

I find your experiment very interesting for the purpose of testing. In an actual Production environment you would obviously take measures to avoid those apparently unreliable results by getting rid of any field name ambiguities; that's what the MASTER.SEGMENT. prefix is for.



Prod/Dev: WF Server 8008/Win 2008 - WF Client 8008/Win 2008 - Dev. Studio: 8008/Windows 7 - DBMS: Oracle 11g Rel 2
Test: Dev. Studio 8008 /Windows 7 (Local) Output:HTML, EXL2K.
 
Posts: 1533 | Registered: August 12, 2005Report This Post
Gold member
posted Hide Post
We tried to explicity resolve the ambiguity with the sort as follows:

  
BY HOLD02.COUNTRY


and got the same surprising result.
-James


WF 7.1.6 moving to WF 7.7, Solaris 10, HTML,PDF,XL
 
Posts: 83 | Location: Dartmouth Hitchcock Medical Center | Registered: April 17, 2003Report This Post
Expert
posted Hide Post
I would open a case with TechSupport, this looks like a bug.

I guess you have a workaround though, don't use the same column name.


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

 
Posts: 6347 | Location: 33°49'23.0"S, 151°11'41.0"E | Registered: October 31, 2006Report This Post
Platinum Member
posted Hide Post
If, for whatever reason, you absolutely have to do things this way, then this code worked for me in the final table file:

JOIN CLEAR
JOIN LEFT.COUNTRY WITH PLACE IN HOLD02 TAG LEFT TO COUNTRY IN HOLD01
DEFINE FILE HOLD02
   LEFT.COUNTRY/A10 = PLACE ;
END
TABLE FILE HOLD02
HEADING
"Qualifying COUNTRY throughout the code ensures that we get proper sort field"
" "
   PRINT
      CAR
      TOT_SALES
   BY LEFT.COUNTRY   
END
  


BTW, nice repro & explanation.

EricH
 
Posts: 164 | Registered: March 26, 2003Report This Post
Virtuoso
posted Hide Post
I'm not very surprised.
I think it has to do with the WITH statement which probably causes the DEFINE field to be in a lower place than the JOINED field on the list of fields.
I know it seems strange but this is what my intuition (of 30 years) tells me.
For whatever it is worth...


Daniel
In Focus since 1982
wf 8.202M/Win10/IIS/SSA - WrapApp Front End for WF

 
Posts: 1980 | Location: Tel Aviv, Israel | Registered: March 23, 2006Report This Post
Gold member
posted Hide Post
quote:
resolving sort field ambiguity with DEFINE based JOINs


I have opened a case with IBI.


WF 7.1.6 moving to WF 7.7, Solaris 10, HTML,PDF,XL
 
Posts: 83 | Location: Dartmouth Hitchcock Medical Center | Registered: April 17, 2003Report This Post
  Powered by Social Strata  

Read-Only Read-Only Topic

Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     [CASE-OPENED] resolving sort field ambiguity with DEFINE based JOINs

Copyright © 1996-2020 Information Builders