Skip to content

Commit b7a82b1

Browse files
authored
Merge pull request #1000 from kpreisser/noBackslashEscapesWithBinary
Support NoBackslashEscapes for binary parameter values.
2 parents e846845 + c5e2c3c commit b7a82b1

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

src/MySqlConnector/MySqlParameter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ internal void AppendSqlString(ByteBufferWriter writer, StatementPreparerOptions
305305
var length = inputSpan.Length + BinaryBytes.Length + 1;
306306
foreach (var by in inputSpan)
307307
{
308-
if (by is 0x27 or 0x5C)
308+
if (by is 0x27 || by is 0x5C && !noBackslashEscapes)
309309
length++;
310310
}
311311

@@ -314,8 +314,8 @@ internal void AppendSqlString(ByteBufferWriter writer, StatementPreparerOptions
314314
var index = BinaryBytes.Length;
315315
foreach (var by in inputSpan)
316316
{
317-
if (by is 0x27 or 0x5C)
318-
outputSpan[index++] = 0x5C;
317+
if (by is 0x27 || by is 0x5C && !noBackslashEscapes)
318+
outputSpan[index++] = by;
319319
outputSpan[index++] = by;
320320
}
321321
outputSpan[index++] = 0x27;

tests/MySqlConnector.Tests/StatementPreparerTests.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,12 @@ public void FormatParameter(object parameterValue, string replacedValue, bool no
175175
new object[] { new TimeSpan(2, 3, 4, 5, 6), "time '51:04:05.006000'" },
176176
new object[] { new TimeSpan(-2, -3, -4, -5, -6), "time '-51:04:05.006000'" },
177177
new object[] { new Guid("00112233-4455-6677-8899-AABBCCDDEEFF"), "'00112233-4455-6677-8899-aabbccddeeff'" },
178-
new object[] { new byte[] { 0x41, 0x42, 0x27, 0x61 }, "_binary'AB\\'a'" },
179-
new object[] { new MemoryStream(new byte[] { 0x41, 0x42, 0x27, 0x61 }), "_binary'AB\\'a'" },
180-
new object[] { new MemoryStream(new byte[] { 0, 0x41, 0x42, 0x27, 0x61, 0x62 }, 1, 4, false, true), "_binary'AB\\'a'" },
178+
new object[] { new byte[] { 0x41, 0x42, 0x27, 0x61, 0x5c, 0x62 }, @"_binary'AB''a\\b'" },
179+
new object[] { new byte[] { 0x41, 0x42, 0x27, 0x61, 0x5c, 0x62 }, @"_binary'AB''a\b'", true },
180+
new object[] { new MemoryStream(new byte[] { 0x41, 0x42, 0x27, 0x61, 0x5c, 0x62 }), @"_binary'AB''a\\b'" },
181+
new object[] { new MemoryStream(new byte[] { 0x41, 0x42, 0x27, 0x61, 0x5c, 0x62 }), @"_binary'AB''a\b'", true },
182+
new object[] { new MemoryStream(new byte[] { 0, 0x41, 0x42, 0x27, 0x61, 0x5c, 0x62, 0x63 }, 1, 6, false, true), @"_binary'AB''a\\b'" },
183+
new object[] { new MemoryStream(new byte[] { 0, 0x41, 0x42, 0x27, 0x61, 0x5c, 0x62, 0x63 }, 1, 6, false, true), @"_binary'AB''a\b'", true },
181184
new object[] { "\"AB\\ab'".AsMemory(), @"'""AB\\ab'''" },
182185
new object[] { new StringBuilder("\"AB\\ab'"), @"'""AB\\ab'''" },
183186
};

0 commit comments

Comments
 (0)