@@ -25,6 +25,8 @@ public partial interface IQueryPlan
25
25
{
26
26
Task PerformListAsync ( QueryParameters queryParameters , ISessionImplementor statelessSessionImpl , IList results ) ;
27
27
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 ) ;
28
30
}
29
31
public partial class HQLQueryPlan : IQueryPlan
30
32
{
@@ -96,6 +98,35 @@ public async Task PerformListAsync(QueryParameters queryParameters, ISessionImpl
96
98
}
97
99
}
98
100
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
+
99
130
public async Task < int > PerformExecuteUpdateAsync ( QueryParameters queryParameters , ISessionImplementor session )
100
131
{
101
132
if ( Log . IsDebugEnabled )
0 commit comments