List:Commits« Previous MessageNext Message »
From:rburnett Date:May 8 2008 5:20pm
Subject:Connector/NET commit: r1297 - in trunk: . Documentation Installer Installer/Binary MySql.Data/Provider MySql.Data/Provider/Source MySql.Data/Provider/...
View as plain text  
Added:
   trunk/Installer/Binary/GlobalInstaller.exe
   trunk/MySql.VisualStudio/MyInstaller.cs
Removed:
   trunk/Documentation/Help.vdproj
   trunk/Installer/Binary/InstallTools.dll
   trunk/Installer/InstallUtilLib.dll
   trunk/Installer/vs2008.wxs
   trunk/MySql.Data/Provider/Source/cf/Semaphore.cs
Modified:
   trunk/CHANGES
   trunk/Installer/cf.wxs
   trunk/Installer/core.wxs
   trunk/Installer/main.iss
   trunk/Installer/misc.iss
   trunk/Installer/ui.wxs
   trunk/Installer/visualstudio.wxs
   trunk/MySql.Data/Provider/MySql.Data.CF.csproj
   trunk/MySql.Data/Provider/Source/CommandBuilder.cs
   trunk/MySql.Data/Provider/Source/Connection.cs
   trunk/MySql.Data/Provider/Source/Field.cs
   trunk/MySql.Data/Provider/Source/MySqlConnectionStringBuilder.cs
   trunk/MySql.Data/Provider/Source/MySqlPool.cs
   trunk/MySql.Data/Provider/Source/MySqlPoolManager.cs
   trunk/MySql.Data/Provider/Source/NativeDriver.cs
   trunk/MySql.Data/Provider/Source/SchemaProvider.cs
   trunk/MySql.Data/Provider/Source/Statement.cs
   trunk/MySql.Data/Provider/Source/StoredProcedure.cs
   trunk/MySql.Data/Provider/Source/docs/MySqlConnection.xml
   trunk/MySql.Data/Tests/MySql.Data.Tests.csproj
   trunk/MySql.Data/Tests/Source/AsyncTests.cs
   trunk/MySql.Data/Tests/Source/BaseTest.cs
   trunk/MySql.Data/Tests/Source/BlobTests.cs
   trunk/MySql.Data/Tests/Source/BulkLoading.cs
   trunk/MySql.Data/Tests/Source/CharacterSetTests.cs
   trunk/MySql.Data/Tests/Source/CommandBuilderTests.cs
   trunk/MySql.Data/Tests/Source/CommandTests.cs
   trunk/MySql.Data/Tests/Source/ConnectionStringBuilder.cs
   trunk/MySql.Data/Tests/Source/ConnectionTests.cs
   trunk/MySql.Data/Tests/Source/CultureTests.cs
   trunk/MySql.Data/Tests/Source/DataAdapterTests.cs
   trunk/MySql.Data/Tests/Source/DataReaderTests.cs
   trunk/MySql.Data/Tests/Source/DataTypeTests.cs
   trunk/MySql.Data/Tests/Source/DateTimeTests.cs
   trunk/MySql.Data/Tests/Source/EventTests.cs
   trunk/MySql.Data/Tests/Source/ExceptionTests.cs
   trunk/MySql.Data/Tests/Source/GetSchemaTests.cs
   trunk/MySql.Data/Tests/Source/InterfaceTests.cs
   trunk/MySql.Data/Tests/Source/LanguageTests.cs
   trunk/MySql.Data/Tests/Source/MicroPerfTests.cs
   trunk/MySql.Data/Tests/Source/MySqlHelperTests.cs
   trunk/MySql.Data/Tests/Source/ParameterTests.cs
   trunk/MySql.Data/Tests/Source/PerfMonTests.cs
   trunk/MySql.Data/Tests/Source/PoolingTests.cs
   trunk/MySql.Data/Tests/Source/PreparedStatements.cs
   trunk/MySql.Data/Tests/Source/ProcedureParameters.cs
   trunk/MySql.Data/Tests/Source/ScriptExecution.cs
   trunk/MySql.Data/Tests/Source/SimpleTransactions.cs
   trunk/MySql.Data/Tests/Source/StoredProcedure.cs
   trunk/MySql.Data/Tests/Source/StressTests.cs
   trunk/MySql.Data/Tests/Source/Syntax.cs
   trunk/MySql.Data/Tests/Source/Syntax2.cs
   trunk/MySql.Data/Tests/Source/Threading.cs
   trunk/MySql.Data/Tests/Source/TimeoutAndCancel.cs
   trunk/MySql.Data/Tests/Source/Transactions.cs
   trunk/MySql.Data/Tests/Source/UsageAdvisor.cs
   trunk/MySql.VisualStudio/MySql.VisualStudio.csproj
   trunk/MySql.Web/Providers/Source/ProfileProvider.cs
   trunk/MySql.Web/Tests/MySql.Web.Tests.csproj
   trunk/Package.build
Log:
merged

