-
Notifications
You must be signed in to change notification settings - Fork 345
Closed
Labels
Description
With the newest release 0.34.1 I receive the following exception when calling a procedure with out parameters:
[xUnit.net 00:00:06.5883540] System.InvalidCastException : Object cannot be cast from DBNull to other types.
[xUnit.net 00:00:06.5914180] Stack Trace:
[xUnit.net 00:00:06.5939518] at System.DBNull.System.IConvertible.ToInt32(IFormatProvider provider)
[xUnit.net 00:00:06.5944706] C:\projects\mysqlconnector\src\MySqlConnector\Core\TypeMapper.cs(35,0): at MySqlConnector.Core.TypeMapper.<>c.<.ctor>b__1_5(Object o)
[xUnit.net 00:00:06.5946972] C:\projects\mysqlconnector\src\MySqlConnector\Core\StoredProcedureCommandExecutor.cs(108,0): at MySqlConnector.Core.StoredProcedureCommandExecutor.SetParams()
[xUnit.net 00:00:06.5947891] C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs(426,0): at MySql.Data.MySqlClient.MySqlDataReader.DoClose()
[xUnit.net 00:00:06.5948587] C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs(263,0): at MySql.Data.MySqlClient.MySqlDataReader.Dispose(Boolean disposing)
[xUnit.net 00:00:06.5949145] at System.Data.Common.DbDataReader.Dispose()
[xUnit.net 00:00:06.5949841] C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs(287,0): at MySql.Data.MySqlClient.MySqlDataReader.<CreateAsync>d__64.MoveNext()
[xUnit.net 00:00:06.5950371] --- End of stack trace from previous location where exception was thrown ---
[xUnit.net 00:00:06.5950910] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
[xUnit.net 00:00:06.5951498] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
[xUnit.net 00:00:06.5952162] C:\projects\mysqlconnector\src\MySqlConnector\Core\TextCommandExecutor.cs(73,0): at MySqlConnector.Core.TextCommandExecutor.<ExecuteReaderAsync>d__3.MoveNext()
It only happens if an exception occurs in the procedure before the out parameter has been set.
I assume this is because it attempts to parse the parameter even in the case of an exception?
See issue #423 for the code