List:Commits« Previous MessageNext Message »
From:rburnett Date:November 2 2006 10:04pm
Subject:Connector/NET commit: r454 - in trunk: TestSuite mysqlclient
View as plain text  
Modified:
   trunk/TestSuite/GetSchemaTests.cs
   trunk/TestSuite/StoredProcedure.cs
   trunk/mysqlclient/MySql.Data.2005.csproj
   trunk/mysqlclient/StoredProcedure.cs
Log:
Small corrections found during testing.

Modified: trunk/TestSuite/GetSchemaTests.cs
===================================================================
--- trunk/TestSuite/GetSchemaTests.cs	2006-11-02 19:43:46 UTC (rev 453)
+++ trunk/TestSuite/GetSchemaTests.cs	2006-11-02 21:04:23 UTC (rev 454)
@@ -192,18 +192,18 @@
             Assert.AreEqual("Procedure Parameters", dt.TableName);
             Assert.AreEqual("test", dt.Rows[0]["ROUTINE_SCHEMA"].ToString().ToLower());
             Assert.AreEqual("sptest", dt.Rows[0]["ROUTINE_NAME"].ToString().ToLower());
-            Assert.AreEqual("id", dt.Rows[0]["PARAMETER_NAME"].ToString().ToLower());
+            Assert.AreEqual("?id", dt.Rows[0]["PARAMETER_NAME"].ToString().ToLower());
             Assert.AreEqual(1, dt.Rows[0]["ORDINAL_POSITION"]);
             Assert.AreEqual("IN", dt.Rows[0]["PARAMETER_MODE"]);
             Assert.AreEqual("NO", dt.Rows[0]["IS_RESULT"]);
 
-            restrictions[4] = "name";
+            restrictions[4] = "?name";
             dt.Clear();
             dt = conn.GetSchema("Procedure Parameters", restrictions);
             Assert.AreEqual(1, dt.Rows.Count);
             Assert.AreEqual("test", dt.Rows[0]["ROUTINE_SCHEMA"].ToString().ToLower());
             Assert.AreEqual("sptest", dt.Rows[0]["ROUTINE_NAME"].ToString().ToLower());
-            Assert.AreEqual("name", dt.Rows[0]["PARAMETER_NAME"].ToString().ToLower());
+            Assert.AreEqual("?name", dt.Rows[0]["PARAMETER_NAME"].ToString().ToLower());
             Assert.AreEqual(2, dt.Rows[0]["ORDINAL_POSITION"]);
             Assert.AreEqual("IN", dt.Rows[0]["PARAMETER_MODE"]);
             Assert.AreEqual("NO", dt.Rows[0]["IS_RESULT"]);
@@ -219,7 +219,7 @@
             Assert.AreEqual("Procedure Parameters", dt.TableName);
             Assert.AreEqual("test", dt.Rows[0]["ROUTINE_SCHEMA"].ToString().ToLower());
             Assert.AreEqual("spfunc", dt.Rows[0]["ROUTINE_NAME"].ToString().ToLower());
-            Assert.AreEqual("id", dt.Rows[0]["PARAMETER_NAME"].ToString().ToLower());
+            Assert.AreEqual("?id", dt.Rows[0]["PARAMETER_NAME"].ToString().ToLower());
             Assert.AreEqual(1, dt.Rows[0]["ORDINAL_POSITION"]);
             Assert.AreEqual("IN", dt.Rows[0]["PARAMETER_MODE"]);
             Assert.AreEqual("NO", dt.Rows[0]["IS_RESULT"]);
@@ -344,28 +344,28 @@
             Assert.AreEqual("spTest", parameters.Rows[3][2]);
 
             Assert.AreEqual("PROCEDURE", parameters.Rows[0][3]);
-            Assert.AreEqual("id", parameters.Rows[0][4]);
+            Assert.AreEqual("?id", parameters.Rows[0][4]);
             Assert.AreEqual(1, parameters.Rows[0][5]);
             Assert.AreEqual("IN", parameters.Rows[0][6]);
             Assert.AreEqual("NO", parameters.Rows[0][7]);
             Assert.AreEqual("INT", parameters.Rows[0][8].ToString().ToUpper());
 
             Assert.AreEqual("PROCEDURE", parameters.Rows[1][3]);
