Skip to content

Commit e2051c4

Browse files
committed
Support ArraySegment<byte> as MySqlParameter.Value.
1 parent 055fd18 commit e2051c4

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/MySqlConnector/MySql.Data.MySqlClient/MySqlParameter.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,10 @@ internal void AppendSqlString(ByteBufferWriter writer, StatementPreparerOptions
254254
{
255255
writer.WriteString(ulongValue);
256256
}
257-
else if (Value is byte[] || Value is ReadOnlyMemory<byte> || Value is Memory<byte>)
257+
else if (Value is byte[] || Value is ReadOnlyMemory<byte> || Value is Memory<byte> || Value is ArraySegment<byte>)
258258
{
259259
var inputSpan = Value is byte[] byteArray ? byteArray.AsSpan() :
260+
Value is ArraySegment<byte> arraySegment ? arraySegment.AsSpan() :
260261
Value is Memory<byte> memory ? memory.Span :
261262
((ReadOnlyMemory<byte>) Value).Span;
262263

@@ -469,6 +470,11 @@ internal void AppendBinary(ByteBufferWriter writer, StatementPreparerOptions opt
469470
writer.WriteLengthEncodedInteger(unchecked((ulong) memoryValue.Length));
470471
writer.Write(memoryValue.Span);
471472
}
473+
else if (Value is ArraySegment<byte> arraySegmentValue)
474+
{
475+
writer.WriteLengthEncodedInteger(unchecked((ulong) arraySegmentValue.Count));
476+
writer.Write(arraySegmentValue);
477+
}
472478
else if (Value is float floatValue)
473479
{
474480
writer.Write(BitConverter.GetBytes(floatValue));

tests/SideBySide/InsertTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,7 @@ public static IEnumerable<object[]> GetBlobs()
425425
new byte[] { 1, 2, 3, 4, 5, 6 },
426426
new ReadOnlyMemory<byte>(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }, 1, 6),
427427
new Memory<byte>(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }, 1, 6),
428+
new ArraySegment<byte>(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }, 1, 6),
428429
})
429430
{
430431
yield return new[] { blob, false };

0 commit comments

Comments
 (0)