What do you mean, "it works". Correct results, or just executing
without errors? (What if Name actually IS null?)

On Dec 28 2010, 4:30 pm, Gabriel Schenker <[email protected]>
wrote:
> one "easy solution" would be to change the code such as that the
> following query is generated
>
>        select * from Foo where Name in (null)
>
> this works at least on SQL Server and Oracle (even in combined where
> statements like
>
>       select * from Foo where Name in (null) or Name like 'A%'
>
> not only works for string but also works for DateTime, bool, int...
>
> On Dec 28, 7:04 am, Gabriel Schenker <[email protected]> wrote:
>
> > I am completely fine with something like "1=2" since the problem are
> > combined statements like
>
> > session.Query<Foo>().Where(x => someIds.Contains(x.Id) ||
> > x.Name.StartsWith("A"));
>
> > which would then result in
>
> > select * from Foo where 1=2 or Name like 'A%'
>
> > which in turn yields an expected/correct/valid result
>
> > On Dec 27, 8:23 pm, Diego Mijelshon <[email protected]> wrote:
>
> > > If I'm not mistaken, the code is either
> > > src/NHibernate/Linq/Functions/QueryableGenerator.is (class
> > > CollectionContainsGenerator)
> > > or 
> > > src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessContains.cs
> > > (the latter sounds more likely)
>
> > > However, consider Richard's comment to that issue:
>
> > > *[...] what SQL would you expect to be generated?*
>
> > > "where column in <empty>" is just like saying "where 1=2". The best
> > > workaround is to just return an empty list or null from your method if you
> > > get an empty list, without even bothering to go to the db.
>
> > >     Diego
>
> > > On Mon, Dec 27, 2010 at 18:43, Gabriel Schenker 
> > > <[email protected]>wrote:
>
> > > > There is an open bug (NH-2400) regarding the fact that the NHibernate
> > > > 3.0 LINQ provider does not work correctly for empty collections when
> > > > creating an IN query, e.g.
>
> > > > session.Query<Foo>().Where(x => someIds.Contains(x.Id));
>
> > > > and "someIds" is empty. This leads to the exception "An empty
> > > > parameter-list generate wrong SQL; parameter name 'p1'".
>
> > > > We are currently moving from NHibernate 2.x to 3.0 GA and find that
> > > > this very bug causes us a lot of headache! We use such where
> > > > statements all over the place and it worked just fine with the LINQ
> > > > provider for NH 2.x.
>
> > > > Is there a fix available or a work around without us having to
> > > > refactor all our code...?
> > > > If no fix or workaround is available, then can somebody with a more
> > > > intimate knowledge of the LINQ provider give a hint where I would have
> > > > to go to change the code.
>
> > > > --
> > > > You received this message because you are subscribed to the Google 
> > > > Groups
> > > > "nhusers" group.
> > > > To post to this group, send email to [email protected].
> > > > To unsubscribe from this group, send email to
> > > > [email protected]<nhusers%[email protected]
> > > >  >
> > > > .
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/nhusers?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to