List:Commits« Previous MessageNext Message »
From:vvaintroub Date:July 20 2009 2:33pm
Subject:Connector/NET commit: r1704 - in branches/5.1: . Driver/Source TestSuite/Source
View as plain text  
Modified:
   branches/5.1/CHANGES
   branches/5.1/Driver/Source/Field.cs
   branches/5.1/TestSuite/Source/DataTypeTests.cs
Log:
fixed situation where TreatTinyAsBoolean had no effect with default database character set to UTF8.
(bug#46205)

Modified: branches/5.1/CHANGES
===================================================================
--- branches/5.1/CHANGES	2009-07-13 21:10:56 UTC (rev 1703)
+++ branches/5.1/CHANGES	2009-07-20 14:33:33 UTC (rev 1704)
@@ -1,3 +1,5 @@
+  - fixed situation where TreatTinyAsBoolean had no effect with default database character set to UTF8
+    (bug#46205)
 Version 5.1.8
   - Defaulting max allowed packet to 1024 to account for the possible case where the
     value doesn't come in as a server variable   

Modified: branches/5.1/Driver/Source/Field.cs
===================================================================
--- branches/5.1/Driver/Source/Field.cs	2009-07-13 21:10:56 UTC (rev 1703)
+++ branches/5.1/Driver/Source/Field.cs	2009-07-20 14:33:33 UTC (rev 1704)
@@ -280,7 +280,7 @@
         public IMySqlValue GetValueObject()
         {
             IMySqlValue v = GetIMySqlValue(Type);
-            if (v is MySqlByte && ColumnLength == 1 && MaxLength == 1 && connection.Settings.TreatTinyAsBoolean)
+            if (v is MySqlByte && ColumnLength == 1 && connection.Settings.TreatTinyAsBoolean)
             {
                 MySqlByte b = (MySqlByte)v;
                 b.TreatAsBoolean = true;

Modified: branches/5.1/TestSuite/Source/DataTypeTests.cs
===================================================================
--- branches/5.1/TestSuite/Source/DataTypeTests.cs	2009-07-13 21:10:56 UTC (rev 1703)
+++ branches/5.1/TestSuite/Source/DataTypeTests.cs	2009-07-20 14:33:33 UTC (rev 1704)
@@ -92,6 +92,35 @@
 			}
 		}
 
+        [Test]
+        // Bug#46205 - tinyint as boolean does not work for utf8 database character set.
+        // mysqld needs to be started with --default-character-set=utf8 for the bug to occur.
+        public void TreatTinyAsBool()
+        {
+            if (version < new Version(4, 1)) return;
+            execSQL("CREATE TABLE Test2(i TINYINT(1))");
+            execSQL("INSERT INTO Test2 VALUES(1)");
+            execSQL("INSERT INTO Test2 VALUES(0)");
+            execSQL("INSERT INTO Test2 VALUES(2)");
+            MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder(conn.ConnectionString);
+            Assert.IsTrue(builder.TreatTinyAsBoolean);
+
+            MySqlCommand cmd = new MySqlCommand("SELECT * from Test2", conn);
+            using (MySqlDataReader reader = cmd.ExecuteReader())
+            {
+                bool b;
+                Assert.IsTrue(reader.Read());
+                b = (bool)reader.GetValue(0);
+                Assert.IsTrue(b);
+                Assert.IsTrue(reader.Read());
+                b = (bool)reader.GetValue(0);
+                Assert.IsFalse(b);
+                Assert.IsTrue(reader.Read());
+                b = (bool)reader.GetValue(0);
+                Assert.IsTrue(b);
+            }
+        }
+
 		[Test]
 		public void TestFloat() 
 		{

Thread
Connector/NET commit: r1704 - in branches/5.1: . Driver/Source TestSuite/Sourcevvaintroub20 Jul