HQL: ArgumentNullException when using LEFT OUTER JOIN and SetMaxResults

Description

HQL querys with LEFT OUTER JOIN in combination with SetMaxResults do not seem to work anymore. I have made a VS solution that reproduces the problem.

Environment

None

Attachments

1

Activity

Show:

Alex Zaytsev 
September 8, 2014 at 11:31 AM

Close issues resolved in 3.3.3

Alex Zaytsev 
February 21, 2013 at 4:38 AM

Applied to 3.3.x 13c7b3b728421adfd4f5069c45d71e6aace3c3c5

SB 
November 14, 2012 at 3:33 PM

It seems to work when using in NHibernate.Engine.QueryParameter

public QueryParameters CreateCopyUsing(RowSelection selection)
{
var copy = new QueryParameters(PositionalParameterTypes, PositionalParameterValues, NamedParameters, LockModes,
selection, IsReadOnlyInitialized, readOnly, Cacheable, CacheRegion, Comment, CollectionKeys,
OptionalObject, OptionalEntityName, OptionalId, ResultTransformer)
{
ProcessedSql = ProcessedSql,
ProcessedSqlParameters = ProcessedSqlParameters == null ? null : ProcessedSqlParameters.ToList()
};
return copy;
}

instead of

public QueryParameters CreateCopyUsing(RowSelection selection)
{
var copy = new QueryParameters(PositionalParameterTypes, PositionalParameterValues, NamedParameters, LockModes,
selection, IsReadOnlyInitialized, readOnly, Cacheable, CacheRegion, Comment, CollectionKeys,
OptionalObject, OptionalEntityName, OptionalId, ResultTransformer)
{
ProcessedSql = ProcessedSql,
ProcessedSqlParameters = ProcessedSqlParameters.ToList()
};
return copy;
}

SB 
November 14, 2012 at 2:53 PM

The exception occurs in QueryParameter.cs. The 'ProcessedSqlParameters' collection is null but .ToList() is always called.

System.Core.dll!System.Linq.Enumerable.ToList<NHibernate.Param.IParameterSpecification>(System.Collections.Generic.IEnumerable<NHibernate.Param.IParameterSpecification> source = null) + 0x45 Bytes
> NHibernate.dll!NHibernate.Engine.QueryParameters.CreateCopyUsing(NHibernate.Engine.RowSelection selection = {NHibernate.Engine.RowSelection}) Zeile 204 + 0x131 Bytes C#
NHibernate.dll!NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(NHibernate.Engine.ISessionImplementor session = {NHibernate.Impl.SessionImpl}, NHibernate.Engine.QueryParameters queryParameters = {NHibernate.Engine.QueryParameters}) Zeile 105 + 0xe Bytes C#
NHibernate.dll!NHibernate.Engine.Query.HQLQueryPlan.PerformList(NHibernate.Engine.QueryParameters queryParameters = {NHibernate.Engine.QueryParameters}, NHibernate.Engine.ISessionImplementor session = {NHibernate.Impl.SessionImpl}, System.Collections.IList results = Count = 0) Zeile 105 + 0x3d Bytes C#
NHibernate.dll!NHibernate.Impl.SessionImpl.List(string query = "FROM Entity e LEFT OUTER JOIN FETCH e.Children", NHibernate.Engine.QueryParameters queryParameters = {NHibernate.Engine.QueryParameters}, System.Collections.IList results = Count = 0) Zeile 621 C#
NHibernate.dll!NHibernate.Impl.SessionImpl.List(string query = "FROM Entity e LEFT OUTER JOIN FETCH e.Children", NHibernate.Engine.QueryParameters parameters = {NHibernate.Engine.QueryParameters}) Zeile 593 C#
NHibernate.dll!NHibernate.Impl.QueryImpl.List() Zeile 64 + 0x3c Bytes C#
NHibernate.Test.dll!NHibernate.Test.NHSpecificTest.NH3324.FixtureByCode.LeftOuterJoinSetMaxResults() Zeile 96 + 0x9 Bytes C#

SB 
November 14, 2012 at 2:51 PM

Solution with Repro

Fixed

Details

Assignee

Reporter

Labels

Components

Fix versions

Affects versions

Priority

Who's Looking?

Open Who's Looking?
Created November 14, 2012 at 2:47 PM
Updated September 8, 2014 at 11:31 AM
Resolved February 21, 2013 at 4:39 AM
Who's Looking?