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'>(&VS2005Int=2) OR
(&VS2005Int=3)</Custom>
- <Custom Action='VS_2005_SetupRun'
After='VS_2005_Setup'>(&VS2005Int=2) OR (&VS2005Int=3)</Custom>
- </InstallExecuteSequence>
+ <!-- vs2005 scheduling -->
+ <Custom Action='VS_2005_INSTALL'
Before='InstallFinalize'>(&VS2005Int=3) AND NOT(!VS2005Int=3)</Custom>
+ <Custom Action='VS_2005_INSTALL_EXEC'
After='VS_2005_INSTALL'>(&VS2005Int=3) AND NOT(!VS2005Int=3)</Custom>
+ <Custom Action='VS_2005_REMOVE'
Before="RemoveFiles">&VS2005Int=2</Custom>
+ <Custom Action='VS_2005_REMOVE_EXEC'
After='VS_2005_REMOVE'>&VS2005Int=2</Custom>
+
+ <Custom Action='VS_2005_SETUP'
Before='InstallFinalize'>(&VS2005Int=2) OR
(&VS2005Int=3)</Custom>
+ <Custom Action='VS_2005_SETUP_EXEC'
After='VS_2005_SETUP'>(&VS2005Int=2) OR (&VS2005Int=3)</Custom>
+
+ <!-- now vs2008 scheduling -->
+ <Custom Action='VS_2008_INSTALL'
Before='InstallFinalize'>(&VS2008Int=3) AND NOT(!VS2008Int=3)</Custom>
+ <Custom Action='VS_2008_INSTALL_EXEC'
After='VS_2008_INSTALL'>(&VS2008Int=3) AND NOT(!VS2008Int=3)</Custom>
+
+ <Custom Action='VS_2008_REMOVE'
Before="RemoveFiles">&VS2008Int=2</Custom>
+ <Custom Action='VS_2008_REMOVE_EXEC'
After='VS_2008_REMOVE'>&VS2008Int=2</Custom>
+
+ <Custom Action='VS_2008_SETUP'
Before='InstallFinalize'>(&VS2008Int=2) OR
(&VS2008Int=3)</Custom>
+ <Custom Action='VS_2008_SETUP_EXEC'
After='VS_2008_SETUP'>(&VS2008Int=2) OR (&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'>(&VS2008Int=2) OR
(&VS2008Int=3)</Custom>
- <Custom Action='VS_2008_SetupRun'
After='VS_2008_Setup'>(&VS2008Int=2) OR (&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