This release fixes bugs since 6.2.3.
Functionality added or changed:
Procedure cacheing had a problem whereby if you created a procedure, dropped it, and recreated it with a different number of parameters an exception was generated.
MySQL Connector/NET has been changed so that if the procedure is recreated with a different number of parameters, it will still be recognized. (Bug#52562)
Bugs fixed:
The calculation of
lockAge
in the Session Provider sometimes generated aSystem.Data.SqlTypes.SqlNullValueException
. (Bug#55701)Attempting to read
Double.MinValue
from aDOUBLE
column in MySQL table generated the following exception:System.OverflowException : Value was either too large or too small for a Double. --OverflowException at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt) at MySql.Data.Types.MySqlDouble.MySql.Data.Types.IMySqlValue.ReadValue(MySqlPacket packet, Int64 length, Boolean nullVal) at MySql.Data.MySqlClient.NativeDriver.ReadColumnValue(Int32 index, MySqlField field, IMySqlValue valObject) at MySql.Data.MySqlClient.ResultSet.ReadColumnData(Boolean outputParms) at MySql.Data.MySqlClient.ResultSet.NextRow(CommandBehavior behavior) at MySql.Data.MySqlClient.MySqlDataReader.Read()
After an exception, the internal datareader,
MySqlCommand.Connection.Reader
, was not properly closed (it was not set to null). If another query was subsequently executed on that command object an exception was generated with the message “There is already an open DataReader associated with this Connection which must be closed first.” (Bug#55558)If using MySQL Server 5.0.x it was not possible to alter stored routines in Visual Studio. If the stored routine was clicked, and the context sensitive menu option, Alter Routine, selected, the following error was generated:
Unable to load object with error: Object reference not set to an instance of an object
MySqlDataAdapter.Update()
generated concurrency violations for custom stored procedure driven update commands that usedUpdateRowSource.FirstReturnedRecord
. (Bug#54895)Several calls to
datadapter.Update()
with intervening changes toDataTable
resulted inConcurrencyException
exceptions being generated. (Bug#54863)The icon for the MySQL Web Configuration Tool was not displayed in Visual Studio for Web Application Projects. (Bug#54571)
The
MySqlHelper
object did not have an overloaded version of theExecuteReader
method that accepted aMySqlConnection
object. (Bug#54570)If
MySqlDataAdapter
was used with anINSERT
command where theVALUES
clause contained an expression with parentheses in it, and set theadapter.UpdateBatchSize
parameter to be greater than one, then the call toadpater.Update
either generated an exception or failed to batch the commands, executing each insert individually. (Bug#54386)The method
MySql.Data.Common.QueryNormalizer.CollapseValueList
generated anArgumentOutOfRangeException
. (Bug#54152, Bug#53865)MySQL Connector/NET did not process
Thread.Abort()
correctly, and failed to cancel queries currently running on the server. (Bug#54012)Garbage Collector disposal of a
MySqlConnection
object caused the following exception:System.IO.EndOfStreamException: Attempted to read past the end of the stream. MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count) MySql.Data.MySqlClient.MySqlStream.LoadPacket() Outer Exception Reading from the stream has failed. ...
MySQL Connector/NET did not throw an
EndOfStreamException
exception whennet_write_timeout
was exceeded. (Bug#53439)After a timeout exception, if an attempt was made to reuse a connection returned to the connection pool the following exception was generated:
[MySqlException (0x80004005): There is already an open DataReader associated with this Connection which must be closed first.] MySql.Data.MySqlClient.MySqlCommand.CheckState() +278 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +43 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader() +6 Controls.SimpleCommand.ExecuteReader(String SQL) in ...:323 Albums.GetImagesByAlbum(SimpleCommand Cmd, Int32 iAlbum, String Order, String Limit) in ...:13 Forecast.Page_Load(Object sender, EventArgs e) in ...:70 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
Membership schema creation failed if the default schema collation was not Latin1. (Bug#53174)
In MySQL Connector/NET, the
MySqlConnection.Abort()
method contained atry...catch
construct, with an emptycatch
block. This meant that any exception generated at this point would not be caught. (Bug#52769)EventLog was not disposed in the SessionState provider. (Bug#52550)
The procedure cache affected the MySQL Connector/NET performance, reducing it by around 65%. This was due to unnecessary calls of
String.Format()
, related to debug logging. Even though the logging was disabled the string was still being formatted, resulting in impaired performance. (Bug#52475)If
FunctionsReturnString=true
was used in the connection string, the decimal separator (according to locale) was not interpreted. (Bug#52187)Periodically the session provider threw an
SqlNullValueException
exception. When this happened, the row within themy_aspnet_Sessions
table hadlocked
always set to '1'. The locked status never changed back to '0' and the user experienced the exception on every page, until their browser was closed and reopened (recreating a new sessionID), or thelocked
value was manually changed to '0'. (Bug#52175)CHAR(36)
columns were not recognized as GUIDs when used in views with entity models. (Bug#52085)In MySQL Connector/NET, the
LoadCharsetMap()
function of theCharSetMap
class set the following incorrect mapping:mapping.Add("latin1", new CharacterSet("latin1", 1));
This meant that, for example, the Euro sign was not handled correctly.
The correct mapping should have been:
mapping.Add("latin1", new CharacterSet("windows-1252", 1));
This is because MySQL's
latin1
character set is the same as thewindows-cp1252
character set and it extends the official ISO 8859-1 or IANA latin1. (Bug#51927)Stored procedure enumeration code generated an error if a procedure was used in a dataset that did not return any resultsets. (Bug#50671)
When an application was subjected to increased concurrent load, MySQL Connector/NET generated the following error when calling stored procedures:
A DataTable named \'Procedure Parameters\' already belongs to this DataSet.
The
INSERT
command was significantly slower with MySQL Connector/NET 6.x compared to 5.x, when compression was enabled. (Bug#48243)When the connection string option “Connection Reset = True” was used, a connection reset used the previously used encoding for the subsequent authentication operation. This failed, for example, if UCS2 was used to read the last column before the reset. (Bug#47153)
Opening a connection in the Visual Studio Server Explorer and choosing to alter an existing routine required another authentication at the server. (Bug#44715)
When batching was used in
MySqlDataAdapter
, a connection was not opened automatically inMySqlDataAdapter.Update()
. This resulted in anInvalidOperationException
exception being generated, with the message text “connection must be valid and open”.MySQL Connector/NET has been changed to behave more like SQL Server: if the connection is closed, it is opened for the duration of update operation. (Bug#38411)
Database name was emitted into typed datasets. This prevented users using the configured default database. (Bug#33870)