List:Commits« Previous MessageNext Message »
From:rburnett Date:May 18 2009 9:35pm
Subject:Connector/NET commit: r1611 - in trunk: . Installer Installer/Binary MySql.Data/Provider MySql.Data/Provider/Properties MySql.Data/Provider/Source MyS...
View as plain text  
Added:
   trunk/Installer/Binary/GlobalInstaller.exe
   trunk/Installer/register.cmd
   trunk/MySql.Data/Provider/Properties/VersionInfo.cs
   trunk/MySql.VisualStudio/DDEX/StoredProcedureColumnEnumerator.cs
   trunk/MySql.Web/Providers/Properties/Resources.Designer.cs
Modified:
   trunk/CHANGES
   trunk/MySQL-VS2005.sln
   trunk/MySQLClient.sln
   trunk/MySql.Data/Provider/MySql.Data.CF.csproj
   trunk/MySql.Data/Provider/MySql.Data.csproj
   trunk/MySql.Data/Provider/Properties/AssemblyInfo.cs
   trunk/MySql.Data/Provider/Properties/Resources.Designer.cs
   trunk/MySql.Data/Provider/Properties/Resources.resx
   trunk/MySql.Data/Provider/Source/CharSetMap.cs
   trunk/MySql.Data/Provider/Source/CompressedStream.cs
   trunk/MySql.Data/Provider/Source/ISSchemaProvider.cs
   trunk/MySql.Data/Provider/Source/NativeDriver.cs
   trunk/MySql.Data/Provider/Source/ProcedureCache.cs
   trunk/MySql.Data/Provider/Source/SchemaProvider.cs
   trunk/MySql.Data/Provider/Source/StoredProcedure.cs
   trunk/MySql.Data/Provider/Source/Types/MySqlString.cs
   trunk/MySql.Data/Tests/MySql.Data.Tests.csproj
   trunk/MySql.Data/Tests/Properties/AssemblyInfo.cs
   trunk/MySql.Data/Tests/Source/GetSchemaTests.cs
   trunk/MySql.Data/Tests/Source/StoredProcedure.cs
   trunk/MySql.VisualStudio/DbObjects/Column.cs
   trunk/MySql.VisualStudio/DbObjects/ForeignKey.cs
   trunk/MySql.VisualStudio/DbObjects/Index.cs
   trunk/MySql.VisualStudio/DbObjects/Table.cs
   trunk/MySql.VisualStudio/DbObjects/TablePartCollection.cs
   trunk/MySql.VisualStudio/Editors/IndexColumnEditorDialog.cs
   trunk/MySql.VisualStudio/Editors/TextBufferEditor.cs
   trunk/MySql.VisualStudio/LanguageService/Tokenizer.cs
   trunk/MySql.VisualStudio/MySql.VisualStudio.csproj
   trunk/MySql.VisualStudio/Nodes/BaseNode.cs
   trunk/MySql.VisualStudio/Nodes/DocumentNode.cs
   trunk/MySql.VisualStudio/Properties/AssemblyInfo.cs
   trunk/MySql.Web/Providers/MySql.Web.csproj
   trunk/MySql.Web/Providers/Properties/AssemblyInfo.cs
   trunk/MySql.Web/Providers/Source/Application.cs
   trunk/MySql.Web/Providers/Source/RoleProvider.cs
   trunk/MySql.Web/Tests/MySql.Web.Tests.csproj
   trunk/MySql.Web/Tests/Properties/AssemblyInfo.cs
Log:
merged

