1 message in com.mysql.lists.dotnetConnector/NET commit: r118 - in branc...
FromSent OnAttachments
rbur...@mysql.com10 Aug 2005 08:31 
Subject:Connector/NET commit: r118 - in branches/1.0: . TestSuite mysqlclient mysqlclient/Types
From:rbur...@mysql.com (rbur@mysql.com)
Date:08/10/2005 08:31:24 AM
List:com.mysql.lists.dotnet

Added: branches/1.0/mysqlclient/Types/MySqlBit.cs Modified: branches/1.0/CHANGES branches/1.0/MySQLClient.sln branches/1.0/MySql.Data.csproj branches/1.0/TestSuite/DataTypeTests.cs branches/1.0/TestSuite/MySql.Data.Tests.csproj branches/1.0/mysqlclient/MysqlDefs.cs branches/1.0/mysqlclient/Types/MySqlValue.cs branches/1.0/mysqlclient/parameter.cs Log: Implemented new BIT datatype

Modified: branches/1.0/CHANGES =================================================================== --- branches/1.0/CHANGES 2005-08-08 19:48:04 UTC (rev 117) +++ branches/1.0/CHANGES 2005-08-10 15:31:42 UTC (rev 118) @@ -43,6 +43,7 @@ Now supports the new decimal type introduced in 5.0.3 Fixed bug where adding parameter objects that had been independently
constructed did not work right. Changed internal class MySqlSingle to MySqlFloat + Implemented new BIT data type

1-20-05 - Version 1.0.4

