List:Commits« Previous MessageNext Message »
From:rburnett Date:November 27 2006 5:12pm
Subject:Connector/NET commit: r463 - in trunk: . mysqlclient
View as plain text  
Added:
   trunk/mysqlclient/ClientDriver.cs
   trunk/mysqlclient/EmbeddedAPI.cs
   trunk/mysqlclient/EmbeddedDriver.cs
Removed:
   trunk/MySQLClient.Design.csproj.user
   trunk/MySqlClient.build
Log:
Added back in the client and embedded driver files.  We'll disable them with an #if false
until they are ready.

Also, deleted mysqlclient.build and a user option file that is no longer used.

Deleted: trunk/MySQLClient.Design.csproj.user
===================================================================
--- trunk/MySQLClient.Design.csproj.user	2006-11-27 15:57:12 UTC (rev 462)
+++ trunk/MySQLClient.Design.csproj.user	2006-11-27 16:12:19 UTC (rev 463)
@@ -1,48 +0,0 @@
-<VisualStudioProject>
-    <CSHARP LastOpenVersion = "7.10.3077" >
-        <Build>
-            <Settings ReferencePath =
"D:\Projects\ByteFX\ByteFX.Data\bin\Release\;D:\Projects\ByteFX\ByteFX.Data\bin\Debug\;C:\Work\Connector
.NET\bin\Debug\" >
-                <Config
-                    Name = "Debug"
-                    EnableASPDebugging = "false"
-                    EnableASPXDebugging = "false"
-                    EnableUnmanagedDebugging = "false"
-                    EnableSQLServerDebugging = "false"
-                    RemoteDebugEnabled = "false"
-                    RemoteDebugMachine = ""
-                    StartAction = "Project"
-                    StartArguments = ""
-                    StartPage = ""
-                    StartProgram = ""
-                    StartURL = ""
-                    StartWorkingDirectory = ""
-                    StartWithIE = "true"
-                />
-                <Config
-                    Name = "Release"
-                    EnableASPDebugging = "false"
-                    EnableASPXDebugging = "false"
-                    EnableUnmanagedDebugging = "false"
-                    EnableSQLServerDebugging = "false"
-                    RemoteDebugEnabled = "false"
-                    RemoteDebugMachine = ""
-                    StartAction = "Project"
-                    StartArguments = ""
-                    StartPage = ""
-                    StartProgram = ""
-                    StartURL = ""
-                    StartWorkingDirectory = ""
-                    StartWithIE = "true"
-                />
-            </Settings>
-        </Build>
-        <OtherProjectSettings
-            CopyProjectDestinationFolder = ""
-            CopyProjectUncPath = ""
-            CopyProjectOption = "0"
-            ProjectView = "ProjectFiles"
-            ProjectTrust = "0"
-        />
-    </CSHARP>
-</VisualStudioProject>
-