Modified: trunk/CHANGES
===================================================================
--- trunk/CHANGES	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/CHANGES	2009-05-18 21:35:46 UTC (rev 1611)
@@ -1,3 +1,7 @@
+Version 6.0.4
+- fixed regression where using stored procs with datasets (bug #44460)
+- fixed compilation under VS 2005 (bug #44822)
+
 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]
@@ -32,6 +36,21 @@
 - fixed membership provider so that calling GetPassword with an incorrect password will throw the appropriate exception (bug #38939)
 - Implemented initial entity framework support
 
+Version 5.2.7
+- fixed procedure parameters collection so that an exception is thrown if we can't get the 
+  parameters.  Also used this to optimize the procedure cache optimization
+- Added "nvarchar" and "nchar" to possible data types returned by the DataSourceInformation
+  schema collection so procs that use those types with parameters will work (bug #39409)
+- fixed problem where the connector would incorrectly report the length of utf8 columns on servers
+  6.0 and later.  This was caused by 6.0 now using 4 bytes for utf8 columns  
+- fixed bug in role provider that was causing it to not correctly fetch the application
+  id which caused it to incorrectly report roles (bug #44414)
+- fixed Visual Studio 2005 solution so that it builds  
+- fixed potential endless loop in CompressedStream in case where end of stream occurs before 
+  packet is fully read (bug #43678)
+- fixed ReservedWords schema collection to not incorrectly include blank words and to use the
+  right column name
+  
 Version 5.2.6
 - cleaned up how stored procedure execution operated when the user does or does not have execute privs
   on the routine (bug #40139)

Copied: trunk/Installer/Binary/GlobalInstaller.exe (from rev 1610, branches/6.0/Installer/Binary/GlobalInstaller.exe)
===================================================================
(Binary files differ)

Copied: trunk/Installer/register.cmd (from rev 1610, branches/6.0/Installer/register.cmd)
===================================================================
--- trunk/Installer/register.cmd	                        (rev 0)
+++ trunk/Installer/register.cmd	2009-05-18 21:35:46 UTC (rev 1611)
@@ -0,0 +1,8 @@
+echo off
+gacutil /u mysql.data
+gacutil /u mysql.web
+gacutil /i MySql.Data\provider\bin\debug\mysql.data.dll
+installutil mysql.data\provider\bin\debug\mysql.data.dll
+gacutil /i MySql.Web\providers\bin\debug\mysql.web.dll
+installutil mysql.web\providers\bin\debug\mysql.web.dll
+installer\binary\globalinstaller mysql.visualstudio\bin\debug\mysql.visualstudio.dll version=VS2008 debug=true

Modified: trunk/MySQL-VS2005.sln
===================================================================
--- trunk/MySQL-VS2005.sln	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySQL-VS2005.sln	2009-05-18 21:35:46 UTC (rev 1611)
@@ -1,20 +1,18 @@
 
 Microsoft Visual Studio Solution File, Format Version 9.00
 # Visual Studio 2005
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data", "Driver\MySql.Data.csproj", "{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Web", "MySql.Web\Providers\MySql.Web.csproj", "{C28B1166-1380-445D-AEC1-8A18B990DD18}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data.CF", "Driver\MySql.Data.CF.csproj", "{587A47FB-C1CC-459D-93B6-179D95E41EFB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Web.Tests", "MySql.Web\Tests\MySql.Web.Tests.csproj", "{DC704374-EC50-4167-93AA-8D262136502E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data.Tests", "TestSuite\MySql.Data.Tests.csproj", "{F29E5B3D-7F76-4CF9-BF5E-8E3A1377B1E4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data", "MySql.Data\Provider\MySql.Data.csproj", "{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data.Tests.CF", "TestSuite\MySql.Data.Tests.CF.csproj", "{710D9251-17A3-4429-9A91-63F03267F310}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data.CF", "MySql.Data\Provider\MySql.Data.CF.csproj", "{587A47FB-C1CC-459D-93B6-179D95E41EFB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Web", "MySql.Web\Providers\MySql.Web.csproj", "{C28B1166-1380-445D-AEC1-8A18B990DD18}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data.Tests", "MySql.Data\Tests\MySql.Data.Tests.csproj", "{F29E5B3D-7F76-4CF9-BF5E-8E3A1377B1E4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Web.Tests", "MySql.Web\Tests\MySql.Web.Tests.csproj", "{DC704374-EC50-4167-93AA-8D262136502E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.VisualStudio", "MySql.VisualStudio\MySql.VisualStudio.csproj", "{DC3517FF-AC26-4755-9B7A-EF658FF69593}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.VisualStudio", "VisualStudio\MySql.VisualStudio.csproj", "{DC3517FF-AC26-4755-9B7A-EF658FF69593}"
-EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|.NET 2.0 = Debug|.NET 2.0
@@ -27,15 +25,33 @@
 		Release|x86 = Release|x86
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Debug|.NET 2.0.ActiveCfg = Debug|.NET 2.0
-		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Debug|.NET 2.0.Build.0 = Debug|.NET 2.0
+		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Debug|.NET 2.0.ActiveCfg = Debug|Any CPU
+		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Release|.NET 2.0.ActiveCfg = Release|Any CPU
+		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Release|x64.ActiveCfg = Release|Any CPU
+		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Release|x86.ActiveCfg = Release|Any CPU
+		{DC704374-EC50-4167-93AA-8D262136502E}.Debug|.NET 2.0.ActiveCfg = Debug|Any CPU
+		{DC704374-EC50-4167-93AA-8D262136502E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DC704374-EC50-4167-93AA-8D262136502E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DC704374-EC50-4167-93AA-8D262136502E}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{DC704374-EC50-4167-93AA-8D262136502E}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{DC704374-EC50-4167-93AA-8D262136502E}.Release|.NET 2.0.ActiveCfg = Release|Any CPU
+		{DC704374-EC50-4167-93AA-8D262136502E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DC704374-EC50-4167-93AA-8D262136502E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DC704374-EC50-4167-93AA-8D262136502E}.Release|x64.ActiveCfg = Release|Any CPU
+		{DC704374-EC50-4167-93AA-8D262136502E}.Release|x86.ActiveCfg = Release|Any CPU
+		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Debug|.NET 2.0.ActiveCfg = Debug|x86
 		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Debug|x64.ActiveCfg = Debug|x86
 		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Debug|x86.ActiveCfg = Debug|x86
 		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Debug|x86.Build.0 = Debug|x86
-		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Release|.NET 2.0.ActiveCfg = Release|.NET 2.0
-		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Release|.NET 2.0.Build.0 = Release|.NET 2.0
+		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Release|.NET 2.0.ActiveCfg = Release|x86
 		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Release|Any CPU.Build.0 = Release|Any CPU
 		{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}.Release|x64.ActiveCfg = Release|x86
@@ -61,36 +77,6 @@
 		{F29E5B3D-7F76-4CF9-BF5E-8E3A1377B1E4}.Release|Any CPU.Build.0 = Release|Any CPU
 		{F29E5B3D-7F76-4CF9-BF5E-8E3A1377B1E4}.Release|x64.ActiveCfg = Release|Any CPU
 		{F29E5B3D-7F76-4CF9-BF5E-8E3A1377B1E4}.Release|x86.ActiveCfg = Release|Any CPU
-		{710D9251-17A3-4429-9A91-63F03267F310}.Debug|.NET 2.0.ActiveCfg = Debug|Any CPU
-		{710D9251-17A3-4429-9A91-63F03267F310}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{710D9251-17A3-4429-9A91-63F03267F310}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{710D9251-17A3-4429-9A91-63F03267F310}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{710D9251-17A3-4429-9A91-63F03267F310}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{710D9251-17A3-4429-9A91-63F03267F310}.Release|.NET 2.0.ActiveCfg = Release|Any CPU
-		{710D9251-17A3-4429-9A91-63F03267F310}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{710D9251-17A3-4429-9A91-63F03267F310}.Release|Any CPU.Build.0 = Release|Any CPU
-		{710D9251-17A3-4429-9A91-63F03267F310}.Release|x64.ActiveCfg = Release|Any CPU
-		{710D9251-17A3-4429-9A91-63F03267F310}.Release|x86.ActiveCfg = Release|Any CPU
-		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Debug|.NET 2.0.ActiveCfg = Debug|Any CPU
-		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Release|.NET 2.0.ActiveCfg = Release|Any CPU
-		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Release|x64.ActiveCfg = Release|Any CPU
-		{C28B1166-1380-445D-AEC1-8A18B990DD18}.Release|x86.ActiveCfg = Release|Any CPU
-		{DC704374-EC50-4167-93AA-8D262136502E}.Debug|.NET 2.0.ActiveCfg = Debug|Any CPU
-		{DC704374-EC50-4167-93AA-8D262136502E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{DC704374-EC50-4167-93AA-8D262136502E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{DC704374-EC50-4167-93AA-8D262136502E}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{DC704374-EC50-4167-93AA-8D262136502E}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{DC704374-EC50-4167-93AA-8D262136502E}.Release|.NET 2.0.ActiveCfg = Release|Any CPU
-		{DC704374-EC50-4167-93AA-8D262136502E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{DC704374-EC50-4167-93AA-8D262136502E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{DC704374-EC50-4167-93AA-8D262136502E}.Release|x64.ActiveCfg = Release|Any CPU
-		{DC704374-EC50-4167-93AA-8D262136502E}.Release|x86.ActiveCfg = Release|Any CPU
 		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Debug|.NET 2.0.ActiveCfg = Debug|x64
 		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Debug|Any CPU.Build.0 = Debug|Any CPU

Modified: trunk/MySQLClient.sln
===================================================================
--- trunk/MySQLClient.sln	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySQLClient.sln	2009-05-18 21:35:46 UTC (rev 1611)
@@ -13,7 +13,7 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data.CF.Tests", "MySql.Data\Tests\MySql.Data.CF.Tests.csproj", "{710D9251-17A3-4429-9A91-63F03267F310}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.VisualStudio", "MySql.VisualStudio\MySql.VisualStudio.csproj", "{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.VisualStudio", "MySql.VisualStudio\MySql.VisualStudio.csproj", "{DC3517FF-AC26-4755-9B7A-EF658FF69593}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySql.Data.Entity", "MySql.Data.Entity\Provider\MySql.Data.Entity.csproj", "{A8E799B1-D6AC-42BD-907E-B213D7E9B3C5}"
 EndProject
@@ -185,30 +185,30 @@
 		{710D9251-17A3-4429-9A91-63F03267F310}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{710D9251-17A3-4429-9A91-63F03267F310}.Release|x64.ActiveCfg = Release|Any CPU
 		{710D9251-17A3-4429-9A91-63F03267F310}.Release|x86.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Commercial|Any CPU.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Commercial|Any CPU.Build.0 = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Commercial|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Commercial|Mixed Platforms.Build.0 = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Commercial|x64.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Commercial|x86.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.GPL|Any CPU.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.GPL|Any CPU.Build.0 = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.GPL|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.GPL|Mixed Platforms.Build.0 = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.GPL|x64.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.GPL|x86.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Release|x64.ActiveCfg = Release|Any CPU
-		{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}.Release|x86.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Commercial|Any CPU.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Commercial|Any CPU.Build.0 = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Commercial|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Commercial|Mixed Platforms.Build.0 = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Commercial|x64.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Commercial|x86.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.GPL|Any CPU.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.GPL|Any CPU.Build.0 = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.GPL|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.GPL|Mixed Platforms.Build.0 = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.GPL|x64.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.GPL|x86.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Release|x64.ActiveCfg = Release|Any CPU
+		{DC3517FF-AC26-4755-9B7A-EF658FF69593}.Release|x86.ActiveCfg = Release|Any CPU
 		{A8E799B1-D6AC-42BD-907E-B213D7E9B3C5}.Commercial|Any CPU.ActiveCfg = Release|Any CPU
 		{A8E799B1-D6AC-42BD-907E-B213D7E9B3C5}.Commercial|Any CPU.Build.0 = Release|Any CPU
 		{A8E799B1-D6AC-42BD-907E-B213D7E9B3C5}.Commercial|Mixed Platforms.ActiveCfg = Release|Any CPU
@@ -264,6 +264,7 @@
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Commercial|x86.Build.0 = Commercial|x86
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Debug|Any CPU.ActiveCfg = Commercial|x86
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Debug|Mixed Platforms.ActiveCfg = Commercial|x86
+		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Debug|Mixed Platforms.Build.0 = Commercial|x86
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Debug|x64.ActiveCfg = Commercial|x86
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Debug|x86.ActiveCfg = Commercial|x86
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Debug|x86.Build.0 = Commercial|x86
@@ -275,6 +276,7 @@
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.GPL|x86.Build.0 = GPL|x86
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Release|Any CPU.ActiveCfg = Commercial|x86
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Release|Mixed Platforms.ActiveCfg = Commercial|x86
+		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Release|Mixed Platforms.Build.0 = Commercial|x86
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Release|x64.ActiveCfg = Commercial|x86
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Release|x86.ActiveCfg = Commercial|x86
 		{F533FC43-6C05-4A64-8AF6-72B690EB06C3}.Release|x86.Build.0 = Commercial|x86

Modified: trunk/MySql.Data/Provider/MySql.Data.CF.csproj
===================================================================
--- trunk/MySql.Data/Provider/MySql.Data.CF.csproj	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/MySql.Data.CF.csproj	2009-05-18 21:35:46 UTC (rev 1611)
@@ -60,6 +60,7 @@
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Properties\Resources.Designer.cs" />
+    <Compile Include="Properties\VersionInfo.cs" />
     <Compile Include="Source\base\DbConnectionStringBuilder.cs" />
     <Compile Include="Source\base\DbException.cs" />
     <Compile Include="Source\cf\BufferedStream.cs" />

Modified: trunk/MySql.Data/Provider/MySql.Data.csproj
===================================================================
--- trunk/MySql.Data/Provider/MySql.Data.csproj	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/MySql.Data.csproj	2009-05-18 21:35:46 UTC (rev 1611)
@@ -218,6 +218,7 @@
       <DesignTime>True</DesignTime>
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
+    <Compile Include="Properties\VersionInfo.cs" />
     <Compile Include="Source\common\Cache.cs" />
     <Compile Include="Source\common\MySqlTokenizer.cs" />
     <Compile Include="Source\BulkLoader.cs" />

Modified: trunk/MySql.Data/Provider/Properties/AssemblyInfo.cs
===================================================================
--- trunk/MySql.Data/Provider/Properties/AssemblyInfo.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/Properties/AssemblyInfo.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -44,18 +44,7 @@
 #else
 [assembly: AssemblyTitle("MySql.Data.CF.dll")]
 #endif
-//
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
 
-[assembly: AssemblyVersion("6.0.3")]
 //
 // In order to sign your assembly you must specify a key to use. Refer to the 
 // Microsoft .NET Framework documentation for more information on assembly signing.

Modified: trunk/MySql.Data/Provider/Properties/Resources.Designer.cs
===================================================================
--- trunk/MySql.Data/Provider/Properties/Resources.Designer.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/Properties/Resources.Designer.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -727,6 +727,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Unable to retrieve stored routine parameters.  Either grant access to the routine or add the &apos;Use Procedure Bodies=false&apos; option to your connection string..
+        /// </summary>
+        public static string UnableToRetrieveParameters {
+            get {
+                return ResourceManager.GetString("UnableToRetrieveParameters", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Unable to retrieve stored procedure metadata.  Either grant  SELECT privilege to mysql.proc for this user or use &quot;use procedure bodies=false&quot; with  your connection string..
         /// </summary>
         public static string UnableToRetrieveSProcData {

Modified: trunk/MySql.Data/Provider/Properties/Resources.resx
===================================================================
--- trunk/MySql.Data/Provider/Properties/Resources.resx	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/Properties/Resources.resx	2009-05-18 21:35:46 UTC (rev 1611)
@@ -345,6 +345,9 @@
   <data name="ValueNotSupportedForGuid" xml:space="preserve">
     <value>The requested column value could not be treated as or conveted to a Guid.</value>
   </data>
+  <data name="UnableToRetrieveParameters" xml:space="preserve">
+    <value>Unable to retrieve stored routine parameters.  Either grant access to the routine or add the 'Use Procedure Bodies=false' option to your connection string.</value>
+  </data>
   <data name="UnableToEnumerateUDF" xml:space="preserve">    
     <value>An error occured attempting to enumerate the user-defined functions.  Do you have SELECT privileges on the mysql.func table?</value>  
   </data>

Copied: trunk/MySql.Data/Provider/Properties/VersionInfo.cs (from rev 1610, branches/6.0/MySql.Data/Provider/Properties/VersionInfo.cs)
===================================================================
--- trunk/MySql.Data/Provider/Properties/VersionInfo.cs	                        (rev 0)
+++ trunk/MySql.Data/Provider/Properties/VersionInfo.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -0,0 +1,39 @@
+// Copyright (C) 2004-2007 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.Reflection;
+using System.Runtime.InteropServices;
+using System.Runtime.CompilerServices;
+using System.Security;
+
+//
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+
+[assembly: AssemblyVersion("6.1.0")]
+

Modified: trunk/MySql.Data/Provider/Source/CharSetMap.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/CharSetMap.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/Source/CharSetMap.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -51,7 +51,7 @@
             InitializeMapping();
         }
 
-        public static CharacterSet GetChararcterSet(DBVersion version, string CharSetName)
+        public static CharacterSet GetCharacterSet(DBVersion version, string CharSetName)
         {
             CharacterSet cs = (CharacterSet) mapping[CharSetName];
             if (cs == null)
@@ -69,7 +69,7 @@
         {
             try
             {
-                CharacterSet cs = GetChararcterSet(version, CharSetName);
+                CharacterSet cs = GetCharacterSet(version, CharSetName);
                 return Encoding.GetEncoding(cs.name);
             }
             catch (NotSupportedException)

Modified: trunk/MySql.Data/Provider/Source/CompressedStream.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/CompressedStream.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/Source/CompressedStream.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -37,6 +37,7 @@
         // reading fields
         private byte[] localByte;
         private byte[] inBuffer;
+        private byte[] lengthBytes;
         private WeakReference inBufferRef;
         private int inPos;
         private int maxInPos;
@@ -46,6 +47,7 @@
         {
             this.baseStream = baseStream;
             localByte = new byte[1];
+            lengthBytes = new byte[7];
 			cache = new MemoryStream();
             inBufferRef = new WeakReference(inBuffer, false);
         }
@@ -94,8 +96,15 @@
 
         public override int ReadByte()
         {
-            Read(localByte, 0, 1);
-            return localByte[0];
+            try
+            {
+                Read(localByte, 0, 1);
+                return localByte[0];
+            }
+            catch (EndOfStreamException)
+            {
+                return -1;
+            }
         }
 
         public override int Read(byte[] buffer, int offset, int count)
@@ -131,16 +140,12 @@
 
         private void PrepareNextPacket()
         {
-            // read off the uncompressed and compressed lengths
-            byte b1 = (byte) baseStream.ReadByte();
-            byte b2 = (byte) baseStream.ReadByte();
-            byte b3 = (byte) baseStream.ReadByte();
-            int compressedLength = b1 + (b2 << 8) + (b3 << 16);
+            ReadFully(lengthBytes, 7);
+            int compressedLength = lengthBytes[0] + (lengthBytes[1] << 8) + (lengthBytes[2] << 16);
+            // lengthBytes[3] is seq
+            int unCompressedLength = lengthBytes[4] + (lengthBytes[5] << 8) +
+                                     (lengthBytes[6] << 16);
 
-            baseStream.ReadByte(); // seq
-            int unCompressedLength = baseStream.ReadByte() + (baseStream.ReadByte() << 8) +
-                                     (baseStream.ReadByte() << 16);
-
             if (unCompressedLength == 0)
             {
                 unCompressedLength = compressedLength;
@@ -163,11 +168,20 @@
             inBuffer = (byte[])inBufferRef.Target;
             if (inBuffer == null || inBuffer.Length < len)
                 inBuffer = new byte[len];
+            ReadFully(inBuffer, len);
+        }
+        
+        private void ReadFully(byte[] buffer, int len)
+        {
             int numRead = 0;
             int numToRead = len;
             while (numToRead > 0)
             {
-                int read = baseStream.Read(inBuffer, numRead, numToRead);
+                int read = baseStream.Read(buffer, numRead, numToRead);
+                if (read == 0)
+                {
+                    throw new EndOfStreamException();
+                }
                 numRead += read;
                 numToRead -= read;
             }

Modified: trunk/MySql.Data/Provider/Source/ISSchemaProvider.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/ISSchemaProvider.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/Source/ISSchemaProvider.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -303,6 +303,34 @@
             return parms;
         }
 
+        internal DataTable CreateParametersTable()
+        {
+            DataTable dt = new DataTable("Procedure Parameters");
+            dt.Columns.Add("SPECIFIC_CATALOG", typeof(string));
+            dt.Columns.Add("SPECIFIC_SCHEMA", typeof(string));
+            dt.Columns.Add("SPECIFIC_NAME", typeof(string));
+            dt.Columns.Add("ORDINAL_POSITION", typeof(Int32));
+            dt.Columns.Add("PARAMETER_MODE", typeof(string));
+            dt.Columns.Add("PARAMETER_NAME", typeof(string));
+            dt.Columns.Add("DATA_TYPE", typeof(string));
+            dt.Columns.Add("CHARACTER_MAXIMUM_LENGTH", typeof(Int32));
+            dt.Columns.Add("CHARACTER_OCTET_LENGTH", typeof(Int32));
+            dt.Columns.Add("NUMERIC_PRECISION", typeof(byte));
+            dt.Columns.Add("NUMERIC_SCALE", typeof(Int32));
+            dt.Columns.Add("CHARACTER_SET_NAME", typeof(string));
+            dt.Columns.Add("COLLATION_NAME", typeof(string));
+            dt.Columns.Add("DTD_IDENTIFIER", typeof(string));
+            dt.Columns.Add("ROUTINE_TYPE", typeof(string));
+            return dt;
+        }
+
+        internal bool CanRetrieveProcedureParameters()
+        {
+            if (connection.driver.Version.isAtLeast(6, 0, 6) ||
+                connection.Settings.UseProcedureBodies) return true;
+            return false;
+        }
+
         /// <summary>
         /// Return schema information about parameters for procedures and functions
         /// Restrictions supported are:
@@ -313,28 +341,14 @@
         {
             if (connection.driver.Version.isAtLeast(6, 0, 6))
                 return GetParametersFromIS(restrictions, routines);
-            else
+            else if (connection.Settings.UseProcedureBodies)
             {
-                DataTable dt = new DataTable("Procedure Parameters");
-                dt.Columns.Add("SPECIFIC_CATALOG", typeof(string));
-                dt.Columns.Add("SPECIFIC_SCHEMA", typeof(string));
-                dt.Columns.Add("SPECIFIC_NAME", typeof(string));
-                dt.Columns.Add("ORDINAL_POSITION", typeof(Int32));
-                dt.Columns.Add("PARAMETER_MODE", typeof(string));
-                dt.Columns.Add("PARAMETER_NAME", typeof(string));
-                dt.Columns.Add("DATA_TYPE", typeof(string));
-                dt.Columns.Add("CHARACTER_MAXIMUM_LENGTH", typeof(Int32));
-                dt.Columns.Add("CHARACTER_OCTET_LENGTH", typeof(Int32));
-                dt.Columns.Add("NUMERIC_PRECISION", typeof(byte));
-                dt.Columns.Add("NUMERIC_SCALE", typeof(Int32));
-                dt.Columns.Add("CHARACTER_SET_NAME", typeof(string));
-                dt.Columns.Add("COLLATION_NAME", typeof(string));
-                dt.Columns.Add("DTD_IDENTIFIER", typeof(string));
-                dt.Columns.Add("ROUTINE_TYPE", typeof(string));
+                DataTable dt = CreateParametersTable();
                 GetParametersFromShowCreate(dt, restrictions, routines);
-
                 return dt;
             }
+            else
+                throw new InvalidOperationException(Resources.UnableToRetrieveParameters);
         }
 
         protected override DataTable GetSchemaInternal(string collection, string[] restrictions)

Modified: trunk/MySql.Data/Provider/Source/NativeDriver.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/NativeDriver.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/Source/NativeDriver.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -29,6 +29,7 @@
 #if !CF
 using System.Net.Security;
 using System.Security.Authentication;
+using System.Globalization;
 #endif
 
 namespace MySql.Data.MySqlClient
@@ -729,8 +730,14 @@
 
             if (charSets != null && field.CharacterSetIndex != -1)
             {
-                CharacterSet cs = CharSetMap.GetChararcterSet(Version, (string) charSets[field.CharacterSetIndex]);
-                field.MaxLength = cs.byteCount;
+                CharacterSet cs = CharSetMap.GetCharacterSet(Version, (string) charSets[field.CharacterSetIndex]);
+                // starting with 6.0.4 utf8 has a maxlen of 4 instead of 3.  The old
+                // 3 byte utf8 is utf8mb3
+                if (cs.name.ToLower(System.Globalization.CultureInfo.InvariantCulture) == "utf-8" &&
+                    Version.Major >= 6)
+                    field.MaxLength = 4;
+                else
+                    field.MaxLength = cs.byteCount;
                 field.Encoding = CharSetMap.GetEncoding(version, (string) charSets[field.CharacterSetIndex]);
             }
 

Modified: trunk/MySql.Data/Provider/Source/ProcedureCache.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/ProcedureCache.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/Source/ProcedureCache.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -125,16 +125,20 @@
             if (procTable.Rows.Count == 0)
                 throw new MySqlException(String.Format(Resources.InvalidProcName, name, schema));
 
+            DataSet ds = new DataSet();
+            ds.Tables.Add(procTable);
+
             // we don't use GetSchema here because that would cause another
             // query of procedures and we don't need that since we already
             // know the procedure we care about.
             ISSchemaProvider isp = new ISSchemaProvider(connection);
             string[] rest = isp.CleanRestrictions(restrictions);
-            DataTable parametersTable = isp.GetProcedureParameters(rest, procTable);
+            if (isp.CanRetrieveProcedureParameters())
+            {
+                DataTable parametersTable = isp.GetProcedureParameters(rest, procTable);
+                ds.Tables.Add(parametersTable);
+            }
 
-            DataSet ds = new DataSet();
-            ds.Tables.Add(procTable);
-            ds.Tables.Add(parametersTable);
             return ds;
         }
     }

Modified: trunk/MySql.Data/Provider/Source/SchemaProvider.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/SchemaProvider.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/Source/SchemaProvider.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -823,7 +823,7 @@
         private static DataTable GetReservedWords()
         {
             DataTable dt = new DataTable("ReservedWords");
-            dt.Columns.Add(new DataColumn("Reserved Word", typeof (string)));
+            dt.Columns.Add(new DataColumn(DbMetaDataColumnNames.ReservedWord, typeof(string)));
 
             Stream str = Assembly.GetExecutingAssembly().GetManifestResourceStream(
                 "MySql.Data.MySqlClient.Properties.ReservedWords.txt");
@@ -834,6 +834,7 @@
                 string[] keywords = line.Split(new char[] {' '});
                 foreach (string s in keywords)
                 {
+                    if (String.IsNullOrEmpty(s)) continue;
                     DataRow row = dt.NewRow();
                     row[0] = s;
                     dt.Rows.Add(row);

Modified: trunk/MySql.Data/Provider/Source/StoredProcedure.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/StoredProcedure.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/Source/StoredProcedure.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -64,25 +64,17 @@
         private DataSet GetParameters(string procName)
         {
             // if we can use mysql.proc, then do so
-            if (Connection.Settings.UseProcedureBodies)
-                return Connection.ProcedureCache.GetProcedure(Connection, procName);
+            //if (Connection.Settings.UseProcedureBodies)
+            DataSet ds = Connection.ProcedureCache.GetProcedure(Connection, procName);
 
-            // we can't use mysql.proc so we attempt to "make do"
-            DataSet ds = new DataSet();
-            string[] restrictions = new string[4];
-            int dotIndex = procName.IndexOf('.');
-            restrictions[1] = procName.Substring(0, dotIndex++);
-            restrictions[2] = procName.Substring(dotIndex, procName.Length - dotIndex);
-            ds.Tables.Add(Connection.GetSchema("procedures", restrictions));
+            // if we got both proc and parameter data then just return
+            if (ds.Tables.Count == 2) return ds;
 
-            // we use an internal method to create our procedure parameters table.  We pass
-            // in a non-null routines table and this will prevent the code from attempting
-            // a show create. It will process zero routine records but will return an empty
-            // parameters table we can then fill.
-            DataTable zeroRoutines = new DataTable();
+            // we were not able to retrieve parameter data so we have to make do by
+            // adding the parameters from the command object to our table
+            // we use an internal method to create our procedure parameters table.  
             ISSchemaProvider sp = new ISSchemaProvider(Connection);
-            DataTable pTable = sp.GetProcedureParameters(null, zeroRoutines);
-            pTable.TableName = "procedure parameters";
+            DataTable pTable = sp.CreateParametersTable(); 
             ds.Tables.Add(pTable);
 
             // now we run through the parameters that were set and fill in the parameters table

Modified: trunk/MySql.Data/Provider/Source/Types/MySqlString.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/Types/MySqlString.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Provider/Source/Types/MySqlString.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -122,11 +122,12 @@
 
 		internal static void SetDSInfo(DataTable dsTable)
 		{
-			string[] types = new string[] { "CHAR", "VARCHAR", "SET", "ENUM", 
-                "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT" };
-			MySqlDbType[] dbtype = new MySqlDbType[] { MySqlDbType.String, 
-                MySqlDbType.VarChar, MySqlDbType.Set, MySqlDbType.Enum, MySqlDbType.TinyText,
-                MySqlDbType.Text, MySqlDbType.MediumText, MySqlDbType.LongText };
+			string[] types = new string[] { "CHAR", "NCHAR", "VARCHAR", "NVARCHAR", "SET", 
+                "ENUM", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT" };
+            MySqlDbType[] dbtype = new MySqlDbType[] { MySqlDbType.String, MySqlDbType.String,
+                MySqlDbType.VarChar, MySqlDbType.VarChar, MySqlDbType.Set, MySqlDbType.Enum, 
+                MySqlDbType.TinyText, MySqlDbType.Text, MySqlDbType.MediumText, 
+                MySqlDbType.LongText };
 
 			// we use name indexing because this method will only be called
 			// when GetSchema is called for the DataSourceInformation 
@@ -137,8 +138,8 @@
 				row["TypeName"] = types[x];
 				row["ProviderDbType"] = dbtype[x];
 				row["ColumnSize"] = 0;
-                row["CreateFormat"] = x < 2 ? types[x] + "({0})" : types[x];
-				row["CreateParameters"] = x < 2 ? "size" : null;
+                row["CreateFormat"] = x < 4 ? types[x] + "({0})" : types[x];
+				row["CreateParameters"] = x < 4 ? "size" : null;
 				row["DataType"] = "System.String";
 				row["IsAutoincrementable"] = false;
 				row["IsBestMatch"] = true;

Modified: trunk/MySql.Data/Tests/MySql.Data.Tests.csproj
===================================================================
--- trunk/MySql.Data/Tests/MySql.Data.Tests.csproj	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Tests/MySql.Data.Tests.csproj	2009-05-18 21:35:46 UTC (rev 1611)
@@ -36,7 +36,7 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL" />
+    <Reference Include="nunit.framework" />
     <Reference Include="System" />
     <Reference Include="System.configuration" />
     <Reference Include="System.Data" />
@@ -44,6 +44,9 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="..\Provider\Properties\VersionInfo.cs">
+      <Link>Properties\VersionInfo.cs</Link>
+    </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Source\AsyncTests.cs" />
     <Compile Include="Source\BaseTest.cs" />

Modified: trunk/MySql.Data/Tests/Properties/AssemblyInfo.cs
===================================================================
--- trunk/MySql.Data/Tests/Properties/AssemblyInfo.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Tests/Properties/AssemblyInfo.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -36,18 +36,6 @@
 [assembly: AssemblyCulture("")]		
 
 //
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("6.0.3")]
-//
 // In order to sign your assembly you must specify a key to use. Refer to the 
 // Microsoft .NET Framework documentation for more information on assembly signing.
 //

Modified: trunk/MySql.Data/Tests/Source/GetSchemaTests.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/GetSchemaTests.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Tests/Source/GetSchemaTests.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -624,5 +624,13 @@
 			Assert.AreEqual("test1", dt.Rows[0][2]);
 			Assert.AreEqual("`test1`", restrictions[2]);
 		}
+
+        [Test]
+        public void ReservedWords()
+        {
+            DataTable dt = conn.GetSchema("ReservedWords");
+            foreach (DataRow row in dt.Rows)
+                Assert.IsFalse(String.IsNullOrEmpty(row[0] as string));
+        }
 	}
 }

Modified: trunk/MySql.Data/Tests/Source/StoredProcedure.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/StoredProcedure.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Data/Tests/Source/StoredProcedure.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -118,6 +118,7 @@
 
         public StoredProcedure()
         {
+            pooling = false;
             csAdditions = ";procedure cache size=0;logging=true;";
         }
 
@@ -1419,5 +1420,35 @@
                 Assert.AreEqual(1, o);
             }
         }
+
+        [Test]
+        public void ParametersInReverseOrder()
+        {
+            execSQL(@"CREATE PROCEDURE spTest(IN p_1 VARCHAR(5), IN p_2 VARCHAR(5))
+                        BEGIN SELECT p_1 AS P1, p_2 AS P2; END");
+            MySqlCommand cmd = new MySqlCommand("spTest", conn);
+            cmd.CommandType = CommandType.StoredProcedure;
+            cmd.CommandTimeout = 0;
+            cmd.Parameters.AddWithValue("?p_2", ("World"));
+            cmd.Parameters[0].DbType = DbType.AnsiString;
+            cmd.Parameters[0].Direction = ParameterDirection.Input;
+            cmd.Parameters.AddWithValue("?p_1", ("Hello"));
+            cmd.Parameters[1].DbType = DbType.AnsiString;
+            cmd.Parameters[1].Direction = ParameterDirection.Input;
+            MySqlDataAdapter da = new MySqlDataAdapter(cmd);
+            DataTable dt = new DataTable();
+            da.Fill(dt);
+            string s = GetConnectionString(true);
+            if (s.IndexOf("use procedure bodies=false") != -1)
+            {
+                Assert.AreEqual("World", dt.Rows[0]["P1"]);
+                Assert.AreEqual("Hello", dt.Rows[0]["P2"]);
+            }
+            else
+            {
+                Assert.AreEqual("Hello", dt.Rows[0]["P1"]);
+                Assert.AreEqual("World", dt.Rows[0]["P2"]);
+            }
+        }
     }
 }

Copied: trunk/MySql.VisualStudio/DDEX/StoredProcedureColumnEnumerator.cs (from rev 1610, branches/6.0/MySql.VisualStudio/DDEX/StoredProcedureColumnEnumerator.cs)
===================================================================
--- trunk/MySql.VisualStudio/DDEX/StoredProcedureColumnEnumerator.cs	                        (rev 0)
+++ trunk/MySql.VisualStudio/DDEX/StoredProcedureColumnEnumerator.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -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: trunk/MySql.VisualStudio/DbObjects/Column.cs
===================================================================
--- trunk/MySql.VisualStudio/DbObjects/Column.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/DbObjects/Column.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -48,52 +48,98 @@
         #region Properties
 
         [Browsable(false)]
-        internal Table OwningTable { get; set; }
+        internal Table OwningTable;
 
+        private string _columnName;
         [Category("General")]
         [Description("The name of this column")]
-        public string ColumnName { get; set; }
+        public string ColumnName 
+        {
+            get { return _columnName; }
+            set { _columnName = value; }
+        }
 
+        private string _dataType;
         [Category("General")]
         [DisplayName("Data Type")]
         [TypeConverter(typeof(DataTypeConverter))]
         [RefreshProperties(RefreshProperties.All)]
-        public string DataType { get; set; }
+        public string DataType 
+        {
+            get { return _dataType; }
+            set { _dataType = value; }
+        }
 
+        private bool _allowNull;
         [TypeConverter(typeof(YesNoTypeConverter))]
         [Category("Options")]
         [DisplayName("Allow Nulls")]
-        public bool AllowNull { get; set; }
+        public bool AllowNull 
+        {
+            get { return _allowNull; }
+            set { _allowNull = value; }
+        }
 
+        private bool _isUnsigned;
         [TypeConverter(typeof(YesNoTypeConverter))]
         [Category("Options")]
         [DisplayName("Is Unsigned")]
-        public bool IsUnsigned { get; set; }
+        public bool IsUnsigned 
+        {
+            get { return _isUnsigned; }
+            set { _isUnsigned = value; }
+        }
 
+        private bool _isZeroFill;
         [TypeConverter(typeof(YesNoTypeConverter))]
         [Category("Options")]
         [DisplayName("Is Zerofill")]
-        public bool IsZerofill { get; set; }
+        public bool IsZerofill 
+        {
+            get { return _isZeroFill; }
+            set { _isZeroFill = value; }
+        }
 
+        private string _defaultValue;
 		[Category("General")]
 		[DisplayName("Default Value")]
-		public string DefaultValue { get; set; }
+		public string DefaultValue 
+        {
+            get { return _defaultValue; }
+            set { _defaultValue = value; }
+        }
 
+        private bool _autoIncrement;
         [TypeConverter(typeof(YesNoTypeConverter))]
         [Category("Options")]
         [DisplayName("Autoincrement")]
-        public bool AutoIncrement { get; set; }
+        public bool AutoIncrement 
+        {
+            get { return _autoIncrement; }
+            set { _autoIncrement = value; }
+        }
 
         //[TypeConverter(typeof(YesNoTypeConverter))]
         //[Category("Options")]
         //[DisplayName("Primary Key")]
         //[RefreshProperties(RefreshProperties.All)]
         [Browsable(false)]
-        public bool PrimaryKey { get; set; }
+        public bool PrimaryKey;
 
-        public int Precision { get; set; }
-        public int Scale { get; set; }
+        private int _precision;
+        public int Precision 
+        {
+            get { return _precision; }
+            set { _precision = value; }
+        }
 
+        private int _scale;
+        public int Scale 
+        {
+            get { return _scale; }
+            set { _scale = value; }
+        }
+
         [Category("Encoding")]
         [DisplayName("Character Set")]
         [TypeConverter(typeof(CharacterSetTypeConverter))]
@@ -108,12 +154,22 @@
             }
         }
 
+        private string _collation;
         [Category("Encoding")]
         [TypeConverter(typeof(CollationTypeConverter))]
-        public string Collation { get; set; }
+        public string Collation 
+        {
+            get { return _collation; }
+            set { _collation = value; }
+        }
 
+        private string _comment;
         [Category("Miscellaneous")]
-        public string Comment { get; set; }
+        public string Comment 
+        {
+            get { return _comment; }
+            set { _comment = value; }
+        }
 
 		#endregion
 

Modified: trunk/MySql.VisualStudio/DbObjects/ForeignKey.cs
===================================================================
--- trunk/MySql.VisualStudio/DbObjects/ForeignKey.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/DbObjects/ForeignKey.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -25,6 +25,7 @@
     {
         bool isNew;
         ForeignKey oldFk;
+        Table Table;
 
         private ForeignKey(Table t)
         {
@@ -67,19 +68,54 @@
             }
         }
 
-        private Table Table { get; set; }
-        public string Name { get; set; }
-        public string ReferencedTable { get; set; }
-        public MatchOption Match { get; set; }
-        public ReferenceOption UpdateAction { get; set; }
-        public ReferenceOption DeleteAction { get; set; }
-        public List<FKColumnPair> Columns { get; set; }
+        private string _name;
+        public string Name
+        {
+            get { return _name; }
+            set { _name = value; }
+        }
 
+        private string _referencedTable;
+        public string ReferencedTable
+        {
+            get { return _referencedTable; }
+            set { _referencedTable = value; }
+        }
+
+        private MatchOption _match;
+        public MatchOption Match
+        {
+            get { return _match; }
+            set { _match = value; }
+        }
+
+        private ReferenceOption _updateAction;
+        public ReferenceOption UpdateAction
+        {
+            get { return _updateAction; }
+            set { _updateAction = value; }
+        }
+
+        private ReferenceOption _deleteAction;
+        public ReferenceOption DeleteAction
+        {
+            get { return _deleteAction; }
+            set { _deleteAction = value; }
+        }
+
+        private List<FKColumnPair> _columns;
+        public List<FKColumnPair> Columns
+        {
+            get { return _columns; }
+            set { _columns = value; }
+        }
+
+        public bool NameSet;
+
         public override string ToString()
         {
             return Name;
         }
-        public bool NameSet { get; set; }
 
         public void SetName(string name, bool makeUnique)
         {
@@ -207,7 +243,7 @@
 
     class FKColumnPair
     {
-        public string ReferencedColumn { get; set; }
-        public string Column { get; set; }
+        public string ReferencedColumn;
+        public string Column;
     }
 }

Modified: trunk/MySql.VisualStudio/DbObjects/Index.cs
===================================================================
--- trunk/MySql.VisualStudio/DbObjects/Index.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/DbObjects/Index.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -96,14 +96,24 @@
             get { return table; }
         }
 
+        private string _name;
         [Category("Identity")]
         [DisplayName("(Name)")]
         [Description("The name of this index/key")]
-        public string Name { get; set; }
+        public string Name 
+        {
+            get { return _name; }
+            set { _name = value; }
+        }
 
+        private string _comment;
         [Category("Identity")]
         [Description("A description or comment about this index/key")]
-        public string Comment { get; set; }
+        public string Comment 
+        {
+            get { return _comment; }
+            set { _comment = value; }
+        }
 
         [Category("(General)")]
         [Description("The columns of this index/key and their associated sort order")]
@@ -114,43 +124,83 @@
             get { return indexColumns; }
         }
 
+        private IndexType _indexType;
         [Category("(General)")]
         [Description("Specifies if this object is an index or key")]
-        public IndexType Type { get; set; }
+        public IndexType Type 
+        {
+            get { return _indexType; }
+            set { _indexType = value; }
+        }
 
+        private bool _isUnique;
         [Category("(General)")]
         [DisplayName("Is Unique")]
         [Description("Specifies if this index/key uniquely identifies every row")]
         [TypeConverter(typeof(YesNoTypeConverter))]
-        public bool IsUnique { get; set; }
+        public bool IsUnique 
+        {
+            get { return _isUnique; }
+            set { _isUnique = value; }
+        }
 
+        private bool _isPrimary;
         [Browsable(false)]
-        public bool IsPrimary { get; set; }
+        public bool IsPrimary 
+        {
+            get { return _isPrimary; }
+            set { _isPrimary = value; }
+        }
 
+        private IndexUsingType _indexUsing;
         [Category("Storage")]
         [DisplayName("Index Algorithm")]
         [Description("Specifies the algorithm that should be used for storing the index/key")]
-        public IndexUsingType IndexUsing { get; set; }
+        public IndexUsingType IndexUsing 
+        {
+            get { return _indexUsing; }
+            set { _indexUsing = value; }
+        }
 
+        private int _keyBlockSize;
         [Category("Storage")]
         [DisplayName("Key Block Size")]
         [Description("Suggested size in bytes to use for index key blocks.  A zero value means to use the storage engine default.")]
-        public int KeyBlockSize { get; set; }
+        public int KeyBlockSize 
+        {
+            get { return _keyBlockSize; }
+            set { _keyBlockSize = value; }
+        }
 
+        private string _parser;
         [Description("Specifies a parser plugin to be used for this index/key.  This is only valid for full-text indexes or keys.")]
-        public string Parser { get; set; }
+        public string Parser 
+        {
+            get { return _parser; }
+            set { _parser = value; }
+        }
 
+        private bool _fullText;
         [DisplayName("Is Full-text Index/Key")]
         [Description("Specifies if this is a full-text index or key.  This is only supported on MyISAM tables.")]
         [TypeConverter(typeof(YesNoTypeConverter))]
         [RefreshProperties(RefreshProperties.All)]
-        public bool FullText { get; set; }
+        public bool FullText 
+        {
+            get { return _fullText; }
+            set { _fullText = value; }
+        }
 
+        private bool _spatial;
         [DisplayName("Is Spatial Index/Key")]
         [Description("Specifies if this is a spatial index or key.  This is only supported on MyISAM tables.")]
         [TypeConverter(typeof(YesNoTypeConverter))]
         [RefreshProperties(RefreshProperties.All)]
-        public bool Spatial { get; set; }
+        public bool Spatial 
+        {
+            get { return _spatial; }
+            set { _spatial = value; }
+        }
 
         #endregion
 
@@ -382,8 +432,8 @@
 
     class IndexColumn
     {
-        public Index OwningIndex { get; set; }
-        public string ColumnName { get; set; }
-        public IndexSortOrder SortOrder { get; set; }
+        public Index OwningIndex;
+        public string ColumnName;
+        public IndexSortOrder SortOrder;
     }
 }

Modified: trunk/MySql.VisualStudio/DbObjects/Table.cs
===================================================================
--- trunk/MySql.VisualStudio/DbObjects/Table.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/DbObjects/Table.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -38,7 +38,7 @@
     }
 
 	internal class Table : ICustomTypeDescriptor
-	{
+    {
         private TableNode owningNode;
         internal Table OldTable;
         private string characterSet;
@@ -85,14 +85,37 @@
             ForeignKeys.Saved();
         }
 
+        private bool _isNew;
         [Browsable(false)]
-        public bool IsNew { get; private set; }
+        public bool IsNew 
+        {
+            get { return _isNew; }
+            private set { _isNew = value; }
+        }
+
+        private TablePartCollection<Column> _columns;
         [Browsable(false)]
-        public TablePartCollection<Column> Columns { get; private set; }
+        public TablePartCollection<Column> Columns 
+        {
+            get { return _columns; }
+            private set { _columns = value; }
+        }
+
+        private TablePartCollection<Index> _indexes;
         [Browsable(false)]
-        public TablePartCollection<Index> Indexes { get; private set; }
+        public TablePartCollection<Index> Indexes 
+        {
+            get { return _indexes; }
+            private set { _indexes = value; }
+        }
+
+        private TablePartCollection<ForeignKey> _foreignKeys;
         [Browsable(false)]
-        public TablePartCollection<ForeignKey> ForeignKeys { get; private set; }
+        public TablePartCollection<ForeignKey> ForeignKeys 
+        {
+            get { return _foreignKeys; }
+            private set { _foreignKeys = value; }
+        }
 
         internal TableNode OwningNode
         {
@@ -110,16 +133,31 @@
 
         #region Table options
 
+        private string _name;
         [Category("(Identity)")]
         [MyDescription("TableNameDesc")]
-        public string Name { get; set; }
+        public string Name 
+        {
+            get { return _name; }
+            set { _name = value; }
+        }
 
+        private string _schema;
         [Category("(Identity)")]
         [MyDescription("TableSchemaDesc")]
-        public string Schema { get; private set; }
+        public string Schema 
+        {
+            get { return _schema; }
+            private set { _schema = value; }
+        }
 
+        private string _comment;
         [MyDescription("TableCommentDesc")]
-        public string Comment { get; set; }
+        public string Comment 
+        {
+            get { return _comment; }
+            set { _comment = value; }
+        }
 
         [Category("Table Options")]
         [DisplayName("Character Set")]
@@ -137,88 +175,153 @@
             }
         }
 
+        private string _collation;
         [Category("Table Options")]
         [DisplayName("Collation")]
         [TypeConverter(typeof(CollationTypeConverter))]
         [MyDescription("TableCollationDesc")]
-        public string Collation { get; set; }
+        public string Collation 
+        {
+            get { return _collation; }
+            set { _collation = value; }
+        }
 
+        private ulong _autoInc;
         [Category("Table")]
         [DisplayName("Auto Increment")]
         [MyDescription("TableAutoIncStartDesc")]
-        public ulong AutoInc { get; set; }
+        public ulong AutoInc 
+        {
+            get { return _autoInc; }
+            set { _autoInc = value; }
+        }
 
         #endregion
 
         #region Storage options
 
+        private string _engine;
         [Category("Storage")]
         [DisplayName("Storage Engine")]
         [MyDescription("TableEngineDescription")]
         [TypeConverter(typeof(TableEngineTypeConverter))]
         [RefreshProperties(RefreshProperties.All)]
-        public string Engine { get; set; }
+        public string Engine 
+        {
+            get { return _engine; }
+            set { _engine = value; }
+        }
 
+        private string _dataDirectory;
         [Category("Storage")]
         [DisplayName("Data Directory")]
         [MyDescription("TableDataDirDesc")]
-        public string DataDirectory { get; set; }
+        public string DataDirectory 
+        {
+            get { return _dataDirectory; }
+            set { _dataDirectory = value; }
+        }
 
+        private string _indexDirectory;
         [Category("Storage")]
         [DisplayName("Index Directory")]
         [MyDescription("TableIndexDirDesc")]
-        public string IndexDirectory { get; set; }
+        public string IndexDirectory 
+        {
+            get { return _indexDirectory; }
+            set { _indexDirectory = value; }
+        }
 
         #endregion
 
         #region Row options
 
+        private RowFormat _rowFormat;
         [Category("Row")]
         [DisplayName("Row Format")]
         [MyDescription("TableRowFormatDesc")]
-        public RowFormat RowFormat { get; set; }
+        public RowFormat RowFormat 
+        {
+            get { return _rowFormat; }
+            set { _rowFormat = value; }
+        }
 
+        private bool _checkSum;
         [Category("Row")]
         [DisplayName("Compute Checksum")]
         [MyDescription("TableCheckSumDesc")]
         [DefaultValue(false)]
         [TypeConverter(typeof(YesNoTypeConverter))]
-        public bool CheckSum { get; set; }
+        public bool CheckSum 
+        {
+            get { return _checkSum; }
+            set { _checkSum = value; }
+        }
 
+        private ulong _avgRowLength;
         [Category("Row")]
         [DisplayName("Average Row Length")]
         [MyDescription("TableAvgRowLengthDesc")]
         [TypeConverter(typeof(NumericTypeConverter))]
-        public ulong AvgRowLength { get; set; }
+        public ulong AvgRowLength 
+        {
+            get { return _avgRowLength; }
+            set { _avgRowLength = value; }
+        }
 
+        private ulong _minRows;
         [Category("Row")]
         [DisplayName("Minimum Rows")]
         [MyDescription("TableMinRowsDesc")]
         [TypeConverter(typeof(NumericTypeConverter))]
-        public ulong MinRows { get; set; }
+        public ulong MinRows 
+        {
+            get { return _minRows; }
+            set { _minRows = value; }
+        }
 
+        private UInt64 _maxRows;
         [Category("Row")]
         [DisplayName("Maximum Rows")]
         [MyDescription("TableMaxRowsDesc")]
         [TypeConverter(typeof(NumericTypeConverter))]
-        public UInt64 MaxRows { get; set; }
+        public UInt64 MaxRows 
+        {
+            get { return _maxRows; }
+            set { _maxRows = value; }
+        }
 
+        private PackKeysMethod _packKeys;
         [Category("Row")]
         [DisplayName("Pack Keys")]
         [MyDescription("TablePackKeysDesc")]
         [DefaultValue(PackKeysMethod.Default)]
-        public PackKeysMethod PackKeys { get; set; }
+        public PackKeysMethod PackKeys 
+        {
+            get { return _packKeys; }
+            set { _packKeys = value; }
+        }
 
+        private InsertMethod _insertMethod;
         [Category("Row")]
         [DisplayName("Insert method")]
         [MyDescription("TableInsertMethodDesc")]
         [DefaultValue(InsertMethod.First)]
-        public InsertMethod InsertMethod { get; set; }
+        public InsertMethod InsertMethod 
+        {
+            get { return _insertMethod; }
+            set { _insertMethod = value; }
+        }
 
+        private bool _delayKeyWrite;
         [Category("Row")]
         [DisplayName("Delay Key Write")]
         [MyDescription("DelayKeyWriteDesc")]
-        public bool DelayKeyWrite { get; set; }
+        public bool DelayKeyWrite 
+        {
+            get { return _delayKeyWrite; }
+            set { _delayKeyWrite = value; }
+        }
 
         #endregion
 

Modified: trunk/MySql.VisualStudio/DbObjects/TablePartCollection.cs
===================================================================
--- trunk/MySql.VisualStudio/DbObjects/TablePartCollection.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/DbObjects/TablePartCollection.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -36,7 +36,12 @@
             Deleted = new List<T>();
         }
 
-        public List<T> Deleted { get; private set; }
+        private List<T> _deleted;
+        public List<T> Deleted 
+        {
+            get { return _deleted; }
+            private set { _deleted = value; }
+        }
 
         public void Delete(T t)
         {

Modified: trunk/MySql.VisualStudio/Editors/IndexColumnEditorDialog.cs
===================================================================
--- trunk/MySql.VisualStudio/Editors/IndexColumnEditorDialog.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/Editors/IndexColumnEditorDialog.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -198,8 +198,19 @@
 
     public class IndexColumnGridRow
     {
-        public string ColumnName { get; set; }
-        public string SortOrder { get; set; }
+        private string _columnName;
+        public string ColumnName
+        {
+            get { return _columnName; }
+            set { _columnName = value; }
+        }
+
+        private string _sortOrder;
+        public string SortOrder
+        {
+            get { return _sortOrder; }
+            set { _sortOrder = value; }
+        }
     }
 
 }

Modified: trunk/MySql.VisualStudio/Editors/TextBufferEditor.cs
===================================================================
--- trunk/MySql.VisualStudio/Editors/TextBufferEditor.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/Editors/TextBufferEditor.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -33,9 +33,20 @@
             CreateCodeEditor();
         }
 
-        public IVsCodeWindow CodeWindow { get; private set; }
-        public IVsTextBuffer TextBuffer { get; private set; }
+        private IVsCodeWindow _codeWindow;
+        public IVsCodeWindow CodeWindow 
+        {
+            get { return _codeWindow; }
+            private set { _codeWindow = value; }
+        }
 
+        private IVsTextBuffer _textBuffer;
+        public IVsTextBuffer TextBuffer 
+        {
+            get { return _textBuffer; }
+            private set { _textBuffer = value; }
+        }
+
         private void CreateCodeEditor()
         {
             Guid clsidTextBuffer = typeof(VsTextBufferClass).GUID;

Modified: trunk/MySql.VisualStudio/LanguageService/Tokenizer.cs
===================================================================
--- trunk/MySql.VisualStudio/LanguageService/Tokenizer.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/LanguageService/Tokenizer.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -23,7 +23,18 @@
     class Tokenizer
     {
         private string text;
+        private int Pos;
+        private string LastToken;
+        private int _startIndex;
+        private int _stopIndex;
+        private bool _lineComment;
+        private bool _quoted;
 
+        public bool AnsiQuotes;
+        public bool BackslashEscapes;
+        public bool ReturnComments;
+        public bool BlockComment;
+
         #region Properties
 
         public string Text
@@ -32,17 +43,30 @@
             set { text = value; Pos = 0; }
         }
 
-        public bool AnsiQuotes { get; set; }
-        public bool BackslashEscapes { get; set; }
-        public int StartIndex { get; private set; }
-        public int StopIndex { get; private set; }
-        public bool ReturnComments { get; set; }
-        public bool LineComment { get; private set; }
-        public bool BlockComment { get; set; }
-        public bool Quoted { get; private set; }
-        private int Pos { get; set; }
-        private string LastToken { get; set; }
+        public int StartIndex 
+        {
+            get { return _startIndex; }
+            private set { _startIndex = value; }
+        }
 
+        public int StopIndex 
+        {
+            get { return _stopIndex; }
+            private set { _stopIndex = value; }
+        }
+
+        public bool LineComment 
+        {
+            get { return _lineComment; }
+            private set { _lineComment = value; }
+        }
+
+        public bool Quoted 
+        {
+            get { return _quoted; }
+            private set { _quoted = value; }
+        }
+
         #endregion
 
 

Modified: trunk/MySql.VisualStudio/MySql.VisualStudio.csproj
===================================================================
--- trunk/MySql.VisualStudio/MySql.VisualStudio.csproj	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/MySql.VisualStudio.csproj	2009-05-18 21:35:46 UTC (rev 1611)
@@ -11,7 +11,7 @@
     <SignAssembly>false</SignAssembly>
     <AssemblyOriginatorKeyFile>
     </AssemblyOriginatorKeyFile>
-    <ProjectGuid>{E7E48744-7BB3-463E-9A9A-7B4553D79C0E}</ProjectGuid>
+    <ProjectGuid>{DC3517FF-AC26-4755-9B7A-EF658FF69593}</ProjectGuid>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
     <OldToolsVersion>2.0</OldToolsVersion>
@@ -85,6 +85,9 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="..\MySql.Data\Provider\Properties\VersionInfo.cs">
+      <Link>Properties\VersionInfo.cs</Link>
+    </Compile>
     <Compile Include="DbObjects\CollationTypeConverter.cs" />
     <Compile Include="DbObjects\CharacterSetTypeConverter.cs" />
     <Compile Include="DbObjects\DataRowHelpers.cs" />
@@ -120,6 +123,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>

Modified: trunk/MySql.VisualStudio/Nodes/BaseNode.cs
===================================================================
--- trunk/MySql.VisualStudio/Nodes/BaseNode.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/Nodes/BaseNode.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -42,6 +42,8 @@
 		protected Guid commandGroupGuid;
         protected string name;
         private static string defaultStorageEngine;
+        public DataViewHierarchyAccessor HierarchyAccessor;
+        public bool IsNew;
 
 		public BaseNode(DataViewHierarchyAccessor hierarchyAccessor, int id)
 		{
@@ -81,20 +83,52 @@
             }
         }
 
-        public bool IsNew { get; set; }
-        public int ItemId { get; protected set; }
-        public string NodeId { get; protected set; }
-		public DataViewHierarchyAccessor HierarchyAccessor { get; set; }
-        public string Server { get; private set; }
-        public string Database { get; private set; }
-        public virtual bool Dirty { get; protected set; }
+        private int _itemId;
+        public int ItemId 
+        {
+            get { return _itemId; }
+            protected set { _itemId = value; }
+        }
 
+        private string _nodeId;
+        public string NodeId 
+        {
+            get { return _nodeId; }
+            protected set { _nodeId = value; }
+        }
+
+        private string _server;
+        public string Server 
+        {
+            get { return _server; }
+            private set { _server = value; }
+        }
+
+        private string _database;
+        public string Database 
+        {
+            get { return _database; }
+            private set { _database = value; }
+        }
+
+        private bool _dirty;
+        public virtual bool Dirty 
+        {
+            get { return _dirty; }
+            protected set { _dirty = value; }
+        }
+
         protected string Moniker 
         { 
             get { return String.Format("mysql://{0}/{1}/{2}", Server, Database, Name); }
         }
 
-        public int NameIndex { get; protected set; }
+        private int _nameIndex;
+        public int NameIndex 
+        {
+            get { return _nameIndex; }
+            protected set { _nameIndex = value; }
+        }
 
         public virtual string SchemaCollection
         {

Modified: trunk/MySql.VisualStudio/Nodes/DocumentNode.cs
===================================================================
--- trunk/MySql.VisualStudio/Nodes/DocumentNode.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/Nodes/DocumentNode.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -42,12 +42,8 @@
         {
         }
 
-        #region Properties
+        private uint DocumentCookie;
 
-        private uint DocumentCookie { get; set; }
-
-        #endregion
-
         protected abstract void Load();
         public abstract string GetSaveSql();
         protected abstract string GetCurrentName();

Modified: trunk/MySql.VisualStudio/Properties/AssemblyInfo.cs
===================================================================
--- trunk/MySql.VisualStudio/Properties/AssemblyInfo.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.VisualStudio/Properties/AssemblyInfo.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -33,14 +33,4 @@
 
 // The following GUID is for the ID of the typelib if this project is exposed to COM
 [assembly : Guid("5860AC5F-9DE5-4e2b-9FDA-D2AC4B1D6FA5")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("6.0.3")]
\ No newline at end of file
+[assembly: AssemblyKeyName("ConnectorNet")]

Modified: trunk/MySql.Web/Providers/MySql.Web.csproj
===================================================================
--- trunk/MySql.Web/Providers/MySql.Web.csproj	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Web/Providers/MySql.Web.csproj	2009-05-18 21:35:46 UTC (rev 1611)
@@ -51,6 +51,9 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="..\..\MySql.Data\Provider\Properties\VersionInfo.cs">
+      <Link>Properties\VersionInfo.cs</Link>
+    </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Properties\Resources.Designer.cs">
       <AutoGen>True</AutoGen>

Modified: trunk/MySql.Web/Providers/Properties/AssemblyInfo.cs
===================================================================
--- trunk/MySql.Web/Providers/Properties/AssemblyInfo.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Web/Providers/Properties/AssemblyInfo.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -44,14 +44,4 @@
 // The following GUID is for the ID of the typelib if this project is exposed to COM
 //[assembly: Guid("01520f33-9ecd-4574-96d0-5e6604e0f3aa")]
 
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("6.0.3")]
 [assembly: AssemblyKeyName("ConnectorNet")]

Added: trunk/MySql.Web/Providers/Properties/Resources.Designer.cs
===================================================================
--- trunk/MySql.Web/Providers/Properties/Resources.Designer.cs	                        (rev 0)
+++ trunk/MySql.Web/Providers/Properties/Resources.Designer.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -0,0 +1,459 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.3053
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MySql.Web.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MySql.Web.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot delete a populated role..
+        /// </summary>
+        public static string CannotDeleteAPopulatedRole {
+            get {
+                return ResourceManager.GetString("CannotDeleteAPopulatedRole", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Setting EnablePasswordRetrieval to true when PasswordFormat is Hashed is not supported..
+        /// </summary>
+        public static string CannotRetrieveHashedPasswords {
+            get {
+                return ResourceManager.GetString("CannotRetrieveHashedPasswords", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot unencode a hashed password..
+        /// </summary>
+        public static string CannotUnencodeHashedPwd {
+            get {
+                return ResourceManager.GetString("CannotUnencodeHashedPwd", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Change password operation was canceled..
+        /// </summary>
+        public static string ChangePasswordCanceled {
+            get {
+                return ResourceManager.GetString("ChangePasswordCanceled", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to There was an error during membership provider initilization..
+        /// </summary>
+        public static string ErrorInitOfMembershipProvider {
+            get {
+                return ResourceManager.GetString("ErrorInitOfMembershipProvider", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to There was an error during role provider initilization..
+        /// </summary>
+        public static string ErrorInitOfRoleProvider {
+            get {
+                return ResourceManager.GetString("ErrorInitOfRoleProvider", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to There was an error during profile provider initilization..
+        /// </summary>
+        public static string ErrorInitProfileProvider {
+            get {
+                return ResourceManager.GetString("ErrorInitProfileProvider", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to There was an error resetting the password..
+        /// </summary>
+        public static string ErrorResettingPassword {
+            get {
+                return ResourceManager.GetString("ErrorResettingPassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Role names must not be null or empty..
+        /// </summary>
+        public static string IllegalRoleName {
+            get {
+                return ResourceManager.GetString("IllegalRoleName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to User names must not be null or empty..
+        /// </summary>
+        public static string IllegalUserName {
+            get {
+                return ResourceManager.GetString("IllegalUserName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Incorrect password answer..
+        /// </summary>
+        public static string IncorrectPasswordAnswer {
+            get {
+                return ResourceManager.GetString("IncorrectPasswordAnswer", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Invalid characters in user name..
+        /// </summary>
+        public static string InvalidCharactersInUserName {
+            get {
+                return ResourceManager.GetString("InvalidCharactersInUserName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Unable to initialize provider.  Missing or incorrect schema..
+        /// </summary>
+        public static string MissingOrWrongSchema {
+            get {
+                return ResourceManager.GetString("MissingOrWrongSchema", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The mono runtime did not support hashed passwords.  Please use clear or encrypted passwords..
+        /// </summary>
+        public static string MonoDoesNotSupportHash {
+            get {
+                return ResourceManager.GetString("MonoDoesNotSupportHash", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Change password canceled due to New password validation failure..
+        /// </summary>
+        public static string NewPasswordValidationFailed {
+            get {
+                return ResourceManager.GetString("NewPasswordValidationFailed", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Non alpha numeric characters in &apos;{0}&apos; needs to be greater than or equal to &apos;{1}&apos;..
+        /// </summary>
+        public static string NotEnoughNonAlphaNumericInPwd {
+            get {
+                return ResourceManager.GetString("NotEnoughNonAlphaNumericInPwd", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Password answer supplied is invalid..
+        /// </summary>
+        public static string PasswordAnswerInvalid {
+            get {
+                return ResourceManager.GetString("PasswordAnswerInvalid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The length of parameter &apos;{0}&apos; needs to be greater or equal to &apos;{1}&apos;..
+        /// </summary>
+        public static string PasswordNotLongEnough {
+            get {
+                return ResourceManager.GetString("PasswordNotLongEnough", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Password question supplied is invalid..
+        /// </summary>
+        public static string PasswordQuestionInvalid {
+            get {
+                return ResourceManager.GetString("PasswordQuestionInvalid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Password answer required for password reset..
+        /// </summary>
+        public static string PasswordRequiredForReset {
+            get {
+                return ResourceManager.GetString("PasswordRequiredForReset", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Reset password canceled due to password validation failure..
+        /// </summary>
+        public static string PasswordResetCanceledNotValid {
+            get {
+                return ResourceManager.GetString("PasswordResetCanceledNotValid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Password Reset is not enabled..
+        /// </summary>
+        public static string PasswordResetNotEnabled {
+            get {
+                return ResourceManager.GetString("PasswordResetNotEnabled", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Password Retrieval Not Enabled..
+        /// </summary>
+        public static string PasswordRetrievalNotEnabled {
+            get {
+                return ResourceManager.GetString("PasswordRetrievalNotEnabled", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Profile update failed..
+        /// </summary>
+        public static string ProfileUpdateFailed {
+            get {
+                return ResourceManager.GetString("ProfileUpdateFailed", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Role name already exists..
+        /// </summary>
+        public static string RoleNameAlreadyExists {
+            get {
+                return ResourceManager.GetString("RoleNameAlreadyExists", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Role name not found..
+        /// </summary>
+        public static string RoleNameNotFound {
+            get {
+                return ResourceManager.GetString("RoleNameNotFound", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to CREATE TABLE  mysql_Membership(`PKID` varchar(36) NOT NULL,
+        ///              Username varchar(255) NOT NULL, 
+        ///              ApplicationName varchar(255) NOT NULL,
+        ///              Email varchar(128) NOT NULL, 
+        ///              Comment varchar(255) default NULL,
+        ///              Password varchar(128) NOT NULL, 
+        ///              PasswordQuestion varchar(255) default NULL,
+        ///              PasswordAnswer varchar(255) default NULL, 
+        ///              IsApproved tinyint(1) default NULL,
+        ///              LastActivityDate datetim [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string schema1 {
+            get {
+                return ResourceManager.GetString("schema1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to  ALTER TABLE mysql_Membership 
+        ///            ADD PasswordKey char(32) AFTER Password, 
+        ///            ADD PasswordFormat tinyint AFTER PasswordKey, 
+        ///            CHANGE Email Email VARCHAR(128), COMMENT=&apos;2&apos;;
+        ///            
+        ///            
+        ///                .
+        /// </summary>
+        public static string schema2 {
+            get {
+                return ResourceManager.GetString("schema2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to /* Provider schema block -- version 3 */
+        ///
+        ////* create our application and user tables */
+        ///create table my_aspnet_Applications(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(256), description VARCHAR(256));
+        ///create table my_aspnet_Users(id INT PRIMARY KEY AUTO_INCREMENT, 
+        ///		applicationId INT NOT NULL, name VARCHAR(256) NOT NULL, 
+        ///		isAnonymous TINYINT(1) NOT NULL DEFAULT 1, lastActivityDate DATETIME);
+        ///create table my_aspnet_Profiles(userId INT PRIMARY KEY, valueindex longtext, stringdata longtext, binary [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string schema3 {
+            get {
+                return ResourceManager.GetString("schema3", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ALTER TABLE my_aspnet_Membership CONVERT TO CHARACTER SET DEFAULT;
+        ///ALTER TABLE my_aspnet_Roles CONVERT TO CHARACTER SET DEFAULT;
+        ///ALTER TABLE my_aspnet_UsersInRoles CONVERT TO CHARACTER SET DEFAULT;
+        ///
+        ///UPDATE my_aspnet_SchemaVersion SET version=4 WHERE version=3;
+        ///.
+        /// </summary>
+        public static string schema4 {
+            get {
+                return ResourceManager.GetString("schema4", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Unable to create application..
+        /// </summary>
+        public static string UnableToCreateApplication {
+            get {
+                return ResourceManager.GetString("UnableToCreateApplication", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Unable to create user..
+        /// </summary>
+        public static string UnableToCreateUser {
+            get {
+                return ResourceManager.GetString("UnableToCreateUser", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Unable to lock out user..
+        /// </summary>
+        public static string UnableToLockOutUser {
+            get {
+                return ResourceManager.GetString("UnableToLockOutUser", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Unable to retrieve profile data from database..
+        /// </summary>
+        public static string UnableToRetrieveProfileData {
+            get {
+                return ResourceManager.GetString("UnableToRetrieveProfileData", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Unable to update failure count.  Membership database may be corrupt..
+        /// </summary>
+        public static string UnableToUpdateFailureCount {
+            get {
+                return ResourceManager.GetString("UnableToUpdateFailureCount", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Unsupported password format..
+        /// </summary>
+        public static string UnsupportedPasswordFormat {
+            get {
+                return ResourceManager.GetString("UnsupportedPasswordFormat", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to User is already in role..
+        /// </summary>
+        public static string UserIsAlreadyInRole {
+            get {
+                return ResourceManager.GetString("UserIsAlreadyInRole", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The supplied user is locked out..
+        /// </summary>
+        public static string UserIsLockedOut {
+            get {
+                return ResourceManager.GetString("UserIsLockedOut", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Username not found..
+        /// </summary>
+        public static string UsernameNotFound {
+            get {
+                return ResourceManager.GetString("UsernameNotFound", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to User not in role..
+        /// </summary>
+        public static string UserNotInRole {
+            get {
+                return ResourceManager.GetString("UserNotInRole", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The validate password operation was canceled..
+        /// </summary>
+        public static string ValidatePasswordCanceled {
+            get {
+                return ResourceManager.GetString("ValidatePasswordCanceled", resourceCulture);
+            }
+        }
+    }
+}

Modified: trunk/MySql.Web/Providers/Source/Application.cs
===================================================================
--- trunk/MySql.Web/Providers/Source/Application.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Web/Providers/Source/Application.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -9,17 +9,28 @@
 {
     internal class Application
     {
+        private int _id;
+        private string _desc;
+
         public Application(string name, string desc)
         {
             Id = -1;
             Name = name;
             Description = desc;
         }
-
-        public int Id { get; private set; }
+        public int Id 
+        { 
+            get { return _id; }
+            private set { _id = value; }
+        }
         public string Name;
-        public string Description { get; private set; }
 
+        public string Description
+        { 
+            get { return _desc; }
+            private set { _desc = value; } 
+        }
+
         public int FetchId(MySqlConnection connection)
         {
             if (Id == -1)

Modified: trunk/MySql.Web/Providers/Source/RoleProvider.cs
===================================================================
--- trunk/MySql.Web/Providers/Source/RoleProvider.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Web/Providers/Source/RoleProvider.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -183,7 +183,7 @@
                         {
                             // either create a new user or fetch the existing user id
                             int userId = SchemaManager.CreateOrFetchUserId(connection,
-                                username, app.Id, true);
+                                username, app.FetchId(connection), true);
                             foreach (string rolename in rolenames)
                             {
                                 int roleId = GetRoleId(connection, rolename);
@@ -262,7 +262,7 @@
                             my_aspnet_Roles r ON uir.roleId=r.id 
                             WHERE r.name LIKE @rolename AND r.applicationId=@appId", connection);
                         cmd.Parameters.AddWithValue("@rolename", rolename);
-                        cmd.Parameters.AddWithValue("@appId", app.Id);
+                        cmd.Parameters.AddWithValue("@appId", app.FetchId(connection));
                         cmd.ExecuteNonQuery();
 
                         // now delete the role itself
@@ -335,7 +335,7 @@
                     WHERE u.applicationId=@appId";
                     MySqlCommand cmd = new MySqlCommand(sql, connection);
                     cmd.Parameters.AddWithValue("@roleId", roleId);
-                    cmd.Parameters.AddWithValue("@appId", app.Id);
+                    cmd.Parameters.AddWithValue("@appId", app.FetchId(connection));
                     using (MySqlDataReader reader = cmd.ExecuteReader())
                     {
                         while (reader.Read())
@@ -378,7 +378,7 @@
                         WHERE u.applicationId=@appId AND 
                         u.name LIKE @userName AND r.name LIKE @roleName";
                     MySqlCommand cmd = new MySqlCommand(sql, connection);
-                    cmd.Parameters.AddWithValue("@appId", app.Id);
+                    cmd.Parameters.AddWithValue("@appId", app.FetchId(connection));
                     cmd.Parameters.AddWithValue("@userName", username);
                     cmd.Parameters.AddWithValue("@roleName", rolename);
                     int count = Convert.ToInt32(cmd.ExecuteScalar());
@@ -434,7 +434,7 @@
                         MySqlCommand cmd = new MySqlCommand(sql, connection);
                         cmd.Parameters.Add("@username", MySqlDbType.VarChar, 255);
                         cmd.Parameters.Add("@rolename", MySqlDbType.VarChar, 255);
-                        cmd.Parameters.AddWithValue("@appId", app.Id);
+                        cmd.Parameters.AddWithValue("@appId", app.FetchId(connection));
 
                         foreach (string username in usernames)
                         {
@@ -516,7 +516,7 @@
                     MySqlCommand cmd = new MySqlCommand(sql, connection);
                     cmd.Parameters.AddWithValue("@username", usernameToMatch);
                     cmd.Parameters.AddWithValue("@rolename", rolename);
-                    cmd.Parameters.AddWithValue("@appId", app.Id);
+                    cmd.Parameters.AddWithValue("@appId", app.FetchId(connection));
                     using (MySqlDataReader reader = cmd.ExecuteReader())
                     {
                         while (reader.Read())
@@ -557,7 +557,7 @@
                         GetUserId(connection, username);
                 sql += " WHERE r.applicationId=@appId";
                 MySqlCommand cmd = new MySqlCommand(sql, connection);
-                cmd.Parameters.AddWithValue("@appId", app.Id);
+                cmd.Parameters.AddWithValue("@appId", app.FetchId(connection));
                 using (MySqlDataReader reader = cmd.ExecuteReader())
                 {
                     while (reader.Read())
@@ -579,7 +579,7 @@
                 "SELECT id FROM my_aspnet_Users WHERE name=@name AND applicationId=@appId",
                 connection);
             cmd.Parameters.AddWithValue("@name", username);
-            cmd.Parameters.AddWithValue("@appId", app.Id);
+            cmd.Parameters.AddWithValue("@appId", app.FetchId(connection));
             object id = cmd.ExecuteScalar();
             return Convert.ToInt32(id);
         }
@@ -590,7 +590,7 @@
                 "SELECT id FROM my_aspnet_Roles WHERE name=@name AND applicationId=@appId",
                 connection);
             cmd.Parameters.AddWithValue("@name", rolename);
-            cmd.Parameters.AddWithValue("@appId", app.Id);
+            cmd.Parameters.AddWithValue("@appId", app.FetchId(connection));
             return (int)cmd.ExecuteScalar();
         }
 

Modified: trunk/MySql.Web/Tests/MySql.Web.Tests.csproj
===================================================================
--- trunk/MySql.Web/Tests/MySql.Web.Tests.csproj	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Web/Tests/MySql.Web.Tests.csproj	2009-05-18 21:35:46 UTC (rev 1611)
@@ -33,7 +33,7 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL" />
+    <Reference Include="nunit.framework" />
     <Reference Include="System" />
     <Reference Include="System.configuration" />
     <Reference Include="System.Data" />
@@ -41,6 +41,9 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="..\..\MySql.Data\Provider\Properties\VersionInfo.cs">
+      <Link>Properties\VersionInfo.cs</Link>
+    </Compile>
     <Compile Include="BaseTest.cs" />
     <Compile Include="ProfileTests.cs" />
     <Compile Include="RoleManagement.cs" />

Modified: trunk/MySql.Web/Tests/Properties/AssemblyInfo.cs
===================================================================
--- trunk/MySql.Web/Tests/Properties/AssemblyInfo.cs	2009-05-18 21:30:42 UTC (rev 1610)
+++ trunk/MySql.Web/Tests/Properties/AssemblyInfo.cs	2009-05-18 21:35:46 UTC (rev 1611)
@@ -42,13 +42,3 @@
 // The following GUID is for the ID of the typelib if this project is exposed to COM
 [assembly: Guid("5ea74c78-c679-464f-99ba-ae1b0b54550b")]
 
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("6.0.3")]
\ No newline at end of file

Thread
Connector/NET commit: r1611 - in trunk: . Installer Installer/Binary MySql.Data/Provider MySql.Data/Provider/Properties MySql.Data/Provider/Source MyS...rburnett18 May