List:Commits« Previous MessageNext Message »
From:Reggie Burnett Date:December 9 2009 3:05pm
Subject:bzr commit into connector-net-6.1 branch (reggie.burnett:795) Bug#48171
View as plain text  
#At file:///C:/bzr-connector-net/6.1/ based on revid:vvaintroub@stripped

  795 Reggie Burnett	2009-12-09 [merge]
      Fixed precision calculation on decimal and newdecimal columns (bug #48171)

    modified:
      CHANGES
      MySql.Data/Provider/Source/NativeDriver.cs
      MySql.Data/Tests/Source/DataTypeTests.cs
=== modified file 'CHANGES'
=== modified file 'CHANGES'
--- a/CHANGES	2009-11-30 15:31:48 +0000
+++ b/CHANGES	2009-12-09 15:05:23 +0000
@@ -1,3 +1,7 @@
+- When sending file to server (LOAD DATA INFILE) open the file for read only, not for read/write
+ (bug #48944)
+- Fixed precision calculation on decimal and newdecimal columns (bug #48171)
+
 Version 6.1.3
 - fixed session state provider table definition to allow more than 64K per-session data (bug#47339)
 - fixed compilation problem in NativeDriver inside ExecuteDirect  (bug #47354)

=== modified file 'MySql.Data/Provider/Source/NativeDriver.cs'
--- a/MySql.Data/Provider/Source/NativeDriver.cs	2009-11-30 17:03:48 +0000
+++ b/MySql.Data/Provider/Source/NativeDriver.cs	2009-12-09 15:05:23 +0000
@@ -719,11 +719,19 @@
             else
                 colFlags = (ColumnFlags)packet.ReadByte();
             field.Scale = (byte)packet.ReadByte();
+
             if (packet.HasMoreData)
             {
                 packet.ReadInteger(2); // reserved
             }
 
+            if (type == MySqlDbType.Decimal || type == MySqlDbType.NewDecimal)
+            {
+                field.Precision = (byte)(field.ColumnLength - (int)field.Scale);
+                if ((colFlags & ColumnFlags.UNSIGNED) != 0)
+                    field.Precision++;
+            }
+
             field.SetTypeAndFlags(type, colFlags);
 
             return field;

=== modified file 'MySql.Data/Tests/Source/DataTypeTests.cs'
--- a/MySql.Data/Tests/Source/DataTypeTests.cs	2009-11-10 22:37:01 +0000
+++ b/MySql.Data/Tests/Source/DataTypeTests.cs	2009-12-09 15:05:23 +0000
@@ -23,6 +23,7 @@
 using MySql.Data.Types;
 using System.Data;
 using NUnit.Framework;
+using System.Data.Common;
 
 namespace MySql.Data.MySqlClient.Tests
 {
@@ -1035,5 +1036,27 @@
                 }
             }
         }
+
+        /// <summary>
+        /// Bug #48171	MySqlDataReader.GetSchemaTable() returns 0 in "NumericPrecision" for newdecimal
+        /// </summary>
+        [Test]
+        public void DecimalPrecision()
+        {
+            execSQL("DROP TABLE IF EXISTS test");
+            execSQL("CREATE TABLE test(a decimal(35,2), b decimal(36,2), c decimal(36,2) unsigned)");
+
+            MySqlCommand cmd = new MySqlCommand("SELECT * FROM test", conn);
+            using (MySqlDataReader reader = cmd.ExecuteReader())
+            {
+                DataTable dt = reader.GetSchemaTable();
+                DataRow columnDefinition = dt.Rows[0];
+                Assert.AreEqual(35, columnDefinition[SchemaTableColumn.NumericPrecision]);
+                columnDefinition = dt.Rows[1];
+                Assert.AreEqual(36, columnDefinition[SchemaTableColumn.NumericPrecision]);
+                columnDefinition = dt.Rows[2];
+                Assert.AreEqual(36, columnDefinition[SchemaTableColumn.NumericPrecision]);
+            }
+        }
     }
 }


Attachment: [text/bzr-bundle] bzr/reggie.burnett@sun.com-20091209150523-n5owamys5idu4xv4.bundle
Thread
bzr commit into connector-net-6.1 branch (reggie.burnett:795) Bug#48171Reggie Burnett9 Dec