Modified: trunk/CHANGES
===================================================================
--- trunk/CHANGES	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/CHANGES	2008-05-08 15:20:49 UTC (rev 1297)
@@ -16,6 +16,15 @@
   is null would cause an exception (bug #35332)
 - Fixed bug where retrieving passwords that are encrypted was not returning proper
   passwords (bug #35336)    
+- Fixed problem with profile provider where properties that were specified without
+  a given type could not be retrieved properly (bug #36000)  
+- Implemented interactive session connection string option     
+- The procedure parameters schema collection has been altered to match what is coming
+  with MySQL 6.0.  Some fields have been removed and others combined.  Please review
+  your application for incompatibilities.
+- Removed some unnecessary locking from the pool manager and also reworked the pooling
+  code to not use a semaphore (bug #34001)
+
     
 Version 5.2.1 - 2/27/2008
 - Tons of fixes in providers.  The actually work now.  :)
@@ -58,7 +67,18 @@
    closeReader option set to true when we were supposed to.  (Bug #34460)
  - Fixed problem where the bit data type would continue to return null values
    once it saw a null value in a previous row (bug #36313)      
-      
+ - Fixed problem with MembershipUser.GetPassword where attempting to retrieve a
+   password on a user where password Q&A is not required would throw an exception
(bug #36159)      
+ - Fixed a problem with MembershipUser.GetNumberOfUsersOnline.  
+   It actually works now  :) (bug #36157)
+ - Fixed documentation that still stated that setting port to -1 was necessary for
+   a named pipe connection (bug #35356)      
+ - Fixed data type processing so that geometry fields are returned as binary.  (bug
#36081)      
+ - Fixed problem that kept our provider from showing up in the provider list when
configuring
+   a new connection from a SqlDataSource      
+ - Fixed problem where setting the ConnectionString property of MySqlConnection to null
+   would throw an exception (bug #35619)
+             
 Version 5.1.5 - 2/11/2008
   - Fixed problem with membership provider where FindUserByEmail would fail trying to add
     a second parameter with the same name as the first (bug #33347)
@@ -161,6 +181,14 @@
     What this means is that passing in null as a database restriction will report
     objects on the currently selected database only.
     
+Version 5.0.10 - 
+  - Fixed problem with pooling where a bogus host info combined with a pool with a
minimum
+    size > 0 can combine to create an exception.  The pool fails to create from the
bogus
+    host info but the driver finalizer code will still try to remove the driver from
+    a non-existant pool.  (bug #36432)    
+  - Fixed problem where supplying the connection reset config option can cause login to
fail
+    when there is room to make a new connection and the pool has no idle connections.    
+        
 Version 5.0.9 - 4/14/08
 
   - Fixed problem where fields that were blobs but did not include the BLOB flag were
treated

Deleted: trunk/Documentation/Help.vdproj
===================================================================
--- trunk/Documentation/Help.vdproj	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/Documentation/Help.vdproj	2008-05-08 15:20:49 UTC (rev 1297)
@@ -1,386 +0,0 @@
-"DeployProject"
-{
-"VSVersion" = "3:800"
-"ProjectType" = "8:{06A35CCD-C46D-44D5-987B-CF40FF872267}"
-"IsWebType" = "8:FALSE"
-"ProjectName" = "8:Help"
-"LanguageId" = "3:1033"
-"CodePage" = "3:1252"
-"UILanguageId" = "3:1033"
-"SccProjectName" = "8:"
-"SccLocalPath" = "8:"
-"SccAuxPath" = "8:"
-"SccProvider" = "8:"
-    "Hierarchy"
-    {
-        "Entry"
-        {
-        "MsmKey" = "8:_010F910C040D49E9802CB16EC5743CE8"
-        "OwnerKey" = "8:_UNDEFINED"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_08670283165543DCAC6E099C00643083"
-        "OwnerKey" = "8:_UNDEFINED"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_70AACFDFC56D482DB85143798B29A6F4"
-        "OwnerKey" = "8:_UNDEFINED"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_7C1784A1FC6948CCBFD7841DBD02B6FF"
-        "OwnerKey" = "8:_UNDEFINED"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_9A54EF74418D42C9AAC2C21BC1581919"
-        "OwnerKey" = "8:_UNDEFINED"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_A2FA79523EB441388CD279AF1F64913E"
-        "OwnerKey" = "8:_UNDEFINED"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_ACA7CDF8C5D04F53AF10EA5FD816460A"
-        "OwnerKey" = "8:_UNDEFINED"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_D0A1E0472921469885CF911F108098A8"
-        "OwnerKey" = "8:_UNDEFINED"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_E9F79AAB50AA44A2A8E4E34D68B70B81"
-        "OwnerKey" = "8:_UNDEFINED"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-    }
-    "Configurations"
-    {
-        "Debug"
-        {
-        "DisplayName" = "8:Debug"
-        "IsDebugOnly" = "11:TRUE"
-        "IsReleaseOnly" = "11:FALSE"
-        "OutputFilename" = "8:Debug\\Help.msm"
-        "PackageFilesAs" = "3:2"
-        "PackageFileSize" = "3:-2147483648"
-        "CabType" = "3:1"
-        "Compression" = "3:2"
-        "SignOutput" = "11:FALSE"
-        "CertificateFile" = "8:"
-        "PrivateKeyFile" = "8:"
-        "TimeStampServer" = "8:"
-        "InstallerBootstrapper" = "3:1"
-            "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
-            {
-            "Enabled" = "11:FALSE"
-            "PromptEnabled" = "11:TRUE"
-            "PrerequisitesLocation" = "2:1"
-            "Url" = "8:"
-            "ComponentsUrl" = "8:"
-                "Items"
-                {
-                }
-            }
-        }
-        "Release"
-        {
-        "DisplayName" = "8:Release"
-        "IsDebugOnly" = "11:FALSE"
-        "IsReleaseOnly" = "11:TRUE"
-        "OutputFilename" = "8:Release\\Help.msm"
-        "PackageFilesAs" = "3:2"
-        "PackageFileSize" = "3:-2147483648"
-        "CabType" = "3:1"
-        "Compression" = "3:2"
-        "SignOutput" = "11:FALSE"
-        "CertificateFile" = "8:"
-        "PrivateKeyFile" = "8:"
-        "TimeStampServer" = "8:"
-        "InstallerBootstrapper" = "3:1"
-            "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
-            {
-            "Enabled" = "11:FALSE"
-            "PromptEnabled" = "11:TRUE"
-            "PrerequisitesLocation" = "2:1"
-            "Url" = "8:"
-            "ComponentsUrl" = "8:"
-                "Items"
-                {
-                }
-            }
-        }
-    }
-    "Deployable"
-    {
-        "CustomAction"
-        {
-        }
-        "DefaultFeature"
-        {
-        "Name" = "8:DefaultFeature"
-        "Title" = "8:"
-        "Description" = "8:"
-        }
-        "File"
-        {
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_010F910C040D49E9802CB16EC5743CE8"
-            {
-            "SourcePath" = "8:CollectionFiles\\COL_Master_N.HxK"
-            "TargetName" = "8:COL_Master_N.HxK"
-            "Tag" = "8:"
-            "Folder" = "8:_1B49871DB86943FEB991EB418DBE8050"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
-            "IsolateTo" = "8:"
-            }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_08670283165543DCAC6E099C00643083"
-            {
-            "SourcePath" = "8:CollectionFiles\\COL_Master_A.HxK"
-            "TargetName" = "8:COL_Master_A.HxK"
-            "Tag" = "8:"
-            "Folder" = "8:_1B49871DB86943FEB991EB418DBE8050"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
-            "IsolateTo" = "8:"
-            }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7C1784A1FC6948CCBFD7841DBD02B6FF"
-            {
-            "SourcePath" = "8:CollectionFiles\\COL_Master_K.HxK"
-            "TargetName" = "8:COL_Master_K.HxK"
-            "Tag" = "8:"
-            "Folder" = "8:_1B49871DB86943FEB991EB418DBE8050"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
-            "IsolateTo" = "8:"
-            }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9A54EF74418D42C9AAC2C21BC1581919"
-            {
-            "SourcePath" = "8:CollectionFiles\\COL_Master_F.HxK"
-            "TargetName" = "8:COL_Master_F.HxK"
-            "Tag" = "8:"
-            "Folder" = "8:_1B49871DB86943FEB991EB418DBE8050"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
-            "IsolateTo" = "8:"
-            }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_ACA7CDF8C5D04F53AF10EA5FD816460A"
-            {
-            "SourcePath" = "8:CollectionFiles\\COL_Master.HxT"
-            "TargetName" = "8:COL_Master.HxT"
-            "Tag" = "8:"
-            "Folder" = "8:_1B49871DB86943FEB991EB418DBE8050"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
-            "IsolateTo" = "8:"
-            }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D0A1E0472921469885CF911F108098A8"
-            {
-            "SourcePath" = "8:Output\\MySql.Data.HxS"
-            "TargetName" = "8:MySql.Data.HxS"
-            "Tag" = "8:"
-            "Folder" = "8:_1B49871DB86943FEB991EB418DBE8050"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
-            "IsolateTo" = "8:"
-            }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E9F79AAB50AA44A2A8E4E34D68B70B81"
-            {
-            "SourcePath" = "8:CollectionFiles\\COL_Master.HxC"
-            "TargetName" = "8:COL_Master.HxC"
-            "Tag" = "8:"
-            "Folder" = "8:_1B49871DB86943FEB991EB418DBE8050"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
-            "IsolateTo" = "8:"
-            }
-        }
-        "FileType"
-        {
-        }
-        "Folder"
-        {
-            "{F4FE1E22-A4D2-4EE8-9259-29A1CE8BB2FF}:_1B49871DB86943FEB991EB418DBE8050"
-            {
-            "DefaultLocation" = "8:[TARGETDIR]"
-            "DisplayName" = "8:Module Retargetable Folder"
-            "Description" = "8:"
-            "Name" = "8:Module Retargetable Folder"
-            "AlwaysCreate" = "11:FALSE"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Property" = "8:NEWRETARGETABLEPROPERTY1"
-                "Folders"
-                {
-                }
-            }
-        }
-        "Sequences"
-        {
-        }
-        "MergeModule"
-        {
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_70AACFDFC56D482DB85143798B29A6F4"
-            {
-            "UseDynamicProperties" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
-            "SourcePath" =
"8:..\\Installer\\Binary\\HTML_Help_Registration__RTL_X86_---.msm"
-            "LanguageId" = "3:0"
-            "Exclude" = "11:FALSE"
-            "Folder" = "8:"
-            "Feature" = "8:"
-            "IsolateTo" = "8:"
-            }
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_A2FA79523EB441388CD279AF1F64913E"
-            {
-            "UseDynamicProperties" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
-            "SourcePath" =
"8:..\\Installer\\Binary\\VSIPCC_Collection_Files_RTL_---_---.msm"
-            "LanguageId" = "3:0"
-            "Exclude" = "11:FALSE"
-            "Folder" = "8:"
-            "Feature" = "8:"
-            "IsolateTo" = "8:"
-            }
-        }
-        "Module"
-        {
-        "ModuleSignature" = "8:MergeModule.B0BAD537397D413AAE4AC8C581C84269"
-        "Version" = "8:1.0.0.0"
-        "Title" = "8:Help"
-        "Subject" = "8:"
-        "Author" = "8:Microsoft"
-        "Keywords" = "8:"
-        "Comments" = "8:"
-        "SearchPath" = "8:"
-        "UseSystemSearchPath" = "11:TRUE"
-        "TargetPlatform" = "3:0"
-        "PreBuildEvent" = "8:"
-        "PostBuildEvent" = "8:\"$(ProjectDir)\\CollectionFiles\\FixRegTables.exe\"
\"$(BuiltOuputPath)\" \"$(ProjectDir)\\\""
-        "RunPostBuildEvent" = "3:0"
-        }
-        "ProjectOutput"
-        {
-        }
-        "Registry"
-        {
-            "HKLM"
-            {
-                "Keys"
-                {
-                }
-            }
-            "HKCU"
-            {
-                "Keys"
-                {
-                }
-            }
-            "HKCR"
-            {
-                "Keys"
-                {
-                }
-            }
-            "HKU"
-            {
-                "Keys"
-                {
-                }
-            }
-            "HKPU"
-            {
-                "Keys"
-                {
-                }
-            }
-        }
-        "Shortcut"
-        {
-        }
-    }
-}

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

Deleted: trunk/Installer/Binary/InstallTools.dll
===================================================================
(Binary files differ)

Deleted: trunk/Installer/InstallUtilLib.dll
===================================================================
(Binary files differ)

Modified: trunk/Installer/cf.wxs
===================================================================
--- trunk/Installer/cf.wxs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/Installer/cf.wxs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -5,9 +5,9 @@
       <Directory Id="CFDir" Name="Compact Framework">
         <Component Id="CFBinaries" Guid="5a9c32ad-62f5-4b24-a225-96acf42d88a1">
           <File Id="cf1" Name="MySql.Data.CF.dll"
-                Source="..\Driver\bin\net-2.0\release\mysql.data.CF.dll" DiskId="1"/>
+                Source="..\mysql.data\provider\bin\net-2.0\release\mysql.data.CF.dll"
DiskId="1"/>
           <File Id="cf2" Name="Mysql.Data.Tests.CF.dll"
-                Source="..\TestSuite\bin\net-2.0\Release\mysql.data.tests.CF.dll"
DiskId="1"/>
+                Source="..\mysql.data\tests\bin\net-2.0\Release\mysql.data.CF.tests.dll"
DiskId="1"/>
         </Component>
       </Directory>
     </DirectoryRef>

Modified: trunk/Installer/core.wxs
===================================================================
--- trunk/Installer/core.wxs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/Installer/core.wxs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -25,7 +25,7 @@
     <DirectoryRef Id='BinNet20'>
       <Component Id="Net20" Guid="0e8af006-273c-49bb-b7c1-ec1737260a5a">
         <File Id="MySqlData" Name="MySql.Data.dll"
-              Source="..\Driver\bin\net-2.0\release\mysql.data.dll" DiskId="1"/>
+              Source="..\mysql.data\provider\bin\net-2.0\release\mysql.data.dll"
DiskId="1"/>
         <RegistryKey Id="VSRegistry" Root="HKLM" Action="createAndRemoveOnUninstall"
                     
Key="SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\MySQL Connector Net
$(var.Version)">
           <RegistryValue Id="VSRegistryValue" Value="[BinNet20]" Type="string"
Action="write"/>
@@ -36,12 +36,12 @@
                 <util:PerformanceCounter Name="HardProcedureQueries"
Type="numberOfItems32" Help="The number of times a procedures metadata had to be queried
from the server." />
                 <util:PerformanceCounter Name="SoftProcedureQueries"
Type="rateOfCountsPerSecond32" Help="The number of times a procedures metadata was
retrieved from the client-side cache." /> 
             </util:PerformanceCategory>
-            
+           
         </Component>
       <Directory Id="MySql.Data.DummyDir" Name="GAC">
         <Component Id="GAC20" Guid="58f70e4a-96f7-4b67-bdab-9b77a60f9c09">
           <File Id="MySql.Data.GAC" Name="MySql.Data.dll"
-                Source="..\Driver\bin\net-2.0\release\mysql.data.dll" DiskId="1"
Assembly=".net" KeyPath="yes"/>
+                Source="..\mysql.data\provider\bin\net-2.0\release\mysql.data.dll"
DiskId="1" Assembly=".net" KeyPath="yes"/>
         </Component>
       </Directory>
     </DirectoryRef>

Modified: trunk/Installer/main.iss
===================================================================
--- trunk/Installer/main.iss	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/Installer/main.iss	2008-05-08 15:20:49 UTC (rev 1297)
@@ -3,7 +3,7 @@
 
 [Setup]
 AppName=MySQL Connector/Net
-AppVersion=5.2.0
+AppVersion=5.2.2
 AppVerName=MySQL Connector/Net {#SetupSetting("AppVersion")}
 AppPublisher=MySQL, Inc.
 AppPublisherURL=http://www.mysql.com.com/
@@ -25,10 +25,11 @@
 Name: english; MessagesFile: compiler:Default.isl
 
 [Files]
-Source: ..\Driver\bin\net-2.0\Release\MySql.Data.dll; DestDir: {app}\Binaries\.NET 2.0;
Flags: ignoreversion; AfterInstall: AfterMySqlDataInstall
+Source: ..\MySql.Data\Provider\bin\net-2.0\Release\MySql.Data.dll; DestDir: {app}\.NET
Framework; Flags: ignoreversion; AfterInstall: AfterMySqlDataInstall
+Source: ..\MySql.Data\Provider\bin\net-2.0\Release\MySql.Data.CF.dll; DestDir:
{app}\Compact Framework; Flags: ignoreversion; Components: CF
 Source: ..\CHANGES; DestDir: {app}; Flags: ignoreversion
 Source: ..\Release Notes.txt; DestDir: {app}; Flags: ignoreversion
-Source: ..\MySql.Web\Providers\bin\release\MySql.Web.dll; DestDir: {app}\Binaries\.NET
2.0; Flags: ignoreversion; AfterInstall: AfterWebInstall; Components: Providers
+Source: ..\MySql.Web\Providers\bin\release\MySql.Web.dll; DestDir: {app}\Web Providers;
Flags: ignoreversion; AfterInstall: AfterWebInstall; Components: Providers
 
 ; Handle conditional licensing
 #if defined (GPL)
@@ -40,6 +41,7 @@
 
 Source: ..\Samples\*.*; DestDir: {app}\Samples; Excludes:
bin,obj,bin\debug,bin\release,obj\debug,obj\release; Flags: ignoreversion
createallsubdirs recursesubdirs
 Source: binary\installtools.dll; DestDir: {app}; Attribs: hidden
+Source: binary\globalinstaller.exe; DestDir: {app}; Attribs: hidden
 
 ; Documentation files
 Source: ..\Documentation\Output\MySql.Data.chm; DestDir: {app}\Documentation; Components:
Docs
@@ -56,7 +58,7 @@
 Source: ..\Installer\Binary\h2reg.ini; DestDir: {app}\Uninstall; Components: Docs
 
 ; VS integration
-Source: ..\VisualStudio\bin\Release\MySql.VisualStudio.dll; DestDir: {app}\Visual Studio
Integration; Components: VS
+Source: ..\MySql.VisualStudio\bin\Release\MySql.VisualStudio.dll; DestDir: {app}\Visual
Studio Integration; Components: VS
 
 [Icons]
 Name: {group}\{cm:UninstallProgram,MySQL Connector Net}; Filename: {uninstallexe}
@@ -67,11 +69,12 @@
 [Components]
 Name: Core; Description: Core assemblies; Flags: fixed; Types: full custom compact
 Name: Docs; Description: Documentation; Types: full custom
-Name: Samples; Description: Samples; Types: full custom
 Name: Providers; Description: ASP.NET 2.0 Web Providers; Types: full custom
 Name: VS; Description: Visual Studio Integration; Types: full custom
 Name: VS/2005; Description: Visual Studio 2005; Types: full custom; Check:
VS2005Installed
 Name: VS/2008; Description: Visual Studio 2008; Types: full custom; Check:
VS2008Installed
+Name: CF; Description: Compact Framework Support; Types: full custom
+Name: Samples; Description: Samples; Types: full custom
 
 [Registry]
 Root: HKLM; Subkey: Software\MySQL AB\MySQL Connector/Net; Flags: uninsdeletekey
@@ -80,23 +83,24 @@
 
 ; make our assembly visible to Visual Studio
 Root: HKLM; Subkey: Software\Microsoft\.NETFramework\AssemblyFolders\MySQL Connector/Net
{#SetupSetting('AppVersion')}; Flags: uninsdeletekey
-Root: HKLM; Subkey: Software\Microsoft\.NETFramework\AssemblyFolders\MySQL Connector/Net
{#SetupSetting('AppVersion')}; ValueType: string; ValueData: {app}\Binaries\.NET 2.0
+Root: HKLM; Subkey: Software\Microsoft\.NETFramework\AssemblyFolders\MySQL Connector/Net
{#SetupSetting('AppVersion')}; ValueType: string; ValueData: {app}\.NET Framework
 
-#include "vs2005.iss"
-#include "vs2008.iss"
-
 [Run]
-Filename: "{code:GetVersion2InstallUtil}"; Parameters: {app}\Binaries\.NET
2.0\mysql.data.dll; WorkingDir: {app}; StatusMsg: Adding data provider to machine.config;
Flags: runhidden
-Filename: "{code:GetVersion2InstallUtil}"; Parameters: {app}\Binaries\.NET
2.0\mysql.web.dll; WorkingDir: {app}; StatusMsg: Adding web providers to machine.config;
Flags: runhidden; Components: Providers
+Filename: "{code:GetVersion2InstallUtil}"; Parameters: {app}\.NET
Framework\mysql.data.dll; WorkingDir: {app}; StatusMsg: Adding data provider to
machine.config; Flags: runhidden
+Filename: "{code:GetVersion2InstallUtil}"; Parameters: {app}\Web Providers\mysql.web.dll;
WorkingDir: {app}; StatusMsg: Adding web providers to machine.config; Flags: runhidden;
Components: Providers
+Filename: {app}\GlobalInstaller.exe; Parameters: mysql.visualstudio.dll version=VS2005;
WorkingDir: {app}\Visual Studio Integration; StatusMsg: Integrating with Visual Studio
2005; Flags: runhidden; Components: VS/2005
+Filename: {app}\GlobalInstaller.exe; Parameters: mysql.visualstudio.dll version=VS2008;
WorkingDir: {app}\Visual Studio Integration; StatusMsg: Integrating with Visual Studio
2008; Flags: runhidden; Components: VS/2008
 Filename: "{code:GetVS2005Path}"; Parameters: /setup; WorkingDir: {app}; StatusMsg:
Reconfiguring Visual Studio 2005.  Please wait...; Flags: runhidden; Components: VS/2005
 Filename: "{code:GetVS2008Path}"; Parameters: /setup; WorkingDir: {app}; StatusMsg:
Reconfiguring Visual Studio 2008  Please wait...; Flags: runhidden; Components: VS/2008
 Filename: {app}\Uninstall\h2reg.exe; Parameters: -r -q; WorkingDir: {app}\Uninstall;
StatusMsg: Registering help collection; Flags: runhidden; Components: docs and (VS/2005
or VS/2008)
 
 [UninstallRun]
+Filename: {app}\GlobalInstaller.exe; Parameters: /u mysql.visualstudio.dll
version=VS2005; WorkingDir: {app}\Visual Studio Integration; StatusMsg: Removing Visual
Studio 2005 integration; Flags: runhidden; Components: VS/2005
+Filename: {app}\GlobalInstaller.exe; Parameters: /u mysql.visualstudio.dll
version=VS2008; WorkingDir: {app}\Visual Studio Integration; StatusMsg: Removing Visual
Studio 2008 integration; Flags: runhidden; Components: VS/2008
 Filename: "{code:GetVS2005Path}"; Parameters: /setup; WorkingDir: {app}; StatusMsg:
Reconfiguring Visual Studio 2005; Flags: runhidden runascurrentuser; Components: VS/2005
 Filename: "{code:GetVS2008Path}"; Parameters: /setup; WorkingDir: {app}; StatusMsg:
Reconfiguring Visual Studio 2008; Flags: runhidden runascurrentuser; Components: VS/2008
-Filename: "{code:GetVersion2InstallUtil}"; Parameters: /u {app}\Binaries\.NET
2.0\mysql.data.dll; WorkingDir: {app}; StatusMsg: Removing data provider from
machine.config; Flags: runhidden
-Filename: "{code:GetVersion2InstallUtil}"; Parameters: /u {app}\Binaries\.NET
2.0\mysql.web.dll; WorkingDir: {app}; StatusMsg: Removing web providers from
machine.config; Flags: runhidden; Components: Providers
+Filename: "{code:GetVersion2InstallUtil}"; Parameters: /u {app}\.NET
Framework\mysql.data.dll; WorkingDir: {app}; StatusMsg: Removing data provider from
machine.config; Flags: runhidden
+Filename: "{code:GetVersion2InstallUtil}"; Parameters: /u {app}\Web
Providers\mysql.web.dll; WorkingDir: {app}; StatusMsg: Removing web providers from
machine.config; Flags: runhidden; Components: Providers
 Filename: {app}\Uninstall\h2reg.exe; Parameters: -u -q; WorkingDir: {app}\Uninstall;
Flags: runhidden; Components: docs and (VS/2005 or VS/2008)
 
 [Code]
@@ -118,13 +122,13 @@
 
 procedure AfterMySqlDataInstall();
 begin
-    if Not RegisterAssembly(ExpandConstant('{app}' + '\Binaries\.NET
2.0\mysql.data.dll'), 2) then
+    if Not RegisterAssembly(ExpandConstant('{app}' + '\.NET Framework\mysql.data.dll'),
2) then
       MsgBox('Registration of the Connector/Net core components failed.', mbError,
MB_OK);
 end;
 
 procedure AfterWebInstall();
 begin
-    if Not RegisterAssembly(ExpandConstant('{app}' + '\Binaries\.NET 2.0\mysql.web.dll'),
2) then
+    if Not RegisterAssembly(ExpandConstant('{app}' + '\Web Providers\mysql.web.dll'), 2)
then
       MsgBox('Registration of the Connector/Net web components failed.', mbError, MB_OK);
 end;
 
@@ -132,11 +136,11 @@
 begin
   if CurUninstallStep = usUninstall then
   begin
-    if Not UnRegisterAssembly(ExpandConstant('{app}' + '\Binaries\.NET
2.0\mysql.data.dll'), 2) then
+    if Not UnRegisterAssembly(ExpandConstant('{app}' + '\.NET Framework\mysql.data.dll'),
'mysql.data', 2) then
       MsgBox('Unregistration of the Connector/Net core components failed.', mbError,
MB_OK);
 
-    if FileExists(ExpandConstant('{app}' + '\Binaries\.NET 2.0\mysql.web.dll')) then
-      if Not UnRegisterAssembly(ExpandConstant('{app}' + '\Binaries\.NET
2.0\mysql.web.dll'), 2) then
+    if FileExists(ExpandConstant('{app}' + '\Web Providers\mysql.web.dll')) then
+      if Not UnRegisterAssembly(ExpandConstant('{app}' + '\Web Providers\mysql.web.dll'),
'mysql.web', 2) then
         MsgBox('Unregistration of the Connector/Net web components failed.', mbError,
MB_OK);
 
     // Now that we're finished with it, unload MyDll.dll from memory.

Modified: trunk/Installer/misc.iss
===================================================================
--- trunk/Installer/misc.iss	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/Installer/misc.iss	2008-05-08 15:20:49 UTC (rev 1297)
@@ -48,19 +48,33 @@
     end
 end;
 
-function UnRegisterAssembly(name: String; version: Integer) : Boolean;
+function UnRegisterAssembly(assemblyFile: String; assemblyName: String; version: Integer)
: Boolean;
 var
   ResultCode : Integer;
+  InstallutilPath: String;
 begin
     Result := true;
-    Log(Format('Unregistering %s for version %d', [name, version]));
+    Log(Format('Unregistering %s for version %d', [assemblyName, version]));
 
     // Remove our assembly from the GAC now
-    if Not RemoveFromGAC('mysql.data, Version={#SetupSetting('AppVersion')}', version)
then
+    if Not RemoveFromGAC(Format('%s, Version={#SetupSetting("AppVersion")}',
[assemblyName]), version) then
     begin
-      Log('Removing ' + name + ' from the GAC failed.');
+      Log('Removing ' + assemblyName + ' from the GAC failed.');
       Result := false;
     end
+    else
+    begin
+      InstallUtilPath := GetInstallUtilPath(version);
+
+      Exec(InstallUtilPath, '/LogFile= /u "' + assemblyFile + '"', '', SW_HIDE,
ewWaitUntilTerminated, ResultCode);
+      if ResultCode <> 0 then
+      begin
+        Log('Running remove methods in ' + assemblyName + ' failed.');
+        Result := false;
+      end
+      else
+        Log('Successfully unregistered ' + assemblyName);
+    end
 end;
 
 function PreviousVersionsInstalled() : Boolean;

Modified: trunk/Installer/ui.wxs
===================================================================
--- trunk/Installer/ui.wxs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/Installer/ui.wxs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -48,13 +48,18 @@
       <ProgressText Action="ManagedWebInstall">Registering web providers in
machine.config</ProgressText>
       <ProgressText Action="ManagedWebUnInstall">Unregistering web providers from
machine.config</ProgressText>
 
-      <ProgressText Action="VS_2005_SetupRun">Reconfiguring Visual Studio 2005. 
Please wait...</ProgressText>
-      <ProgressText Action="VS_2008_SetupRun">Reconfiguring Visual Studio 2008. 
Please wait...</ProgressText>
+      <ProgressText Action="VS_2005_SETUP_EXEC">Reconfiguring Visual Studio 2005. 
Please wait...</ProgressText>
+      <ProgressText Action="VS_2008_SETUP_EXEC">Reconfiguring Visual Studio 2008. 
Please wait...</ProgressText>
 
       <ProgressText Action="PMDataCategoryId">Registering performance
counters</ProgressText>
 
       <ProgressText Action="RegisterHelp">Registering help
collection</ProgressText>
       <ProgressText Action="UnRegisterHelp">Unregistering help
collection</ProgressText>
+      
+      <ProgressText Action='VS_2005_INSTALL_EXEC'>Installing Visual Studio 2005
Integration</ProgressText>
+      <ProgressText Action='VS_2005_REMOVE_EXEC'>Removing Visual Studio 2005
Integration</ProgressText>
+      <ProgressText Action='VS_2008_INSTALL_EXEC'>Installing Visual Studio 2008
Integration</ProgressText>
+      <ProgressText Action='VS_2008_REMOVE_EXEC'>Removing Visual Studio 2008
Integration</ProgressText>
     </UI>
 
     <UIRef Id="WixUI_Common" />

Modified: trunk/Installer/visualstudio.wxs
===================================================================
--- trunk/Installer/visualstudio.wxs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/Installer/visualstudio.wxs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -2,109 +2,76 @@
 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
   <Fragment Id='VSFragment'>
 
-    <DirectoryRef Id='INSTALLDIR'>
+<DirectoryRef Id='INSTALLDIR'>
       <Directory Id='VSDir' Name='Visual Studio Integration'>
         <!-- common DDEX component to be installed if VS2005 or VS2008 is selected
-->
         <Component Id='VS_Common' Guid='75F9BFA2-4D6E-4cb3-97E6-B27C478CDE44'>
           <File Id='MySQL.VisualStudio' Name='MySQL.VisualStudio.dll' DiskId='1'
-                Source='..\VisualStudio\bin\release\MySQL.VisualStudio.dll' />
+                Source='..\MySql.VisualStudio\bin\release\MySQL.VisualStudio.dll' />
           <File Id='MySql.VisualStudio.dll.config'
Name='MySql.VisualStudio.dll.config' DiskId='1'
-                Source='..\VisualStudio\bin\release\MySql.VisualStudio.dll.config' />
+                Source='..\MySql.VisualStudio\bin\release\MySql.VisualStudio.dll.config'
/>
+          <File Id='GlobalInstaller' Name='GlobalInstaller.exe' DiskId='1'
Source='Binary\GlobalInstaller.exe' />
         </Component>
-        
-        <Component Id="VS_2005" Guid="a5240e1b-c5c2-4820-8a1d-776c0017f44b">
-          <!--Datasource registration section-->
-          <RegistryKey Id='DataSource' Root='HKLM'
-                      
Key='Software\Microsoft\VisualStudio\8.0\DataSources\{98FBE4D8-5583-4233-B219-70FF8C7FBBBD}'
-                       Action='createAndRemoveOnUninstall'>
-            <RegistryValue Id='DSDefaultValue' Type='string' Value='MySQL
Database'/>
-            <RegistryKey Id='DSSupportingProviders' Key='SupportingProviders'
Action='create'>
-              <RegistryKey Id='DSProvider'
Key='{C6882346-E592-4da5-80BA-D2EADCDA0359}' Action='create'>
-                <RegistryValue Id='DSDesc' Name='Description'
Value='Provider_Description, MySql.Data.VisualStudio.Properties.Resources'
Type='string'/>
-                <RegistryValue Id='DSDisplayName' Name='DisplayName'
Value='Datasource_Displayname, MySql.Data.VisualStudio.Properties.Resources'
Type='string'/>
-              </RegistryKey>
-            </RegistryKey>
-          </RegistryKey>
-
-          <!--Provider registration section-->
-          <RegistryKey Id='DataProviders' Root='HKLM'
-                      
Key='SOFTWARE\Microsoft\VisualStudio\8.0\DataProviders\{C6882346-E592-4da5-80BA-D2EADCDA0359}'
-                       Action='createAndRemoveOnUninstall'>
-            <RegistryValue Id='DPDefaultValue' Type='string' Value='.NET Framework
Data Provider for MySQL'/>
-            <RegistryValue Id='DPDisplayName' Name='DisplayName' Type='string'
Value='Provider_DisplayName, MySql.Data.VisualStudio.Properties.Resources'/>
-            <RegistryValue Id='DPShortDisplayName' Name='ShortDisplayName'
Type='string' Value='Provider_ShortDisplayName,
MySql.Data.VisualStudio.Properties.Resources'/>
-            <RegistryValue Id='DPDescription' Name='Description' Type='string'
Value='Provider_Description, MySql.Data.VisualStudio.Properties.Resources'/>
-            <RegistryValue Id='FactoryService' Name='FactoryService' Type='string'
Value='{D949EA95-EDA1-4b65-8A9E-266949A99360}'/>
-            <RegistryValue Id='InvariantName' Name='InvariantName' Type='string'
Value='MySql.Data.MySqlClient'/>
-            <RegistryKey Id='SupportedObjects' Key='SupportedObjects'
Action='create'>
-              <RegistryKey Id='SupportedObjects1' Key='DataConnectionPromptDialog'
Action='create'/>
-              <RegistryKey Id='SupportedObjects2' Key='DataConnectionProperties'
Action='create'/>
-              <RegistryKey Id='SupportedObjects3' Key='DataConnectionSupport'
Action='create'/>
-              <RegistryKey Id='SupportedObjects4' Key='DataConnectionUIControl'
Action='create'/>
-              <RegistryKey Id='SupportedObjects5' Key='DataObjectSupport'
Action='create'/>
-              <RegistryKey Id='SupportedObjects6' Key='DataSourceInformation'
Action='create'/>
-              <RegistryKey Id='SupportedObjects7' Key='DataViewSupport'
Action='create'/>
-            </RegistryKey>
-          </RegistryKey>
-
-          <!--Menu section-->
-          <RegistryValue Id='Menu' Root='HKLM'
-                       Key='SOFTWARE\Microsoft\VisualStudio\8.0\Menus' Type='string'
-                       Name='{79A115C9-B133-4891-9E7B-242509DAD272}' Value=',1000,1'
Action='write'/>
-
-          <!--Service section-->
-          <RegistryKey Id='Services' Root='HKLM'
-                      
Key='SOFTWARE\Microsoft\VisualStudio\8.0\Services\{D949EA95-EDA1-4b65-8A9E-266949A99360}'
-                       Action='createAndRemoveOnUninstall'>
-            <RegistryValue Id='ServicesDefault'
Value='{79A115C9-B133-4891-9E7B-242509DAD272}' Type='string'/>
-            <RegistryValue Id='ServicesName' Name='Name' Value='MySQL Provider Object
Factory' Type='string'/>
-          </RegistryKey>
-
-          <!--Installed Products section-->
-          <RegistryKey Id='InstalledProducts' Root='HKLM'
-                      
Key='SOFTWARE\Microsoft\VisualStudio\8.0\InstalledProducts\[ProductName]'
-                       Action='createAndRemoveOnUninstall'>
-            <RegistryValue Id='IPDefault' Value='[ProductName]' Type='string'/>
-            <RegistryValue Id='IPPackage' Name='Package'
Value='{79A115C9-B133-4891-9E7B-242509DAD272}' Type='string'/>
-            <RegistryValue Id='IPUI' Name='UseInterface' Value='1' Type='integer'/>
-          </RegistryKey>
-
-          <!--Package section-->
-          <RegistryKey Id='Packages' Root='HKLM'
-                      
Key='SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{79A115C9-B133-4891-9E7B-242509DAD272}'
-                       Action='createAndRemoveOnUninstall'>
-            <RegistryValue Id='PackagesDefault' Value='[ProductName]'
Type='string'/>
-            <RegistryValue Id='PackInProc' Name='InprocServer32'
Value='[WindowsFolder]system32\mscoree.dll' Type='string'/>
-            <RegistryValue Id='PackClass' Name='Class'
Value='MySql.Data.VisualStudio.MySqlDataProviderPackage' Type='string'/>
-            <RegistryValue Id='PackCodeBase' Name='CodeBase'
Value='[INSTALLDIR]\Visual Studio Integration\MySql.VisualStudio.dll' Type='string'/>
-            <RegistryValue Id='PackProdName' Name='ProductName' Value='MySQL Tools for
Visual Studio' Type='string'/>
-            <RegistryValue Id='PackVer' Name='ProductVersion' Value='1.1'
Type='string'/>
-            <RegistryValue Id='PackComp' Name='CompanyName' Value='MySQL AB c/o MySQL,
Inc.' Type='string'/>
-            <RegistryValue Id='PackMin' Name='MinEdition' Value='standard'
Type='string'/>
-            <RegistryValue Id='PackId' Name='ID' Value='100' Type='integer'/>
-          </RegistryKey>
-        </Component>
       </Directory>
     </DirectoryRef>
 
     <Feature Id='VS2005Int' Level='1' Title='Visual Studio 2005'>
       <Condition Level='0'>Not VS_2005_PATH</Condition>
       <ComponentRef Id='VS_Common'/>
-      <ComponentRef Id='VS_2005'/>
     </Feature>
 
+    <Feature Id='VS2008Int' Level='1' Title='Visual Studio 2008'>
+      <Condition Level='0'>Not VS_2008_PATH</Condition>
+      <ComponentRef Id='VS_Common'/>
+    </Feature>
+
+    <!-- Visual Studio 2005 integration actions -->
     <Property Id='VS_2005_PATH'>
       <RegistrySearch Id='Find_VS2005_Path' Root='HKLM'
Key='SOFTWARE\Microsoft\VisualStudio\8.0\Setup\VS'
           Name='EnvironmentDirectory' Type='raw'/>
     </Property>
-    <CustomAction Id="VS_2005_Setup" Property="VS_2005_SetupRun"
Value='"[VS_2005_PATH]\devenv.com" /setup'/>
-    <CustomAction Id="VS_2005_SetupRun" BinaryKey="WixCA" DllEntry="CAQuietExec"
Return="check" Execute='deferred' Impersonate='no'/>
+
     
+    <CustomAction Id="VS_2005_SETUP" Property="VS_2005_SETUP_EXEC"
Value='"[VS_2005_PATH]\devenv.com" /setup'/>
+    <CustomAction Id="VS_2005_SETUP_EXEC" BinaryKey="WixCA" DllEntry="CAQuietExec"
Return="check" Execute='deferred' Impersonate='no'/>
+    <CustomAction Id="VS_2005_INSTALL" Property="VS_2005_INSTALL_EXEC"
Value='"[#GlobalInstaller]" "[#MySQL.VisualStudio]" version=VS2005'/>
+    <CustomAction Id="VS_2005_INSTALL_EXEC" BinaryKey="WixCA" DllEntry="CAQuietExec"
Return="check" Execute='deferred' Impersonate='no'/>
+    <CustomAction Id="VS_2005_REMOVE"  Property="VS_2005_REMOVE_EXEC"
Value='"[#GlobalInstaller]" /u "[#MySQL.VisualStudio]" version=VS2005'/>
+    <CustomAction Id="VS_2005_REMOVE_EXEC" BinaryKey="WixCA" DllEntry="CAQuietExec"
Return="check" Execute='deferred' Impersonate='no'/>
+    
+    <!-- Visual Studio 2008 integration actions -->
+    <Property Id='VS_2008_PATH'>
+      <RegistrySearch Id='Find_VS2008_Path' Root='HKLM'
Key='SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS'
+          Name='EnvironmentDirectory' Type='raw'/>
+    </Property>
+    <CustomAction Id="VS_2008_SETUP" Property="VS_2008_SETUP_EXEC"
Value='"[VS_2008_PATH]\devenv.com" /setup'/>
+    <CustomAction Id="VS_2008_SETUP_EXEC" BinaryKey="WixCA" DllEntry="CAQuietExec"
Return="check" Execute='deferred' Impersonate='no'/>
+    <CustomAction Id="VS_2008_INSTALL" Property="VS_2008_INSTALL_EXEC"
Value='"[#GlobalInstaller]" "[#MySQL.VisualStudio]" version=VS2008'/>
+    <CustomAction Id="VS_2008_INSTALL_EXEC" BinaryKey="WixCA" DllEntry="CAQuietExec"
Return="check" Execute='deferred' Impersonate='no'/>
+    <CustomAction Id="VS_2008_REMOVE"  Property="VS_2008_REMOVE_EXEC"
Value='"[#GlobalInstaller]" /u "[#MySQL.VisualStudio]" version=VS2008'/>
+    <CustomAction Id="VS_2008_REMOVE_EXEC" BinaryKey="WixCA" DllEntry="CAQuietExec"
Return="check" Execute='deferred' Impersonate='no'/>
+
     <InstallExecuteSequence>
-      <Custom Action='VS_2005_Setup'
Before='InstallFinalize'>(&amp;VS2005Int=2) OR
(&amp;VS2005Int=3)</Custom>
-      <Custom Action='VS_2005_SetupRun'
After='VS_2005_Setup'>(&amp;VS2005Int=2) OR (&amp;VS2005Int=3)</Custom>
-    </InstallExecuteSequence>
+      <!-- vs2005 scheduling -->
+      <Custom Action='VS_2005_INSTALL'
Before='InstallFinalize'>(&amp;VS2005Int=3) AND NOT(!VS2005Int=3)</Custom>
+      <Custom Action='VS_2005_INSTALL_EXEC'
After='VS_2005_INSTALL'>(&amp;VS2005Int=3) AND NOT(!VS2005Int=3)</Custom>
 
+      <Custom Action='VS_2005_REMOVE'
Before="RemoveFiles">&amp;VS2005Int=2</Custom>
+      <Custom Action='VS_2005_REMOVE_EXEC'
After='VS_2005_REMOVE'>&amp;VS2005Int=2</Custom>
+
+      <Custom Action='VS_2005_SETUP'
Before='InstallFinalize'>(&amp;VS2005Int=2) OR
(&amp;VS2005Int=3)</Custom>
+      <Custom Action='VS_2005_SETUP_EXEC'
After='VS_2005_SETUP'>(&amp;VS2005Int=2) OR (&amp;VS2005Int=3)</Custom>
+
+      <!-- now vs2008 scheduling -->
+      <Custom Action='VS_2008_INSTALL'
Before='InstallFinalize'>(&amp;VS2008Int=3) AND NOT(!VS2008Int=3)</Custom>
+      <Custom Action='VS_2008_INSTALL_EXEC'
After='VS_2008_INSTALL'>(&amp;VS2008Int=3) AND NOT(!VS2008Int=3)</Custom>
+
+      <Custom Action='VS_2008_REMOVE'
Before="RemoveFiles">&amp;VS2008Int=2</Custom>
+      <Custom Action='VS_2008_REMOVE_EXEC'
After='VS_2008_REMOVE'>&amp;VS2008Int=2</Custom>
+      
+      <Custom Action='VS_2008_SETUP'
Before='InstallFinalize'>(&amp;VS2008Int=2) OR
(&amp;VS2008Int=3)</Custom>
+      <Custom Action='VS_2008_SETUP_EXEC'
After='VS_2008_SETUP'>(&amp;VS2008Int=2) OR (&amp;VS2008Int=3)</Custom>
+    </InstallExecuteSequence>
   </Fragment>
 </Wix>
 

Deleted: trunk/Installer/vs2008.wxs
===================================================================
--- trunk/Installer/vs2008.wxs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/Installer/vs2008.wxs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -1,100 +0,0 @@
-<?xml version="1.0"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
-  <Fragment Id='VS_2008_Fragment'>
-    <DirectoryRef Id='INSTALLDIR'>
-      <Component Id="VS_2008" Guid="a5240e1b-c5c2-4820-8a1d-776c0017f44b">
-        <!--Datasource registration section-->
-        <RegistryKey Id='DataSource_2008' Root='HKLM'
-                    
Key='Software\Microsoft\VisualStudio\9.0\DataSources\{98FBE4D8-5583-4233-B219-70FF8C7FBBBD}'
-                     Action='createAndRemoveOnUninstall'>
-          <RegistryValue Id='DSDefaultValue_2008' Type='string' Value='MySQL
Database'/>
-          <RegistryKey Id='DSSupportingProviders_2008' Key='SupportingProviders'
Action='create'>
-            <RegistryKey Id='DSProvider_2008'
Key='{C6882346-E592-4da5-80BA-D2EADCDA0359}' Action='create'>
-              <RegistryValue Id='DSDesc_2008' Name='Description'
Value='Provider_Description, MySql.Data.VisualStudio.Properties.Resources'
Type='string'/>
-              <RegistryValue Id='DSDisplayName_2008' Name='DisplayName'
Value='Datasource_Displayname, MySql.Data.VisualStudio.Properties.Resources'
Type='string'/>
-            </RegistryKey>
-          </RegistryKey>
-        </RegistryKey>
-
-        <!--Provider registration section-->
-        <RegistryKey Id='DataProviders_2008' Root='HKLM'
-                    
Key='SOFTWARE\Microsoft\VisualStudio\9.0\DataProviders\{C6882346-E592-4da5-80BA-D2EADCDA0359}'
-                     Action='createAndRemoveOnUninstall'>
-          <RegistryValue Id='DPDefaultValue_2008' Type='string' Value='.NET Framework
Data Provider for MySQL'/>
-          <RegistryValue Id='DPDisplayName_2008' Name='DisplayName' Type='string'
Value='Provider_DisplayName, MySql.Data.VisualStudio.Properties.Resources'/>
-          <RegistryValue Id='DPShortDisplayName_2008' Name='ShortDisplayName'
Type='string' Value='Provider_ShortDisplayName,
MySql.Data.VisualStudio.Properties.Resources'/>
-          <RegistryValue Id='DPDescription_2008' Name='Description' Type='string'
Value='Provider_Description, MySql.Data.VisualStudio.Properties.Resources'/>
-          <RegistryValue Id='FactoryService_2008' Name='FactoryService' Type='string'
Value='{D949EA95-EDA1-4b65-8A9E-266949A99360}'/>
-          <RegistryValue Id='InvariantName_2008' Name='InvariantName' Type='string'
Value='MySql.Data.MySqlClient'/>
-          <RegistryKey Id='SupportedObjects_2008' Key='SupportedObjects'
Action='create'>
-            <RegistryKey Id='SupportedObjects1_2008' Key='DataConnectionPromptDialog'
Action='create'/>
-            <RegistryKey Id='SupportedObjects2_2008' Key='DataConnectionProperties'
Action='create'/>
-            <RegistryKey Id='SupportedObjects3_2008' Key='DataConnectionSupport'
Action='create'/>
-            <RegistryKey Id='SupportedObjects4_2008' Key='DataConnectionUIControl'
Action='create'/>
-            <RegistryKey Id='SupportedObjects5_2008' Key='DataObjectSupport'
Action='create'/>
-            <RegistryKey Id='SupportedObjects6_2008' Key='DataSourceInformation'
Action='create'/>
-            <RegistryKey Id='SupportedObjects7_2008' Key='DataViewSupport'
Action='create'/>
-          </RegistryKey>
-        </RegistryKey>
-
-        <!--Menu section-->
-        <RegistryValue Id='Menu_2008' Root='HKLM'
-                     Key='SOFTWARE\Microsoft\VisualStudio\9.0\Menus' Type='string'
-                     Name='{79A115C9-B133-4891-9E7B-242509DAD272}' Value=',1000,1'
Action='write'/>
-
-        <!--Service section-->
-        <RegistryKey Id='Services_2008' Root='HKLM'
-                    
Key='SOFTWARE\Microsoft\VisualStudio\9.0\Services\{D949EA95-EDA1-4b65-8A9E-266949A99360}'
-                     Action='createAndRemoveOnUninstall'>
-          <RegistryValue Id='ServicesDefault_2008'
Value='{79A115C9-B133-4891-9E7B-242509DAD272}' Type='string'/>
-          <RegistryValue Id='ServicesName_2008' Name='Name' Value='MySQL Provider
Object Factory' Type='string'/>
-        </RegistryKey>
-
-        <!--Installed Products section-->
-        <RegistryKey Id='InstalledProducts_2008' Root='HKLM'
-                    
Key='SOFTWARE\Microsoft\VisualStudio\9.0\InstalledProducts\[ProductName]'
-                     Action='createAndRemoveOnUninstall'>
-          <RegistryValue Id='IPDefault_2008' Value='[ProductName]' Type='string'/>
-          <RegistryValue Id='IPPackage_2008' Name='Package'
Value='{79A115C9-B133-4891-9E7B-242509DAD272}' Type='string'/>
-          <RegistryValue Id='IPUI_2008' Name='UseInterface' Value='1'
Type='integer'/>
-        </RegistryKey>
-
-        <!--Package section-->
-        <RegistryKey Id='Packages_2008' Root='HKLM'
-                    
Key='SOFTWARE\Microsoft\VisualStudio\9.0\Packages\{79A115C9-B133-4891-9E7B-242509DAD272}'
-                     Action='createAndRemoveOnUninstall'>
-          <RegistryValue Id='PackagesDefault_2008' Value='[ProductName]'
Type='string'/>
-          <RegistryValue Id='PackInProc_2008' Name='InprocServer32'
Value='[WindowsFolder]system32\mscoree.dll' Type='string'/>
-          <RegistryValue Id='PackClass_2008' Name='Class'
Value='MySql.Data.VisualStudio.MySqlDataProviderPackage' Type='string'/>
-          <RegistryValue Id='PackCodeBase_2008' Name='CodeBase'
Value='[INSTALLDIR]\Visual Studio Integration\MySql.VisualStudio.dll' Type='string'/>
-          <RegistryValue Id='PackProdName_2008' Name='ProductName' Value='MySQL Tools
for Visual Studio' Type='string'/>
-          <RegistryValue Id='PackVer_2008' Name='ProductVersion' Value='1.1'
Type='string'/>
-          <RegistryValue Id='PackComp_2008' Name='CompanyName' Value='MySQL AB c/o
MySQL, Inc.' Type='string'/>
-          <RegistryValue Id='PackMin_2008' Name='MinEdition' Value='standard'
Type='string'/>
-          <RegistryValue Id='PackId_2008' Name='ID' Value='100' Type='integer'/>
-        </RegistryKey>
-      </Component>
-    </DirectoryRef>
-
-    <Feature Id='VS2008Int' Level='1' Title='Visual Studio 2008'>
-      <Condition Level='0'>Not VS_2008_PATH</Condition>
-      <ComponentRef Id='VS_Common'/>
-      <ComponentRef Id='VS_2008'/>
-    </Feature>
-
-    <Property Id='VS_2008_PATH'>
-      <RegistrySearch Id='Find_VS2008_Path' Root='HKLM'
Key='SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS'
-          Name='EnvironmentDirectory' Type='raw'/>
-    </Property>
-    <CustomAction Id="VS_2008_Setup" Property="VS_2008_SetupRun"
Value='"[VS_2008_PATH]\devenv.com" /setup'/>
-    <CustomAction Id="VS_2008_SetupRun" BinaryKey="WixCA" DllEntry="CAQuietExec"
Return="check" Execute='deferred' Impersonate='no'/>
-
-    <InstallExecuteSequence>
-      <Custom Action='VS_2008_Setup'
Before='InstallFinalize'>(&amp;VS2008Int=2) OR
(&amp;VS2008Int=3)</Custom>
-      <Custom Action='VS_2008_SetupRun'
After='VS_2008_Setup'>(&amp;VS2008Int=2) OR (&amp;VS2008Int=3)</Custom>
-    </InstallExecuteSequence>    
-    
-  </Fragment>
-</Wix>
-
-

Modified: trunk/MySql.Data/Provider/MySql.Data.CF.csproj
===================================================================
--- trunk/MySql.Data/Provider/MySql.Data.CF.csproj	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Provider/MySql.Data.CF.csproj	2008-05-08 15:20:49 UTC (rev 1297)
@@ -63,7 +63,6 @@
     <Compile Include="Source\base\DbConnectionStringBuilder.cs" />
     <Compile Include="Source\base\DbException.cs" />
     <Compile Include="Source\cf\BufferedStream.cs" />
-    <Compile Include="Source\cf\Semaphore.cs" />
     <Compile Include="Source\cf\WinCE.cs" />
     <Compile Include="Source\CharSetMap.cs" />
     <Compile Include="Source\command.cs">

Modified: trunk/MySql.Data/Provider/Source/CommandBuilder.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/CommandBuilder.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Provider/Source/CommandBuilder.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -114,10 +114,9 @@
             foreach (DataRow row in parameters.Rows)
             {
                 MySqlParameter p = new MySqlParameter();
-                p.ParameterName = row["PARAMETER_NAME"].ToString();
-                p.Direction = GetDirection(row["PARAMETER_MODE"].ToString(),
-                    row["IS_RESULT"].ToString());
-                bool unsigned = row["FLAGS"].ToString().IndexOf("UNSIGNED") != -1;
+                p.ParameterName = String.Format("@{0}", row["PARAMETER_NAME"]);
+                p.Direction = GetDirection(row);
+                bool unsigned =
StoredProcedure.GetFlags(row["DTD_IDENTIFIER"].ToString()).IndexOf("UNSIGNED") != -1;
                 bool real_as_float =
procTable.Rows[0]["SQL_MODE"].ToString().IndexOf("REAL_AS_FLOAT") != -1;
                 p.MySqlDbType = MetaData.NameToType(row["DATA_TYPE"].ToString(),
                     unsigned, real_as_float, command.Connection);
@@ -131,13 +130,16 @@
             }
         }
 
-        private static ParameterDirection GetDirection(string direction, string
is_result)
+        private static ParameterDirection GetDirection(DataRow row)
         {
-            if (is_result == "YES")
+            string mode = row["PARAMETER_MODE"].ToString();
+            int ordinal = Convert.ToInt32(row["ORDINAL_POSITION"]);
+
+            if (0 == ordinal)
                 return ParameterDirection.ReturnValue;
-            else if (direction == "IN")
+            else if (mode == "IN")
                 return ParameterDirection.Input;
-            else if (direction == "OUT")
+            else if (mode == "OUT")
                 return ParameterDirection.Output;
             return ParameterDirection.InputOutput;
         }

Modified: trunk/MySql.Data/Provider/Source/Connection.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/Connection.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Provider/Source/Connection.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -251,11 +251,16 @@
                 MySqlConnectionStringBuilder newSettings;
                 lock (connectionStringCache)
                 {
-                    newSettings =
(MySqlConnectionStringBuilder)connectionStringCache[value];
-                    if (null == newSettings)
+                    if (value == null)
+                        newSettings = new MySqlConnectionStringBuilder();
+                    else
                     {
-                        newSettings = new MySqlConnectionStringBuilder(value);
-                        connectionStringCache.Add(value, newSettings);
+                        newSettings =
(MySqlConnectionStringBuilder)connectionStringCache[value];
+                        if (null == newSettings)
+                        {
+                            newSettings = new MySqlConnectionStringBuilder(value);
+                            connectionStringCache.Add(value, newSettings);
+                        }
                     }
                 }
 

Modified: trunk/MySql.Data/Provider/Source/Field.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/Field.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Provider/Source/Field.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -343,6 +343,7 @@
                 case MySqlDbType.LongText:
                 case (MySqlDbType) Field_Type.NULL:
                     return new MySqlString(type, true);
+                case MySqlDbType.Geometry:
                 case MySqlDbType.Blob:
                 case MySqlDbType.MediumBlob:
                 case MySqlDbType.LongBlob:

Modified: trunk/MySql.Data/Provider/Source/MySqlConnectionStringBuilder.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/MySqlConnectionStringBuilder.cs	2008-05-08 15:07:50
UTC (rev 1296)
+++ trunk/MySql.Data/Provider/Source/MySqlConnectionStringBuilder.cs	2008-05-08 15:20:49
UTC (rev 1297)
@@ -53,6 +53,7 @@
         bool treatTinyAsBoolean;
         bool allowUserVariables;
         bool clearing;
+        bool interactiveSession;
 
         static MySqlConnectionStringBuilder()
         {
@@ -93,6 +94,7 @@
             defaultValues.Add(Keyword.DefaultCommandTimeout, 30);
             defaultValues.Add(Keyword.TreatTinyAsBoolean, true);
             defaultValues.Add(Keyword.AllowUserVariables, false);
+            defaultValues.Add(Keyword.InteractiveSession, false);
         }
 
         /// <summary>
@@ -685,6 +687,22 @@
             }
         }
 
+#if !CF && !MONO
+        [Category("Advanced")]
+        [DisplayName("Interactive Session")]
+        [Description("Should this session be considered interactive?")]
+        [DefaultValue(false)]
+        [RefreshProperties(RefreshProperties.All)]
+#endif
+        public bool InteractiveSession
+        {
+            get { return interactiveSession; }
+            set
+            {
+                SetValue("Interactive Session", value);
+                interactiveSession = value;
+            }
+        }
         #endregion
 
         #region Pooling Properties
@@ -1114,6 +1132,9 @@
                     return Keyword.TreatTinyAsBoolean;
                 case "allow user variables":
                     return Keyword.AllowUserVariables;
+                case "interactive":
+                case "interactive session":
+                    return Keyword.InteractiveSession;
             }
             throw new ArgumentException(Resources.KeywordNotSupported, key);
         }
@@ -1196,6 +1217,8 @@
                     return treatTinyAsBoolean;
                 case Keyword.AllowUserVariables:
                     return allowUserVariables;
+                case Keyword.InteractiveSession:
+                    return interactiveSession;
                 default:
                     return null; /* this will never happen */
             }
@@ -1293,6 +1316,8 @@
                     treatTinyAsBoolean = ConvertToBool(value); break;
                 case Keyword.AllowUserVariables:
                     allowUserVariables = ConvertToBool(value); break;
+                case Keyword.InteractiveSession:
+                    interactiveSession = ConvertToBool(value); break;
             }
         }
 
@@ -1472,6 +1497,7 @@
         BlobAsUTF8ExcludePattern,
         DefaultCommandTimeout,
         TreatTinyAsBoolean,
-        AllowUserVariables
+        AllowUserVariables,
+        InteractiveSession
     }
 }

Modified: trunk/MySql.Data/Provider/Source/MySqlPool.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/MySqlPool.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Provider/Source/MySqlPool.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -20,12 +20,9 @@
 
 using System;
 using System.Collections;
-using System.Threading;
 using System.Collections.Generic;
 using System.Diagnostics;
-#if CF
-using MySql.Data.Common;
-#endif
+using System.Threading;
 
 namespace MySql.Data.MySqlClient
 {
@@ -46,13 +43,18 @@
 		private uint maxSize;
         private ProcedureCache procedureCache;
         private Object lockObject;
-        private Semaphore poolGate;
         private bool beingCleared;
+        private int available;
+        private AutoResetEvent autoEvent;
 
 		public MySqlPool(MySqlConnectionStringBuilder settings)
 		{
 			minSize = settings.MinimumPoolSize;
 			maxSize = settings.MaximumPoolSize;
+
+            available = (int)maxSize;
+            autoEvent = new AutoResetEvent(false);
+
             if (minSize > maxSize)
                 minSize = maxSize;
 			this.settings = settings;
@@ -65,11 +67,10 @@
 #endif
 
 			// prepopulate the idle pool to minSize
-			for (int i=0; i < minSize; i++) 
-				CreateNewPooledConnection();
+            for (int i = 0; i < minSize; i++)
+                idlePool.Enqueue(CreateNewPooledConnection());
 
             procedureCache = new ProcedureCache((int)settings.ProcedureCacheSize);
-            poolGate = new Semaphore((int)maxSize, (int)maxSize);
 
             // we don't really need to create this but it makes the code a bit cleaner
             lockObject = new Object();
@@ -147,27 +148,29 @@
         /// </summary>
         private Driver GetPooledConnection()
 		{
-            while (true)
-            {
-                // if we don't have an idle connection then we must have room
-                // for a new connection since poolGate let us in
-                if (!HasIdleConnections)
-                    CreateNewPooledConnection();
+            Driver driver = null;
 
-                Driver d = CheckoutConnection();
-                if (d != null)
-                    return d;
-            }
-		}
+            // if we don't have an idle connection but we have room for a new
+            // one, then create it here.
+            if (!HasIdleConnections)
+                driver = CreateNewPooledConnection();
+            else
+                driver = CheckoutConnection();
+            Debug.Assert(driver != null);
+            inUsePool.Add(driver);
+            return driver;
+        }
 
         /// <summary>
         /// It is assumed that this method is only called from inside an active lock.
         /// </summary>
-		private void CreateNewPooledConnection()
+		private Driver CreateNewPooledConnection()
 		{
+            Debug.Assert((maxSize - NumConnections) > 0, "Pool out of sync.");
+
             Driver driver = Driver.Create(settings);
             driver.Pool = this;
-            idlePool.Enqueue(driver);
+            return driver;
         }
 
 		public void ReleaseConnection(Driver driver)
@@ -185,9 +188,8 @@
                 else
                     idlePool.Enqueue(driver);
 
-                // we now either have a connection available or have room to make
-                // one so we release one slot in our semaphore
-                poolGate.Release();
+                Interlocked.Increment(ref available);
+                autoEvent.Set();
             }
         }
 
@@ -205,7 +207,8 @@
                 if (inUsePool.Contains(driver))
                 {
                     inUsePool.Remove(driver);
-                    poolGate.Release();
+                    Interlocked.Increment(ref available);
+                    autoEvent.Set();
                 }
 
                 // if we are being cleared and we are out of connections then have
@@ -215,32 +218,45 @@
             }
         }
 
+        private Driver TryToGetDriver()
+        {
+            int count = Interlocked.Decrement(ref available);
+            if (count < 0)
+            {
+                Interlocked.Increment(ref available);
+                return null;
+            }
+            try
+            {
+                Driver driver = GetPooledConnection();
+                return driver;
+            }
+            catch (Exception ex)
+            {
+                if (settings.Logging)
+                    Logger.LogException(ex);
+                Interlocked.Increment(ref available);
+                throw;
+            }
+        }
+
 		public Driver GetConnection() 
 		{
-			int ticks = (int)settings.ConnectionTimeout * 1000;
+			int fullTimeOut = (int)settings.ConnectionTimeout * 1000;
+            int timeOut = fullTimeOut;
 
-            // wait till we are allowed in
-            bool allowed = poolGate.WaitOne(ticks, false);
-            if (! allowed)
-                throw new MySqlException(Resources.TimeoutGettingConnection);
+            DateTime start = DateTime.Now;
 
-            // if we get here, then it means that we either have an idle connection
-            // or room to make a new connection
-            lock (lockObject)
+            while (timeOut > 0)
             {
-                try
-                {
-                    Driver d = GetPooledConnection();
-                    return d;
-                }
-                catch (Exception ex)
-                {
-                    if (settings.Logging)
-                        Logger.LogException(ex);
-                    poolGate.Release();
-                    throw;
-                }
+                Driver driver = TryToGetDriver();
+                if (driver != null) return driver;
+
+                // We have no tickets right now, lets wait for one.
+                if (!autoEvent.WaitOne(timeOut, false)) break;
+                timeOut = fullTimeOut -
(int)DateTime.Now.Subtract(start).TotalMilliseconds;
             }
+            throw new MySqlException(Resources.TimeoutGettingConnection);
 		}
 
         /// <summary>

Modified: trunk/MySql.Data/Provider/Source/MySqlPoolManager.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/MySqlPoolManager.cs	2008-05-08 15:07:50 UTC (rev
1296)
+++ trunk/MySql.Data/Provider/Source/MySqlPoolManager.cs	2008-05-08 15:20:49 UTC (rev
1297)
@@ -66,10 +66,7 @@
 			MySqlPool pool = driver.Pool;
 			if (pool == null) return;
 
-            lock (pools.SyncRoot)
-            {
-                pool.RemoveConnection(driver);
-            }
+            pool.RemoveConnection(driver);
         }
 
         public static void ReleaseConnection(Driver driver)
@@ -77,10 +74,7 @@
 			MySqlPool pool = driver.Pool;
 			if (pool == null) return;
 			
-			lock (pools.SyncRoot)
-            {
-                pool.ReleaseConnection(driver);
-            }
+            pool.ReleaseConnection(driver);
         }
 
         public static void ClearPool(MySqlConnectionStringBuilder settings)

Modified: trunk/MySql.Data/Provider/Source/NativeDriver.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/NativeDriver.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Provider/Source/NativeDriver.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -366,6 +366,10 @@
             // allow load data local infile
             flags |= ClientFlags.LOCAL_FILES;
 
+            // did the user request an interactive session?
+            if (Settings.InteractiveSession)
+                flags |= ClientFlags.INTERACTIVE;
+
             // if the server allows it and a database was specified, then indicate
             // that we will connect with a database name
             if ((serverCaps & ClientFlags.CONNECT_WITH_DB) != 0 &&

Modified: trunk/MySql.Data/Provider/Source/SchemaProvider.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/SchemaProvider.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Provider/Source/SchemaProvider.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -295,7 +295,7 @@
             dt.Columns.Add("COLUMN_NAME", typeof (string));
             dt.Columns.Add("ORDINAL_POSITION", typeof (int));
 
-            string[] tableRestrictions = new string[restrictions.Length];
+            string[] tableRestrictions = new string[Math.Max(restrictions.Length, 4)]; 
             restrictions.CopyTo(tableRestrictions, 0);
             tableRestrictions[3] = "BASE TABLE";
             DataTable tables = GetTables(tableRestrictions);

Modified: trunk/MySql.Data/Provider/Source/Statement.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/Statement.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Provider/Source/Statement.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -328,6 +328,7 @@
                 else if (c == '\\')
                     escaped = !escaped;
                 else if (sqlPart.Length == 1 && sqlPart[0] == '@' && c ==
'@') { }
+                else if (sqlPart.Length > 0 && sqlPart[0] == '?' && c
== '@') { }
                 else if ((c == '@' || c == '?') && delim == Char.MinValue
&& !escaped)
                 {
                     tokens.Add(sqlPart.ToString());

Modified: trunk/MySql.Data/Provider/Source/StoredProcedure.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/StoredProcedure.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Provider/Source/StoredProcedure.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -118,6 +118,14 @@
             return ds;
         }
 
+        public static string GetFlags(string dtd)
+        {
+            int x = dtd.Length - 1;
+            while (x > 0 && (Char.IsLetterOrDigit(dtd[x]) || dtd[x] == ' '))
+                x--;
+            return dtd.Substring(x).ToUpper(CultureInfo.InvariantCulture);
+        }
+
         public override void Resolve()
         {
             // first retrieve the procedure definition from our
@@ -142,13 +150,19 @@
                 string mode = (string) param["PARAMETER_MODE"];
                 string pName = (string) param["PARAMETER_NAME"];
 
+                // if the base parametr name starts with @ then our parameter must start
with ?
+                if (pName.StartsWith("@"))
+                    pName = "?" + pName;
+                else if (!pName.StartsWith("?"))
+                    pName = "@" + pName;
+
                 // make sure the parameters given to us have an appropriate
                 // type set if it's not already
                 MySqlParameter p = command.Parameters.GetParameterFlexible(pName, true);
                 if (!p.TypeHasBeenSet)
                 {
                     string datatype = (string) param["DATA_TYPE"];
-                    bool unsigned = param["FLAGS"].ToString().IndexOf("UNSIGNED") != -1;
+                    bool unsigned =
GetFlags(param["DTD_IDENTIFIER"].ToString()).IndexOf("UNSIGNED") != -1;
                     bool real_as_float =
procTable.Rows[0]["SQL_MODE"].ToString().IndexOf("REAL_AS_FLOAT") != -1;
                     p.MySqlDbType = MetaData.NameToType(datatype, unsigned,
real_as_float, Connection);
                 }

Deleted: trunk/MySql.Data/Provider/Source/cf/Semaphore.cs
===================================================================
--- trunk/MySql.Data/Provider/Source/cf/Semaphore.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Provider/Source/cf/Semaphore.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -1,73 +0,0 @@
-// 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.Threading;
-using System.Runtime.InteropServices;
-
-namespace MySql.Data.Common
-{
-    internal class Semaphore : WaitHandle
-    {
-        public Semaphore(int initialCount, int maximumCount)
-        {
-            IntPtr handle = CreateSemaphore(IntPtr.Zero, initialCount, 
-                maximumCount, null);
-            if (handle.Equals(IntPtr.Zero))
-            {
-                throw new Exception("Unable to create semaphore");
-            }
-            base.Handle = handle;
-        }
-
-        public int Release()
-        {
-            IntPtr previous = IntPtr.Zero;
-            if (!ReleaseSemaphore(base.Handle, 1, previous))
-                throw new Exception("Unable to release semaphore");
-            return previous.ToInt32();
-        }
-
-        public override bool WaitOne(int millisecondsTimeout, bool exitContext)
-        {
-            if ((millisecondsTimeout < 0) && (millisecondsTimeout != -1))
-                throw new ArgumentOutOfRangeException("millisecondsTimeout");
-
-            if (exitContext)
-                throw new ArgumentException(null, "exitContext");
-
-            int result = WaitForSingleObject(Handle, millisecondsTimeout);
-            if (0 == result) return true;
-            return false;
-        }
-
-        [DllImport("coredll")]
-        static extern bool ReleaseSemaphore(IntPtr hSemaphore, 
-            int lReleaseCount, IntPtr lpPreviousCount);
-
-        [DllImport("coredll", SetLastError = true)]
-        private static extern IntPtr CreateSemaphore(
-            IntPtr securityAttributes, int initialCount, 
-            int maximumCount, string name);
-
-        [DllImport("coredll", SetLastError = true)]
-        private static extern int WaitForSingleObject(IntPtr handle, int millis);
-    }
-}

Modified: trunk/MySql.Data/Provider/Source/docs/MySqlConnection.xml
===================================================================
--- trunk/MySql.Data/Provider/Source/docs/MySqlConnection.xml	2008-05-08 15:07:50 UTC (rev
1296)
+++ trunk/MySql.Data/Provider/Source/docs/MySqlConnection.xml	2008-05-08 15:20:49 UTC (rev
1297)
@@ -875,8 +875,8 @@
             <td>Port</td>
             <td>3306</td>
             <td>
-              The port MySQL is using to listen for connections.  Specify -1 for this
value to use a
-              named pipe connection (Windows only). This value is ignored if Unix socket
is used.
+              The port MySQL is using to listen for connections.  This value is ignored
if the connection protocol 
+              is anything but socket.
             </td>
           </tr>
           <tr>
@@ -1086,6 +1086,13 @@
               Should the provider expect user variables in the SQL.
             </td>
           </tr>
+          <tr>
+            <td>Interactive -or- Interactive Session</td>
+            <td>false</td>
+            <td>
+              Should this session be considered interactive?
+            </td>
+          </tr>
         </table>
       </div>
       <para>

Modified: trunk/MySql.Data/Tests/MySql.Data.Tests.csproj
===================================================================
--- trunk/MySql.Data/Tests/MySql.Data.Tests.csproj	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Tests/MySql.Data.Tests.csproj	2008-05-08 15:20:49 UTC (rev 1297)
@@ -36,7 +36,10 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="MbUnit.Framework, Version=1.0.2700.29885, Culture=neutral,
PublicKeyToken=5e72ecd30bc408d5" />
+    <Reference Include="nunit.framework, Version=2.4.7.0, Culture=neutral,
PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\..\..\Program Files\NUnit
2.4.7\bin\nunit.framework.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.configuration" />
     <Reference Include="System.Data" />

Modified: trunk/MySql.Data/Tests/Source/AsyncTests.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/AsyncTests.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Tests/Source/AsyncTests.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -21,7 +21,7 @@
 using System;
 using System.Data;
 using MySql.Data.MySqlClient;
-using MbUnit.Framework;
+using NUnit.Framework;
 
 namespace MySql.Data.MySqlClient.Tests
 {
@@ -33,7 +33,6 @@
 		{
 			if (version < new Version(5, 0)) return;
 
-			execSQL("DROP TABLE IF EXISTS test");
 			execSQL("CREATE TABLE test (id int)");
 			execSQL("CREATE PROCEDURE spTest() BEGIN SET @x=0; REPEAT INSERT INTO test VALUES(@x);
" +
 				"SET @x=@x+1; UNTIL @x = 300 END REPEAT; END");
@@ -71,7 +70,6 @@
 		{
 			if (version < new Version(5, 0)) return;
 
-			execSQL("DROP TABLE IF EXISTS test");
 			execSQL("CREATE TABLE test (id int)");
 			execSQL("CREATE PROCEDURE spTest() BEGIN INSERT INTO test VALUES(1); " +
 				"SELECT SLEEP(2); SELECT 'done'; END");

Modified: trunk/MySql.Data/Tests/Source/BaseTest.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/BaseTest.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Tests/Source/BaseTest.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 
 using System;
-using MbUnit.Framework;
+using NUnit.Framework;
 using System.Configuration;
 using System.Data;
 using MySql.Data.MySqlClient;
@@ -108,46 +108,12 @@
             connStr += GetConnectionInfo();
             rootConn = new MySqlConnection(connStr);
             rootConn.Open();
-
-            // now create our databases
-			suExecSQL(String.Format("DROP DATABASE IF EXISTS `{0}`; CREATE DATABASE `{0}`",
database0));
-			suExecSQL(String.Format("DROP DATABASE IF EXISTS `{0}`; CREATE DATABASE `{0}`",
database1));
-
-            // now allow our user to access them
-            suExecSQL(String.Format(@"GRANT ALL ON `{0}`.* to 'test'@'localhost' 
-				identified by 'test'", database0));
-            suExecSQL(String.Format(@"GRANT ALL ON `{0}`.* to 'test'@'localhost' 
-				identified by 'test'", database1));
-			suExecSQL(String.Format(@"GRANT ALL ON `{0}`.* to 'test'@'%' 
-				identified by 'test'", database0));
-			suExecSQL(String.Format(@"GRANT ALL ON `{0}`.* to 'test'@'%' 
-				identified by 'test'", database1));
-			suExecSQL("FLUSH PRIVILEGES");
-
-            rootConn.ChangeDatabase(database0);
-
-            Open();
-
-            if (maxPacketSize == 0)
-            {
-                MySqlCommand cmd = new MySqlCommand("SELECT @@max_allowed_packet", conn);
-                using (MySqlDataReader reader = cmd.ExecuteReader())
-                {
-                    reader.Read();
-                    maxPacketSize = (int)reader.GetUInt64(0);
-                }
-            }
-            Assert.IsTrue(maxPacketSize < 1500000);
         }
 
         [TestFixtureTearDown]
         public virtual void TestFixtureTearDown()
         {
-			suExecSQL(String.Format("DROP DATABASE IF EXISTS `{0}`", database0));
-			suExecSQL(String.Format("DROP DATABASE IF EXISTS `{0}`", database1));
-
             rootConn.Close();
-            Close();
         }
 
         #region Properties
@@ -168,7 +134,8 @@
         protected string GetConnectionStringBasic(bool includedb)
         {
             string connStr = String.Format("server={0};user id={1};password={2};" +
-                 "persist security info=true;allow user variables=true;", host, user,
password);
+                 "persist security info=true;connection reset=true;allow user
variables=true;", 
+                 host, user, password);
             if (includedb)
                 connStr += String.Format("database={0};", database0);
             if (!pooling)
@@ -247,17 +214,24 @@
         {
             try
             {
-                pooling = true;
-                IDataReader reader = execReader("SHOW TABLES LIKE 'Test'");
-                bool exists = reader.Read();
-                reader.Close();
-                if (exists)
-                    execSQL("TRUNCATE TABLE Test");
-                if (Version >= new Version(5,0))
-                {
-                    execSQL("DROP PROCEDURE IF EXISTS spTest");
-                    execSQL("DROP FUNCTION IF EXISTS fnTest");
-                }
+                // now create our databases
+                suExecSQL(String.Format("DROP DATABASE IF EXISTS `{0}`; CREATE DATABASE
`{0}`", database0));
+                suExecSQL(String.Format("DROP DATABASE IF EXISTS `{0}`; CREATE DATABASE
`{0}`", database1));
+
+                // now allow our user to access them
+                suExecSQL(String.Format(@"GRANT ALL ON `{0}`.* to 'test'@'localhost' 
+				identified by 'test'", database0));
+                suExecSQL(String.Format(@"GRANT ALL ON `{0}`.* to 'test'@'localhost' 
+				identified by 'test'", database1));
+                suExecSQL(String.Format(@"GRANT ALL ON `{0}`.* to 'test'@'%' 
+				identified by 'test'", database0));
+                suExecSQL(String.Format(@"GRANT ALL ON `{0}`.* to 'test'@'%' 
+				identified by 'test'", database1));
+                suExecSQL("FLUSH PRIVILEGES");
+
+                rootConn.ChangeDatabase(database0);
+
+                Open();
             }
             catch (Exception ex)
             {
@@ -268,13 +242,9 @@
         [TearDown]
         public virtual void Teardown()
         {
-            execSQL("DROP TABLE IF EXISTS test");
-            if (Version >= new Version(5, 0))
-            {
-                execSQL("DROP VIEW IF EXISTS view1");
-                execSQL("DROP PROCEDURE IF EXISTS spTest");
-                execSQL("DROP FUNCTION IF EXISTS fnTest");
-            }
+            suExecSQL(String.Format("DROP DATABASE IF EXISTS `{0}`", database0));
+            suExecSQL(String.Format("DROP DATABASE IF EXISTS `{0}`", database1));
+            Close();
         }
 
         protected void KillConnection(MySqlConnection c)

Modified: trunk/MySql.Data/Tests/Source/BlobTests.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/BlobTests.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Tests/Source/BlobTests.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -22,7 +22,7 @@
 using System.Data;
 using System.Threading;
 using MySql.Data.MySqlClient;
-using MbUnit.Framework;
+using NUnit.Framework;
 
 namespace MySql.Data.MySqlClient.Tests
 {
@@ -397,7 +397,7 @@
 
 	#region Configs
 #if !CF
-	[TestCategory("Compressed")]
+	[Category("Compressed")]
 	public class BlobTestsSocketCompressed : BlobTests
 	{
 		protected override string GetConnectionInfo()
@@ -406,7 +406,7 @@
 		}
 	}
 
-	[TestCategory("Pipe")]
+	[Category("Pipe")]
 	public class BlobTestsPipe : BlobTests
 	{
 		protected override string GetConnectionInfo()
@@ -415,7 +415,8 @@
 		}
 	}
 
-	[TestCategory("Compressed", "Pipe")]
+	[Category("Compressed")]
+    [Category("Pipe")]
 	public class BlobTestsPipeCompressed : BlobTests
 	{
 		protected override string GetConnectionInfo()
@@ -424,7 +425,7 @@
         }
 	}
 
-	[TestCategory("SharedMemory")]
+	[Category("SharedMemory")]
 	public class BlobTestsSharedMemory : BlobTests
 	{
 		protected override string GetConnectionInfo()
@@ -433,7 +434,8 @@
 		}
 	}
 
-	[TestCategory("Compressed", "SharedMemory")]
+	[Category("Compressed")]
+    [Category("SharedMemory")]
 	public class BlobTestsSharedMemoryCompressed : BlobTests
 	{
 		protected override string GetConnectionInfo()

Modified: trunk/MySql.Data/Tests/Source/BulkLoading.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/BulkLoading.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Tests/Source/BulkLoading.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -21,7 +21,7 @@
 using System;
 using System.Data;
 using MySql.Data.MySqlClient;
-using MbUnit.Framework;
+using NUnit.Framework;
 using System.IO;
 
 namespace MySql.Data.MySqlClient.Tests

Modified: trunk/MySql.Data/Tests/Source/CharacterSetTests.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/CharacterSetTests.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Tests/Source/CharacterSetTests.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -48,7 +48,7 @@
 
 
-
 

Modified: trunk/MySql.Data/Tests/Source/CommandBuilderTests.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/CommandBuilderTests.cs	2008-05-08 15:07:50 UTC (rev
1296)
+++ trunk/MySql.Data/Tests/Source/CommandBuilderTests.cs	2008-05-08 15:20:49 UTC (rev
1297)
@@ -20,7 +20,7 @@
 
 using System;
 using System.Data;
-using MbUnit.Framework;
+using NUnit.Framework;
 
 namespace MySql.Data.MySqlClient.Tests
 {
@@ -32,7 +32,6 @@
         {
             base.Setup();
 
-            execSQL("DROP TABLE IF EXISTS Test");
             execSQL("CREATE TABLE Test (id INT NOT NULL, name VARCHAR(100), dt DATETIME,
tm TIME,  `multi word` int, PRIMARY KEY(id))");
         }
 

Modified: trunk/MySql.Data/Tests/Source/CommandTests.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/CommandTests.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Tests/Source/CommandTests.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -21,7 +21,7 @@
 using System;
 using System.Data;
 using MySql.Data.MySqlClient;
-using MbUnit.Framework;
+using NUnit.Framework;
 using System.Threading;
 
 namespace MySql.Data.MySqlClient.Tests
@@ -440,7 +440,7 @@
     }
 
 #if !CF
-    [TestCategory("Pipe")]
+    [Category("Pipe")]
     public class CommandTestsPipe : CommandTests
     {
         protected override string GetConnectionInfo()
@@ -449,7 +449,8 @@
         }
     }
 
-    [TestCategory("Compressed", "Pipe")]
+    [Category("Compressed")]
+    [Category("Pipe")]
     public class CommandTestsPipeCompressed : CommandTests
     {
         protected override string GetConnectionInfo()
@@ -458,7 +459,7 @@
         }
     }
 
-    [TestCategory("SharedMemory")]
+    [Category("SharedMemory")]
     public class CommandTestsSharedMemory : CommandTests
     {
         protected override string GetConnectionInfo()
@@ -467,7 +468,8 @@
         }
     }
 
-    [TestCategory("Compressed", "SharedMemory")]
+    [Category("Compressed")]
+    [Category("SharedMemory")]
     public class CommandTestsSharedMemoryCompressed : CommandTests
     {
         protected override string GetConnectionInfo()

Modified: trunk/MySql.Data/Tests/Source/ConnectionStringBuilder.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/ConnectionStringBuilder.cs	2008-05-08 15:07:50 UTC (rev
1296)
+++ trunk/MySql.Data/Tests/Source/ConnectionStringBuilder.cs	2008-05-08 15:20:49 UTC (rev
1297)
@@ -21,7 +21,7 @@
 using System;
 using System.Data;
 using System.IO;
-using MbUnit.Framework;
+using NUnit.Framework;
 
 namespace MySql.Data.MySqlClient.Tests
 {

Modified: trunk/MySql.Data/Tests/Source/ConnectionTests.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/ConnectionTests.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Tests/Source/ConnectionTests.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -21,7 +21,7 @@
 using System;
 using System.Data;
 using MySql.Data.MySqlClient;
-using MbUnit.Framework;
+using NUnit.Framework;
 using System.Configuration;
 
 namespace MySql.Data.MySqlClient.Tests
@@ -473,5 +473,15 @@
                 Assert.Fail(ex.Message);
             }
         }
+
+        /// <summary>
+        /// Bug #35619 creating a MySql connection from toolbox generates an error 
+        /// </summary>
+        [Test]
+        public void NullConnectionString()
+        {
+            MySqlConnection c = new MySqlConnection();
+            c.ConnectionString = null;
+        }
     }
 }

Modified: trunk/MySql.Data/Tests/Source/CultureTests.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/CultureTests.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Tests/Source/CultureTests.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -23,7 +23,7 @@
 using System.IO;
 using System.Globalization;
 using System.Threading;
-using MbUnit.Framework;
+using NUnit.Framework;
 
 namespace MySql.Data.MySqlClient.Tests
 {

Modified: trunk/MySql.Data/Tests/Source/DataAdapterTests.cs
===================================================================
--- trunk/MySql.Data/Tests/Source/DataAdapterTests.cs	2008-05-08 15:07:50 UTC (rev 1296)
+++ trunk/MySql.Data/Tests/Source/DataAdapterTests.cs	2008-05-08 15:20:49 UTC (rev 1297)
@@ -22,7 +22,7 @@
 using MySql.Data.MySqlClient;
 using MySql.Data.Types;
 using System.Data;
-using MbUnit.Framework;
+using NUnit.Framework;
 
 namespace MySql.Data.MySqlClient.Tests
 {
@@ -41,7 +41,6 @@
 		{
 			base.Setup();
 
-			execSQL("DROP TABLE IF EXISTS Test");
 			execSQL("CREATE TABLE Test (id INT NOT NULL AUTO_INCREMENT, " +
                 "id2 INT NOT NULL, name VARCHAR(100), dt DATETIME, tm TIME, " +
                 "ts TIMESTAMP, OriginalId INT, PRIMARY KEY(id, id2))");
@@ -539,35 +538,28 @@
             execSQL("CREATE TABLE Test (id INT, PRIMARY KEY(id))");
             execSQL("INSERT INTO Test VALUES(1)");
 
-            try
-            {
-                MySqlConnecti