Modified:
trunk/CHANGES
trunk/TestSuite/ParameterTests.cs
trunk/mysqlclient/core/parameter.cs
Log:
Bug #24565 Inferring DbType fails when reusing commands and the first time the value is
nul
This is fixed by not marking the parameter as having it's type set when null is given as
the value.
Modified: trunk/CHANGES
===================================================================
--- trunk/CHANGES 2006-11-29 16:53:05 UTC (rev 469)
+++ trunk/CHANGES 2006-11-29 17:45:20 UTC (rev 470)
@@ -3,6 +3,7 @@
Bugs fixed
----------
Bug #23687 Deleting a connection to a disconnected server causes a failed assertion
+ Bug #24565 Inferring DbType fails when reusing commands and the first time the value is
nul
Other changes
-------------
Modified: trunk/TestSuite/ParameterTests.cs
===================================================================
--- trunk/TestSuite/ParameterTests.cs 2006-11-29 16:53:05 UTC (rev 469)
+++ trunk/TestSuite/ParameterTests.cs 2006-11-29 17:45:20 UTC (rev 470)
@@ -363,5 +363,35 @@
Assert.AreEqual(2, dt.Rows.Count);
Assert.AreEqual(2, dt.Rows[1]["foo"]);
}
- }
+
+ /// <summary>
+ /// Bug #24565 Inferring DbType fails when reusing commands and the first time
the value is nul
+ /// </summary>
+ [Test]
+ public void UnTypedParameterBeingReused()
+ {
+ MySqlCommand cmd = new MySqlCommand("INSERT INTO test (id, dt) VALUES (?id,
?dt)", conn);
+ cmd.Parameters.Add("?id", 1);
+ MySqlParameter p = cmd.CreateParameter();
+ p.ParameterName = "?dt";
+ p.Value = DBNull.Value;
+ cmd.Parameters.Add(p);
+ cmd.ExecuteNonQuery();
+
+ cmd.Parameters[0].Value = 2;
+ p.Value = DateTime.Now;
+ cmd.ExecuteNonQuery();
+
+ cmd.CommandText = "SELECT * FROM test";
+ cmd.Parameters.Clear();
+ using (MySqlDataReader reader = cmd.ExecuteReader())
+ {
+ reader.Read();
+ Assert.IsTrue(reader.IsDBNull(2));
+ reader.Read();
+ Assert.IsFalse(reader.IsDBNull(2));
+ Assert.IsFalse(reader.Read());
+ }
+ }
+ }
}
Modified: trunk/mysqlclient/core/parameter.cs
===================================================================
--- trunk/mysqlclient/core/parameter.cs 2006-11-29 16:53:05 UTC (rev 469)
+++ trunk/mysqlclient/core/parameter.cs 2006-11-29 17:45:20 UTC (rev 470)
@@ -356,7 +356,7 @@
private void SetMySqlDbType(MySqlDbType mySqlDbType)
{
- this.mySqlDbType = mySqlDbType;
+ this.mySqlDbType = mySqlDbType;
switch (mySqlDbType)
{
case MySqlDbType.Decimal: dbType = DbType.Decimal; break;
@@ -393,7 +393,7 @@
private void SetDbType(DbType dbType)
{
- this.dbType = dbType;
+ this.dbType = dbType;
switch (dbType)
{
case DbType.Guid:
@@ -440,7 +440,7 @@
private void SetTypeFromValue()
{
- if (paramValue == null) return;
+ if (paramValue == null || paramValue == DBNull.Value) return;
if (paramValue is Guid)
DbType = DbType.String;
| Thread |
|---|
| • Connector/NET commit: r470 - in trunk: . TestSuite mysqlclient/core | rburnett | 29 Nov |