MySQL Connector/NET Release Notes  /  Changes in MySQL Connector/Net 6.0  /  Changes in MySQL Connector/NET 6.0.5 (2009-11-12)

Changes in MySQL Connector/NET 6.0.5 (2009-11-12)

This is a new release, fixing recently discovered bugs.

Bugs Fixed

  • Cloning of MySqlCommand was not typesafe. To clone a MySqlCommand it was necessary to do:

    MySqlCommand clone = (MySqlCommand)((ICloneable)comm).Clone();

    MySQL Connector/NET was changed so that it was possible to do:

    MySqlCommand clone = comm.Clone();

    (Bug #48460)

  • If MySqlConnection.GetSchema was called for "Indexes" on a table named b`a`d as follows:

    DataTable schemaPrimaryKeys = connection.GetSchema(
      new string[] { null, schemaName, "b`a`d"});

    Then the following exception was generated:

    You have an error in your SQL syntax; check the manual that corresponds to
    your MySQL server version for the right syntax to use near 'a`d`' at line 1

    (Bug #48101)

  • It was not possible to retrieve a value from a MySQL server table, if the value was larger than that supported by the .NET type System.Decimal.

    MySQL Connector/NET was changed to expose the MySqlDecimal type, along with the supporting method GetMySqlDecimal. (Bug #48100)

  • An entity model created from a schema containing a table with a column of type UNSIGNED BIGINT and a view of the table did not behave correctly. When an entity was created and mapped to the view, the column that was of type UNSIGNED BIGINT was displayed as BIGINT. (Bug #47872)

  • When loading the MySQLClient-mono.sln file included with the Connector/NET source into Mono Develop, the following error occurred:

    Unsupported or unrecognized project:

    If the file was modified to remove this problem, then attempting to build the solution generated the following error:

    error CS0115: `MySql.Data.MySqlClient.MySqlConnection.DbProviderFactory' is marked as an
    override but no suitable property found to override

    (Bug #47048)

  • If an error occurred during connection to a MySQL Server, deserializing the error message from the packet buffer caused a NullReferenceException to be thrown. When the method MySqlPacket::ReadString() attempted to retrieve the error message, the following line of code threw the exception:

    string s = encoding.GetString(bits, (int)buffer.Position, end - (int)buffer.Position);

    This was due to the fact that the encoding field had not been initialized correctly. (Bug #46844)

  • In the MySqlDataReader class the GetSByte function returned a byte value instead of an sbyte value. (Bug #46620)

  • The MySQL Connector/NET Profile Provider, MySql.Web.Profile.MySQLProfileProvider, generated an error when running on Mono. When an attempt was made to save a string in Profile.Name the string was not saved to the my_aspnet_Profiles table. If an attempt was made to force the save with Profile.Save() the following error was generated:

    Server Error in '/mono' Application
    The requested feature is not implemented.
    Description: HTTP 500. Error processing request.
    Stack Trace:
    System.NotImplementedException: The requested feature is not implemented.
    at MySql.Data.MySqlClient.MySqlConnection.EnlistTransaction
    (System.Transactions.Transaction transaction) [0x00000]
    at MySql.Data.MySqlClient.MySqlConnection.Open () [0x00000]
    at MySql.Web.Profile.MySQLProfileProvider.SetPropertyValues
    (System.Configuration.SettingsContext context,
    System.Configuration.SettingsPropertyValueCollection collection) [0x00000]
    Version information: Mono Version: 2.0.50727.1433; ASP.NET Version: 2.0.50727.1433

    (Bug #46375)

  • An exception was generated when using TIMESTAMP columns with the Entity Framework. (Bug #46311)

  • MySQL Connector/NET sometimes hung, without generating an exception. This happened if a read from a stream failed returning a 0, causing the code in LoadPacket() to enter an infinite loop. (Bug #46308)

  • When using MySQL Connector/NET 6.0.4 and a MySQL Server 4.1 an exception was generated when trying to execute:

    connection.GetSchema("Columns", ...);

    The exception generated was:

    'connection.GetSchema("Columns")' threw an exception of type
    'System.ArgumentException'System.Data.DataTable {System.ArgumentException}
    base{"Input string was not in a correct format.Couldn't store <'Select'> in
    NUMERIC_PRECISION Column.  Expected type is UInt64."}System.Exception

    (Bug #46270)

  • The MySQL Connector/NET method StoredProcedure.GetParameters(string) ignored the programmer's setting of the UseProcedureBodies option. This broke any application for which the application's parameter names did not match the parameter names in the Stored Procedure, resulting in an ArgumentException with the message Parameter 'foo' not found in the collection. and the following stack trace:

    ng parameterName = "pStart", bool throwOnNotFound = true) Line 459C#
    MySql.Data.dll!MySql.Data.MySqlClient.StoredProcedure.Resolve() Line 157 + 0x25
    vior behavior = SequentialAccess) Line 405 + 0xb bytesC#
    ndBehavior behavior = SequentialAccess) Line 884 + 0xb bytesC#
    .Data.CommandBehavior behavior) + 0xb bytes
    dataset = {System.Data.DataSet}, System.Data.DataTable[] datatables = null, int
    startRecord = 0, int maxRecords = 0, string srcTable = "Table", System.Data.IDbCommand
    command = {MySql.Data.MySqlClient.MySqlCommand}, System.Data.CommandBehavior behavior) +
    0x83 bytes
    System.Data.dll!System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet dataSet, int
    startRecord, int maxRecords, string srcTable, System.Data.IDbCommand command,
    System.Data.CommandBehavior behavior) + 0x120 bytes
    System.Data.dll!System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet dataSet) +
    0x5f bytes

    (Bug #46213)

  • Conversion of MySQL TINYINT(1) to boolean failed. (Bug #46205, Bug #46359, Bug #41953)

  • When populating a MySQL database table in Visual Studio using the Table Editor, if a VARCHAR(10) column was changed to a VARCHAR(20) column an exception was generated:

    SystemArgumentException: DataGridViewComboBoxCell value is not valid.
    To replace this default dialog please handle the DataError Event.

    (Bug #46100)

  • In MySQL Connector/NET 6.0.4 using GetProcData generated an error because the parameters data table was only created if MySQL Server was at least version 6.0.6, or if the UseProcedureBodies connection string option was set to true.

    Also the DeriveParameters command generated a null reference exception. This was because the parameters data table, which was null, was used in a for each loop. (Bug #45952)

  • The Entity Framework provider was not calling DBSortExpression correctly when the Skip and Take methods were used, such as in the following statement:

    TestModel.tblquarantine.OrderByDescending(q => q.MsgDate).Skip(100).Take(100).ToList();

    This resulted in the data being unsorted. (Bug #45723)

  • The EscapeString code carried out escaping by calling string.Replace multiple times. This resulted in a performance bottleneck, as for every line a new string was allocated and another was disposed of by the garbage collector. (Bug #45699)

  • Adding the Allow Batch=False option to the connection string caused MySQL Connector/NET to generate the error:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL
    server version for the right syntax to use near 'SET character_set_results=NULL' at line 1

    (Bug #45502)

  • The MySQL Connector/NET 6.0.4 installer failed with an error. The error message generated was:

    There is a problem with this Windows Installer package. A DLL required for this
    install to complete could not be run. Contact your support personnel or package vendor.

    When OK was clicked to acknowledge the error the installer exited. (Bug #45474)

  • A MySQL Connector/NET test program that connected to MySQL Server using the connection string option compress=true crashed, but only when running on Mono. The program worked as expected when running on Microsoft Windows.

    This was due to a bug in Mono. MySQL Connector/NET was modified to avoid using WeakReferences in the Compressed stream class, which was causing the crash. (Bug #45463)

  • Calling the Entity Framework SaveChanges() method of any MySQL ORM Entity with a column type TIME, generated an error message:

    Unknown PrimitiveKind Time

    (Bug #45457)

  • Insert into two tables failed when using the Entity Framework. The exception generated was:

    The value given is not an instance of type 'Edm.Int32'

    (Bug #45077)

  • Input parameters were missing from Stored Procedures when using them with ADO.NET Data Entities. (Bug #44985)

  • Errors occurred when using the Entity Framework with cultures that used a comma as the decimal separator. This was because the formatting for SINGLE, DOUBLE and DECIMAL values was not handled correctly. (Bug #44455)

  • When attempting to connect to MySQL using the Compact Framework version of MySQL Connector/NET, an IndexOutOfRangeException exception was generated on trying to open the connection. (Bug #43736)

  • When reading data, such as with a MySqlDataAdapter on a MySqlConnection, MySQL Connector/NET could potentially enter an infinite loop in CompressedStream.ReadNextpacket() if compression was enabled. (Bug #43678)

  • An error occurred when building MySQL Connector/NET from source code checked out from the public SVN repository. This happened on Linux using Mono and Nant. The Mono JIT compiler version was The Nant version was 0.85.

    When an attempt was made to build (for example) the MySQL Connector/NET 5.2 branch using the command:

    $ nant

    The following error occurred:

    Error loading buildfile.
    Encoding name 'Windows-1252' not supported.
    Parameter name: name

    (Bug #42411)

  • After a Reference to "C:\Program Files\MySQL\MySQL Connector Net 5.2.4\Compact Framework\MySql.Data.CF.dll" was added to a Windows Mobile 5.0 project, the project then failed to build, generating a Microsoft Visual C# compiler error.

    The error generated was:

    Error 2 The type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute'
    has no constructors defined MysqlTest
    Error 3 Internal Compiler Error (0xc0000005 at address 5A7E3714):
    likely culprit is 'COMPILE'.

    (Bug #42261)

  • MySQL Connector/NET CHM documentation stated that MySQL Server 3.23 was supported. (Bug #42110)

  • In the case of long network inactivity, especially when connection pooling was used, connections were sometimes dropped, for example, by firewalls.

    Note: The bugfix introduced a new keepalive parameter, which prevents disconnects by sending an empty TCP packet after a specified timeout. (Bug #40684)

  • MySQL Connector/NET generated the following exception:

    System.NullReferenceException: Object reference not set to an instance of an object.
          bei MySql.Data.MySqlClient.MySqlCommand.TimeoutExpired(Object commandObject)
          bei System.Threading._TimerCallback.TimerCallback_Context(Object state)
          bei System.Threading.ExecutionContext.runTryCode(Object userData)
          code, CleanupCode backoutCode, Object userData)
          bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,
          ContextCallback callback, Object state)
          bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext,
          ContextCallback callback, Object state)
          bei System.Threading._TimerCallback.PerformTimerCallback(Object state)

    (Bug #40005)

  • Calling a Stored Procedure with an output parameter through MySQL Connector/NET resulted in a memory leak. Calling the same Stored Procedure without an output parameter did not result in a memory leak. (Bug #36027)

  • Using a DataAdapter with a linked MySqlCommandBuilder the following exception was thrown when trying to call da.Update(DataRow[] rows):

    Connection must be valid and open

    (Bug #34657)