diff --git a/src/MySqlConnector/Core/ConnectionSettings.cs b/src/MySqlConnector/Core/ConnectionSettings.cs
index f43162fbe..5c77e6c97 100644
--- a/src/MySqlConnector/Core/ConnectionSettings.cs
+++ b/src/MySqlConnector/Core/ConnectionSettings.cs
@@ -147,6 +147,7 @@ public ConnectionSettings(MySqlConnectionStringBuilder csb)
UseAffectedRows = csb.UseAffectedRows;
UseCompression = csb.UseCompression;
UseXaTransactions = csb.UseXaTransactions;
+ EnrichActivityWithReadResultSetHeader = csb.EnrichActivityWithReadResultSetHeader;
static int ToSigned(uint value) => value >= int.MaxValue ? int.MaxValue : (int) value;
}
@@ -245,6 +246,7 @@ private static MySqlGuidFormat GetEffectiveGuidFormat(MySqlGuidFormat guidFormat
public bool UseAffectedRows { get; }
public bool UseCompression { get; }
public bool UseXaTransactions { get; }
+ public bool EnrichActivityWithReadResultSetHeader { get; }
public byte[]? ConnectionAttributes { get; set; }
diff --git a/src/MySqlConnector/Core/ResultSet.cs b/src/MySqlConnector/Core/ResultSet.cs
index 2b93879ca..9a00b1f8e 100644
--- a/src/MySqlConnector/Core/ResultSet.cs
+++ b/src/MySqlConnector/Core/ResultSet.cs
@@ -166,7 +166,7 @@ public async Task ReadResultSetHeaderAsync(IOBehavior ioBehavior)
ContainsCommandParameters = true;
WarningCount = 0;
State = ResultSetState.ReadResultSetHeader;
- if (DataReader.Activity is { IsAllDataRequested: true })
+ if (DataReader.Activity is { IsAllDataRequested: true } && Connection.EnrichActivityWithReadResultSetHeader)
DataReader.Activity.AddEvent(new ActivityEvent("read-result-set-header"));
break;
}
diff --git a/src/MySqlConnector/MySqlConnection.cs b/src/MySqlConnector/MySqlConnection.cs
index 27219bb47..0ae40a336 100644
--- a/src/MySqlConnector/MySqlConnection.cs
+++ b/src/MySqlConnector/MySqlConnection.cs
@@ -1023,6 +1023,7 @@ internal void Cancel(ICancellableCommand command, int commandId, bool isCancel)
internal bool NoBackslashEscapes => GetInitializedConnectionSettings().NoBackslashEscapes;
internal bool TreatTinyAsBoolean => GetInitializedConnectionSettings().TreatTinyAsBoolean;
internal IOBehavior AsyncIOBehavior => GetConnectionSettings().ForceSynchronous ? IOBehavior.Synchronous : IOBehavior.Asynchronous;
+ internal bool EnrichActivityWithReadResultSetHeader => GetInitializedConnectionSettings().EnrichActivityWithReadResultSetHeader;
// Defaults to IOBehavior.Synchronous if the connection hasn't been opened yet; only use if it's a no-op for a closed connection.
internal IOBehavior SimpleAsyncIOBehavior => (m_connectionSettings?.ForceSynchronous is true) ? IOBehavior.Synchronous : IOBehavior.Asynchronous;
diff --git a/src/MySqlConnector/MySqlConnectionStringBuilder.cs b/src/MySqlConnector/MySqlConnectionStringBuilder.cs
index 762bcc639..31581cf8c 100644
--- a/src/MySqlConnector/MySqlConnectionStringBuilder.cs
+++ b/src/MySqlConnector/MySqlConnectionStringBuilder.cs
@@ -800,6 +800,19 @@ public bool UseXaTransactions
set => MySqlConnectionStringOption.UseXaTransactions.SetValue(this, value);
}
+ ///
+ /// Enrich Activity with read-result-set-header
+ ///
+ [Category("Other")]
+ [DefaultValue(true)]
+ [Description("Enriches Activity with read-result-set-header events.")]
+ [DisplayName("Enrich Activity with read-result-set-header")]
+ public bool EnrichActivityWithReadResultSetHeader
+ {
+ get => MySqlConnectionStringOption.EnrichActivityWithReadResultSetHeader.GetValue(this);
+ set => MySqlConnectionStringOption.EnrichActivityWithReadResultSetHeader.SetValue(this, value);
+ }
+
// Other Methods
///
@@ -958,6 +971,7 @@ internal abstract partial class MySqlConnectionStringOption
public static readonly MySqlConnectionStringValueOption UseAffectedRows;
public static readonly MySqlConnectionStringValueOption UseCompression;
public static readonly MySqlConnectionStringValueOption UseXaTransactions;
+ public static readonly MySqlConnectionStringValueOption EnrichActivityWithReadResultSetHeader;
public static MySqlConnectionStringOption? TryGetOptionForKey(string key) =>
s_options.TryGetValue(key, out var option) ? option : null;
@@ -1262,6 +1276,10 @@ static MySqlConnectionStringOption()
AddOption(options, UseXaTransactions = new(
keys: ["Use XA Transactions", "UseXaTransactions"],
defaultValue: true));
+
+ AddOption(options, EnrichActivityWithReadResultSetHeader = new(
+ keys: ["Enrich Activity with ReadResultSetHeader", "EnrichActivityWithReadResultSetHeader"],
+ defaultValue: true));
#pragma warning restore SA1118 // Parameter should not span multiple lines
#if NET8_0_OR_GREATER