List:Commits« Previous MessageNext Message »
From:rburnett Date:February 28 2006 11:30pm
Subject:Connector/NET commit: r204 - in branches/1.0: . TestSuite mysqlclient mysqlclient/Types
View as plain text  
Modified:
   branches/1.0/CHANGES
   branches/1.0/TestSuite/DataTypeTests.cs
   branches/1.0/mysqlclient/Field.cs
   branches/1.0/mysqlclient/Types/MySqlValue.cs
   branches/1.0/mysqlclient/datareader.cs
   branches/1.0/mysqlclient/parameter.cs
Log:
Fix Bug #17375 CommandBuilder ignores Unsigned flag at Parameter creation 

DataReader: changed to using field.ProviderType()
Field.cs: implemented ProviderType() to convert to unsigned types if needed
Parameter.cs: removed unsigned property and started using new MySqlDbTypes
MySqlValue.cs: Started using the new unsigned types in GetMySqlValue
DataTypeTests.cs: Implemented test case


Modified: branches/1.0/CHANGES
===================================================================
--- branches/1.0/CHANGES	2006-02-23 20:11:23 UTC (rev 203)
+++ branches/1.0/CHANGES	2006-02-28 22:30:48 UTC (rev 204)
@@ -1,3 +1,6 @@
+    Bug #16659 Can't use double quotation marks(") as password access server by
Connector/NET [fixed]
+    Bug #17375 CommandBuilder ignores Unsigned flag at Parameter creation [fixed]
+
 x-xx-05 - Version 1.0.7
 
     Bugs fixed or addressed

Modified: branches/1.0/TestSuite/DataTypeTests.cs
===================================================================
--- branches/1.0/TestSuite/DataTypeTests.cs	2006-02-23 20:11:23 UTC (rev 203)
+++ branches/1.0/TestSuite/DataTypeTests.cs	2006-02-28 22:30:48 UTC (rev 204)
@@ -564,5 +564,34 @@
 				if (reader != null) reader.Close();
 			}
 		}
+
+		/// <summary>
+		/// Bug #17375 CommandBuilder ignores Unsigned flag at Parameter creation 
+		/// </summary>
+		[Test]
+		public void UnsignedTypes()
+		{
+			execSQL("DROP TABLE IF EXISTS Test");
+			execSQL("CREATE TABLE Test (b TINYINT UNSIGNED PRIMARY KEY)");
+			
+			MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM Test", conn);
+			MySqlCommandBuilder cb = new MySqlCommandBuilder(da);
+
+			DataTable dt = new DataTable();
+			da.Fill(dt);
+
+			DataView dv = new DataView(dt);
+			DataRowView row;
+
+			row = dv.AddNew();
+			row["b"] = 120;
+			row.EndEdit();
+			da.Update(dv.Table);
+
+			row = dv.AddNew();
+			row["b"] = 135;
+			row.EndEdit();
+			da.Update(dv.Table);
+		}
 	}
 }

Modified: branches/1.0/mysqlclient/Field.cs
===================================================================
--- branches/1.0/mysqlclient/Field.cs	2006-02-23 20:11:23 UTC (rev 203)
+++ branches/1.0/mysqlclient/Field.cs	2006-02-28 22:30:48 UTC (rev 204)
@@ -151,9 +151,25 @@
 
 #endregion
 
+		public MySqlDbType ProviderType()
+		{
+			if (IsUnsigned) 
+			{
+				switch (Type) 
+				{
+					case MySqlDbType.Byte: return MySqlDbType.UByte;
+					case MySqlDbType.Int16: return MySqlDbType.UInt16;
+					case MySqlDbType.Int24: return MySqlDbType.UInt24;
+					case MySqlDbType.Int32: return MySqlDbType.UInt32;
+					case MySqlDbType.Int64: return MySqlDbType.UInt64;
+				}
+			}
+			return Type;
+		}
+
 		public MySqlValue GetValueObject() 
 		{
-			MySqlValue valueObject = MySqlValue.GetMySqlValue( mySqlDbType, IsUnsigned, IsBinary
);
+			MySqlValue valueObject = MySqlValue.GetMySqlValue(ProviderType(), IsBinary);
 			return valueObject;
 		}
 

Modified: branches/1.0/mysqlclient/Types/MySqlValue.cs
===================================================================
--- branches/1.0/mysqlclient/Types/MySqlValue.cs	2006-02-23 20:11:23 UTC (rev 203)
+++ branches/1.0/mysqlclient/Types/MySqlValue.cs	2006-02-28 22:30:48 UTC (rev 204)
@@ -109,30 +109,36 @@
 			return ValueAsObject.ToString();
 		}
 