Deleted: trunk/MySqlClient.build
===================================================================
--- trunk/MySqlClient.build	2006-11-27 15:57:12 UTC (rev 462)
+++ trunk/MySqlClient.build	2006-11-27 16:12:19 UTC (rev 463)
@@ -1,152 +0,0 @@
-<project name="MySqlClient" default="Debug"
xmlns="http://nant.sf.net/schemas/nant-0.84.win32.net-1.0.xsd">
-	<description>MySQLClient Managed Provider for MySQL</description>
-
-	<property name="gac" value="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\"/>
-
-	<mkdir dir="doc"/>
-	<ifnot propertyexists="debug">
-		<property name="debug" value="true"/>
-		<property name="opt" value="false"/>
-		<property name="buildType" value="debug"/>
-	</ifnot>
-	
-	<ifnot propertytrue="debug">
-		<property name="opt" value="true"/>
-		<property name="buildType" value="release"/>
-	</ifnot>
-	
-	<target name="All" depends="Client1.1,Client1.0" />
-
-	<!-- filesets -->
-	<fileset id="Source">
-		<includes name="mysqlclient/common/*.cs"/>
-		<includes name="mysqlclient/Types/*.cs"/>
-		<includes name="mysqlclient/*.cs"/>
-	</fileset>
-	
-	<!-- commercial target -->
-	<target name="Commercial">
-		<copy todir="temp">
-			<fileset refid="Source"/>
-		</copy>
-		
-		<replacetext>
-			<section fromfile="gpl-banner.txt" tofile="commercial-banner.txt"/>
-			<files basedir="temp">
-				<includes name="mysqlclient/common/*.cs"/>
-				<includes name="mysqlclient/*.cs"/>
-				<includes name="mysqlclient/Types/*.cs"/>
-				<includes name="TestSuite/*.cs"/>
-			</files>
-		</replacetext>
-	</target>
-
-	<!-- core managed driver target 1.1 -->	
-	<target name="Client1.1" description="Core client target">
-		<property name="nant.settings.currentframework" value="net-1.1"/>
-		<mkdir dir="bin1.1/${buildType}" failonerror="false"/>
-		<csc output="bin1.1/${buildType}/MySql.Data.dll" target="library" debug="${debug}"
optimize="${opt}" doc="doc/clientdoc.xml">
-			<references>
-				<includes name="ICSharpCode.SharpZipLib.dll"/>
-			</references>
-			<sources refid="Source"/>
-		</csc>
-	</target>
-
-	<!-- core managed driver target 1.0 -->	
-	<target name="Client1.0" description="Core client target">
-		<property name="nant.settings.currentframework" value="net-1.0"/>
-		<mkdir dir="bin1.0/${buildType}" failonerror="false"/>
-		<csc output="bin1.0/${buildType}/MySql.Data.dll" target="library" debug="${debug}"
optimize="${opt}" doc="doc/clientdoc.xml">
-			<references>
-				<includes name="ICSharpCode.SharpZipLib.dll"/>
-			</references>
-			<sources refid="Source"/>
-		</csc>
-	</target>
-
-	<!-- Design target -->
-	<target name="Design" description="Design library">
-		<mkdir dir="${outDir}" failonerror="false"/>
-		<csc output="bin/MySql.Design.dll" target="library" debug="${debug}"
optimize="${opt}" doc="doc/designdoc.xml">
-			<sources>
-				<includes name="Common/platform.cs"/>
-				<includes name="MySqlClient.Design/*.cs"/>
-				<includes name="MySqlClient/ConnectionString.cs"/>
-			</sources>
-			<references defaultexcludes="false">
-				<includes name="${gac}/EnvDTE.dll"/>
-				<includes name="C:\Program Files\Microsoft Visual Studio .NET
2003\Common7\IDE\PublicAssemblies\Extensibility.dll"/>
-				<includes name="${gac}/office.dll"/>
-			</references>
-		</csc>
-	</target>
-	
-	<!-- Test suite target -->
-	<target name="Tests" description="Test suite">
-		<mkdir dir="${outDir}" failonerror="false"/>
-		<csc output="bin/MySql.Tests.dll" target="library" debug="${debug}"
optimize="${opt}">
-			<sources>
-				<includes name="TestSuite/*.cs"/>
-			</sources>
-			<references>
-				<includes name="${outDir}/MySql.Data.dll"/>
-				<includes name="${nantDir}/nunit.framework.dll"/>
-			</references>
-		</csc>
-	</target>
-
-    <!-- target to run the test suite -->
-	<target name="Test" description="Target to run NUnit tests" depends="All">
-		<mkdir dir="${outDir}/results"/>
-		<nunit2>
-			<formatter type="Xml" usefile="true" extension=".xml" outputdir="${outDir}/results"
/>
-			<test assemblyname="${outDir}/MySql.Tests.dll" appconfig="MySql.Tests.dll.config"
/>
-		</nunit2>
-	</target>
-	
-	<!-- documentation target -->
-	<target name="Docs" description="Documentation">
-		<ndoc>
-			<assemblies>
-				<includes name="${outDir}/MySQL.Data.dll" />
-			</assemblies>
-			<summaries>
-				<includes name="doc/clientdoc.xml"/>
-			</summaries>
-			<documentors>
-				<documenter name="MSDN">
-					<property name="OutputDirectory" value="doc/MSDN" />
-                    <property name="HtmlHelpName" value="NAnt" />
-                    <property name="HtmlHelpCompilerFilename" value="hhc.exe" />
-                    <property name="IncludeFavorites" value="False" />
-                    <property name="Title" value="MySQL ADO.Net Data Provider" />
-                    <property name="SplitTOCs" value="False" />
-                    <property name="DefaulTOC" value="" />
-                    <property name="ShowVisualBasic" value="True" />
-                    <property name="ShowMissingSummaries" value="True" />
-                    <property name="ShowMissingRemarks" value="True" />
-                    <property name="ShowMissingParams" value="True" />
-                    <property name="ShowMissingReturns" value="True" />
-                    <property name="ShowMissingValues" value="True" />
-                    <property name="DocumentInternals" value="False" />
-                    <property name="DocumentProtected" value="True" />
-                    <property name="DocumentPrivates" value="False" />
-                    <property name="DocumentEmptyNamespaces" value="False" />
-                    <property name="IncludeAssemblyVersion" value="False" />
-                    <property name="CopyrightText" value="Copyright MySQL AB 2004"
/>
-                    <property name="CopyrightHref" value="http://www.mysql.com" />
-				</documenter>
-			</documentors>
-		</ndoc>
-	</target>
-	
-	<!-- Remove all generated files target -->
-	<target name="Clean" description="Remove all generated files">
-		<delete failonerror="false">
-			<fileset>
-				<includes name="bin\*.*" />
-            </fileset>
-        </delete>
-    </target>
-</project>

