Skip to content

Commit 53b04c8

Browse files
committed
Allocate memory only for the required columns
1 parent ec74285 commit 53b04c8

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -310,10 +310,18 @@ protected override SqlProvider VisitSelect(SelectProvider provider)
310310
{
311311
var compiledSource = Compile(provider.Source);
312312

313-
SqlSelect query = ExtractSqlSelect(provider, compiledSource);
314-
var originalColumns = query.Columns.ToList();
315-
query.Columns.Clear();
316-
query.Columns.AddRange(provider.ColumnIndexes.Select(i => originalColumns[i]));
313+
var query = ExtractSqlSelect(provider, compiledSource);
314+
var queryColumns = query.Columns;
315+
var columnIndexes = provider.ColumnIndexes;
316+
317+
var newIndex = 0;
318+
var newColumns = new SqlColumn[columnIndexes.Count];
319+
foreach (var index in columnIndexes) {
320+
newColumns[newIndex++] = queryColumns[index];
321+
}
322+
323+
queryColumns.Clear();
324+
queryColumns.AddRange(newColumns);
317325

318326
return CreateProvider(query, provider, compiledSource);
319327
}

0 commit comments

Comments
 (0)