Modified:
branches/5.0/CHANGES
branches/5.0/Driver/Source/Types/MySqlDouble.cs
branches/5.0/Driver/Source/Types/MySqlSingle.cs
branches/5.0/TestSuite/Source/DataTypeTests.cs
Log:
Fixed writing of single and double values to write out the proper number of digits (bug #33322)
Modified: branches/5.0/CHANGES
===================================================================
--- branches/5.0/CHANGES 2008-07-21 21:48:23 UTC (rev 1346)
+++ branches/5.0/CHANGES 2008-07-22 13:29:01 UTC (rev 1347)
@@ -11,6 +11,8 @@
close the connection. (bug #37991)
- Fixed problem with byte and unsigned byte values writing more too many bytes when
using prepared statements (bug #37968)
+ - Fixed writing of single and double values to write out the proper number of digits
+ (bug #33322)
Version 5.0.9 - 4/14/08
Modified: branches/5.0/Driver/Source/Types/MySqlDouble.cs
===================================================================
--- branches/5.0/Driver/Source/Types/MySqlDouble.cs 2008-07-21 21:48:23 UTC (rev 1346)
+++ branches/5.0/Driver/Source/Types/MySqlDouble.cs 2008-07-22 13:29:01 UTC (rev 1347)
@@ -83,11 +83,10 @@
void IMySqlValue.WriteValue(MySqlStream stream, bool binary, object val, int length)
{
double v = Convert.ToDouble(val);
- if (binary)
- stream.Write(BitConverter.GetBytes(v));
- else
- stream.WriteStringNoNull(v.ToString(
- CultureInfo.InvariantCulture));
+ if (binary)
+ stream.Write(BitConverter.GetBytes(v));
+ else
+ stream.WriteStringNoNull(v.ToString("R", CultureInfo.InvariantCulture));
}
IMySqlValue IMySqlValue.ReadValue(MySqlStream stream, long length,
@@ -102,7 +101,7 @@
stream.Read(b, 0, 8);
return new MySqlDouble(BitConverter.ToDouble(b, 0));
}
- return new MySqlDouble(Double.Parse(stream.ReadString(length),
+ return new MySqlDouble(Double.Parse(stream.ReadString(length),
CultureInfo.InvariantCulture));
}
Modified: branches/5.0/Driver/Source/Types/MySqlSingle.cs
===================================================================
--- branches/5.0/Driver/Source/Types/MySqlSingle.cs 2008-07-21 21:48:23 UTC (rev 1346)
+++ branches/5.0/Driver/Source/Types/MySqlSingle.cs 2008-07-22 13:29:01 UTC (rev 1347)
@@ -85,7 +85,7 @@
if (binary)
stream.Write(BitConverter.GetBytes(v));
else
- stream.WriteStringNoNull(v.ToString(
+ stream.WriteStringNoNull(v.ToString("R",
CultureInfo.InvariantCulture));
}
Modified: branches/5.0/TestSuite/Source/DataTypeTests.cs
===================================================================
--- branches/5.0/TestSuite/Source/DataTypeTests.cs 2008-07-21 21:48:23 UTC (rev 1346)
+++ branches/5.0/TestSuite/Source/DataTypeTests.cs 2008-07-22 13:29:01 UTC (rev 1347)
@@ -759,5 +759,28 @@
Assert.AreEqual(0, reader.GetValue(0));
}
}
+
+ /// <summary>
+ /// Bug #33322 Incorrect Double/Single value saved to MySQL database using MySQL Connector for
+ /// </summary>
+ [Test]
+ public void StoringAndRetrievingDouble()
+ {
+ execSQL("DROP TABLE IF EXISTS Test");
+ execSQL("CREATE TABLE Test (v DOUBLE(25,20) NOT NULL)");
+
+ MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES (?v)", conn);
+ cmd.Parameters.Add("?v", MySqlDbType.Double);
+ cmd.Parameters[0].Value = Math.PI;
+ cmd.ExecuteNonQuery();
+
+ cmd.CommandText = "SELECT * FROM Test";
+ using (MySqlDataReader reader = cmd.ExecuteReader())
+ {
+ reader.Read();
+ double d = reader.GetDouble(0);
+ Assert.AreEqual(Math.PI, d);
+ }
+ }
}
}
| Thread |
|---|
| • Connector/NET commit: r1347 - in branches/5.0: . Driver/Source/Types TestSuite/Source | rburnett | 22 Jul |