@@ -213,17 +213,14 @@ private static SqlUserColumn ExtractUserColumn(SqlColumn column)
213213 private static bool ShouldUseQueryReference ( CompilableProvider origin , SqlProvider compiledSource )
214214 {
215215 var sourceSelect = compiledSource . Request . Statement ;
216- if ( sourceSelect . From == null )
216+ if ( sourceSelect . From == null ) {
217217 return false ;
218+ }
218219
219220 var calculatedColumnIndexes = sourceSelect . Columns
220221 . Select ( ( c , i ) => IsCalculatedColumn ( c ) ? i : - 1 )
221222 . Where ( i => i >= 0 )
222223 . ToList ( ) ;
223- var containsCalculatedColumns = calculatedColumnIndexes . Count > 0 ;
224- var typeIdIsOnlyCalculatedColumn = ( calculatedColumnIndexes . Count == 1 )
225- ? IsTypeIdColumn ( sourceSelect . Columns [ calculatedColumnIndexes [ 0 ] ] )
226- : false ;
227224
228225 var rowNumberIsUsed = calculatedColumnIndexes . Count > 0 && sourceSelect . Columns
229226 . Select ( ( c , i ) => new { c , i } )
@@ -233,21 +230,22 @@ private static bool ShouldUseQueryReference(CompilableProvider origin, SqlProvid
233230 var distinctIsUsed = sourceSelect . Distinct ;
234231 var filterIsUsed = ! sourceSelect . Where . IsNullReference ( ) ;
235232
236- if ( origin . Type == ProviderType . Filter ) {
233+ if ( origin . Type == ProviderType . Filter ) {
237234 var filterProvider = ( FilterProvider ) origin ;
238235 var usedColumnIndexes = new TupleAccessGatherer ( ) . Gather ( filterProvider . Predicate . Body ) ;
239236 return pagingIsUsed || usedColumnIndexes . Any ( calculatedColumnIndexes . Contains ) ;
240237 }
241238
242- if ( origin . Type == ProviderType . Select )
239+ if ( origin . Type == ProviderType . Select ) {
243240 return distinctIsUsed ;
241+ }
244242
245- if ( origin . Type == ProviderType . RowNumber ) {
243+ if ( origin . Type == ProviderType . RowNumber ) {
246244 var usedColumnIndexes = origin . Header . Order . Select ( o => o . Key ) ;
247245 return pagingIsUsed || groupByIsUsed || distinctIsUsed || usedColumnIndexes . Any ( calculatedColumnIndexes . Contains ) ;
248246 }
249247
250- if ( origin . Type == ProviderType . Calculate ) {
248+ if ( origin . Type == ProviderType . Calculate ) {
251249 var calculateProvider = ( CalculateProvider ) origin ;
252250 var columnGatherer = new TupleAccessGatherer ( ) ;
253251 var usedColumnIndexes = new List < int > ( ) ;
@@ -278,13 +276,17 @@ private static bool ShouldUseQueryReference(CompilableProvider origin, SqlProvid
278276 return distinctIsUsed || pagingIsUsed || groupByIsUsed || orderingOverCalculatedColumn ;
279277 }
280278
281- if ( origin . Type == ProviderType . Apply )
279+ var containsCalculatedColumns = calculatedColumnIndexes . Count > 0 ;
280+
281+ if ( origin . Type == ProviderType . Apply ) {
282282 return containsCalculatedColumns || distinctIsUsed || pagingIsUsed || groupByIsUsed ;
283+ }
283284
284285 if ( origin . Type == ProviderType . Join ) {
285286 var shouldUseQueryReference = distinctIsUsed || pagingIsUsed || groupByIsUsed ;
286- if ( shouldUseQueryReference )
287+ if ( shouldUseQueryReference ) {
287288 return true ;
289+ }
288290 var joinProvider = ( JoinProvider ) origin ;
289291 var isRight = joinProvider . Right == compiledSource . Origin ;
290292 var indexes = joinProvider . EqualIndexes . Select ( p => isRight ? p . Second : p . First ) ;
@@ -294,8 +296,9 @@ private static bool ShouldUseQueryReference(CompilableProvider origin, SqlProvid
294296
295297 if ( origin . Type == ProviderType . PredicateJoin ) {
296298 var shouldUseQueryReference = distinctIsUsed || pagingIsUsed || groupByIsUsed ;
297- if ( shouldUseQueryReference )
299+ if ( shouldUseQueryReference ) {
298300 return true ;
301+ }
299302 var joinProvider = ( PredicateJoinProvider ) origin ;
300303 var isRight = joinProvider . Right == compiledSource . Origin ;
301304 var indexes = new TupleAccessGatherer ( ) . Gather ( joinProvider . Predicate . Body , joinProvider . Predicate . Parameters [ isRight ? 1 : 0 ] ) ;
@@ -304,14 +307,18 @@ private static bool ShouldUseQueryReference(CompilableProvider origin, SqlProvid
304307 }
305308
306309 if ( origin . Type == ProviderType . Sort ) {
307- if ( distinctIsUsed )
310+ if ( distinctIsUsed ) {
308311 return true ;
312+ }
309313 var orderingOverCalculatedColumn = origin . Header . Order
310314 . Select ( order => order . Key )
311315 . Any ( calculatedColumnIndexes . Contains ) ;
312316 return orderingOverCalculatedColumn ;
313317 }
314318
319+ var typeIdIsOnlyCalculatedColumn = ( calculatedColumnIndexes . Count == 1 )
320+ && IsTypeIdColumn ( sourceSelect . Columns [ calculatedColumnIndexes [ 0 ] ] ) ;
321+
315322 return ( containsCalculatedColumns && ! typeIdIsOnlyCalculatedColumn ) || distinctIsUsed || pagingIsUsed || groupByIsUsed ;
316323 }
317324
0 commit comments