Bug #25726 MySqlConnection throws NullReferenceException and ArgumentNullException
Submitted: 19 Jan 2007 22:46 Modified: 31 Jan 2007 17:06
Reporter: Robert Hood
Status: Closed
Category:Connector/Net Severity:S3 (Non-critical)
Version:5.0.3 OS:Microsoft Windows (Windows XP pro)
Assigned to: Target Version:
Tags: 5.0.3, MySql Connector

[19 Jan 2007 22:46] Robert Hood
Description:
The MySqlConnection throws the following exception when connecting to a 4.1.7 MySql
Server:

   at MySql.Data.MySqlClient.NativeDriver.get_SupportsBatch()
   at MySql.Data.MySqlClient.Statement.TokenizeSql(String sql)
   at MySql.Data.MySqlClient.Statement.BindParameters()
   at MySql.Data.MySqlClient.PreparableStatement.Execute(MySqlParameterCollection
parameters)
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
   at MySql.Data.MySqlClient.Driver.Configure(MySqlConnection connection)
   at MySql.Data.MySqlClient.NativeDriver.Configure(MySqlConnection connection)
   at MySql.Data.MySqlClient.MySqlConnection.Open()
   at DataTest.DataAccess.GetMySqlData(String serverName) in C:\Documents and
Settings\a339144\Desktop\DataTest\DataAccess.cs:line 53

It also throws the following IndexOutOfRangeException when connecting to a 4.1.0-alpha
MySql Server

   at MySql.Data.MySqlClient.MySqlDataReader.GetOrdinal(String name)
   at MySql.Data.MySqlClient.MySqlDataReader.get_Item(String name)
   at MySql.Data.MySqlClient.Driver.LoadCharacterSets()
   at MySql.Data.MySqlClient.Driver.Configure(MySqlConnection connection)
   at MySql.Data.MySqlClient.NativeDriver.Configure(MySqlConnection connection)
   at MySql.Data.MySqlClient.MySqlConnection.Open()
   at DataTest.DataAccess.GetMySqlData(String serverName) in C:\Documents and
Settings\a339144\Desktop\DataTest\DataAccess.cs:line 53

How to repeat:
Open a connection to a MySql Database that is older than 4.1.9.  Different server
versions seem to cause the connector to throw different exceptions.  We cannot
immediately upgrade our servers as downtime is very costly to our plants.

Suggested fix:
Test the connector against a larger majority of past versions of MySql.  Our current
range of server versions affected by the bug include: 
4.1.0-alpha
4.1.1-alpha
4.1.1-alpha-log
4.1.0-alpha-log
4.1.3-beta
4.1.7
4.1.9
[22 Jan 2007 12:35] Tonci Grgin
Hi Robert and thanks for your problem report.

Verified as described by reporter with mysqld-nt.exe started with --standalone
--console:
Version: '4.1.7-nt'  socket: ''  port: 3306  Source distribution
on WinXP Pro SP2 localhost using NET FW 2.0 with latest c/NET sources.

Error is in NativeDriver.cs, line 75:
public override bool SupportsBatch
{
	get
	{
		if ((Flags & ClientFlags.MULTI_STATEMENTS) != 0)
		{
			if (version.isAtLeast(4, 1, 0) && !version.isAtLeast(4, 1, 10))
			{
				if (serverProps["query_cache_type"].Equals("ON") &&
					!serverProps["query_cache_size"].Equals("0")) return false;
			}
			return true;
		}
		return false;
	}
}

For now, please use "allow batch=False" connect option as a workaround.
[22 Jan 2007 16:38] Robert Hood
The work around works for all version we currently work with, with the exception of
4.1.0-alpha. When connecting to this version of MySql, I am receiving an
IndexOutOfRangeException.  Thanks for your help so far.  If you can identify this error
and a work-around, we will be all set to deploy Connector 5.0.3
[23 Jan 2007 18:13] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/18642
[23 Jan 2007 18:13] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/18643
[23 Jan 2007 18:14] Reggie Burnett
Fixed issue with 4.1.7 in 1.0.9 and 5.0.4.  Will not spend time analyzing problems with
alpha builds of the server.
[31 Jan 2007 17:06] MC Brown
A note has been added to the 1.0.9 and 5.0.4 changelogs.