-            Assert.AreEqual("id2", parameters.Rows[1][4]);
+            Assert.AreEqual("?id2", parameters.Rows[1][4]);
             Assert.AreEqual(2, parameters.Rows[1][5]);
             Assert.AreEqual("IN", parameters.Rows[1][6]);
             Assert.AreEqual("NO", parameters.Rows[1][7]);
             Assert.AreEqual("INT", parameters.Rows[1][8].ToString().ToUpper());
 
             Assert.AreEqual("PROCEDURE", parameters.Rows[2][3]);
-            Assert.AreEqual("io1", parameters.Rows[2][4]);
+            Assert.AreEqual("?io1", parameters.Rows[2][4]);
             Assert.AreEqual(3, parameters.Rows[2][5]);
             Assert.AreEqual("INOUT", parameters.Rows[2][6]);
             Assert.AreEqual("NO", parameters.Rows[2][7]);
             Assert.AreEqual("VARCHAR", parameters.Rows[2][8].ToString().ToUpper());
 
             Assert.AreEqual("PROCEDURE", parameters.Rows[3][3]);
-            Assert.AreEqual("out1", parameters.Rows[3][4]);
+            Assert.AreEqual("?out1", parameters.Rows[3][4]);
             Assert.AreEqual(4, parameters.Rows[3][5]);
             Assert.AreEqual("OUT", parameters.Rows[3][6]);
             Assert.AreEqual("NO", parameters.Rows[3][7]);

Modified: trunk/TestSuite/StoredProcedure.cs
===================================================================
--- trunk/TestSuite/StoredProcedure.cs	2006-11-02 19:43:46 UTC (rev 453)
+++ trunk/TestSuite/StoredProcedure.cs	2006-11-02 21:04:23 UTC (rev 454)
@@ -443,7 +443,7 @@
 			MySqlCommand cmd = new MySqlCommand("fnTest", conn);
 			cmd.CommandType = CommandType.StoredProcedure;
 			cmd.Parameters.Add("?valin", 22);
-			cmd.Parameters.Add("retval", MySqlDbType.Int32);
+			cmd.Parameters.Add("?retval", MySqlDbType.Int32);
 			cmd.Parameters[1].Direction = ParameterDirection.ReturnValue;
 			cmd.ExecuteNonQuery();
 			Assert.AreEqual(44, cmd.Parameters[1].Value);
@@ -531,39 +531,39 @@
 			MySqlCommandBuilder.DeriveParameters(cmd);
 
 			Assert.AreEqual(9, cmd.Parameters.Count);
-			Assert.AreEqual("valin", cmd.Parameters[0].ParameterName);
+			Assert.AreEqual("?valin", cmd.Parameters[0].ParameterName);
 			Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[0].Direction);
 			Assert.AreEqual(MySqlDbType.NewDecimal, cmd.Parameters[0].MySqlDbType);
 
-			Assert.AreEqual("val2", cmd.Parameters[1].ParameterName);
+			Assert.AreEqual("?val2", cmd.Parameters[1].ParameterName);
 			Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[1].Direction);
 			Assert.AreEqual(MySqlDbType.Int32, cmd.Parameters[1].MySqlDbType);
 
-			Assert.AreEqual("val3", cmd.Parameters[2].ParameterName);
+			Assert.AreEqual("?val3", cmd.Parameters[2].ParameterName);
 			Assert.AreEqual(ParameterDirection.InputOutput, cmd.Parameters[2].Direction);
 			Assert.AreEqual(MySqlDbType.Float, cmd.Parameters[2].MySqlDbType);
 
-			Assert.AreEqual("val4", cmd.Parameters[3].ParameterName);
+			Assert.AreEqual("?val4", cmd.Parameters[3].ParameterName);
 			Assert.AreEqual(ParameterDirection.Output, cmd.Parameters[3].Direction);
 			Assert.AreEqual(MySqlDbType.Double, cmd.Parameters[3].MySqlDbType);
 
