Skip to content

Commit 59f82cb

Browse files
committed
Avoid unnecessary CompilableProvier castings (#84)
1 parent 1c70d62 commit 59f82cb

11 files changed

Lines changed: 157 additions & 226 deletions

File tree

Orm/Xtensive.Orm/Orm/Linq/Rewriters/SubqueryFilterRemover.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public SubqueryFilterChecker(ApplyParameter filterParameter)
9595

9696
private readonly SubqueryFilterChecker checker;
9797

98-
protected override Provider VisitFilter(FilterProvider provider)
98+
protected override CompilableProvider VisitFilter(FilterProvider provider)
9999
{
100100
return checker.Check(provider.Predicate.Body)
101101
? provider.Source

Orm/Xtensive.Orm/Orm/Providers/SessionHandler.References.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ private static IEnumerable<ReferenceInfo> FindReferences(Entity owner, Associati
9292

9393
private static (CompilableProvider, Parameter<Tuple>) BuildReferencingQuery(AssociationInfo association)
9494
{
95-
var provider = (CompilableProvider)null;
95+
CompilableProvider provider = null;
9696
var parameter = new Parameter<Tuple>("pTuple");
9797
switch (association.Multiplicity) {
9898
case Multiplicity.ZeroToOne:
@@ -128,7 +128,7 @@ private static (CompilableProvider, Parameter<Tuple>) BuildReferencingQuery(Asso
128128
parameter))
129129
.Alias("a")
130130
.Join(
131-
index.GetQuery(),
131+
index.GetQuery(),
132132
association.Reversed.OwnerField.MappingInfo
133133
.GetItems()
134134
.Select((l,r) => new Pair<int>(l,r))

Orm/Xtensive.Orm/Orm/Providers/SqlCompiler.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -382,11 +382,9 @@ protected override SqlProvider VisitSort(SortProvider provider)
382382
/// <inheritdoc/>
383383
protected override SqlProvider VisitStore(StoreProvider provider)
384384
{
385-
var source =
386-
provider.Source as ExecutableProvider
387-
?? (provider.Source is RawProvider
388-
? (ExecutableProvider) (new Rse.Providers.ExecutableRawProvider((RawProvider) provider.Source))
389-
: Compile((CompilableProvider) provider.Source));
385+
var source = provider.Source is RawProvider rawProvider
386+
? (ExecutableProvider) (new Rse.Providers.ExecutableRawProvider(rawProvider))
387+
: Compile(provider.Source);
390388
var columnNames = provider.Header.Columns.Select(column => column.Name).ToArray();
391389
var descriptor = DomainHandler.TemporaryTableManager
392390
.BuildDescriptor(Mapping, provider.Name, provider.Header.TupleDescriptor, columnNames);

Orm/Xtensive.Orm/Orm/Rse/Providers/Compilable/StoreProvider.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ public sealed class StoreProvider : CompilableProvider
2121
/// <summary>
2222
/// Gets the name of saved data.
2323
/// </summary>
24-
public string Name { get; private set; }
24+
public string Name { get; }
2525

2626
/// <summary>
2727
/// Source provider.
2828
/// </summary>
29-
public Provider Source { get; private set; }
29+
public CompilableProvider Source { get; }
3030

3131
/// <inheritdoc/>
3232
protected override RecordSetHeader BuildHeader()
@@ -66,7 +66,7 @@ public StoreProvider(RecordSetHeader header, string name)
6666
/// </summary>
6767
/// <param name="source">The <see cref="Source"/> property value.</param>
6868
/// <param name="name">The <see cref="Name"/> property value.</param>
69-
public StoreProvider(Provider source, string name)
69+
public StoreProvider(CompilableProvider source, string name)
7070
: base(ProviderType.Store, source)
7171
{
7272
ArgumentValidator.EnsureArgumentNotNull(source, "source");
@@ -84,7 +84,7 @@ public StoreProvider(Provider source, string name)
8484
/// Initializes a new instance of this class.
8585
/// </summary>
8686
/// <param name="source">The <see cref="Source"/> property value.</param>
87-
public StoreProvider(Provider source)
87+
public StoreProvider(CompilableProvider source)
8888
: base(ProviderType.Store, source)
8989
{
9090
ArgumentValidator.EnsureArgumentNotNull(source, "source");

Orm/Xtensive.Orm/Orm/Rse/Providers/CompilableProviderVisitor.cs

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,10 @@ public class CompilableProviderVisitor : ProviderVisitor
2626
/// Visits the compilable provider.
2727
/// </summary>
2828
/// <param name="cp">The compilable provider.</param>
29-
public CompilableProvider VisitCompilable(CompilableProvider cp)
30-
{
31-
var result = (CompilableProvider)Visit(cp);
32-
return result;
33-
}
29+
public CompilableProvider VisitCompilable(CompilableProvider cp) => Visit(cp);
3430

3531
/// <inheritdoc/>
36-
protected override Provider VisitTake(TakeProvider provider)
32+
protected override CompilableProvider VisitTake(TakeProvider provider)
3733
{
3834
OnRecursionEntrance(provider);
3935
var source = VisitCompilable(provider.Source);
@@ -44,7 +40,7 @@ protected override Provider VisitTake(TakeProvider provider)
4440
}
4541

4642
/// <inheritdoc/>
47-
protected override Provider VisitSkip(SkipProvider provider)
43+
protected override CompilableProvider VisitSkip(SkipProvider provider)
4844
{
4945
OnRecursionEntrance(provider);
5046
var source = VisitCompilable(provider.Source);
@@ -55,7 +51,7 @@ protected override Provider VisitSkip(SkipProvider provider)
5551
}
5652

5753
/// <inheritdoc/>
58-
protected override Provider VisitPaging(PagingProvider provider)
54+
protected override CompilableProvider VisitPaging(PagingProvider provider)
5955
{
6056
OnRecursionEntrance(provider);
6157
var source = VisitCompilable(provider.Source);
@@ -66,7 +62,7 @@ protected override Provider VisitPaging(PagingProvider provider)
6662
}
6763

6864
/// <inheritdoc/>
69-
protected override Provider VisitSelect(SelectProvider provider)
65+
protected override CompilableProvider VisitSelect(SelectProvider provider)
7066
{
7167
OnRecursionEntrance(provider);
7268
var source = VisitCompilable(provider.Source);
@@ -77,7 +73,7 @@ protected override Provider VisitSelect(SelectProvider provider)
7773
}
7874

7975
/// <inheritdoc/>
80-
protected override Provider VisitTag(TagProvider provider)
76+
protected override TagProvider VisitTag(TagProvider provider)
8177
{
8278
OnRecursionEntrance(provider);
8379
var source = VisitCompilable(provider.Source);
@@ -88,7 +84,7 @@ protected override Provider VisitTag(TagProvider provider)
8884
}
8985

9086
/// <inheritdoc/>
91-
protected override Provider VisitSeek(SeekProvider provider)
87+
protected override CompilableProvider VisitSeek(SeekProvider provider)
9288
{
9389
OnRecursionEntrance(provider);
9490
var source = VisitCompilable(provider.Source);
@@ -99,13 +95,13 @@ protected override Provider VisitSeek(SeekProvider provider)
9995
}
10096

10197
/// <inheritdoc/>
102-
protected override Provider VisitRaw(RawProvider provider)
98+
protected override CompilableProvider VisitRaw(RawProvider provider)
10399
{
104100
return provider;
105101
}
106102

107103
/// <inheritdoc/>
108-
protected override Provider VisitSort(SortProvider provider)
104+
protected override CompilableProvider VisitSort(SortProvider provider)
109105
{
110106
OnRecursionEntrance(provider);
111107
var source = VisitCompilable(provider.Source);
@@ -116,7 +112,7 @@ protected override Provider VisitSort(SortProvider provider)
116112
}
117113

118114
/// <inheritdoc/>
119-
protected override Provider VisitJoin(JoinProvider provider)
115+
protected override CompilableProvider VisitJoin(JoinProvider provider)
120116
{
121117
OnRecursionEntrance(provider);
122118
var left = VisitCompilable(provider.Left);
@@ -129,7 +125,7 @@ protected override Provider VisitJoin(JoinProvider provider)
129125
}
130126

131127
/// <inheritdoc/>
132-
protected override Provider VisitFilter(FilterProvider provider)
128+
protected override CompilableProvider VisitFilter(FilterProvider provider)
133129
{
134130
OnRecursionEntrance(provider);
135131
var source = VisitCompilable(provider.Source);
@@ -141,7 +137,7 @@ protected override Provider VisitFilter(FilterProvider provider)
141137
}
142138

143139
/// <inheritdoc/>
144-
protected override Provider VisitDistinct(DistinctProvider provider)
140+
protected override DistinctProvider VisitDistinct(DistinctProvider provider)
145141
{
146142
OnRecursionEntrance(provider);
147143
var source = VisitCompilable(provider.Source);
@@ -152,7 +148,7 @@ protected override Provider VisitDistinct(DistinctProvider provider)
152148
}
153149

154150
/// <inheritdoc/>
155-
protected override Provider VisitCalculate(CalculateProvider provider)
151+
protected override CompilableProvider VisitCalculate(CalculateProvider provider)
156152
{
157153
OnRecursionEntrance(provider);
158154
var source = VisitCompilable(provider.Source);
@@ -171,7 +167,7 @@ protected override Provider VisitCalculate(CalculateProvider provider)
171167
return new CalculateProvider(source, descriptors.ToArray());
172168
}
173169

174-
protected override Provider VisitRowNumber(RowNumberProvider provider)
170+
protected override CompilableProvider VisitRowNumber(RowNumberProvider provider)
175171
{
176172
OnRecursionEntrance(provider);
177173
var source = VisitCompilable(provider.Source);
@@ -183,7 +179,7 @@ protected override Provider VisitRowNumber(RowNumberProvider provider)
183179

184180

185181
/// <inheritdoc/>
186-
protected override Provider VisitAlias(AliasProvider provider)
182+
protected override AliasProvider VisitAlias(AliasProvider provider)
187183
{
188184
OnRecursionEntrance(provider);
189185
var source = VisitCompilable(provider.Source);
@@ -194,7 +190,7 @@ protected override Provider VisitAlias(AliasProvider provider)
194190
}
195191

196192
/// <inheritdoc/>
197-
protected override Provider VisitAggregate(AggregateProvider provider)
193+
protected override CompilableProvider VisitAggregate(AggregateProvider provider)
198194
{
199195
OnRecursionEntrance(provider);
200196
var source = VisitCompilable(provider.Source);
@@ -211,7 +207,7 @@ protected override Provider VisitAggregate(AggregateProvider provider)
211207
}
212208

213209
/// <inheritdoc/>
214-
protected override Provider VisitStore(StoreProvider provider)
210+
protected override StoreProvider VisitStore(StoreProvider provider)
215211
{
216212
var compilableSource = provider.Source as CompilableProvider;
217213
if (compilableSource == null)
@@ -225,31 +221,31 @@ protected override Provider VisitStore(StoreProvider provider)
225221
}
226222

227223
/// <inheritdoc/>
228-
protected override Provider VisitIndex(IndexProvider provider)
224+
protected override CompilableProvider VisitIndex(IndexProvider provider)
229225
{
230226
OnRecursionEntrance(provider);
231227
OnRecursionExit(provider);
232228
return provider;
233229
}
234230

235231
/// <inheritdoc/>
236-
protected override Provider VisitFreeText(FreeTextProvider provider)
232+
protected override CompilableProvider VisitFreeText(FreeTextProvider provider)
237233
{
238234
OnRecursionEntrance(provider);
239235
OnRecursionExit(provider);
240236
return provider;
241237
}
242238

243239
/// <inheritdoc/>
244-
protected override Provider VisitContainsTable(ContainsTableProvider provider)
240+
protected override ContainsTableProvider VisitContainsTable(ContainsTableProvider provider)
245241
{
246242
OnRecursionEntrance(provider);
247243
OnRecursionExit(provider);
248244
return provider;
249245
}
250246

251247
/// <inheritdoc/>
252-
protected override Provider VisitPredicateJoin(PredicateJoinProvider provider)
248+
protected override CompilableProvider VisitPredicateJoin(PredicateJoinProvider provider)
253249
{
254250
OnRecursionEntrance(provider);
255251
var left = VisitCompilable(provider.Left);
@@ -261,7 +257,7 @@ protected override Provider VisitPredicateJoin(PredicateJoinProvider provider)
261257
}
262258

263259
/// <inheritdoc/>
264-
protected override Provider VisitExistence(ExistenceProvider provider)
260+
protected override ExistenceProvider VisitExistence(ExistenceProvider provider)
265261
{
266262
OnRecursionEntrance(provider);
267263
var source = VisitCompilable(provider.Source);
@@ -272,7 +268,7 @@ protected override Provider VisitExistence(ExistenceProvider provider)
272268
}
273269

274270
/// <inheritdoc/>
275-
protected override Provider VisitApply(ApplyProvider provider)
271+
protected override CompilableProvider VisitApply(ApplyProvider provider)
276272
{
277273
OnRecursionEntrance(provider);
278274
var left = VisitCompilable(provider.Left);
@@ -284,7 +280,7 @@ protected override Provider VisitApply(ApplyProvider provider)
284280
}
285281

286282
/// <inheritdoc/>
287-
protected override Provider VisitIntersect(IntersectProvider provider)
283+
protected override CompilableProvider VisitIntersect(IntersectProvider provider)
288284
{
289285
OnRecursionEntrance(provider);
290286
var left = VisitCompilable(provider.Left);
@@ -296,7 +292,7 @@ protected override Provider VisitIntersect(IntersectProvider provider)
296292
}
297293

298294
/// <inheritdoc/>
299-
protected override Provider VisitExcept(ExceptProvider provider)
295+
protected override CompilableProvider VisitExcept(ExceptProvider provider)
300296
{
301297
OnRecursionEntrance(provider);
302298
var left = VisitCompilable(provider.Left);
@@ -308,7 +304,7 @@ protected override Provider VisitExcept(ExceptProvider provider)
308304
}
309305

310306
/// <inheritdoc/>
311-
protected override Provider VisitConcat(ConcatProvider provider)
307+
protected override CompilableProvider VisitConcat(ConcatProvider provider)
312308
{
313309
OnRecursionEntrance(provider);
314310
var left = VisitCompilable(provider.Left);
@@ -320,7 +316,7 @@ protected override Provider VisitConcat(ConcatProvider provider)
320316
}
321317

322318
/// <inheritdoc/>
323-
protected override Provider VisitUnion(UnionProvider provider)
319+
protected override CompilableProvider VisitUnion(UnionProvider provider)
324320
{
325321
OnRecursionEntrance(provider);
326322
var left = VisitCompilable(provider.Left);
@@ -332,7 +328,7 @@ protected override Provider VisitUnion(UnionProvider provider)
332328
}
333329

334330
/// <inheritdoc/>
335-
protected override Provider VisitLock(LockProvider provider)
331+
protected override LockProvider VisitLock(LockProvider provider)
336332
{
337333
OnRecursionEntrance(provider);
338334
var source = VisitCompilable(provider.Source);
@@ -342,7 +338,7 @@ protected override Provider VisitLock(LockProvider provider)
342338
return new LockProvider(source, provider.LockMode, provider.LockBehavior);
343339
}
344340

345-
protected override Provider VisitInclude(IncludeProvider provider)
341+
protected override CompilableProvider VisitInclude(IncludeProvider provider)
346342
{
347343
OnRecursionEntrance(provider);
348344
var source = VisitCompilable(provider.Source);

0 commit comments

Comments
 (0)