From: Date: February 20 2007 9:32pm Subject: Connector/NET commit: r596 - in branches/5.0: . Driver/Source TestSuite List-Archive: http://lists.mysql.com/commits/20222 X-Bug: 25605 Message-Id: <200702202032.l1KKWHJd017433@bk-internal.mysql.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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); } + + /// + /// Bug #25605 BINARY and VARBINARY is returned as a string + /// + [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); + } + } } }