Informix support broken

Description

With the new 3.2.0-GA release the support for Informix seems to be broken. I've tried the ODBC driver as well as the DRDA one.

public void QueryByCriteria()
{
using (new TransactionScopeFixture())
{
using (Repository testObject = fixture.CreateTestObject())
{
int masterId = fixture.SetupQueryByCriteriaWithWhereClauseByNHibernate(); // inserts a "Library" object into the DB and return its id.

testObject.QueryByCriteria(l => l.Id == libraryId).First();
}
}
}

Repository:

public IList<T> QueryByCriteria(Expression<Func<T, bool>> predicate)
{
var query = from item in Queryable
.Where(predicate)
select item;

return query.ToList();
}

public IQueryable<T> Queryable
{
get { return NHibernateSession.Query<T>(); }
}

Domain class:

internal class Library
{
public Library()
{
Books = new List<Book>();
}

public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Book> Books { get; protected internal set; }
}

Mapping:

internal sealed class LibraryMapping : ClassMapping<Library>
{
public LibraryMapping()
{
Table(TableInfos.Library.TableName);

Id(x => x.Id, map =>
{
map.Column(TableInfos.Library.IdColumnName);
map.Generator(Generators.Identity);
});

Property(x => x.Name, map =>
map.Column(TableInfos.Library.NameColumnName)
);

Bag(x => x.Books, cm => cm.Inverse(true), map => map.OneToMany());
}
}

Schleupen.CS.SY.NHibernate.Tests.RepositoryTest.QueryByCriteria:
NHibernate.Exceptions.GenericADOException : could not execute query
[ select library0_.SYLIB_ID as SYLIB1_184_, library0_.SYLIBNAME as SYLIBNAME184_ from SYLIBRARY library0_ where library0_.SYLIB_ID=? ]
Name1 - Value:1
[SQL: select library0_.SYLIB_ID as SYLIB1_184_, library0_.SYLIBNAME as SYLIBNAME184_ from SYLIBRARY library0_ where library0_.SYLIB_ID=?]
----> System.IndexOutOfRangeException : Ungültiger Index 0 für OdbcParameterCollection mit Count=0.

bei NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
bei NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters)
bei NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes)
bei NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor session, QueryParameters queryParameters)
bei NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters)
bei NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results)
bei NHibernate.Impl.SessionImpl.List(IQueryExpression queryExpression, QueryParameters queryParameters, IList results)
bei NHibernate.Impl.AbstractSessionImpl.List(IQueryExpression queryExpression, QueryParameters parameters)
bei NHibernate.Impl.ExpressionQueryImpl.List()
bei NHibernate.Linq.DefaultQueryProvider.ExecuteQuery(NhLinqExpression nhLinqExpression, IQuery query, NhLinqExpression nhQuery)
bei NHibernate.Linq.DefaultQueryProvider.Execute(Expression expression)
bei NHibernate.Linq.DefaultQueryProvider.Execute[TResult](Expression expression)
bei Remotion.Linq.QueryableBase`1.GetEnumerator()
bei System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
bei System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
bei Schleupen.CS.SY.NHibernate.Repository`2.ExecuteQuery(IEnumerable`1 query) in D:\entwicklung\Basis\CS.SY\FV2012\Baseline\Quellen\CFw\scsy_BaseLibrary\NHibernate\Repository.cs:Zeile 436.
bei Schleupen.CS.SY.NHibernate.Repository`2.QueryByCriteria(Expression`1 predicate) in D:\entwicklung\Basis\CS.SY\FV2012\Baseline\Quellen\CFw\scsy_BaseLibrary\NHibernate\Repository.cs:Zeile 431.
bei Schleupen.CS.SY.NHibernate.Tests.RepositoryTest.<>c_DisplayClass12.<QueryByCriteria>b_f() in D:\entwicklung\Basis\CS.SY\FV2012\Baseline\Quellen\CFw\scsy_BaseLibrary\NHibernate\Tests\RepositoryTest.cs:Zeile 349.
bei Schleupen.CS.SY.NHibernate.Tests.RepositoryTest.Fixture.WithLogger(IInternalLogger logger, Action action) in D:\entwicklung\Basis\CS.SY\FV2012\Baseline\Quellen\CFw\scsy_BaseLibrary\NHibernate\Tests\RepositoryTest.Fixture.cs:Zeile 336.
bei Schleupen.CS.SY.NHibernate.Tests.RepositoryTest.QueryByCriteria() in D:\entwicklung\Basis\CS.SY\FV2012\Baseline\Quellen\CFw\scsy_BaseLibrary\NHibernate\Tests\RepositoryTest.cs:Zeile 345.
--IndexOutOfRangeException
bei System.Data.Odbc.OdbcParameterCollection.RangeCheck(Int32 index)
bei System.Data.Odbc.OdbcParameterCollection.GetParameter(Int32 index)
bei System.Data.Common.DbParameterCollection.System.Collections.IList.get_Item(Int32 index)
bei NHibernate.Driver.DriverBase.ExpandQueryParameters(IDbCommand cmd, SqlString sqlString)
bei NHibernate.AdoNet.AbstractBatcher.ExpandQueryParameters(IDbCommand cmd, SqlString sqlString)
bei NHibernate.Loader.Loader.PrepareQueryCommand(QueryParameters queryParameters, Boolean scroll, ISessionImplementor session)
bei NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
bei NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
bei NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)

Environment

None

Attachments

1

Activity

Show:

Oskar Berggren 
May 30, 2012 at 6:31 PM

Closing issues fixed in 3.3.1.CR1.

Julian Maughan 
September 30, 2011 at 12:55 AM

Thats understandable. I have closed the issue based on other feedback I've had on related issues - same problem, different databases. The issue can be reopened if you find a problem. Thanks for the follow-up.

SB 
September 27, 2011 at 2:03 PM

We didn't change our NHibernate version to 3.2.0 because of this problem. At the moment we're quite busy so it could take a few weeks until we can test your fix.

Julian Maughan 
September 27, 2011 at 3:28 AM

I've committed a change to address the issue. I would be grateful if anybody with any of the databases affected (i.e. Informix, DB2 and Pervasive) could check and let me know if all is well.

SB 
September 15, 2011 at 11:08 AM

Repro

Fixed

Details

Assignee

Reporter

Labels

Components

Fix versions

Affects versions

Priority

Who's Looking?

Open Who's Looking?
Created September 15, 2011 at 8:21 AM
Updated May 30, 2012 at 6:31 PM
Resolved September 30, 2011 at 12:49 AM
Who's Looking?