Modified:
branches/5.0/CHANGES
branches/5.0/Driver/Source/Types/MySqlString.cs
branches/5.0/TestSuite/Source/ParameterTests.cs
Log:
fixed problem where string parameters who have their size set after their value could
cause exceptions (Bug #32094)
Modified: branches/5.0/CHANGES
===================================================================
--- branches/5.0/CHANGES 2007-11-05 14:59:02 UTC (rev 1059)
+++ branches/5.0/CHANGES 2007-11-05 17:10:34 UTC (rev 1060)
@@ -20,6 +20,8 @@
errors. (Bug #31433)
- improved the speed of load data local infile significantly
- fixed MySqlDateTime.ToString() to properly return the date value (Bug #32010)
+ - fixed problem where string parameters who have their size set after their value could
cause exceptions
+ (Bug #32094)
Version 5.0.8 8/16/2007
Modified: branches/5.0/Driver/Source/Types/MySqlString.cs
===================================================================
--- branches/5.0/Driver/Source/Types/MySqlString.cs 2007-11-05 14:59:02 UTC (rev 1059)
+++ branches/5.0/Driver/Source/Types/MySqlString.cs 2007-11-05 17:10:34 UTC (rev 1060)
@@ -97,8 +97,11 @@
void IMySqlValue.WriteValue(MySqlStream stream, bool binary, object val, int length)
{
string v = val.ToString();
- if (length > 0)
- v = v.Substring(0, length);
+ if (length > 0)
+ {
+ length = Math.Min(length, v.Length);
+ v = v.Substring(0, length);
+ }
if (binary)
stream.WriteLenString(v);
Modified: branches/5.0/TestSuite/Source/ParameterTests.cs
===================================================================
--- branches/5.0/TestSuite/Source/ParameterTests.cs 2007-11-05 14:59:02 UTC (rev 1059)
+++ branches/5.0/TestSuite/Source/ParameterTests.cs 2007-11-05 17:10:34 UTC (rev 1060)
@@ -516,5 +516,36 @@
Assert.Fail(ex.Message);
}
}
+
+ /// <summary>
+ /// Bug #32094 Size property on string parameter throws an exception
+ /// </summary>
+ [Test]
+ public void StringParameterSizeSetAfterValue()
+ {
+ execSQL("DROP TABLE IF EXISTS Test");
+ execSQL("CREATE TABLE Test (v VARCHAR(10))");
+
+ MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES (?p1)", conn);
+ cmd.Parameters.Add("?p1", MySqlDbType.VarChar);
+ cmd.Parameters[0].Value = "123";
+ cmd.Parameters[0].Size = 10;
+ cmd.ExecuteNonQuery();
+
+ MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM Test", conn);
+ DataTable dt = new DataTable();
+ da.Fill(dt);
+ Assert.AreEqual("123", dt.Rows[0][0]);
+
+ cmd.Parameters.Clear();
+ cmd.Parameters.Add("?p1", MySqlDbType.VarChar);
+ cmd.Parameters[0].Value = "123456789012345";
+ cmd.Parameters[0].Size = 10;
+ cmd.ExecuteNonQuery();
+
+ dt.Clear();
+ da.Fill(dt);
+ Assert.AreEqual("1234567890", dt.Rows[1][0]);
+ }
}
}
| Thread |
|---|
| • Connector/NET commit: r1060 - in branches/5.0: . Driver/Source/Types TestSuite/Source | rburnett | 5 Nov |