On 30/01/12 8:21 PM, Andrus Adamchik wrote:

On Jan 30, 2012, at 12:13 PM, Aristedes Maniatis wrote:

Isn't this just a bug in the old DISJOINT approach rather than a new type of 
prefetch? What is the use-case for fetching all related records in the database 
when you have a fetch limit?

This is not a bug, rather a limitation of the algorithm. DISJOINT approach is 
based on the root query qualifier transposed for the related entity. It has no 
way of knowing which root objects will get below the fetch limit.

Root:

  SELECT * FROM ARTIST WHERE ARTIST_NAME LIKE 'X%' FETCH LIMIT 10;

Prefetch

  SELECT PAINTING.* FROM PAINTING JOIN ARTIST ON (..) WHERE ARTIST.ARTIST_NAME 
LIKE 'X%' FETCH LIMIT ????

Andrus

And does DISJOINT map to:

  SELECT * FROM ARTIST WHERE ARTIST_NAME LIKE 'X%' FETCH LIMIT 10;
  SELECT * FROM PAINTING WHERE true;


Are you proposing this new join type be:

  SELECT * FROM ARTIST WHERE ARTIST_NAME LIKE 'X%' FETCH LIMIT 10;
  SELECT * FROM PAINTING WHERE ARTIST_ID IN (123, 124, ....)



Ari


--
-------------------------->
Aristedes Maniatis
GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A

Reply via email to