Skip to content

Commit e95d80f

Browse files
committed
Eliminate allocations for reset connection payloads.
1 parent e1c252b commit e95d80f

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

src/MySqlConnector/Core/ServerSession.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -319,13 +319,12 @@ public async Task<bool> TryResetConnectionAsync(ConnectionSettings cs, IOBehavio
319319
{
320320
m_logArguments[1] = ServerVersion.OriginalString;
321321
Log.Debug("{0} ServerVersion {1} supports reset connection; sending reset connection request", m_logArguments);
322-
await SendAsync(ResetConnectionPayload.Create(), ioBehavior, cancellationToken).ConfigureAwait(false);
322+
await SendAsync(ResetConnectionPayload.Instance, ioBehavior, cancellationToken).ConfigureAwait(false);
323323
var payload = await ReceiveReplyAsync(ioBehavior, cancellationToken).ConfigureAwait(false);
324324
OkPayload.Create(payload);
325325

326326
// the "reset connection" packet also resets the connection charset, so we need to change that back to our default
327-
payload = QueryPayload.Create("SET NAMES utf8mb4 COLLATE utf8mb4_bin;");
328-
await SendAsync(payload, ioBehavior, cancellationToken).ConfigureAwait(false);
327+
await SendAsync(s_setNamesUtf8mb4Payload, ioBehavior, cancellationToken).ConfigureAwait(false);
329328
payload = await ReceiveReplyAsync(ioBehavior, cancellationToken).ConfigureAwait(false);
330329
OkPayload.Create(payload);
331330
}
@@ -1151,6 +1150,7 @@ private enum State
11511150
static int s_lastId;
11521151
static byte[] s_connectionAttributes;
11531152
static readonly IMySqlConnectorLogger Log = MySqlConnectorLogManager.CreateLogger(nameof(ServerSession));
1153+
static readonly PayloadData s_setNamesUtf8mb4Payload = QueryPayload.Create("SET NAMES utf8mb4 COLLATE utf8mb4_bin;");
11541154

11551155
readonly object m_lock;
11561156
readonly object[] m_logArguments;

src/MySqlConnector/Protocol/Payloads/ResetConnectionPayload.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ namespace MySqlConnector.Protocol.Payloads
22
{
33
internal sealed class ResetConnectionPayload
44
{
5-
public static PayloadData Create() => new PayloadData(new[] { (byte) CommandKind.ResetConnection });
5+
public static PayloadData Instance { get; } = new PayloadData(new[] { (byte) CommandKind.ResetConnection });
66
}
77
}

0 commit comments

Comments
 (0)