This seems like a limitation of Firebird, rather than NH or Linq. Shouldn't we just ignore this test on Firebird?
On 12 March 2012 07:48, Oskar Berggren <[email protected]> wrote: > I merged the following recently. > > NH-3067: Linq - substring function does not work > https://github.com/nhibernate/nhibernate-core/pull/89 > > > Unfortunately it causes problems on Firebird due to Firebird only > supporting integer literals, not expressions, for the substring index. > The problem is that if two-argument substring is used in linq, the > linq-provider constructs the third argument to hql substring as a > calculation based on column length and the start index. This is > because not all dialects support two argument substring. > > One solution idea: If the third argument needs to be added by the linq > provider, pass Int32.MaxValue. Some databases seem to handle this > nicely, but at least DB2 claims this is an error. > > Another idea: Make HQL substring() ALWAYS support either two or three > arguments. Some dialects already do this, and IMHO this is something > the dialect should abstract. This is easy if "all" databases support a > third argument that is either optional or can be specified as > Int32.MaxValue. Haven't checked this yet. > > > Btw, anyone using DB2? I suspect it's dialect's substring > implementation doesn't work at all. > > > Any input on this? > > > /Oskar >
