List:Commits« Previous MessageNext Message »
From:rburnett Date:November 5 2007 6:10pm
Subject:Connector/NET commit: r1060 - in branches/5.0: . Driver/Source/Types TestSuite/Source
View as plain text  
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/Sourcerburnett5 Nov