Added: trunk/mysqlclient/ClientDriver.cs
===================================================================
--- trunk/mysqlclient/ClientDriver.cs	2006-11-27 15:57:12 UTC (rev 462)
+++ trunk/mysqlclient/ClientDriver.cs	2006-11-27 16:12:19 UTC (rev 463)
@@ -0,0 +1,411 @@
+// Copyright (C) 2004 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.IO;
+using System.Runtime.InteropServices;
+using MySql.Data.Types;
+
+namespace MySql.Data.MySqlClient
+{
+#if !CF
+	/// <summary>
+	/// Summary description for ClientDriver.
+	/// </summary>
+	internal class ClientDriver : Driver 
+	{
+		private IntPtr	mysql;
+		private IntPtr	resultSet;
+		private IntPtr	currentRow;
+		private uint[]	currentLengths;
+		private	int		resultsCount;
+
+		public ClientDriver(MySqlConnectionStringBuilder settings) : base(settings)
+		{
+			resultSet = IntPtr.Zero;
+			resultsCount = 0;
+		}
+
+		#region Properties
+
+		public override bool SupportsBatch
+		{
+			get	{ return true;	}
+		}
+
+//		public override bool HasMoreResults
+//		{
+//			get	{ return fieldCount > 0; }
+//		}
+
+
+		#endregion
+
+		public override void Open()
+		{
+			base.Open ();
+
+			mysql = Init(mysql);
+
+			ClientFlags flags = ClientFlags.FOUND_ROWS | ClientFlags.MULTI_RESULTS | 
+				ClientFlags.MULTI_STATEMENTS | ClientFlags.LOCAL_FILES;
+			if (connectionString.UseCompression)
+				flags |= ClientFlags.COMPRESS;
+			if (connectionString.UseSSL)
+				flags |= ClientFlags.SSL;
+
+			object timeout = connectionString.ConnectionTimeout;
+			SetOptions(mysql, ClientAPIOption.MYSQL_OPT_CONNECT_TIMEOUT, 
+				ref timeout);
+
+			//TODO: support charset, shared memory, named pipes
+
+			IntPtr result = Connect(mysql, connectionString.Server, connectionString.UserID,
+				connectionString.Password, connectionString.Database, connectionString.Port, 
+				null, (uint)flags);
+			if (result == IntPtr.Zero)
+			{
+				throw new MySqlException(ErrorMsg(mysql), ErrorNumber(mysql));
+			}
+
+			version = MySql.Data.Common.DBVersion.Parse(VersionString(mysql));
+			serverCharSet = CharacterSetName(mysql);
+		}
+
+		public override void Close()
+		{
+			Close(mysql);
+			mysql = IntPtr.Zero;
+
+			base.Close ();
+		}
+
+		public override bool Ping()
+		{
+			int val = Ping(mysql);
+			if (val == 0) return true;
+			isOpen = false;
+			return false;
+		}
+
+		public override void Query(byte[] bytes, int length)
+		{
+			int result = Query(mysql, bytes, (uint)length);
+			if (result != 0)
+				throw new MySqlException(ErrorMsg(mysql), ErrorNumber(mysql));
+
+			resultsCount = 0;
+		}
+
+		public override void SetDatabase(string dbName)
+		{
+			int result = SelectDatabase(mysql, dbName);
+			if (result == 0) return;
+
+			MySqlException e = new MySqlException(
+				ErrorMsg(mysql), ErrorNumber(mysql));
+			Logger.LogException(e);
+			throw e;
+		}
+
+		public override void Reset()
+		{
+
+		}
+
+
+		public override int PrepareStatement(string sql, ref MySqlField[] parameters)
+		{
+            IntPtr mysql_statement = StatementInit(mysql);
+            if (mysql_statement == IntPtr.Zero)
+                throw new MySqlException("Error initializing prepared statement");
+            int result = StatementPrepare(mysql_statement, sql, (uint)sql.Length);
+            if (result != 0)
+                throw new MySqlException(StatementError(mysql_statement), result);
+            return (int)mysql_statement;
+		}
+
+		public override long ReadResult(ref ulong affectedRows, ref long lastInsertId)
+		{
+			if (resultSet != IntPtr.Zero) 
+			{
+				FreeResult(resultSet);
+				resultSet = IntPtr.Zero;
+				if (! version.isAtLeast(4,1,0)) return -1;
+			}
+
+			if (version.isAtLeast(4,1,0)) 
+			{
+				if (resultsCount > 0) 
+				{
+					int result = NextResult(mysql);
+					if (result == -1) return -1;
+					if (result > 0)
+						throw new MySqlException( ErrorMsg(mysql), ErrorNumber(mysql));
+				}
+			}
+			else 
+			{
+				if (resultsCount > 0) return 0;
+			}
+
+			long numfields = GetFieldCount(mysql);
+			if (numfields > 0) 
+			{
+				// now we use the resultset
+				resultSet = UseResult(mysql);
+				if (resultSet == IntPtr.Zero)
+					throw new MySqlException(ErrorMsg(mysql), ErrorNumber(mysql));
+			}
+
+			if (numfields == 0) 
+			{
+				affectedRows = AffectedRows(mysql);
+				lastInsertId = (long)LastInsertId(mysql);
+			}
+			resultsCount++;
+			return numfields;
+		}
+
+		public override void SkipColumnValue(MySql.Data.Types.IMySqlValue valObject)
+		{
+			
+		}
+
+		public override IMySqlValue ReadColumnValue(int index, MySqlField field, IMySqlValue
value)
+		{
+			int dataPtr = (int)currentRow;
+			for (int i=0; i < index; i++)
+				dataPtr += 4;
+
+			IntPtr fieldPtr = Marshal.ReadIntPtr((IntPtr)dataPtr);
+			MySqlStreamReader reader = null;
+			if (fieldPtr != IntPtr.Zero) 
+			{
+				byte[] buf = new byte[currentLengths[index]];
+				Marshal.Copy(fieldPtr, buf, 0, buf.Length);
+				reader = new MySqlStreamReader(new MemoryStream(buf), encoding);
+			}
+			
+			return value.ReadValue(reader, currentLengths[index], fieldPtr == IntPtr.Zero); 
+		}
+
+		public override MySqlField[] ReadColumnMetadata(int count)
+		{
+			MySqlField[] fields = new MySqlField[count];
+
+			for (int i=0; i < count; i++)
+			{
+				ClientField fieldDef = FetchField(resultSet);
+				fields[i] = new MySqlField(this.Version);
+				fields[i].CatalogName = fieldDef.catalog;
+				fields[i].ColumnName = fieldDef.name;
+				fields[i].DatabaseName = fieldDef.db;
+				fields[i].OriginalColumnName = fieldDef.org_name;
+				fields[i].RealTableName = fieldDef.org_table;
+				fields[i].Type = fieldDef.type;
+				fields[i].Flags = (ColumnFlags)fieldDef.flags;
+				fields[i].ColumnLength = (int)fieldDef.length;
+				fields[i].Precision = (byte)fieldDef.decimals;
+				if (charSets != null && charSets.Count > 0) 
+				{
+					string charSetName = (string)charSets[(int)fieldDef.charset];
+					fields[i].Encoding = CharSetMap.GetEncoding(version, charSetName);
+				}
+			}
+
+			currentLengths = new uint[count];
+            return fields;
+		}
+
+//        public override bool ReadDataRow(int statementId, MySqlField[] fields, bool
seq)
+  //      {
+    //        return false;
+      //  }
+
+        public override bool SkipDataRow()
+        {
+            return false;
+        }
+
+        public override bool FetchDataRow(int statementId, int pageSize, int columns)
+        {
+			currentRow = FetchRow(resultSet);
+			if (currentRow == IntPtr.Zero) 
+			{
+				int err = ErrorNumber(mysql);
+				if (err == 0) 
+				{
+					//FreeResult(resultSet);
+					resultSet = IntPtr.Zero;
+					return false;
+				}
+				throw new MySqlException(ErrorMsg(mysql), err);
+			}
+
+			IntPtr lengths = FetchLengths(resultSet);
+			for (int i=0; i < columns; i++)
+			{
+				currentLengths[i] = (uint)Marshal.ReadInt32(lengths);
+				lengths = (IntPtr)((int)lengths + 4);
+			}
+			
+			return true;
+		}
+
+		public override void ExecuteStatement(byte[] bytes)
+		{
+
+            //TODO
+		}
+
+		#region Interface methods
+
+		protected virtual IntPtr Init(IntPtr mysql) 
+		{
+			return ClientAPI.Init(mysql);
+		}
+
+		protected virtual IntPtr Connect(IntPtr mysql, string host, string user,
+			string password, string db, uint port, string unix_socket, uint flag)
+		{
+			return ClientAPI.Connect(mysql, host, user, password, db, port, unix_socket, flag);
+		}
+
+		protected virtual int SetOptions(IntPtr mysql, ClientAPIOption option, ref object
optionValue)
+		{
+			return ClientAPI.SetOptions(mysql, option, ref optionValue);
+		}
+
+		protected virtual void Close(IntPtr mysql) 
+		{
+			ClientAPI.Close(mysql);
+		}
+
+		protected virtual int SelectDatabase(IntPtr mysql, string dbName) 
+		{
+			return ClientAPI.SelectDatabase(mysql, dbName);
+		}
+
+		protected virtual int Query(IntPtr mysql, byte[] query, uint len) 
+		{
+			return ClientAPI.Query(mysql, query, len);
+		}
+
+		protected virtual string ErrorMsg(IntPtr mysql)
+		{
+			return ClientAPI.ErrorMsg(mysql);
+		}
+
+		protected virtual int ErrorNumber(IntPtr mysql) 
+		{
+			return ClientAPI.ErrorNumber(mysql);
+		}
+
+		protected virtual IntPtr UseResult(IntPtr mysql)
+		{
+			return ClientAPI.UseResult(mysql);
+		}
+
+		protected virtual bool MoreResults(IntPtr mysql)
+		{
+			return ClientAPI.MoreResults(mysql);
+		}
+
+		protected virtual int NextResult(IntPtr mysql)
+		{
+			return ClientAPI.NextResult(mysql);
+		}
+
+		protected virtual void FreeResult(IntPtr resultSet) 
+		{
+			ClientAPI.FreeResult(resultSet);
+		}
+
+		protected virtual int GetFieldCount(IntPtr resultSet) 
+		{
+			return ClientAPI.FieldCount(resultSet);
+		}
+
+		protected virtual ulong AffectedRows(IntPtr mysql)
+		{
+			return ClientAPI.AffectedRows(mysql);
+		}
+
+		protected virtual ulong LastInsertId(IntPtr mysql)
+		{
+			return ClientAPI.LastInsertId(mysql);
+		}
+
+		protected virtual ClientField FetchField(IntPtr resultSet)
+		{
+			return ClientAPI.FetchField(resultSet);
+		}
+
+		protected virtual IntPtr FetchRow(IntPtr resultSet)
+		{
+			return ClientAPI.FetchRow(resultSet);
+		}
+		
+		protected virtual IntPtr FetchLengths(IntPtr resultSet)
+		{
+			return ClientAPI.FetchLengths(resultSet);
+		}
+
+		protected virtual int Ping(IntPtr mysql)
+		{
+			return ClientAPI.Ping(mysql);
+		}
+
+        protected virtual IntPtr StatementInit(IntPtr mysql)
+        {
+            return ClientAPI.StatementInit(mysql);
+        }
+
+        protected virtual int StatementPrepare(IntPtr mysql_statement, string query, uint
length)
+        {
+            return ClientAPI.StatementPrepare(mysql_statement, query, length);
+        }
+
+        protected virtual bool StatementClose(IntPtr mysql_statement)
+        {
+            return ClientAPI.StatementClose(mysql_statement);
+        }
+
+        protected virtual string StatementError(IntPtr mysql_statement)
+        {
+            return ClientAPI.StatementError(mysql_statement);
+        }
+
+		protected virtual string VersionString(IntPtr mysql)
+		{
+			return ClientAPI.VersionString(mysql);
+		}
+
+		protected virtual string CharacterSetName(IntPtr mysql)
+		{
+			return ClientAPI.CharacterSetName(mysql);
+		}
+
+		#endregion
+
+	}
+#endif
+}

