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/Source | vvaintroub | 20 Jul |