-		internal static MySqlValue GetMySqlValue( MySqlDbType type, bool unsigned, bool binary
)
+		internal static MySqlValue GetMySqlValue( MySqlDbType type, bool binary )
 		{
 			switch (type) 
 			{
+				case MySqlDbType.UByte:
+					return new MySqlUByte();
 				case MySqlDbType.Byte: 
-					if (unsigned) return new MySqlUByte();
 					return new MySqlByte();
 
+				case MySqlDbType.UInt16:
+					return new MySqlUInt16();
 				case MySqlDbType.Int16: 
-					if (unsigned) return new MySqlUInt16();
 					return new MySqlInt16();
 
+				case MySqlDbType.UInt24:
+				case MySqlDbType.UInt32:
+					return new MySqlUInt32(type);
+
 				case MySqlDbType.Int24:
 				case MySqlDbType.Int32: 
 				case MySqlDbType.Year:
-					if (unsigned) return new MySqlUInt32(type);
 					return new MySqlInt32(type);
 
 				case MySqlDbType.Bit:
 					return new MySqlBit();
 
+				case MySqlDbType.UInt64:
+					return new MySqlUInt64();
+
 				case MySqlDbType.Int64: 
-					if (unsigned)
-						return new MySqlUInt64();
 					return new MySqlInt64();
 
 				case MySqlDbType.Time:

Modified: branches/1.0/mysqlclient/datareader.cs
===================================================================
--- branches/1.0/mysqlclient/datareader.cs	2006-02-23 20:11:23 UTC (rev 203)
+++ branches/1.0/mysqlclient/datareader.cs	2006-02-28 22:30:48 UTC (rev 204)
@@ -504,7 +504,7 @@
 				if (pscale != -1)
 					r["NumericScale"] = (short)pscale;
 				r["DataType"] = GetFieldType(i);
-				r["ProviderType"] = (int)f.Type;
+				r["ProviderType"] = (int)f.ProviderType();
 				r["IsLong"] = f.IsBlob && f.ColumnLength > 255;
 				r["AllowDBNull"] = f.AllowsNull;
 				r["IsReadOnly"] = false;

Modified: branches/1.0/mysqlclient/parameter.cs
===================================================================
--- branches/1.0/mysqlclient/parameter.cs	2006-02-23 20:11:23 UTC (rev 203)
+++ branches/1.0/mysqlclient/parameter.cs	2006-02-28 22:30:48 UTC (rev 204)
@@ -160,19 +160,6 @@
 			}
 		}
 
-		/// <summary></summary>
-		public bool IsUnsigned 
-		{
-			get { return isUnsigned; }
-			set 
-			{ 
-				if (isUnsigned != value) 
-					valueObject = null; 
-				isUnsigned = value; 
-				SetMySqlDbType( mySqlDbType ); 
-			}
-		}
-
 		/// <summary>
 		/// Gets or sets a value indicating whether the parameter is input-only, output-only,
bidirectional, or a stored procedure return value parameter.
 		/// As of MySql version 4.1 and earlier, input-only is the only valid choice.
@@ -303,7 +290,7 @@
 		{
 			if (valueObject == null)
 			{
-				valueObject = MySqlValue.GetMySqlValue( mySqlDbType, IsUnsigned, true );
+				valueObject = MySqlValue.GetMySqlValue( mySqlDbType, true );
 
 				MySqlDecimal dec = (valueObject as MySqlDecimal);
 				if (dec != null) 
@@ -341,11 +328,16 @@
 			switch (mySqlDbType) 
 			{
 				case MySqlDbType.Decimal: dbType = DbType.Decimal; break;
-				case MySqlDbType.Byte: dbType = isUnsigned ? DbType.Byte : DbType.SByte; break;
-				case MySqlDbType.Int16: dbType = isUnsigned ? DbType.UInt16 : DbType.Int16; break;
-				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.UByte: dbType = DbType.Byte; break;
+				case MySqlDbType.Byte: dbType = DbType.SByte; break;
+				case MySqlDbType.UInt16: dbType = DbType.UInt16; break;
+				case MySqlDbType.Int16: dbType = DbType.Int16; break;
+				case MySqlDbType.UInt24:
+				case MySqlDbType.UInt32: dbType = DbType.UInt32; break;
+				case MySqlDbType.Int24: 
+				case MySqlDbType.Int32: dbType = DbType.Int32; break;
+				case MySqlDbType.UInt64: dbType = DbType.UInt64; break;
+				case MySqlDbType.Int64: dbType = DbType.Int64; break;
 				case MySqlDbType.Bit : dbType = DbType.UInt64; break;
 				case MySqlDbType.Float: dbType = DbType.Single; break;
 				case MySqlDbType.Double: dbType = DbType.Double; break;
@@ -399,24 +391,12 @@
 				case DbType.Single: mySqlDbType = MySqlDbType.Float; break;
 				case DbType.Double: mySqlDbType = MySqlDbType.Double; break;
 
-				case DbType.Int16: 
-				case DbType.UInt16:
-					mySqlDbType = MySqlDbType.Int16; 
-					isUnsigned = dbType == DbType.UInt16;
-					break;
-
-				case DbType.Int32: 
-				case DbType.UInt32:
-					mySqlDbType = MySqlDbType.Int32; 
-					isUnsigned = dbType == DbType.UInt32;
-					break;
-
-				case DbType.Int64: 
-				case DbType.UInt64:
-					mySqlDbType = MySqlDbType.Int64; 
-					isUnsigned = dbType == DbType.UInt64;
-					break;
-
+				case DbType.UInt16: mySqlDbType = MySqlDbType.UInt16; break;
+				case DbType.Int16: 	mySqlDbType = MySqlDbType.Int16; break;
+				case DbType.Int32: mySqlDbType = MySqlDbType.Int32; break;
+				case DbType.UInt32: mySqlDbType = MySqlDbType.UInt32; break;
+				case DbType.UInt64: mySqlDbType = MySqlDbType.UInt64; break;
+				case DbType.Int64: mySqlDbType = MySqlDbType.Int64; break;
 				case DbType.Decimal:
 				case DbType.Currency: mySqlDbType = MySqlDbType.Decimal; break;
 

Thread
Connector/NET commit: r204 - in branches/1.0: . TestSuite mysqlclient mysqlclient/Typesrburnett28 Feb