Hi Patrick - (a) Timeline: "Slow going". I can work on my commute (Munich S-Bahn, about 45 minutes/direction = 90 minutes/day).
(b) No, no tests for self joins. I'll add them in the evening. BUT!!!!!!!!!!!! (c) De Morgan allows us to "write an || with &&": A || B is the same as !(!A && !B). Although it is not clear that this is also true under the "navigational logic extension of ||", I managed to write a short test that shows that my code is still wrong. Adding some code for the ! operator fixed it, but I'm far from a complete test suite; and moreover, !(!(...)) will now create "suboptimal joins". (d) 2 more testcases I wrote with ||s of depth 3 fail. I have to look ... (e) I'm worried about the Any operator. I have not yet written tests for it, but I fear that "it doesn't work at all" (if the condition inside has navigations + ||s). I fear that this cannot be solved with Linq rewriting, but rather requires changes to the HQL generator (create OUTER JOINs for subselects???). So long :-( Harald -------- Original-Nachricht -------- > Datum: Mon, 28 Mar 2011 20:18:29 -0600 > Von: Patrick Earl <[email protected]> > An: [email protected] > Betreff: Re: [nhibernate-development] NH-2583 - Query with || operator and > navigations (many-to-one) creates wrong joins > Hi Harald. > > Thanks for your continued work on this. > > I'm wondering... does your solution support self-joins? Do you have > tests for that? If not, it would be fantastic if you could add that. > If you have enough time to help with this early this week, we can get > it into the next 3.2 release. > > At this point, I'm looking over your code, trying to understand what's > going on. > > Thanks! > > Patrick Earl > > > On Mon, Mar 28, 2011 at 2:09 AM, Harald Mueller <[email protected]> > wrote: > > Hi Patrick, all, > > > > In my long text from yesterday, there are (at least) two errors: > > > > ---- > > In section 2., about 3 lines below (||-1), there is a "not" missing: > > > > Other member expressions (with simple types or component types) are NOT > of relevance to this discussion, except where explicitly noted. > > > > ---- > > In section 8., the third of the "Four examples" is simply wrong! The > correct argument is: > > > > * When we encounter a.B.C.Q == null (which would become a_B_C.Q IS NULL > on the database), we do not know anything: This condition becoming true > could be the result of a missing a.B, or a missing a.B.C, or actually that > a.B.C.Q is null. So we cannot add anything to the "definitely != null" member > expression set. > > > > Sorry for the glitches. > > > > Best regards > > Harald > > > > -- > > NEU: FreePhone - kostenlos mobil telefonieren und surfen! > > Jetzt informieren: http://www.gmx.net/de/go/freephone > > -- GMX DSL Doppel-Flat ab 19,99 Euro/mtl.! Jetzt mit gratis Handy-Flat! http://portal.gmx.net/de/go/dsl
