Skip to content

Commit bf4b512

Browse files
committed
Regenerate async
1 parent a9f417c commit bf4b512

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

src/NHibernate/Async/Engine/Query/HQLQueryPlan.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ public partial interface IQueryPlan
2525
{
2626
Task PerformListAsync(QueryParameters queryParameters, ISessionImplementor statelessSessionImpl, IList results);
2727
Task<int> PerformExecuteUpdateAsync(QueryParameters queryParameters, ISessionImplementor statelessSessionImpl);
28+
Task<IEnumerable<T>> PerformIterateAsync<T>(QueryParameters queryParameters, IEventSource session);
29+
Task<IEnumerable> PerformIterateAsync(QueryParameters queryParameters, IEventSource session);
2830
}
2931
public partial class HQLQueryPlan : IQueryPlan
3032
{
@@ -96,6 +98,35 @@ public async Task PerformListAsync(QueryParameters queryParameters, ISessionImpl
9698
}
9799
}
98100

101+
public async Task<IEnumerable> PerformIterateAsync(QueryParameters queryParameters, IEventSource session)
102+
{
103+
if (Log.IsDebugEnabled)
104+
{
105+
Log.Debug("enumerable: " + _sourceQuery);
106+
queryParameters.LogParameters(session.Factory);
107+
}
108+
if (Translators.Length == 0)
109+
{
110+
return CollectionHelper.EmptyEnumerable;
111+
}
112+
if (Translators.Length == 1)
113+
{
114+
return await (Translators[0].GetEnumerableAsync(queryParameters, session)).ConfigureAwait(false);
115+
}
116+
var results = new IEnumerable[Translators.Length];
117+
for (int i = 0; i < Translators.Length; i++)
118+
{
119+
var result = await (Translators[i].GetEnumerableAsync(queryParameters, session)).ConfigureAwait(false);
120+
results[i] = result;
121+
}
122+
return new JoinedEnumerable(results);
123+
}
124+
125+
public async Task<IEnumerable<T>> PerformIterateAsync<T>(QueryParameters queryParameters, IEventSource session)
126+
{
127+
return new SafetyEnumerable<T>(await (PerformIterateAsync(queryParameters, session)).ConfigureAwait(false));
128+
}
129+
99130
public async Task<int> PerformExecuteUpdateAsync(QueryParameters queryParameters, ISessionImplementor session)
100131
{
101132
if (Log.IsDebugEnabled)

src/NHibernate/Async/Impl/SessionImpl.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ public override async Task<IEnumerable<T>> EnumerableAsync<T>(IQueryExpression q
250250
dontFlushFromFind++; //stops flush being called multiple times if this method is recursively called
251251
try
252252
{
253-
return plan.PerformIterate<T>(queryParameters, this);
253+
return await (plan.PerformIterateAsync<T>(queryParameters, this)).ConfigureAwait(false);
254254
}
255255
finally
256256
{
@@ -271,7 +271,7 @@ public override async Task<IEnumerable> EnumerableAsync(IQueryExpression queryEx
271271
dontFlushFromFind++; //stops flush being called multiple times if this method is recursively called
272272
try
273273
{
274-
return plan.PerformIterate(queryParameters, this);
274+
return await (plan.PerformIterateAsync(queryParameters, this)).ConfigureAwait(false);
275275
}
276276
finally
277277
{
@@ -1045,7 +1045,7 @@ public override async Task<IEnumerable> EnumerableFilterAsync(object collection,
10451045
{
10461046
CheckAndUpdateSessionStatus();
10471047
FilterQueryPlan plan = await (GetFilterQueryPlanAsync(collection, filter, queryParameters, true)).ConfigureAwait(false);
1048-
return plan.PerformIterate(queryParameters, this);
1048+
return await (plan.PerformIterateAsync(queryParameters, this)).ConfigureAwait(false);
10491049
}
10501050
}
10511051

@@ -1055,7 +1055,7 @@ public override async Task<IEnumerable<T>> EnumerableFilterAsync<T>(object colle
10551055
{
10561056
CheckAndUpdateSessionStatus();
10571057
FilterQueryPlan plan = await (GetFilterQueryPlanAsync(collection, filter, queryParameters, true)).ConfigureAwait(false);
1058-
return plan.PerformIterate<T>(queryParameters, this);
1058+
return await (plan.PerformIterateAsync<T>(queryParameters, this)).ConfigureAwait(false);
10591059
}
10601060
}
10611061

0 commit comments

Comments
 (0)