Added: trunk/mysqlclient/EmbeddedAPI.cs
===================================================================
--- trunk/mysqlclient/EmbeddedAPI.cs	2006-11-27 15:57:12 UTC (rev 462)
+++ trunk/mysqlclient/EmbeddedAPI.cs	2006-11-27 16:12:19 UTC (rev 463)
@@ -0,0 +1,102 @@
+// Copyright (C) 2006 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.Runtime.InteropServices;
+
+namespace MySql.Data.MySqlClient
+{
+	/// <summary>
+	/// Summary description for ClientAPI.
+	/// </summary>
+	internal class EmbeddedAPI
+	{
+		[DllImport("libmysqld", EntryPoint="mysql_init")]
+		public static extern IntPtr Init(IntPtr mysql);
+
+		[DllImport("libmysqld", EntryPoint="mysql_server_init")]
+		public static extern int ServerInit(int argc, string[] argv, string[] groups);
+
+		[DllImport("libmysqld", EntryPoint="mysql_server_end")]
+		public static extern void ServerEnd();
+
+		[DllImport("libmysqld", EntryPoint="mysql_real_connect")]
+		public static extern IntPtr Connect( IntPtr mysql,
+			string host, string user, string password, string db, uint port,
+			string unix_socket, uint flag );
+
+		[DllImport("libmysqld", EntryPoint="mysql_close")]
+		public static extern void Close(IntPtr mysql);
+		
+		[DllImport("libmysqld", EntryPoint="mysql_ping")]
+		public static extern int Ping(IntPtr mysql);
+
+		[DllImport("libmysqld", EntryPoint="mysql_select_db")]
+		public static extern int SelectDatabase(IntPtr mysql, string dbName);
+
+		[DllImport("libmysqld", EntryPoint="mysql_real_query")]
+		public static extern int Query(IntPtr mysql, byte[] query, uint len);
+
+		[DllImport("libmysqld", EntryPoint="mysql_error")]
+		public static extern string ErrorMsg(IntPtr mysql);
+
+		[DllImport("libmysqld", EntryPoint="mysql_errno")]
+		public static extern int ErrorNumber(IntPtr mysql);
+
+		[DllImport("libmysqld", EntryPoint="mysql_options")]
+		public static extern int SetOptions(IntPtr mysql, ClientAPIOption option, ref object
optionValue);
+
+		[DllImport("libmysqld", EntryPoint="mysql_use_result")]
+		public static extern IntPtr UseResult(IntPtr mysql);
+
+		[DllImport("libmysqld", EntryPoint="mysql_more_results")]
+		public static extern bool MoreResults(IntPtr mysql);
+
+		[DllImport("libmysqld", EntryPoint="mysql_next_result")]
+		public static extern int NextResult(IntPtr mysql);
+
+		[DllImport("libmysqld", EntryPoint="mysql_free_result")]
+		public static extern void FreeResult(IntPtr result);
+
+		[DllImport("libmysqld", EntryPoint="mysql_field_count")]
+		public static extern int FieldCount(IntPtr resultSet);
+
+		[DllImport("libmysqld", EntryPoint="mysql_affected_rows")]
+		public static extern ulong AffectedRows(IntPtr mysql);
+
+		[DllImport("libmysqld", EntryPoint="mysql_insert_id")]
+		public static extern ulong LastInsertId(IntPtr mysql);
+
+		[DllImport("libmysqld", EntryPoint="mysql_fetch_field")]
+		public static extern ClientField FetchField(IntPtr resultSet);
+
+		[DllImport("libmysqld", EntryPoint="mysql_fetch_row")]
+		public static extern IntPtr FetchRow(IntPtr resultSet);
+		
+		[DllImport("libmysqld", EntryPoint="mysql_fetch_lengths")]
+		public static extern IntPtr FetchLengths(IntPtr resultSet);
+
+		[DllImport("libmysqld", EntryPoint="mysql_get_server_info")]
+		public static extern string VersionString(IntPtr mysql);
+
+		[DllImport("libmysqld", EntryPoint="mysql_character_set_name")]
+		public static extern string CharacterSetName(IntPtr mysql);
+	}
+}

