Skip to content

Commit 4608941

Browse files
committed
Call GC.SuppressFinalize for types derived from Component.
Component has a finalizer, but these derived types don't directly hold any unmanaged objects they need to clean up. Suppressing finalization improves performance (without impacting correctness) if the client doesn't Dispose these objects.
1 parent aba7c0a commit 4608941

File tree

4 files changed

+14
-2
lines changed

4 files changed

+14
-2
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public MySqlCommand(string commandText, MySqlConnection connection)
3636

3737
public MySqlCommand(string commandText, MySqlConnection connection, MySqlTransaction transaction)
3838
{
39+
GC.SuppressFinalize(this);
3940
CommandId = Interlocked.Increment(ref s_commandId);
4041
CommandText = commandText;
4142
Connection = connection;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ private static async Task DeriveParametersAsync(IOBehavior ioBehavior, MySqlComm
5050
#if !NETSTANDARD1_3
5151
public MySqlCommandBuilder()
5252
{
53+
GC.SuppressFinalize(this);
5354
QuotePrefix = "`";
5455
QuoteSuffix = "`";
5556
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ public MySqlConnection()
2121
{
2222
}
2323

24-
public MySqlConnection(string connectionString) => ConnectionString = connectionString;
24+
public MySqlConnection(string connectionString)
25+
{
26+
GC.SuppressFinalize(this);
27+
ConnectionString = connectionString;
28+
}
2529

2630
public new MySqlTransaction BeginTransaction() => (MySqlTransaction) base.BeginTransaction();
2731
public new MySqlTransaction BeginTransaction(IsolationLevel isolationLevel) => (MySqlTransaction) base.BeginTransaction(isolationLevel);

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#if !NETSTANDARD1_3
2+
using System;
23
using System.Data;
34
using System.Data.Common;
45

@@ -8,9 +9,14 @@ public sealed class MySqlDataAdapter : DbDataAdapter
89
{
910
public MySqlDataAdapter()
1011
{
12+
GC.SuppressFinalize(this);
1113
}
1214

13-
public MySqlDataAdapter(MySqlCommand selectCommand) => SelectCommand = selectCommand;
15+
public MySqlDataAdapter(MySqlCommand selectCommand)
16+
: this()
17+
{
18+
SelectCommand = selectCommand;
19+
}
1420

1521
public MySqlDataAdapter(string selectCommandText, MySqlConnection connection)
1622
: this(new MySqlCommand(selectCommandText, connection))

0 commit comments

Comments
 (0)