Modified: branches/1.0/MySQLClient.sln =================================================================== --- branches/1.0/MySQLClient.sln 2005-08-08 19:48:04 UTC (rev 117) +++ branches/1.0/MySQLClient.sln 2005-08-10 15:31:42 UTC (rev 118) @@ -1,71 +1,26 @@ Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data.Tests",
"TestSuite\MySql.Data.Tests.csproj", "{92CB29DF-61DE-4277-8DC6-D3587C7311EE}" - ProjectSection(ProjectDependencies) = postProject - {5EAEFBC4-8389-4120-BAB3-9B27174F6F6F} =
{5EAEFBC4-8389-4120-BAB3-9B27174F6F6F} - EndProjectSection -EndProject -Project("{20D4826A-C6FA-45DB-90F4-C717570B9F32}") = "MySqlCeClient",
"MySqlCeClient\MySqlCeClient.csdproj", "{C20B9BA2-7F07-4E9F-B4D2-449A91F9A112}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection - ProjectSection(ProjectDependencies) = postProject - EndProjectSection - ProjectSection(ProjectDependencies) = postProject - EndProjectSection - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data",
"MySql.Data.csproj", "{5EAEFBC4-8389-4120-BAB3-9B27174F6F6F}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyTasks",
"NantTasks\MyTasks.csproj", "{4B16FCC5-327F-4952-8AFB-32E9FA2AD752}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data.Tests",
"TestSuite\MySql.Data.Tests.csproj", "{92CB29DF-61DE-4277-8DC6-D3587C7311EE}" ProjectSection(ProjectDependencies) = postProject EndProjectSection - ProjectSection(ProjectDependencies) = postProject - EndProjectSection - ProjectSection(ProjectDependencies) = postProject - EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsApplication1",
"C:\WindowsApplication1\WindowsApplication1.csproj",
"{A3A7602B-19F2-497F-B9F5-D16EDDB2B483}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApplication1",
"c:\ConsoleApplication1\ConsoleApplication1.csproj",
"{1BDEE9AD-0091-453A-BD51-9ABFA613AD17}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug Release = Release EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution - {92CB29DF-61DE-4277-8DC6-D3587C7311EE}.Debug.ActiveCfg = Debug|.NET - {92CB29DF-61DE-4277-8DC6-D3587C7311EE}.Debug.Build.0 = Debug|.NET - {92CB29DF-61DE-4277-8DC6-D3587C7311EE}.Release.ActiveCfg = Release|.NET - {92CB29DF-61DE-4277-8DC6-D3587C7311EE}.Release.Build.0 = Release|.NET - {C20B9BA2-7F07-4E9F-B4D2-449A91F9A112}.Debug.ActiveCfg = Debug|Pocket PC - {C20B9BA2-7F07-4E9F-B4D2-449A91F9A112}.Debug.Build.0 = Debug|Pocket PC - {C20B9BA2-7F07-4E9F-B4D2-449A91F9A112}.Debug.Deploy.0 = Debug|Pocket PC - {C20B9BA2-7F07-4E9F-B4D2-449A91F9A112}.Release.ActiveCfg = Release|Pocket PC - {C20B9BA2-7F07-4E9F-B4D2-449A91F9A112}.Release.Build.0 = Release|Pocket PC - {C20B9BA2-7F07-4E9F-B4D2-449A91F9A112}.Release.Deploy.0 = Release|Pocket PC {5EAEFBC4-8389-4120-BAB3-9B27174F6F6F}.Debug.ActiveCfg = Debug|.NET {5EAEFBC4-8389-4120-BAB3-9B27174F6F6F}.Debug.Build.0 = Debug|.NET {5EAEFBC4-8389-4120-BAB3-9B27174F6F6F}.Release.ActiveCfg = Release|.NET {5EAEFBC4-8389-4120-BAB3-9B27174F6F6F}.Release.Build.0 = Release|.NET - {4B16FCC5-327F-4952-8AFB-32E9FA2AD752}.Debug.ActiveCfg = Debug|.NET - {4B16FCC5-327F-4952-8AFB-32E9FA2AD752}.Debug.Build.0 = Debug|.NET - {4B16FCC5-327F-4952-8AFB-32E9FA2AD752}.Release.ActiveCfg = Release|.NET - {4B16FCC5-327F-4952-8AFB-32E9FA2AD752}.Release.Build.0 = Release|.NET - {A3A7602B-19F2-497F-B9F5-D16EDDB2B483}.Debug.ActiveCfg = Debug|.NET - {A3A7602B-19F2-497F-B9F5-D16EDDB2B483}.Debug.Build.0 = Debug|.NET - {A3A7602B-19F2-497F-B9F5-D16EDDB2B483}.Release.ActiveCfg = Release|.NET - {A3A7602B-19F2-497F-B9F5-D16EDDB2B483}.Release.Build.0 = Release|.NET - {1BDEE9AD-0091-453A-BD51-9ABFA613AD17}.Debug.ActiveCfg = Debug|.NET - {1BDEE9AD-0091-453A-BD51-9ABFA613AD17}.Debug.Build.0 = Debug|.NET - {1BDEE9AD-0091-453A-BD51-9ABFA613AD17}.Release.ActiveCfg = Release|.NET - {1BDEE9AD-0091-453A-BD51-9ABFA613AD17}.Release.Build.0 = Release|.NET + {92CB29DF-61DE-4277-8DC6-D3587C7311EE}.Debug.ActiveCfg = Debug|.NET + {92CB29DF-61DE-4277-8DC6-D3587C7311EE}.Debug.Build.0 = Debug|.NET + {92CB29DF-61DE-4277-8DC6-D3587C7311EE}.Release.ActiveCfg = Release|.NET + {92CB29DF-61DE-4277-8DC6-D3587C7311EE}.Release.Build.0 = Release|.NET EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection

Modified: branches/1.0/MySql.Data.csproj =================================================================== --- branches/1.0/MySql.Data.csproj 2005-08-08 19:48:04 UTC (rev 117) +++ branches/1.0/MySql.Data.csproj 2005-08-10 15:31:42 UTC (rev 118) @@ -351,6 +351,11 @@ BuildAction = "Compile" /> <File + RelPath = "MySqlClient\Types\MySqlBit.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File RelPath = "MySqlClient\Types\MySqlByte.cs" SubType = "Code" BuildAction = "Compile"

