Skip to content

Exception on procedures with out parameters #425

@Hjorthen

Description

@Hjorthen

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions