From: Date: November 5 2007 6:11pm Subject: Connector/NET commit: r1061 - in branches/5.1: . Driver/Source/Types TestSuite/Source List-Archive: http://lists.mysql.com/commits/37113 X-Bug: 32094 Message-Id: <200711051711.lA5HBduj024432@bk-internal.mysql.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modified: branches/5.1/CHANGES branches/5.1/Driver/Source/Types/MySqlString.cs branches/5.1/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.1/CHANGES =================================================================== --- branches/5.1/CHANGES 2007-11-05 17:10:34 UTC (rev 1060) +++ branches/5.1/CHANGES 2007-11-05 17:11:38 UTC (rev 1061) @@ -96,6 +96,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 Bug #28706 Log messages are truncated Modified: branches/5.1/Driver/Source/Types/MySqlString.cs =================================================================== --- branches/5.1/Driver/Source/Types/MySqlString.cs 2007-11-05 17:10:34 UTC (rev 1060) +++ branches/5.1/Driver/Source/Types/MySqlString.cs 2007-11-05 17:11:38 UTC (rev 1061) @@ -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.1/TestSuite/Source/ParameterTests.cs =================================================================== --- branches/5.1/TestSuite/Source/ParameterTests.cs 2007-11-05 17:10:34 UTC (rev 1060) +++ branches/5.1/TestSuite/Source/ParameterTests.cs 2007-11-05 17:11:38 UTC (rev 1061) @@ -522,5 +522,36 @@ Assert.Fail(ex.Message); } } + + /// + /// Bug #32094 Size property on string parameter throws an exception + /// + [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]); + } } }