List:Commits« Previous MessageNext Message »
From:rburnett Date:May 5 2009 5:20pm
Subject:Connector/NET commit: r1597 - in branches/6.0: . MySql.VisualStudio MySql.VisualStudio/DDEX
View as plain text  
Added:
   branches/6.0/MySql.VisualStudio/DDEX/StoredProcedureColumnEnumerator.cs
Modified:
   branches/6.0/CHANGES
   branches/6.0/MySql.VisualStudio/MySql.VisualStudio.csproj
Log:
- fixed regression where using stored procs with datasets (bug #44460)


Modified: branches/6.0/CHANGES
===================================================================
--- branches/6.0/CHANGES	2009-04-30 15:35:00 UTC (rev 1596)
+++ branches/6.0/CHANGES	2009-05-05 15:20:53 UTC (rev 1597)
@@ -1,3 +1,6 @@
+Version 6.0.4
+- fixed regression where using stored procs with datasets (bug #44460)
+
 Version 6.0.3 - 4/22/09
 - fixed broken connection prompting
 - fixed installer that was no longer referencing the right folders for Visual Studio
assemblies [bug #44141]

Added: branches/6.0/MySql.VisualStudio/DDEX/StoredProcedureColumnEnumerator.cs
===================================================================
--- branches/6.0/MySql.VisualStudio/DDEX/StoredProcedureColumnEnumerator.cs	              
         (rev 0)
+++ branches/6.0/MySql.VisualStudio/DDEX/StoredProcedureColumnEnumerator.cs	2009-05-05
15:20:53 UTC (rev 1597)
@@ -0,0 +1,87 @@
+// Copyright (C) 2006-2007 MySQL AB
+//
+// This file is part of MySQL Tools for Visual Studio.
+// MySQL Tools for Visual Studio is free software; you can redistribute it 
+// and/or modify it under the terms of the GNU Lesser General Public 
+// License version 2.1 as published by the Free Software Foundation
+//
+// 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 Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser 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;
+using Microsoft.VisualStudio.Data;
+using System.Data.Common;
+using Microsoft.VisualStudio.Data.AdoDotNet;
+using System.Data;
+
+namespace MySql.Data.VisualStudio
+{
+    class StoredProcedureColumnEnumerator : DataObjectEnumerator
+    {
+        public override DataReader EnumerateObjects(string typeName, object[] items, 
+            object[] restrictions, string sort, object[] parameters)
+        {
+            DbConnection conn = (DbConnection)Connection.GetLockedProviderObject();
+            try
+            {
+                string spName = String.Format("{0}.{1}", restrictions[1],
restrictions[2]);
+
+                if (conn.State != ConnectionState.Open)
+                    conn.Open();
+
+                string[] parmRest = new string[5];
+                parmRest[1] = (string)restrictions[1];
+                parmRest[2] = (string)restrictions[2];
+                parmRest[3] = (string)restrictions[3];
+                DataTable parmTable = conn.GetSchema("Procedure Parameters", parmRest);
+
+                DbCommand cmd = conn.CreateCommand();
+                cmd.CommandText = spName;
+                cmd.CommandType = CommandType.StoredProcedure;
+
+                foreach (DataRow row in parmTable.Rows)
+                {
+                    if (row["ORDINAL_POSITION"].Equals(0)) continue;
+
+                    DbParameter p = cmd.CreateParameter();
+                    p.ParameterName = row["PARAMETER_NAME"].ToString();
+                    p.Value = GetDefaultValue(row["DATA_TYPE"].ToString());
+                    cmd.Parameters.Add(p);
+                }
+
+                using (IDataReader reader =
cmd.ExecuteReader(CommandBehavior.SchemaOnly))
+                {
+                    DataTable dt = reader.GetSchemaTable();
+                    dt.Columns.Add(new DataColumn("RoutineName", typeof(string)));
+                    foreach (DataRow row in dt.Rows)
+                    {
+                        row["RoutineName"] = restrictions[2];
+                        string basedb = row["BaseSchemaName"] as string;
+                        if (String.IsNullOrEmpty(basedb) || row["BaseSchemaName"] ==
DBNull.Value)
+                            row["BaseSchemaName"] = cmd.Connection.Database;
+                    }
+
+                    return new AdoDotNetDataTableReader(dt);
+                }
+            }
+            finally
+            {
+                Connection.UnlockProviderObject();
+            }
+        }
+
+        private object GetDefaultValue(string dataType)
+        {
+            if (dataType == "VARCHAR" || dataType == "VARBINARY" ||
+                dataType == "ENUM" || dataType == "SET" || dataType == "CHAR")
+                return "";
+            return 0;
+        }
+    }
+}

Modified: branches/6.0/MySql.VisualStudio/MySql.VisualStudio.csproj
===================================================================
--- branches/6.0/MySql.VisualStudio/MySql.VisualStudio.csproj	2009-04-30 15:35:00 UTC (rev
1596)
+++ branches/6.0/MySql.VisualStudio/MySql.VisualStudio.csproj	2009-05-05 15:20:53 UTC (rev
1597)
@@ -120,6 +120,7 @@
     <Compile Include="DDEX\MySqlDataViewCommandHandler.cs" />
     <Compile Include="DDEX\MySqlDataViewSupport.cs" />
     <Compile Include="DbObjects\ColumnWithTypeDescriptor.cs" />
+    <Compile Include="DDEX\StoredProcedureColumnEnumerator.cs" />
     <Compile Include="Editors\CustomPropertyDescriptor.cs" />
     <Compile Include="Editors\ForeignKeyDialog.cs">
       <SubType>Form</SubType>

Thread
Connector/NET commit: r1597 - in branches/6.0: . MySql.VisualStudio MySql.VisualStudio/DDEXrburnett5 May 2009