This release fixes bugs since 6.2.3.
Functionality Added or Changed
Procedure caching 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)
In the ADO.NET Entity Data Model Wizard, the time to update a model scaled abnormally as the number of entities increased. (Bug #48791, Bug #12596237)
Opening a connection in the Visual Studio Server Explorer and choosing to alter an existing routine required another authentication at the server. (Bug #44715)
Stored procedure enumeration code generated an error if a procedure was used in a dataset that did not return any resultsets. (Bug #50671)
EventLog was not disposed in the SessionState provider. (Bug #52550)
Attempting to read
Double.MinValue from a
DOUBLE column in MySQL table generated the
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()
The calculation of
lockAge in the Session
Provider sometimes generated a
INSERT command was significantly slower
with MySQL Connector/Net 6.x compared to 5.x, when compression was enabled.
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
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
Membership schema creation failed if the default schema collation was not Latin1. (Bug #53174)
CHAR(36) columns were not recognized as GUIDs
when used in views with entity models.
When batching was used in
connection was not opened automatically in
MySqlDataAdapter.Update(). This resulted in
InvalidOperationException exception being
generated, with the message text “connection must be valid
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)
MySQL Connector/Net did not process
correctly, and failed to cancel queries currently running on the
MySQL Connector/Net did not throw an
The icon for the MySQL Web Configuration Tool was not displayed in Visual Studio for Web Application Projects. (Bug #54571)
Database name was emitted into typed datasets. This prevented users using the configured default database. (Bug #33870)
concurrency violations for custom stored procedure driven update
commands that used
Several calls to
intervening changes to
DataTable resulted in
ConcurrencyException exceptions being
MySqlDataAdapter was used with an
INSERT command where the
VALUES clause contained an expression with
parentheses in it, and set the
adapter.UpdateBatchSize parameter to be
greater than one, then the call to
adapter.Update either generated an exception
or failed to batch the commands, executing each insert
MySqlHelper object did not have an
overloaded version of the
method that accepted a
Garbage Collector disposal of a
MySqlConnection object caused the following
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. ...
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
(Bug #54152, Bug #53865)
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.
In MySQL Connector/Net, the
try...catch construct, with an
catch block. This meant that any
exception generated at this point would not be caught.
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.
FunctionsReturnString=true was used in the
connection string, the decimal separator (according to locale)
was not interpreted.
In MySQL Connector/Net, the
LoadCharsetMap() function of
CharSetMap class set the following
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 the
set and it extends the official ISO 8859-1 or IANA latin1.
Periodically the session provider threw an
SqlNullValueException exception. When this
happened, the row within the
my_aspnet_Sessions table had
locked 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 the
value was manually changed to '0'.
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)