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