Added: trunk/mysqlclient/EmbeddedDriver.cs
===================================================================
--- trunk/mysqlclient/EmbeddedDriver.cs	2006-11-27 15:57:12 UTC (rev 462)
+++ trunk/mysqlclient/EmbeddedDriver.cs	2006-11-27 16:12:19 UTC (rev 463)
@@ -0,0 +1,154 @@
+using System;
+
+namespace MySql.Data.MySqlClient
+{
+#if !CF
+
+	/// <summary>
+	/// Summary description for EmbeddedDriver.
+	/// </summary>
+	internal class EmbeddedDriver : ClientDriver
+	{
+		string[] options;
+
+		public EmbeddedDriver(MySqlConnectionStringBuilder settings) : base(settings)
+		{
+			options = new string[2];
+		}
+
+		public override void Open()
+		{
+			options[0] = "dummy";
+			options[1] = "--defaults-file=" + connectionString.OptionFile;
+
+			int result = EmbeddedAPI.ServerInit(2, options, null);
+			if (result == 1) 
+			{
+				string msg = EmbeddedAPI.ErrorMsg(IntPtr.Zero);
+				throw new MySqlException("The embedded library failed to initialize");
+			}
+
+			base.Open();
+		}
+
+		public override void Close()
+		{
+			base.Close();
+			EmbeddedAPI.ServerEnd();
+		}
+
+
+	#region Interface methods
+
+		protected override IntPtr Init(IntPtr mysql) 
+		{
+			return EmbeddedAPI.Init(mysql);
+		}
+
+		protected override IntPtr Connect(IntPtr mysql, string host, string user,
+		string password, string db, uint port, string unix_socket, uint flag)
+		{
+			return EmbeddedAPI.Connect(mysql, host, user, password, db, port, unix_socket, flag);
+		}
+
+		protected override int SetOptions(IntPtr mysql, ClientAPIOption option, ref object
optionValue)
+		{
+			return EmbeddedAPI.SetOptions(mysql, option, ref optionValue);
+		}
+
+		protected override void Close(IntPtr mysql) 
+		{
+			EmbeddedAPI.Close(mysql);
+		}
+
+		protected override int SelectDatabase(IntPtr mysql, string dbName) 
+		{
+			return EmbeddedAPI.SelectDatabase(mysql, dbName);
+		}
+
+		protected override int Query(IntPtr mysql, byte[] query, uint len) 
+		{
+			return EmbeddedAPI.Query(mysql, query, len);
+		}
+
+		protected override string ErrorMsg(IntPtr mysql)
+		{
+			return EmbeddedAPI.ErrorMsg(mysql);
+		}
+
+		protected override int ErrorNumber(IntPtr mysql) 
+		{
+			return EmbeddedAPI.ErrorNumber(mysql);
+		}
+
+		protected override IntPtr UseResult(IntPtr mysql)
+		{
+			return EmbeddedAPI.UseResult(mysql);
+		}
+
+		protected override bool MoreResults(IntPtr mysql)
+		{
+			return EmbeddedAPI.MoreResults(mysql);
+		}
+
+		protected override int NextResult(IntPtr mysql)
+		{
+			return EmbeddedAPI.NextResult(mysql);
+		}
+
+		protected override void FreeResult(IntPtr resultSet) 
+		{
+			EmbeddedAPI.FreeResult(resultSet);
+		}
+
+		protected override int GetFieldCount(IntPtr resultSet) 
+		{
+			return EmbeddedAPI.FieldCount(resultSet);
+		}
+
+		protected override ulong AffectedRows(IntPtr mysql)
+		{
+			return EmbeddedAPI.AffectedRows(mysql);
+		}
+
+		protected override ulong LastInsertId(IntPtr mysql)
+		{
+			return EmbeddedAPI.LastInsertId(mysql);
+		}
+
+		protected override ClientField FetchField(IntPtr resultSet)
+		{
+			return EmbeddedAPI.FetchField(resultSet);
+		}
+
+		protected override IntPtr FetchRow(IntPtr resultSet)
+		{
+			return EmbeddedAPI.FetchRow(resultSet);
+		}
+			
+		protected override IntPtr FetchLengths(IntPtr resultSet)
+		{
+			return EmbeddedAPI.FetchLengths(resultSet);
+		}
+
+		protected override int Ping(IntPtr mysql)
+		{
+			return EmbeddedAPI.Ping(mysql);
+		}
+
+		protected override string VersionString(IntPtr mysql)
+		{
+			return EmbeddedAPI.VersionString(mysql);
+		}
+
+		protected override string CharacterSetName(IntPtr mysql)
+		{
+			return EmbeddedAPI.CharacterSetName(mysql);
+		}
+
+	}
+
+#endregion
+
+#endif
+}

Thread
Connector/NET commit: r463 - in trunk: . mysqlclientrburnett27 Nov