Modified:
branches/5.0/CHANGES
branches/5.0/Driver/Source/Field.cs
branches/5.0/TestSuite/DataTypeTests.cs
Log:
Bug #25605 BINARY and VARBINARY is returned as a string
Removed code that returned MySqlString for VarChar and Char and let it fall on through so
that the binary flag is checked.
Modified: branches/5.0/CHANGES
===================================================================
--- branches/5.0/CHANGES 2007-02-20 19:40:41 UTC (rev 595)
+++ branches/5.0/CHANGES 2007-02-20 20:32:16 UTC (rev 596)
@@ -16,6 +16,7 @@
Bug #25907 DataType Column of DataTypes collection does'nt contain the correct CLR
Datatype
Bug #25950 DataSourceInformation collection contains incorrect values
Bug #26430 Will not install under Vista
+ Bug #25605 BINARY and VARBINARY is returned as a string
Other changes
-------------
Modified: branches/5.0/Driver/Source/Field.cs
===================================================================
--- branches/5.0/Driver/Source/Field.cs 2007-02-20 19:40:41 UTC (rev 595)
+++ branches/5.0/Driver/Source/Field.cs 2007-02-20 20:32:16 UTC (rev 596)
@@ -200,33 +200,44 @@
{
case MySqlDbType.Byte:
return new MySqlByte();
- case MySqlDbType.UByte: return new MySqlUByte();
- case MySqlDbType.Int16: return new MySqlInt16();
- case MySqlDbType.UInt16: return new MySqlUInt16();
+ case MySqlDbType.UByte:
+ return new MySqlUByte();
+ case MySqlDbType.Int16:
+ return new MySqlInt16();
+ case MySqlDbType.UInt16:
+ return new MySqlUInt16();
case MySqlDbType.Int24:
case MySqlDbType.Int32:
- case MySqlDbType.Year: return new MySqlInt32(type, true);
+ case MySqlDbType.Year:
+ return new MySqlInt32(type, true);
case MySqlDbType.UInt24:
- case MySqlDbType.UInt32: return new MySqlUInt32(type, true);
- case MySqlDbType.Bit: return new MySqlBit();
+ case MySqlDbType.UInt32:
+ return new MySqlUInt32(type, true);
+ case MySqlDbType.Bit:
+ return new MySqlBit();
case MySqlDbType.Int64:
return new MySqlInt64();
- case MySqlDbType.UInt64: return new MySqlUInt64();
- case MySqlDbType.Time: return new MySqlTimeSpan();
+ case MySqlDbType.UInt64:
+ return new MySqlUInt64();
+ case MySqlDbType.Time:
+ return new MySqlTimeSpan();
case MySqlDbType.Date:
case MySqlDbType.Datetime:
case MySqlDbType.Newdate:
- case MySqlDbType.Timestamp: return new MySqlDateTime(type, true);
+ case MySqlDbType.Timestamp:
+ return new MySqlDateTime(type, true);
case MySqlDbType.Decimal:
case MySqlDbType.NewDecimal:
return new MySqlDecimal();
- case MySqlDbType.Float: return new MySqlSingle();
- case MySqlDbType.Double: return new MySqlDouble();
+ case MySqlDbType.Float:
+ return new MySqlSingle();
+ case MySqlDbType.Double:
+ return new MySqlDouble();
case MySqlDbType.Set:
case MySqlDbType.Enum:
case MySqlDbType.String:
case MySqlDbType.VarString:
- case MySqlDbType.VarChar: return new MySqlString(type, true);
+ case MySqlDbType.VarChar:
case MySqlDbType.Blob:
case MySqlDbType.MediumBlob:
case MySqlDbType.LongBlob:
Modified: branches/5.0/TestSuite/DataTypeTests.cs
===================================================================
--- branches/5.0/TestSuite/DataTypeTests.cs 2007-02-20 19:40:41 UTC (rev 595)
+++ branches/5.0/TestSuite/DataTypeTests.cs 2007-02-20 20:32:16 UTC (rev 596)
@@ -733,5 +733,26 @@
Assert.AreEqual(-24, ts.Minutes);
Assert.AreEqual(0, ts.Seconds);
}
+
+ /// <summary>
+ /// Bug #25605 BINARY and VARBINARY is returned as a string
+ /// </summary>
+ [Test]
+ public void BinaryAndVarBinary()
+ {
+ MySqlCommand cmd = new MySqlCommand("SELECT BINARY 'something' AS
BinaryData", conn);
+ using (MySqlDataReader reader = cmd.ExecuteReader())
+ {
+ reader.Read();
+ byte[] buffer = new byte[2];
+ long read = reader.GetBytes(0, 0, buffer, 0, 2);
+ Assert.AreEqual('s', buffer[0]);
+ Assert.AreEqual('o', buffer[1]);
+ Assert.AreEqual(2, read);
+
+ string s = reader.GetString(0);
+ Assert.AreEqual("something", s);
+ }
+ }
}
}
| Thread |
|---|
| • Connector/NET commit: r596 - in branches/5.0: . Driver/Source TestSuite | rburnett | 20 Feb |