-			Assert.AreEqual("val5", cmd.Parameters[4].ParameterName);
+			Assert.AreEqual("?val5", cmd.Parameters[4].ParameterName);
 			Assert.AreEqual(ParameterDirection.InputOutput, cmd.Parameters[4].Direction);
 			Assert.AreEqual(MySqlDbType.Bit, cmd.Parameters[4].MySqlDbType);
 
-			Assert.AreEqual("val6", cmd.Parameters[5].ParameterName);
+			Assert.AreEqual("?val6", cmd.Parameters[5].ParameterName);
 			Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[5].Direction);
 			Assert.AreEqual(MySqlDbType.VarChar, cmd.Parameters[5].MySqlDbType);
 
-			Assert.AreEqual("val7", cmd.Parameters[6].ParameterName);
+			Assert.AreEqual("?val7", cmd.Parameters[6].ParameterName);
 			Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[6].Direction);
 			Assert.AreEqual(MySqlDbType.Set, cmd.Parameters[6].MySqlDbType);
 
-			Assert.AreEqual("val8", cmd.Parameters[7].ParameterName);
+			Assert.AreEqual("?val8", cmd.Parameters[7].ParameterName);
 			Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[7].Direction);
 			Assert.AreEqual(MySqlDbType.String, cmd.Parameters[7].MySqlDbType);
 
-			Assert.AreEqual("val9", cmd.Parameters[8].ParameterName);
+			Assert.AreEqual("?val9", cmd.Parameters[8].ParameterName);
 			Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[8].Direction);
 			Assert.AreEqual(MySqlDbType.NewDecimal, cmd.Parameters[8].MySqlDbType);
 
@@ -594,7 +594,7 @@
 				MySqlCommandBuilder.DeriveParameters(cmd);
 
 				Assert.AreEqual(2, cmd.Parameters.Count);
-				Assert.AreEqual("v1", cmd.Parameters[0].ParameterName);
+				Assert.AreEqual("?v1", cmd.Parameters[0].ParameterName);
 				Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[0].Direction);
 				Assert.AreEqual(MySqlDbType.Datetime, cmd.Parameters[0].MySqlDbType);
 
@@ -650,7 +650,7 @@
 				execSQL("CREATE PROCEDURE spTest(\"@Param1\" text) BEGIN SELECT \"@Param1\"; END");
 
 				MySqlCommand cmd = new MySqlCommand("spTest", conn);
-				cmd.Parameters.Add("@Param1", "This is my value");
+				cmd.Parameters.Add("?@Param1", "This is my value");
 				cmd.CommandType = CommandType.StoredProcedure;
 
 				string val = (string)cmd.ExecuteScalar();
@@ -728,10 +728,10 @@
 			MySqlCommand cmd = conn.CreateCommand();
 			cmd.CommandType = CommandType.StoredProcedure;
 			cmd.CommandText = "spTest";
