List:Commits« Previous MessageNext Message »
From:rburnett Date:November 5 2007 5:11pm
Subject:Connector/NET commit: r1061 - in branches/5.1: . Driver/Source/Types TestSuite/Source
View as plain text  
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);
             }
         }
+
+        /// <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: r1061 - in branches/5.1: . Driver/Source/Types TestSuite/Sourcerburnett5 Nov