cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hugi Thordarson <h...@godurkodi.is>
Subject Re: Bug when doing joint prefetching on a to-many relationship using a fetch limit?
Date Fri, 31 Mar 2017 10:03:55 GMT
Hi Andrus, sorry about the belated reply.

>> Hi all.
>> I’m getting some unexpected behaviour when applying a fetch limit and doing joint
prefetching on a to-many relationship. In short, the number of objects returned is always
lower than the actual fetch limit I set. Problem goes away if I do a disjoint prefetch or
no prefetching at all.
>> 
>> I created a tiny self-contained maven project that demonstrates the problem:
>> 
>> https://bitbucket.org/hugi/prefetch-dilemma
>> 
>> The source for the main class in that project (that can be run to show what happens):
>> 
>> https://bitbucket.org/hugi/prefetch-dilemma/src/master/src/main/java/prefetchdilemma/Main.java
>> 
>> Anyone run into this before?
>> 
>> Cheers,
>> - hugi
> 
> 
> Yeah, that's a limitation described here: [1]. Also mentioned in the docs, though it
may be hard to spot [2]:
> 
> "Disjoint-by-ID Prefetching Semantics [..] Moreover this is the only type of prefetch
that can handle SelectQueries with fetch limit. Both joint and regular disjoint prefetches
may produce invalid results or generate inefficient fetch-the-entire table SQL when fetch
limit is in effect.”

Maybe Cayenne should throw an exception (or log a warning) if prefetch semantics other than
Disjoint-by-ID is used with a fetch limit? This is something I can see users burning themselves
on (I know I did).

Cheers,
- hugi
Mime
View raw message