-			cmd.Parameters.Add("p1", MySqlDbType.UInt16, 9);
-			cmd.Parameters["p1"].Value = 44;
-			cmd.Parameters.Add("p2", MySqlDbType.VarChar, 2);
-			cmd.Parameters["p2"].Value = "ss";
+			cmd.Parameters.Add("?p1", MySqlDbType.UInt16, 9);
+			cmd.Parameters["?p1"].Value = 44;
+			cmd.Parameters.Add("?p2", MySqlDbType.VarChar, 2);
+			cmd.Parameters["?p2"].Value = "ss";
 			try
 			{
 				cmd.ExecuteNonQuery();
@@ -765,9 +765,9 @@
 			MySqlCommand cmd = conn.CreateCommand();
 			cmd.CommandType = CommandType.StoredProcedure;
 			cmd.CommandText = "spTest";
-			cmd.Parameters.Add("Name", "Item3");
-			cmd.Parameters.Add("Table1Id", MySqlDbType.Int32);
-			cmd.Parameters["Table1Id"].Direction = ParameterDirection.Output;
+			cmd.Parameters.Add("?Name", "Item3");
+			cmd.Parameters.Add("?Table1Id", MySqlDbType.Int32);
+			cmd.Parameters["?Table1Id"].Direction = ParameterDirection.Output;
 
 			DataSet ds = new DataSet();
 			MySqlDataAdapter da = new MySqlDataAdapter(cmd);
@@ -839,14 +839,14 @@
 			MySqlCommand command = new MySqlCommand("spTest", conn);
 			command.CommandType = System.Data.CommandType.StoredProcedure;
 
-			param1 = command.Parameters.Add("p", MySqlDbType.Int32);
+			param1 = command.Parameters.Add("?p", MySqlDbType.Int32);
 			param1.Value = 3;
 
 			MySqlDataReader reader = null;
 			try
 			{
 				command.Prepare();
-				reader = command.ExecuteReader(CommandBehavior.SingleRow);
+				reader = command.ExecuteReader();
 				reader.Read();
 			}
 			catch (Exception ex)
@@ -876,7 +876,7 @@
 			MySqlCommand c = new MySqlCommand("spTest", conn);
 			c.CommandType = CommandType.StoredProcedure;
 			IDataParameter p = c.CreateParameter();
-			p.ParameterName = "pp";
+			p.ParameterName = "?pp";
 			p.Value = 10;
 			c.Parameters.Add(p);
 			c.Prepare();
@@ -934,7 +934,7 @@
 			try
 			{
 				MySqlCommand cmd = new MySqlCommand("spTest", conn);
-				cmd.Parameters.Add("p_paramname", 2);
+				cmd.Parameters.Add("?p_paramname", 2);
 				cmd.CommandType = CommandType.StoredProcedure;
 				cmd.ExecuteScalar();
 			}

Modified: trunk/mysqlclient/MySql.Data.2005.csproj
===================================================================
--- trunk/mysqlclient/MySql.Data.2005.csproj	2006-11-02 19:43:46 UTC (rev 453)
+++ trunk/mysqlclient/MySql.Data.2005.csproj	2006-11-02 21:04:23 UTC (rev 454)
@@ -94,6 +94,7 @@
     <Reference Include="System">
       <Name>System</Name>
     </Reference>
+    <Reference Include="System.Configuration.Install" />
     <Reference Include="System.Data">
       <Name>System.Data</Name>
     </Reference>
@@ -138,6 +139,9 @@
     <Compile Include="Driver.cs" />
     <Compile Include="Exception.cs" />
     <Compile Include="Field.cs" />
+    <Compile Include="Installer.cs">
+      <SubType>Component</SubType>
+    </Compile>
     <Compile Include="ISSchemaProvider.cs" />
     <Compile Include="Logger.cs" />
     <Compile Include="MySqlClientFactory.cs" />

Modified: trunk/mysqlclient/StoredProcedure.cs
===================================================================
--- trunk/mysqlclient/StoredProcedure.cs	2006-11-02 19:43:46 UTC (rev 453)
+++ trunk/mysqlclient/StoredProcedure.cs	2006-11-02 21:04:23 UTC (rev 454)
@@ -31,110 +31,114 @@
 	/// </summary>
 	internal class StoredProcedure : PreparableStatement
 	{
-		private string			hash;
-		private string			outSelect;
-        private DataTable parametersTable;
-        private string processedCommandText;
+		private string hash;
+		private string outSelect;
+		private DataTable parametersTable;
+		private string processedCommandText;
 
-		public StoredProcedure(MySqlConnection connection, string text) : 
-            base(connection, text)
+		public StoredProcedure(MySqlConnection connection, string text)
+			:
+				base(connection, text)
 		{
 			uint code = (uint)DateTime.Now.GetHashCode();
 			hash = code.ToString();
-            this.connection = connection;
+			this.connection = connection;
 		}
 
 		private string GetReturnParameter()
 		{
-            if (parameters != null)
-			    foreach (MySqlParameter p in parameters)
-				    if (p.Direction == ParameterDirection.ReturnValue)
-					    return hash + p.ParameterName;
+			if (parameters != null)
+				foreach (MySqlParameter p in parameters)
+					if (p.Direction == ParameterDirection.ReturnValue)
+					{
+						string pName = p.ParameterName.Substring(1);
+						return hash + pName;
+					}
 			return null;
 		}
 
-        public override string ProcessedCommandText
-        {
-            get
-            {
-                if (processedCommandText == null)
-                    ProcessCommandText();
-                return processedCommandText;
-            }
-        }
+		public override string ProcessedCommandText
+		{
+			get
+			{
+				if (processedCommandText == null)
+					ProcessCommandText();
+				return processedCommandText;
+			}
+		}
 
-        private void ProcessCommandText()
-        {
-            // first retrieve the procedure definition from our
-            // procedure cache
-            string spName = commandText;
-            if (spName.IndexOf(".") == -1)
-                spName = connection.Database + "." + spName;
-            DataSet ds = connection.ProcedureCache.GetProcedure(connection, spName);
+		private void ProcessCommandText()
+		{
+			// first retrieve the procedure definition from our
+			// procedure cache
+			string spName = commandText;
+			if (spName.IndexOf(".") == -1)
+				spName = connection.Database + "." + spName;
+			DataSet ds = connection.ProcedureCache.GetProcedure(connection, spName);
 
-            DataTable procTable = ds.Tables["procedures"];
-            parametersTable = ds.Tables["procedure parameters"];
+			DataTable procTable = ds.Tables["procedures"];
+			parametersTable = ds.Tables["procedure parameters"];
 
-            StringBuilder sqlStr = new StringBuilder();
-            StringBuilder setStr = new StringBuilder();
-            outSelect = String.Empty;
+			StringBuilder sqlStr = new StringBuilder();
+			StringBuilder setStr = new StringBuilder();
+			outSelect = String.Empty;
 
-            string retParm = GetReturnParameter();
-            foreach (DataRow param in parametersTable.Rows)
-            {
-                if (param["ORDINAL_POSITION"].Equals(0)) continue;
-                string mode = (string)param["PARAMETER_MODE"];
-                string pName = (string)param["PARAMETER_NAME"];
-                string datatype = (string)param["DATA_TYPE"];
+			string retParm = GetReturnParameter();
+			foreach (DataRow param in parametersTable.Rows)
+			{
+				if (param["ORDINAL_POSITION"].Equals(0)) continue;
+				string mode = (string)param["PARAMETER_MODE"];
+				string pName = (string)param["PARAMETER_NAME"];
+				string datatype = (string)param["DATA_TYPE"];
 
-                // make sure the parameters given to us have an appropriate
-                // type set if it's not already
-                MySqlParameter p = parameters[pName];
-                if (!p.TypeHasBeenSet)
-                {
-                    bool unsigned = param["FLAGS"].ToString().IndexOf("UNSIGNED") != -1;
-                    bool real_as_float =
procTable.Rows[0]["SQL_MODE"].ToString().IndexOf("REAL_AS_FLOAT") != -1;
-                    p.MySqlDbType = MetaData.NameToType(datatype, unsigned,
real_as_float, connection);
-                }
+				// make sure the parameters given to us have an appropriate
+				// type set if it's not already
+				MySqlParameter p = parameters[pName];
+				if (!p.TypeHasBeenSet)
+				{
+					bool unsigned = param["FLAGS"].ToString().IndexOf("UNSIGNED") != -1;
+					bool real_as_float =
procTable.Rows[0]["SQL_MODE"].ToString().IndexOf("REAL_AS_FLOAT") != -1;
+					p.MySqlDbType = MetaData.NameToType(datatype, unsigned, real_as_float, connection);
+				}
 
-					 string basePName = pName.Substring(1);
-                string vName = string.Format("@{0}{1}", hash, basePName);
+				string basePName = pName.Substring(1);
+				string vName = string.Format("@{0}{1}", hash, basePName);
 
-                if (mode == "OUT" || mode == "INOUT")
-                {
-                    outSelect += vName + ", ";
-                    sqlStr.Append(vName);
-                    sqlStr.Append(", ");
-                }
-                else
-                {
-                    sqlStr.Append(pName);
-                    sqlStr.Append(", ");
-                }
+				if (mode == "OUT" || mode == "INOUT")
+				{
+					outSelect += vName + ", ";
+					sqlStr.Append(vName);
+					sqlStr.Append(", ");
+				}
+				else
+				{
+					sqlStr.Append(pName);
+					sqlStr.Append(", ");
+				}
 
-                if (mode == "INOUT")
-                {
-                    setStr.AppendFormat("SET {0}={1};", vName, pName);
-                    outSelect += vName + ", ";
-                }
-            }
+				if (mode == "INOUT")
+				{
+					setStr.AppendFormat("SET {0}={1};", vName, pName);
+					outSelect += vName + ", ";
+				}
+			}
 
 			string sqlCmd = sqlStr.ToString().TrimEnd(' ', ',');
 			outSelect = outSelect.TrimEnd(' ', ',');
-            if (procTable.Rows[0]["ROUTINE_TYPE"].Equals("PROCEDURE"))
-                sqlCmd = String.Format("call {0} ({1})", commandText, sqlCmd);
-            else
-            {
-                sqlCmd = String.Format("set @{0}={1} ({2})", retParm,
-                    commandText, sqlCmd);
-                outSelect = String.Format("@{0}", retParm);
-            }
+			if (procTable.Rows[0]["ROUTINE_TYPE"].Equals("PROCEDURE"))
+				sqlCmd = String.Format("call {0} ({1})", commandText, sqlCmd);
+			else
+			{
+				sqlCmd = String.Format("set @{0}={1} ({2})", retParm,
+					 commandText, sqlCmd);
+				outSelect = String.Format("@{0}", retParm);
+			}
 
 			if (setStr.Length > 0)
 				sqlCmd = setStr.ToString() + sqlCmd;
-            string oldCmdText = commandText;
+			string oldCmdText = commandText;
 
-            processedCommandText = sqlCmd;
+			processedCommandText = sqlCmd;
 		}
 
 		public override void Close()
@@ -146,23 +150,23 @@
 			MySqlCommand cmd = new MySqlCommand("SELECT " + outSelect, connection);
 			MySqlDataReader reader = cmd.ExecuteReader();
 
-            // since MySQL likes to return user variables as strings
-            // we reset the types of the readers internal value objects
-            // this will allow those value objects to parse the string based
-            // return values
-			for (int i=0; i < reader.FieldCount; i++) 
+			// since MySQL likes to return user variables as strings
+			// we reset the types of the readers internal value objects
+			// this will allow those value objects to parse the string based
+			// return values
+			for (int i = 0; i < reader.FieldCount; i++)
 			{
 				string fieldName = reader.GetName(i);
-				fieldName = marker + fieldName.Remove(0, hash.Length+1);
-                reader.values[i] =
MySqlField.GetIMySqlValue(parameters[fieldName].MySqlDbType, true);
+				fieldName = marker + fieldName.Remove(0, hash.Length + 1);
+				reader.values[i] = MySqlField.GetIMySqlValue(parameters[fieldName].MySqlDbType,
true);
 			}
 
 			reader.Read();
-			for (int i=0; i < reader.FieldCount; i++)
+			for (int i = 0; i < reader.FieldCount; i++)
 			{
 				string fieldName = reader.GetName(i);
-				fieldName = marker + fieldName.Remove(0, hash.Length+1);
-                parameters[fieldName].Value = reader.GetValue(i);
+				fieldName = marker + fieldName.Remove(0, hash.Length + 1);
+				parameters[fieldName].Value = reader.GetValue(i);
 			}
 			reader.Close();
 		}

Thread
Connector/NET commit: r454 - in trunk: TestSuite mysqlclientrburnett2 Nov