Modified: branches/1.0/TestSuite/DataTypeTests.cs =================================================================== --- branches/1.0/TestSuite/DataTypeTests.cs 2005-08-08 19:48:04 UTC (rev 117) +++ branches/1.0/TestSuite/DataTypeTests.cs 2005-08-10 15:31:42 UTC (rev 118) @@ -525,5 +525,42 @@ if (reader != null) reader.Close(); } } + + [Test] + public void Bit() + { + execSQL("DROP TABLE IF EXISTS test"); + execSQL("CREATE TABLE test (bit1 BIT, bit2 BIT(5), bit3 BIT(10))"); + + MySqlCommand cmd = new MySqlCommand("INSERT INTO test VALUES (?b1, ?b2,
?b3)", conn); + cmd.Parameters.Add(new MySqlParameter("?b1", MySqlDbType.Bit)); + cmd.Parameters.Add(new MySqlParameter("?b2", MySqlDbType.Bit)); + cmd.Parameters.Add(new MySqlParameter("?b3", MySqlDbType.Bit)); + cmd.Prepare(); + cmd.Parameters[0].Value = 1; + cmd.Parameters[1].Value = 15; + cmd.Parameters[2].Value = 500; + cmd.ExecuteNonQuery(); + + MySqlDataReader reader = null; + try + { + cmd.CommandText = "SELECT * FROM test"; + cmd.Prepare(); + reader = cmd.ExecuteReader(); + Assert.IsTrue(reader.Read()); + Assert.AreEqual(1, reader[0]); + Assert.AreEqual(15, reader[1]); + Assert.AreEqual(500, reader[2]); + } + catch (Exception ex) + { + Assert.Fail(ex.Message); + } + finally + { + if (reader != null) reader.Close(); + } + } } }

Modified: branches/1.0/TestSuite/MySql.Data.Tests.csproj =================================================================== --- branches/1.0/TestSuite/MySql.Data.Tests.csproj 2005-08-08 19:48:04 UTC (rev
117) +++ branches/1.0/TestSuite/MySql.Data.Tests.csproj 2005-08-10 15:31:42 UTC (rev
118) @@ -87,7 +87,7 @@ <Reference Name = "nunit.framework" AssemblyName = "nunit.framework" - HintPath = "C:\Program Files\NUnit\bin\nunit.framework.dll" + HintPath = "..\..\..\..\..\Program Files
(x86)\TestDriven.NET 1.1\NUnit\nunit.framework.dll" /> </References> </Build> @@ -144,25 +144,6 @@ BuildAction = "Compile" /> <File - RelPath = "DataSetTest.xsd" - BuildAction = "Content" - Generator = "MSDataSetGenerator" - LastGenOutput = "DataSetTest.cs" - /> - <File - RelPath = "DataSetTest.cs" - DependentUpon = "DataSetTest.xsd" - SubType = "code" - BuildAction = "Compile" - DesignTime = "True" - AutoGen = "True" - /> - <File - RelPath = "DataSetTest.xsx" - DependentUpon = "DataSetTest.xsd" - BuildAction = "None" - /> - <File RelPath = "DataTypeTests.cs" SubType = "Code" BuildAction = "Compile"

Modified: branches/1.0/mysqlclient/MysqlDefs.cs =================================================================== --- branches/1.0/mysqlclient/MysqlDefs.cs 2005-08-08 19:48:04 UTC (rev 117) +++ branches/1.0/mysqlclient/MysqlDefs.cs 2005-08-10 15:31:42 UTC (rev 118) @@ -128,8 +128,11 @@ Year = 13, /// <summary><b>Obsolete</b> Use Datetime or Date type</summary> Newdate = 14, -// /// <summary>A variable-length string containing 0 to 65535
characters</summary> -// VarString = 15, + /// <summary>A variable-length string containing 0 to 65535
characters</summary> + VarString = 15, + /// <summary>Bit-field data type</summary> + Bit = 16, + /// <summary>New Decimal</summary> NewDecimal = 246, /// <summary>An enumeration. A string object that can have only one value,
chosen from the list of values 'value1', 'value2', ..., NULL or the special ""
error value. An ENUM can have a maximum of 65535 distinct values</summary> Enum = 247,

Added: branches/1.0/mysqlclient/Types/MySqlBit.cs =================================================================== --- branches/1.0/mysqlclient/Types/MySqlBit.cs 2005-08-08 19:48:04 UTC (rev 117) +++ branches/1.0/mysqlclient/Types/MySqlBit.cs 2005-08-10 15:31:42 UTC (rev 118) @@ -0,0 +1,86 @@ +// Copyright (C) 2004-2005 MySQL AB +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2 as published
by +// the Free Software Foundation +// +// There are special exceptions to the terms and conditions of the GPL +// as it is applied to this software. View the full text of the +// exception in file EXCEPTIONS in the directory of this software +// distribution. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Data; +using MySql.Data.MySqlClient; + +namespace MySql.Data.Types +{ + /// <summary> + /// Summary description for MySqlUInt64. + /// </summary> + internal class MySqlBit : MySqlValue + { + private ulong mValue; + private byte[] buffer; + + public MySqlBit() : base() + { + buffer = new byte[8]; + dbType = DbType.UInt64; + mySqlDbType = MySqlDbType.Bit; + } + + internal override void Serialize(PacketWriter writer, bool binary, object
value, int length) + { + ulong v = Convert.ToUInt64( value ); + if (binary) + writer.Write( BitConverter.GetBytes( v ) ); + else + writer.WriteStringNoNull( v.ToString() ); + } + + public ulong Value + { + get { return mValue; } + set { mValue = value; objectValue = value; } + } + + internal override Type SystemType + { + get { return typeof(UInt64); } + } + + internal override string GetMySqlTypeName() + { + return "BIT"; + } + + internal override MySqlValue ReadValue( PacketReader reader, long length ) + { + if (length == -1) + { + length = reader.GetFieldLength(); + } + Array.Clear(buffer, 0, buffer.Length); + for (long i=length-1; i >= 0; i--) + buffer[i] = (byte)reader.ReadByte(); + Value = BitConverter.ToUInt64(buffer, 0); + return this; + } + + internal override void Skip(PacketReader reader) + { + long len = reader.GetFieldLength(); + reader.Skip(len); + } + } +}

