Project

General

Profile

Bug #7267

CompoundQuery FOR FIRST, EACH only retrieves the first record found

Added by Dănuț Filimon about 1 year ago. Updated about 1 year ago.

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

100%

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

History

#1 Updated by Dănuț Filimon about 1 year ago

There is a problem with CompoundQuery where using FOR FIRST, EACH will only return the first record available, ignoring the rest of the records from the second table. I found it while testing 7185a/rev.14530 and it is still present in trunk/rev.14530.

Test case:

DEFINE TEMP-TABLE tt1 FIELD f1 AS INTEGER. 
DEFINE TEMP-TABLE tt2 FIELD f1 AS INTEGER.

CREATE tt1.
tt1.f1 = 5.

CREATE tt2.
tt2.f1 = 1.
CREATE tt2.
tt2.f1 = 2.

FOR FIRST tt1, EACH tt2.
    MESSAGE tt1.f1 tt2.f1.
END.

4GL Output:

5 1
5 2

FWD Output:

5 1

#2 Updated by Constantin Asofiei about 1 year ago

Eric: this looks like the same #7229 problem.

#3 Updated by Constantin Asofiei about 1 year ago

Danut: the patch would be this, please test it, in CompoundQuery$Optimizer.isServerJoinPossible - the point is, a NEXT component is not allowed to be attached to a group which has only 'single' components.


               case NEXT:

                  if (mixed && parentIteration != NEXT)
                  {
                     // mixed iteration types should be contiguous to simplify the sorting
                     if (fine)
                     {
                        log.fine("   --- non-contiguous iteration types");
                     }

                     return false;
                  }
                  else if (countSingle > 0 && countMulti == 0 && iteration == NEXT)
                  {
                     if (fine)
                     {
                        log.fine("   --- NEXT can't follow FIRST/LAST/UNIQUE");
                     }

                     return false;
                  }

#4 Updated by Dănuț Filimon about 1 year ago

Constantin Asofiei wrote:

Danut: the patch would be this, please test it, in CompoundQuery$Optimizer.isServerJoinPossible - the point is, a NEXT component is not allowed to be attached to a group which has only 'single' components.

The patch works. Thank you for your explanation.

#6 Updated by Alexandru Lungu about 1 year ago

  • Status changed from New to WIP
  • % Done changed from 0 to 100

#7 Updated by Alexandru Lungu about 1 year ago

  • Status changed from WIP to Review

#8 Updated by Alexandru Lungu about 1 year ago

  • Status changed from Review to Test

This can be closed/rejected.

Also available in: Atom PDF