I have developed hundreds of lines of QV code for our company. At one point, I got a problem. I think, that I found a bug in the QV interpreter of V9 (9.00.7502.8 SR 5 64 bit x64).
Could anybody having V9 still in use please check?
We plan to upgrade to V10. Could anybody please check for V10?
Many thanks in advance.
I reduced and simplified the code to the following trivial demo code.
The JOIN calculates a complete cross product of Table2 and Table3. The resulting table cannot be CONCATENATEd to Table1! The concatenate is simply ignored. When I view Table1 in the GUI, it still has only two rows.
If I add an arbitrary field with arbitrary content to the cross product, the resulting table can be concatenated and the expected result for Table1 is generated: 6 rows (the original 2 rows plus 2x2=4 rows for the cross product of Table2 and Table3).
//-------
Table1:
LOAD * INLINE [
A, B
A1, B1
A2, B2
];
Table2:
LOAD * INLINE [
A
A3
A4
];
Table3:
LOAD * INLINE [
B
B3
B4
];
Table4:
NOCONCATENATE LOAD * RESIDENT Table2;
JOIN (Table4) LOAD * RESIDENT Table3;
// Code version1: This code does not work: Table4, generated as full cross product by the JOIN, is not appended to Table1!
// Result (GUI): Table1 with the original two rows
CONCATENATE (Table1) LOAD * RESIDENT Table4;
// Code version2: This code does work - with the work-around. The concatenate is done after having added a dummy field to the cross product.
// Result (GUI): Table 1 with the expected 6 rows
/*
CONCATENATE (Table1) LOAD *, null() as dummy RESIDENT Table4;
DROP FIELD dummy FROM Table1;
*/
// clean up
DROP TABLE Table2, Table3, Table4;