Modified: branches/1.0/mysqlclient/Types/MySqlValue.cs =================================================================== --- branches/1.0/mysqlclient/Types/MySqlValue.cs 2005-08-08 19:48:04 UTC (rev
117) +++ branches/1.0/mysqlclient/Types/MySqlValue.cs 2005-08-10 15:31:42 UTC (rev
118) @@ -127,8 +127,12 @@ if (unsigned) return new MySqlUInt32(type); return new MySqlInt32(type);

+ case MySqlDbType.Bit: + return new MySqlBit(); + case MySqlDbType.Int64: - if (unsigned) return new MySqlUInt64(); + if (unsigned) + return new MySqlUInt64(); return new MySqlInt64();

case MySqlDbType.Time:

Modified: branches/1.0/mysqlclient/parameter.cs =================================================================== --- branches/1.0/mysqlclient/parameter.cs 2005-08-08 19:48:04 UTC (rev 117) +++ branches/1.0/mysqlclient/parameter.cs 2005-08-10 15:31:42 UTC (rev 118) @@ -338,6 +338,7 @@ case MySqlDbType.Int24: dbType = isUnsigned ? DbType.UInt32 : DbType.Int32;
break; case MySqlDbType.Int32: dbType = isUnsigned ? DbType.UInt32 : DbType.Int32;
break; case MySqlDbType.Int64: dbType = isUnsigned ? DbType.UInt64 : DbType.Int64;
break; + case MySqlDbType.Bit : dbType = DbType.UInt64; break; case MySqlDbType.Float: dbType = DbType.Single; break; case MySqlDbType.Double: dbType = DbType.Double; break;