@@ -136,7 +136,7 @@ private DbDataReader ExecuteDbDataReader(CommandBehavior behavior)
136136#endif
137137 {
138138 ( ( ICancellableCommand ) this ) . ResetCommandTimeout ( ) ;
139- return ExecuteReaderAsync ( IOBehavior . Synchronous , CancellationToken . None ) . GetAwaiter ( ) . GetResult ( ) ;
139+ return ExecuteReaderAsync ( behavior , IOBehavior . Synchronous , CancellationToken . None ) . GetAwaiter ( ) . GetResult ( ) ;
140140 }
141141
142142#if NET6_0_OR_GREATER
@@ -147,21 +147,22 @@ private async Task<DbDataReader> ExecuteDbDataReaderAsync(CommandBehavior behavi
147147 {
148148 ( ( ICancellableCommand ) this ) . ResetCommandTimeout ( ) ;
149149 using var registration = ( ( ICancellableCommand ) this ) . RegisterCancel ( cancellationToken ) ;
150- return await ExecuteReaderAsync ( AsyncIOBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
150+ return await ExecuteReaderAsync ( behavior , AsyncIOBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
151151 }
152152
153- private Task < MySqlDataReader > ExecuteReaderAsync ( IOBehavior ioBehavior , CancellationToken cancellationToken )
153+ private Task < MySqlDataReader > ExecuteReaderAsync ( CommandBehavior behavior , IOBehavior ioBehavior , CancellationToken cancellationToken )
154154 {
155155 if ( ! IsValid ( out var exception ) )
156156 return Utility . TaskFromException < MySqlDataReader > ( exception ) ;
157157
158+ CurrentCommandBehavior = behavior ;
158159 foreach ( MySqlBatchCommand batchCommand in BatchCommands )
159160 batchCommand . Batch = this ;
160161
161162 var payloadCreator = Connection ! . Session . SupportsComMulti ? BatchedCommandPayloadCreator . Instance :
162163 IsPrepared ? SingleCommandPayloadCreator . Instance :
163164 ConcatenatedCommandPayloadCreator . Instance ;
164- return CommandExecutor . ExecuteReaderAsync ( BatchCommands ! . Commands , payloadCreator , CommandBehavior . Default , ioBehavior , cancellationToken ) ;
165+ return CommandExecutor . ExecuteReaderAsync ( BatchCommands ! . Commands , payloadCreator , behavior , ioBehavior , cancellationToken ) ;
165166 }
166167
167168#if NET6_0_OR_GREATER
@@ -241,6 +242,8 @@ public void Dispose()
241242 m_isDisposed = true ;
242243 }
243244
245+ internal CommandBehavior CurrentCommandBehavior { get ; set ; }
246+
244247 int ICancellableCommand . CommandId => m_commandId ;
245248 int ICancellableCommand . CommandTimeout => Timeout ;
246249 int ICancellableCommand . CancelAttemptCount { get ; set ; }
@@ -280,7 +283,7 @@ private async Task<int> ExecuteNonQueryAsync(IOBehavior ioBehavior, Cancellation
280283 {
281284 ( ( ICancellableCommand ) this ) . ResetCommandTimeout ( ) ;
282285 using var registration = ( ( ICancellableCommand ) this ) . RegisterCancel ( cancellationToken ) ;
283- using var reader = await ExecuteReaderAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
286+ using var reader = await ExecuteReaderAsync ( CommandBehavior . Default , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
284287 do
285288 {
286289 while ( await reader . ReadAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) )
@@ -296,7 +299,7 @@ private async Task<int> ExecuteNonQueryAsync(IOBehavior ioBehavior, Cancellation
296299 using var registration = ( ( ICancellableCommand ) this ) . RegisterCancel ( cancellationToken ) ;
297300 var hasSetResult = false ;
298301 object ? result = null ;
299- using var reader = await ExecuteReaderAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
302+ using var reader = await ExecuteReaderAsync ( CommandBehavior . Default , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
300303 do
301304 {
302305 var hasResult = await reader . ReadAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
0 commit comments