Skip to content

Commit 646cb07

Browse files
committed
CommandFactory: Prevent copying string parameter that never change
1 parent 5209a39 commit 646cb07

2 files changed

Lines changed: 10 additions & 10 deletions

File tree

Orm/Xtensive.Orm/Orm/Providers/CommandProcessing/CommandFactory.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public IEnumerable<CommandPart> CreatePersistParts(SqlPersistTask task)
4040
return CreatePersistParts(task, DefaultParameterNamePrefix);
4141
}
4242

43-
public virtual IEnumerable<CommandPart> CreatePersistParts(SqlPersistTask task, string parameterNamePrefix)
43+
public virtual IEnumerable<CommandPart> CreatePersistParts(SqlPersistTask task, in string parameterNamePrefix)
4444
{
4545
ArgumentValidator.EnsureArgumentNotNull(task, "task");
4646
ArgumentValidator.EnsureArgumentNotNullOrEmpty(parameterNamePrefix, "parameterNamePrefix");
@@ -76,17 +76,17 @@ public CommandPart CreateQueryPart(SqlLoadTask task)
7676
return CreateQueryPart(task.Request, DefaultParameterNamePrefix, task.ParameterContext);
7777
}
7878

79-
public CommandPart CreateQueryPart(SqlLoadTask task, string parameterNamePrefix)
79+
public CommandPart CreateQueryPart(SqlLoadTask task, in string parameterNamePrefix)
8080
{
81-
return CreateQueryPart(task.Request, parameterNamePrefix, task.ParameterContext);
81+
return CreateQueryPart(task.Request, in parameterNamePrefix, task.ParameterContext);
8282
}
8383

8484
public CommandPart CreateQueryPart(IQueryRequest request, ParameterContext parameterContext)
8585
{
8686
return CreateQueryPart(request, DefaultParameterNamePrefix, parameterContext);
8787
}
8888

89-
public virtual CommandPart CreateQueryPart(IQueryRequest request, string parameterNamePrefix, ParameterContext parameterContext)
89+
public virtual CommandPart CreateQueryPart(IQueryRequest request, in string parameterNamePrefix, ParameterContext parameterContext)
9090
{
9191
ArgumentValidator.EnsureArgumentNotNull(request, "request");
9292
ArgumentValidator.EnsureArgumentNotNullOrEmpty(parameterNamePrefix, "parameterNamePrefix");
@@ -191,15 +191,15 @@ private object GetParameterValue(SqlPersistTask task, PersistParameterBinding bi
191191
}
192192
}
193193

194-
private void AddRegularParameter(CommandPart commandPart, TypeMapping mapping, string name, object value)
194+
private void AddRegularParameter(CommandPart commandPart, TypeMapping mapping, in string name, object value)
195195
{
196196
var parameter = Connection.CreateParameter();
197197
parameter.ParameterName = name;
198198
mapping.BindValue(parameter, value);
199199
commandPart.Parameters.Add(parameter);
200200
}
201201

202-
private void AddCharacterLobParameter(CommandPart commandPart, string name, string value)
202+
private void AddCharacterLobParameter(CommandPart commandPart, in string name, in string value)
203203
{
204204
var lob = Connection.CreateCharacterLargeObject();
205205
commandPart.Resources.Add(lob);
@@ -225,7 +225,7 @@ private void AddCharacterLobParameter(CommandPart commandPart, string name, stri
225225
commandPart.Parameters.Add(parameter);
226226
}
227227

228-
private void AddBinaryLobParameter(CommandPart commandPart, string name, byte[] value)
228+
private void AddBinaryLobParameter(CommandPart commandPart, in string name, byte[] value)
229229
{
230230
var lob = Connection.CreateBinaryLargeObject();
231231
commandPart.Resources.Add(lob);
@@ -242,7 +242,7 @@ private void AddBinaryLobParameter(CommandPart commandPart, string name, byte[]
242242
}
243243

244244
private void AddParameter(
245-
CommandPart commandPart, ParameterBinding binding, string parameterName, object parameterValue)
245+
CommandPart commandPart, ParameterBinding binding, in string parameterName, object parameterValue)
246246
{
247247
switch (binding.TransmissionType) {
248248
case ParameterTransmissionType.Regular:
@@ -259,7 +259,7 @@ private void AddParameter(
259259
}
260260
}
261261

262-
private string GetParameterName(string prefix, ref int index)
262+
private string GetParameterName(in string prefix, ref int index)
263263
{
264264
var result = $"{prefix}{index.ToString("G")}"; //leave ToString(). it is faster
265265
index++;

Orm/Xtensive.Orm/Orm/Providers/CommandProcessing/CursorCommandFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Xtensive.Orm.Providers
1616
/// </summary>
1717
public class CursorCommandFactory : CommandFactory
1818
{
19-
public override CommandPart CreateQueryPart(IQueryRequest request, string parameterNamePrefix, ParameterContext parameterContext)
19+
public override CommandPart CreateQueryPart(IQueryRequest request, in string parameterNamePrefix, ParameterContext parameterContext)
2020
{
2121
var part = base.CreateQueryPart(request, parameterNamePrefix, parameterContext);
2222
var parameterName = $"{parameterNamePrefix}c";

0 commit comments

Comments
 (0)