Browse Source

+ added support for MySQL 5.0
+ added mysql_stmt_* calls to dyn. loaded mysql-library

git-svn-id: trunk@1800 -

joost 19 years ago
parent
commit
d1f1e5adf4

+ 3 - 0
.gitattributes

@@ -719,6 +719,7 @@ fcl/db/sqldb/mysql/fpmake.pp svneol=native#text/plain
 fcl/db/sqldb/mysql/mysql40conn.pas svneol=native#text/plain
 fcl/db/sqldb/mysql/mysql40conn.pas svneol=native#text/plain
 fcl/db/sqldb/mysql/mysql41conn.pas svneol=native#text/plain
 fcl/db/sqldb/mysql/mysql41conn.pas svneol=native#text/plain
 fcl/db/sqldb/mysql/mysql4conn.pas svneol=native#text/plain
 fcl/db/sqldb/mysql/mysql4conn.pas svneol=native#text/plain
+fcl/db/sqldb/mysql/mysql50conn.pas svneol=native#text/plain
 fcl/db/sqldb/mysql/mysqlconn.inc svneol=native#text/plain
 fcl/db/sqldb/mysql/mysqlconn.inc svneol=native#text/plain
 fcl/db/sqldb/odbc/Makefile svneol=native#text/plain
 fcl/db/sqldb/odbc/Makefile svneol=native#text/plain
 fcl/db/sqldb/odbc/Makefile.fpc svneol=native#text/plain
 fcl/db/sqldb/odbc/Makefile.fpc svneol=native#text/plain
@@ -1523,6 +1524,8 @@ packages/base/mysql/mysql4_version.pp svneol=native#text/plain
 packages/base/mysql/mysql4dyn.pp svneol=native#text/plain
 packages/base/mysql/mysql4dyn.pp svneol=native#text/plain
 packages/base/mysql/mysql4impl.inc svneol=native#text/plain
 packages/base/mysql/mysql4impl.inc svneol=native#text/plain
 packages/base/mysql/mysql4types.inc svneol=native#text/plain
 packages/base/mysql/mysql4types.inc svneol=native#text/plain
+packages/base/mysql/mysql50.pp svneol=native#text/plain
+packages/base/mysql/mysql50dyn.pp svneol=native#text/plain
 packages/base/mysql/mysqls.c -text
 packages/base/mysql/mysqls.c -text
 packages/base/mysql/mysqls.pp svneol=native#text/plain
 packages/base/mysql/mysqls.pp svneol=native#text/plain
 packages/base/mysql/rmdb -text
 packages/base/mysql/rmdb -text

+ 2 - 1
fcl/db/sqldb/examples/alisttables.pp

@@ -15,7 +15,7 @@ program aListTables;
 
 
 uses
 uses
   Classes,
   Classes,
-  sqldb, pqconnection, mysql40conn, mysql41conn, IBConnection, ODBCConn,
+  sqldb, pqconnection, mysql40conn, mysql41conn, mysql50conn, IBConnection, ODBCConn,
   SqldbExampleUnit;
   SqldbExampleUnit;
 
 
 var Tables : TStringList;
 var Tables : TStringList;
@@ -27,6 +27,7 @@ begin
 // create FConnection
 // create FConnection
   if dbtype = 'mysql40' then Fconnection := tMySQL40Connection.Create(nil);
   if dbtype = 'mysql40' then Fconnection := tMySQL40Connection.Create(nil);
   if dbtype = 'mysql41' then Fconnection := tMySQL41Connection.Create(nil);
   if dbtype = 'mysql41' then Fconnection := tMySQL41Connection.Create(nil);
+  if dbtype = 'mysql50' then Fconnection := tMySQL50Connection.Create(nil);
   if dbtype = 'postgresql' then Fconnection := tpqConnection.Create(nil);
   if dbtype = 'postgresql' then Fconnection := tpqConnection.Create(nil);
   if dbtype = 'interbase' then Fconnection := tIBConnection.Create(nil);
   if dbtype = 'interbase' then Fconnection := tIBConnection.Create(nil);
   if dbtype = 'odbc' then Fconnection := tODBCConnection.Create(nil);
   if dbtype = 'odbc' then Fconnection := tODBCConnection.Create(nil);

+ 1 - 0
fcl/db/sqldb/examples/database.ini

@@ -5,6 +5,7 @@
 # * interbase
 # * interbase
 # * mysql40
 # * mysql40
 # * mysql41
 # * mysql41
+# * mysql50
 # * odbc
 # * odbc
 # * postgresql
 # * postgresql
 
 

+ 2 - 1
fcl/db/sqldb/examples/sqldbexampleunit.pp

@@ -17,7 +17,7 @@ interface
 uses
 uses
   Classes,
   Classes,
   sqldb, pqconnection, IBConnection, ODBCConn,
   sqldb, pqconnection, IBConnection, ODBCConn,
-  mysql40conn, mysql41conn;
+  mysql40conn, mysql41conn, mysql50conn;
 
 
 var dbtype,
 var dbtype,
     dbname,
     dbname,
@@ -82,6 +82,7 @@ procedure CreateFConnection;
 begin
 begin
   if dbtype = 'mysql40' then Fconnection := tMySQL40Connection.Create(nil);
   if dbtype = 'mysql40' then Fconnection := tMySQL40Connection.Create(nil);
   if dbtype = 'mysql41' then Fconnection := tMySQL41Connection.Create(nil);
   if dbtype = 'mysql41' then Fconnection := tMySQL41Connection.Create(nil);
+  if dbtype = 'mysql50' then Fconnection := tMySQL50Connection.Create(nil);
   if dbtype = 'postgresql' then Fconnection := tpqConnection.Create(nil);
   if dbtype = 'postgresql' then Fconnection := tpqConnection.Create(nil);
   if dbtype = 'interbase' then Fconnection := tIBConnection.Create(nil);
   if dbtype = 'interbase' then Fconnection := tIBConnection.Create(nil);
   if dbtype = 'odbc' then Fconnection := tODBCConnection.Create(nil);
   if dbtype = 'odbc' then Fconnection := tODBCConnection.Create(nil);

+ 38 - 38
fcl/db/sqldb/mysql/Makefile

@@ -1,5 +1,5 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/11/20]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/11/21]
 #
 #
 default: all
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-wince powerpc64-linux
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-wince powerpc64-linux
@@ -233,115 +233,115 @@ PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/ext
 override PACKAGE_NAME=fcl
 override PACKAGE_NAME=fcl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
+override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
 endif
 endif
 override INSTALL_FPCPACKAGE=y
 override INSTALL_FPCPACKAGE=y
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)

+ 1 - 1
fcl/db/sqldb/mysql/Makefile.fpc

@@ -6,7 +6,7 @@
 main=fcl
 main=fcl
 
 
 [target]
 [target]
-units=mysql40conn mysql41conn mysql4conn
+units=mysql40conn mysql41conn mysql50conn mysql4conn
 
 
 [require]
 [require]
 packages=mysql
 packages=mysql

+ 11 - 0
fcl/db/sqldb/mysql/mysql50conn.pas

@@ -0,0 +1,11 @@
+{
+  Contains the TMysqlConnection for MySQL 5.0
+}
+
+unit mysql50conn;
+
+{$DEFINE MYSQL50}
+
+{$i mysqlconn.inc}
+
+end.

+ 33 - 20
fcl/db/sqldb/mysql/mysqlconn.inc

@@ -6,22 +6,29 @@ interface
 
 
 uses
 uses
   Classes, SysUtils,sqldb,db,
   Classes, SysUtils,sqldb,db,
-{$IfDef mysql41}
-  mysql41dyn;
-  {$DEFINE TConnectionName:=TMySQL41Connection}
-  {$DEFINE TTransactionName:=TMySQL41Transaction}
-  {$DEFINE TCursorName:=TMySQL41Cursor}
+{$IfDef mysql50}
+  mysql50dyn;
+  {$DEFINE TConnectionName:=TMySQL50Connection}
+  {$DEFINE TTransactionName:=TMySQL50Transaction}
+  {$DEFINE TCursorName:=TMySQL50Cursor}
 {$ELSE}
 {$ELSE}
-  {$IFDEF mysql4} // temporary backwards compatibility for Lazarus
-    mysql40dyn;
-    {$DEFINE TConnectionName:=TMySQLConnection}
-    {$DEFINE TTransactionName:=TMySQLTransaction}
-    {$DEFINE TCursorName:=TMySQLCursor}
+  {$IfDef mysql41}
+    mysql41dyn;
+    {$DEFINE TConnectionName:=TMySQL41Connection}
+    {$DEFINE TTransactionName:=TMySQL41Transaction}
+    {$DEFINE TCursorName:=TMySQL41Cursor}
   {$ELSE}
   {$ELSE}
-    mysql40dyn;
-    {$DEFINE TConnectionName:=TMySQL40Connection}
-    {$DEFINE TTransactionName:=TMySQL40Transaction}
-    {$DEFINE TCursorName:=TMySQL40Cursor}
+    {$IFDEF mysql4} // temporary backwards compatibility for Lazarus
+      mysql40dyn;
+      {$DEFINE TConnectionName:=TMySQLConnection}
+      {$DEFINE TTransactionName:=TMySQLTransaction}
+      {$DEFINE TCursorName:=TMySQLCursor}
+    {$ELSE}
+      mysql40dyn;
+      {$DEFINE TConnectionName:=TMySQL40Connection}
+      {$DEFINE TTransactionName:=TMySQL40Transaction}
+      {$DEFINE TCursorName:=TMySQL40Cursor}
+    {$EndIf}
   {$EndIf}
   {$EndIf}
 {$EndIf}
 {$EndIf}
 
 
@@ -113,6 +120,7 @@ Resourcestring
   SErrFetchingdata = 'Error fetching row data: %s';
   SErrFetchingdata = 'Error fetching row data: %s';
   SErrGettingResult = 'Error getting result set: %s';
   SErrGettingResult = 'Error getting result set: %s';
   SErrNoQueryResult = 'No result from query.';
   SErrNoQueryResult = 'No result from query.';
+  SErrNotversion50 = 'TMySQL50Connection can not work with the installed MySQL client version (%s).';
   SErrNotversion41 = 'TMySQL41Connection can not work with the installed MySQL client version (%s).';
   SErrNotversion41 = 'TMySQL41Connection can not work with the installed MySQL client version (%s).';
   SErrNotversion40 = 'TMySQL40Connection can not work with the installed MySQL client version (%s).';
   SErrNotversion40 = 'TMySQL40Connection can not work with the installed MySQL client version (%s).';
 
 
@@ -144,9 +152,9 @@ function TConnectionName.GetClientInfo: string;
 
 
 begin
 begin
   // To make it possible to call this if there's no connection yet
   // To make it possible to call this if there's no connection yet
-  InitialiseMysql4;
+  InitialiseMysql;
   Result:=strpas(mysql_get_client_info());
   Result:=strpas(mysql_get_client_info());
-  ReleaseMysql4;
+  ReleaseMysql;
 end;
 end;
 
 
 function TConnectionName.GetServerStatus: String;
 function TConnectionName.GetServerStatus: String;
@@ -186,13 +194,18 @@ end;
 
 
 procedure TConnectionName.DoInternalConnect;
 procedure TConnectionName.DoInternalConnect;
 begin
 begin
-  InitialiseMysql4;
-{$IFDEF mysql41}
+  InitialiseMysql;
+{$IFDEF mysql50}
+  if copy(strpas(mysql_get_client_info()),1,3)<>'5.0' then
+    Raise EInOutError.CreateFmt(SErrNotversion50,[strpas(mysql_get_client_info())]);
+{$ELSE}
+  {$IFDEF mysql41}
   if copy(strpas(mysql_get_client_info()),1,3)<>'4.1' then
   if copy(strpas(mysql_get_client_info()),1,3)<>'4.1' then
     Raise EInOutError.CreateFmt(SErrNotversion41,[strpas(mysql_get_client_info())]);
     Raise EInOutError.CreateFmt(SErrNotversion41,[strpas(mysql_get_client_info())]);
-{$ELSE}
+  {$ELSE}
   if copy(strpas(mysql_get_client_info()),1,3)<>'4.0' then
   if copy(strpas(mysql_get_client_info()),1,3)<>'4.0' then
     Raise EInOutError.CreateFmt(SErrNotversion40,[strpas(mysql_get_client_info())]);
     Raise EInOutError.CreateFmt(SErrNotversion40,[strpas(mysql_get_client_info())]);
+  {$ENDIF}
 {$ENDIF}
 {$ENDIF}
   inherited DoInternalConnect;
   inherited DoInternalConnect;
   ConnectToServer;
   ConnectToServer;
@@ -204,7 +217,7 @@ begin
   inherited DoInternalDisconnect;
   inherited DoInternalDisconnect;
   mysql_close(FMySQL);
   mysql_close(FMySQL);
   FMySQL:=Nil;
   FMySQL:=Nil;
-  ReleaseMysql4;
+  ReleaseMysql;
 end;
 end;
 
 
 function TConnectionName.GetHandle: pointer;
 function TConnectionName.GetHandle: pointer;

+ 38 - 38
packages/base/mysql/Makefile

@@ -1,5 +1,5 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/11/20]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/11/21]
 #
 #
 default: all
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-wince powerpc64-linux
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-wince powerpc64-linux
@@ -233,115 +233,115 @@ PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/ext
 override PACKAGE_NAME=mysql
 override PACKAGE_NAME=mysql
 override PACKAGE_VERSION=2.0.0
 override PACKAGE_VERSION=2.0.0
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+override TARGET_UNITS+=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_EXAMPLES+=testdb4 testdb3
 override TARGET_EXAMPLES+=testdb4 testdb3

+ 1 - 1
packages/base/mysql/Makefile.fpc

@@ -7,7 +7,7 @@ name=mysql
 version=2.0.0
 version=2.0.0
 
 
 [target]
 [target]
-units=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn
+units=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn mysql50 mysql50dyn
 examples=testdb4 testdb3
 examples=testdb4 testdb3
 
 
 [require]
 [require]

+ 265 - 18
packages/base/mysql/mysql.inc

@@ -38,6 +38,9 @@ uses
     mysqllib = 'libmysql.dll';
     mysqllib = 'libmysql.dll';
 {$ENDIF}
 {$ENDIF}
 
 
+{$IFDEF mysql50}
+  {$DEFINE mysql41}
+{$ENDIF mysql50}
 
 
 {$PACKRECORDS C}
 {$PACKRECORDS C}
 
 
@@ -101,9 +104,14 @@ uses
        COM_DEBUG,COM_PING,COM_TIME,COM_DELAYED_INSERT,
        COM_DEBUG,COM_PING,COM_TIME,COM_DELAYED_INSERT,
        COM_CHANGE_USER,COM_BINLOG_DUMP,COM_TABLE_DUMP,
        COM_CHANGE_USER,COM_BINLOG_DUMP,COM_TABLE_DUMP,
        COM_CONNECT_OUT,COM_REGISTER_SLAVE,
        COM_CONNECT_OUT,COM_REGISTER_SLAVE,
-{$IFDEF mysql41}
+{$IFDEF mysql50}
+       COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_SEND_LONG_DATA, COM_STMT_CLOSE,
+       COM_STMT_RESET, COM_SET_OPTION, COM_STMT_FETCH,
+{$ELSE}
+  {$IFDEF mysql41}
        COM_PREPARE,COM_EXECUTE,COM_LONG_DATA,COM_CLOSE_STMT,
        COM_PREPARE,COM_EXECUTE,COM_LONG_DATA,COM_CLOSE_STMT,
        COM_RESET_STMT,COM_SET_OPTION,
        COM_RESET_STMT,COM_SET_OPTION,
+  {$ENDIF}
 {$ENDIF}
 {$ENDIF}
        COM_END
        COM_END
        );
        );
@@ -138,6 +146,9 @@ uses
        AUTO_INCREMENT_FLAG = 512;  // field is a autoincrement field
        AUTO_INCREMENT_FLAG = 512;  // field is a autoincrement field
        TIMESTAMP_FLAG = 1024;      // Field is a timestamp
        TIMESTAMP_FLAG = 1024;      // Field is a timestamp
        SET_FLAG = 2048;            // field is a set
        SET_FLAG = 2048;            // field is a set
+{$IFDEF mysql50}
+       NO_DEFAULT_VALUE_FLAG=4096; // Field doesn't have default value
+{$ENDIF}
        NUM_FLAG = 32768;           // Field is num (for clients)
        NUM_FLAG = 32768;           // Field is num (for clients)
        PART_KEY_FLAG = 16384;      // Intern; Part of some key
        PART_KEY_FLAG = 16384;      // Intern; Part of some key
        GROUP_FLAG = 32768;         // Intern: Group field
        GROUP_FLAG = 32768;         // Intern: Group field
@@ -189,7 +200,19 @@ uses
        SERVER_MORE_RESULTS_EXISTS = 8;     // Multi query - next query exists
        SERVER_MORE_RESULTS_EXISTS = 8;     // Multi query - next query exists
        SERVER_QUERY_NO_GOOD_INDEX_USED = 16;
        SERVER_QUERY_NO_GOOD_INDEX_USED = 16;
        SERVER_QUERY_NO_INDEX_USED = 32;
        SERVER_QUERY_NO_INDEX_USED = 32;
+{$IFDEF mysql50}
+    { The server was able to fulfill the clients request and opened a
+      read-only non-scrollable cursor for a query. This flag comes
+      in reply to COM_STMT_EXECUTE and COM_STMT_FETCH commands. }
+       SERVER_STATUS_CURSOR_EXISTS = 64;
+    { This flag is sent when a read-only cursor is exhausted, in reply to
+      COM_STMT_FETCH command. }
+       SERVER_STATUS_LAST_ROW_SENT = 128;
+{$ENDIF}
        SERVER_STATUS_DB_DROPPED = 256;     // A database was dropped
        SERVER_STATUS_DB_DROPPED = 256;     // A database was dropped
+{$IFDEF mysql50}
+       SERVER_STATUS_NO_BACKSLASH_ESCAPES = 512;
+{$ENDIF}
 
 
 {$IFDEF mysql41}
 {$IFDEF mysql41}
        MYSQL_ERRMSG_SIZE = 512;
        MYSQL_ERRMSG_SIZE = 512;
@@ -199,6 +222,10 @@ uses
        NET_READ_TIMEOUT = 30;              // Timeout on read
        NET_READ_TIMEOUT = 30;              // Timeout on read
        NET_WRITE_TIMEOUT = 60;             // Timeout on write
        NET_WRITE_TIMEOUT = 60;             // Timeout on write
        NET_WAIT_TIMEOUT	= 8*60*60;         // Wait for new query
        NET_WAIT_TIMEOUT	= 8*60*60;         // Wait for new query
+{$IFDEF mysql50}
+       ONLY_KILL_QUERY = 1;
+{$ENDIF}
+
 
 
     const
     const
        MAX_TINYINT_WIDTH = 3;           // Max width for a TINY w.o. sign
        MAX_TINYINT_WIDTH = 3;           // Max width for a TINY w.o. sign
@@ -246,7 +273,12 @@ uses
             return_status : Pdword;
             return_status : Pdword;
             reading_or_writing : byte;
             reading_or_writing : byte;
             save_char : char;
             save_char : char;
-            no_send_ok : my_bool;
+            no_send_ok : my_bool;     // For SPs and other things that do multiple stmts
+{$IFDEF mysql50}
+            no_send_eof : my_bool;    // For SPs' first version read-only cursors
+            no_send_error : my_bool;  // Set if OK packet is already sent, and
+                                      // we do not need to send error messages
+{$ENDIF}
     {   Pointer to query object in query cache, do not equal NULL (0) for
     {   Pointer to query object in query cache, do not equal NULL (0) for
         queries in cache that have not stored its results yet }
         queries in cache that have not stored its results yet }
 { $endif}
 { $endif}
@@ -275,7 +307,11 @@ uses
          MYSQL_TYPE_TIMESTAMP,MYSQL_TYPE_LONGLONG,
          MYSQL_TYPE_TIMESTAMP,MYSQL_TYPE_LONGLONG,
          MYSQL_TYPE_INT24,MYSQL_TYPE_DATE,MYSQL_TYPE_TIME,
          MYSQL_TYPE_INT24,MYSQL_TYPE_DATE,MYSQL_TYPE_TIME,
          MYSQL_TYPE_DATETIME,MYSQL_TYPE_YEAR,
          MYSQL_TYPE_DATETIME,MYSQL_TYPE_YEAR,
-         MYSQL_TYPE_NEWDATE,MYSQL_TYPE_ENUM := 247,
+         MYSQL_TYPE_NEWDATE,
+{$IFDEF mysql50}
+         MYSQL_TYPE_VARCHAR, MYSQL_TYPE_BIT, MYSQL_TYPE_NEWDECIMAL=246,
+{$ENDIF}
+         MYSQL_TYPE_ENUM := 247,
          MYSQL_TYPE_SET := 248,MYSQL_TYPE_TINY_BLOB := 249,
          MYSQL_TYPE_SET := 248,MYSQL_TYPE_TINY_BLOB := 249,
          MYSQL_TYPE_MEDIUM_BLOB := 250,MYSQL_TYPE_LONG_BLOB := 251,
          MYSQL_TYPE_MEDIUM_BLOB := 250,MYSQL_TYPE_LONG_BLOB := 251,
          MYSQL_TYPE_BLOB := 252,MYSQL_TYPE_VAR_STRING := 253,
          MYSQL_TYPE_BLOB := 252,MYSQL_TYPE_VAR_STRING := 253,
@@ -287,6 +323,9 @@ uses
     const
     const
        CLIENT_MULTI_QUERIES = CLIENT_MULTI_STATEMENTS;
        CLIENT_MULTI_QUERIES = CLIENT_MULTI_STATEMENTS;
        FIELD_TYPE_DECIMAL = MYSQL_TYPE_DECIMAL;
        FIELD_TYPE_DECIMAL = MYSQL_TYPE_DECIMAL;
+{$IFDEF mysql50}
+       FIELD_TYPE_NEWDECIMAL = MYSQL_TYPE_NEWDECIMAL;
+{$ENDIF}
        FIELD_TYPE_TINY = MYSQL_TYPE_TINY;
        FIELD_TYPE_TINY = MYSQL_TYPE_TINY;
        FIELD_TYPE_SHORT = MYSQL_TYPE_SHORT;
        FIELD_TYPE_SHORT = MYSQL_TYPE_SHORT;
        FIELD_TYPE_LONG = MYSQL_TYPE_LONG;
        FIELD_TYPE_LONG = MYSQL_TYPE_LONG;
@@ -312,7 +351,9 @@ uses
        FIELD_TYPE_CHAR = MYSQL_TYPE_TINY;
        FIELD_TYPE_CHAR = MYSQL_TYPE_TINY;
        FIELD_TYPE_INTERVAL = MYSQL_TYPE_ENUM;
        FIELD_TYPE_INTERVAL = MYSQL_TYPE_ENUM;
        FIELD_TYPE_GEOMETRY = MYSQL_TYPE_GEOMETRY;
        FIELD_TYPE_GEOMETRY = MYSQL_TYPE_GEOMETRY;
-
+{$IFDEF mysql50}
+       FIELD_TYPE_BIT = MYSQL_TYPE_BIT;
+{$ENDIF}
     { Shutdown/kill enums and constants  }
     { Shutdown/kill enums and constants  }
     { Bits for THD::killable.  }
     { Bits for THD::killable.  }
        MYSQL_SHUTDOWN_KILLABLE_CONNECT    : byte = 1 shl 0;
        MYSQL_SHUTDOWN_KILLABLE_CONNECT    : byte = 1 shl 0;
@@ -338,6 +379,12 @@ uses
          KILL_CONNECTION := 255
          KILL_CONNECTION := 255
          );
          );
 
 
+{$IFDEF mysql50}
+       enum_cursor_type = (CURSOR_TYPE_NO_CURSOR := 0,CURSOR_TYPE_READ_ONLY := 1,
+         CURSOR_TYPE_FOR_UPDATE := 2,CURSOR_TYPE_SCROLLABLE := 4
+         );
+{$ENDIF}
+
     { options for mysql_set_option  }
     { options for mysql_set_option  }
        enum_mysql_set_option = (MYSQL_OPTION_MULTI_STATEMENTS_ON,
        enum_mysql_set_option = (MYSQL_OPTION_MULTI_STATEMENTS_ON,
          MYSQL_OPTION_MULTI_STATEMENTS_OFF
          MYSQL_OPTION_MULTI_STATEMENTS_OFF
@@ -380,8 +427,13 @@ uses
          end;
          end;
 
 
     { The following is for user defined functions  }
     { The following is for user defined functions  }
+{$IFDEF mysql50}
        Item_result = (STRING_RESULT,REAL_RESULT,INT_RESULT,
        Item_result = (STRING_RESULT,REAL_RESULT,INT_RESULT,
          ROW_RESULT);
          ROW_RESULT);
+{$ELSE}
+       Item_result = (STRING_RESULT := 0,REAL_RESULT,INT_RESULT,
+         ROW_RESULT,DECIMAL_RESULT);
+{$ENDIF}
        PItem_result = ^Item_result;
        PItem_result = ^Item_result;
 
 
        Pst_udf_args = ^st_udf_args;
        Pst_udf_args = ^st_udf_args;
@@ -391,7 +443,10 @@ uses
             args : ^Pchar;               // Pointer to item_results
             args : ^Pchar;               // Pointer to item_results
             lengths : Pdword;            // Length of string arguments
             lengths : Pdword;            // Length of string arguments
             maybe_null : Pchar;          // Length of string arguments
             maybe_null : Pchar;          // Length of string arguments
-
+{$IFDEF mysql50}
+            attributes : ^pchar;         // Pointer to attribute name
+            attribute_lengths : ^dword;  // Length of attribute arguments
+{$ENDIF}
          end;
          end;
        UDF_ARGS = st_udf_args;
        UDF_ARGS = st_udf_args;
        PUDF_ARGS = ^UDF_ARGS;
        PUDF_ARGS = ^UDF_ARGS;
@@ -428,6 +483,9 @@ uses
     function check_scramble_323(_para1:Pchar; message:Pchar; salt:Pdword):my_bool;cdecl;external mysqllib name 'check_scramble_323';
     function check_scramble_323(_para1:Pchar; message:Pchar; salt:Pdword):my_bool;cdecl;external mysqllib name 'check_scramble_323';
     procedure get_salt_from_password_323(res:Pdword; password:Pchar);cdecl;external mysqllib name 'get_salt_from_password_323';
     procedure get_salt_from_password_323(res:Pdword; password:Pchar);cdecl;external mysqllib name 'get_salt_from_password_323';
     procedure make_password_from_salt_323(fto:Pchar; salt:Pdword);cdecl;external mysqllib name 'make_password_from_salt_323';
     procedure make_password_from_salt_323(fto:Pchar; salt:Pdword);cdecl;external mysqllib name 'make_password_from_salt_323';
+{$IFDEF mysql50}
+    function octet2hex(fto:Pchar; str:Pchar; len:dword):pchar;cdecl;external mysqllib name 'octet2hex';
+{$ENDIF}
     procedure make_scrambled_password(fto:Pchar; password:Pchar);cdecl;external mysqllib name 'make_scrambled_password';
     procedure make_scrambled_password(fto:Pchar; password:Pchar);cdecl;external mysqllib name 'make_scrambled_password';
     procedure scramble(fto:Pchar; message:Pchar; password:Pchar);cdecl;external mysqllib name 'scramble';
     procedure scramble(fto:Pchar; message:Pchar; password:Pchar);cdecl;external mysqllib name 'scramble';
     function check_scramble(reply:Pchar; message:Pchar; hash_stage2:Pbyte):my_bool;cdecl;external mysqllib name 'check_scramble';
     function check_scramble(reply:Pchar; message:Pchar; hash_stage2:Pbyte):my_bool;cdecl;external mysqllib name 'check_scramble';
@@ -440,6 +498,10 @@ uses
 {$ENDIF}
 {$ENDIF}
 
 
     { Some other useful functions  }
     { Some other useful functions  }
+{$IFDEF mysql50}
+    function modify_defaults_file(file_location:Pchar; option:Pchar; option_value:Pchar; section_name:Pchar; remove_option:longint):longint;cdecl;external mysqllib name 'load_defaults';
+{$ENDIF}
+
 {$IFNDEF LinkDynamically}
 {$IFNDEF LinkDynamically}
     function load_defaults(conf_file:Pchar; groups:PPchar; argc:Plongint; argv:PPPchar):longint;cdecl;external mysqllib name 'load_defaults';
     function load_defaults(conf_file:Pchar; groups:PPchar; argc:Plongint; argv:PPPchar):longint;cdecl;external mysqllib name 'load_defaults';
     function my_init:my_bool;cdecl;external mysqllib name 'my_init';
     function my_init:my_bool;cdecl;external mysqllib name 'my_init';
@@ -626,7 +688,11 @@ uses
          MYSQL_OPT_WRITE_TIMEOUT,MYSQL_OPT_USE_RESULT,
          MYSQL_OPT_WRITE_TIMEOUT,MYSQL_OPT_USE_RESULT,
          MYSQL_OPT_USE_REMOTE_CONNECTION,MYSQL_OPT_USE_EMBEDDED_CONNECTION,
          MYSQL_OPT_USE_REMOTE_CONNECTION,MYSQL_OPT_USE_EMBEDDED_CONNECTION,
          MYSQL_OPT_GUESS_CONNECTION,MYSQL_SET_CLIENT_IP,
          MYSQL_OPT_GUESS_CONNECTION,MYSQL_SET_CLIENT_IP,
-         MYSQL_SECURE_AUTH);
+         MYSQL_SECURE_AUTH
+{$IFDEF MYSQL50}
+         ,MYSQL_REPORT_DATA_TRUNCATION, MYSQL_OPT_RECONNECT
+{$ENDIF}
+         );
 
 
     const
     const
        MAX_MYSQL_MANAGER_ERR = 256;
        MAX_MYSQL_MANAGER_ERR = 256;
@@ -706,6 +772,9 @@ uses
             methods_to_use : mysql_option;
             methods_to_use : mysql_option;
             client_ip : Pchar;
             client_ip : Pchar;
             secure_auth : my_bool;           // Refuse client connecting to server if it uses old (pre-4.1.1) protocol
             secure_auth : my_bool;           // Refuse client connecting to server if it uses old (pre-4.1.1) protocol
+{$IFDEF mysql50}
+            report_data_truncation : my_bool;// 0 - never report, 1 - always report (default)
+{$ENDIF}
     { function pointers for local infile support  }
     { function pointers for local infile support  }
             local_infile_init : function (_para1:Ppointer; _para2:Pchar; _para3:pointer):longint;cdecl;
             local_infile_init : function (_para1:Ppointer; _para2:Pchar; _para3:pointer):longint;cdecl;
             local_infile_read : function (_para1:pointer; _para2:Pchar; _para3:dword):longint;
             local_infile_read : function (_para1:pointer; _para2:Pchar; _para3:dword):longint;
@@ -759,6 +828,22 @@ uses
        CHARSET_INFO = charset_info_st;
        CHARSET_INFO = charset_info_st;
        Pcharset_info_st = ^charset_info_st;
        Pcharset_info_st = ^charset_info_st;
 
 
+{$IFDEF mysql50}
+       Pcharacter_set = ^character_set;
+       character_set = record
+            number : dword;
+            state : dword;
+            csname : Pchar;
+            name : Pchar;
+            comment : Pchar;
+            dir : Pchar;
+            mbminlen : dword;
+            mbmaxlen : dword;
+         end;
+       MY_CHARSET_INFO = character_set;
+       PMY_CHARSET_INFO = ^MY_CHARSET_INFO;
+{$ENDIF}
+
        Pst_mysql_methods = ^st_mysql_methods;
        Pst_mysql_methods = ^st_mysql_methods;
 
 
        Pst_mysql = ^st_mysql;
        Pst_mysql = ^st_mysql;
@@ -778,7 +863,7 @@ uses
             field_alloc : MEM_ROOT;
             field_alloc : MEM_ROOT;
             affected_rows : my_ulonglong;
             affected_rows : my_ulonglong;
             insert_id : my_ulonglong;    // id if insert on table with NEXTNR
             insert_id : my_ulonglong;    // id if insert on table with NEXTNR
-            extra_info : my_ulonglong;   // Used by mysqlshow
+            extra_info : my_ulonglong;   // Used by mysqlshow, not used by mysql 5.0 and up
             thread_id : dword;           // Id for connection in server
             thread_id : dword;           // Id for connection in server
             packet_length : dword;
             packet_length : dword;
             port : dword;
             port : dword;
@@ -903,26 +988,106 @@ uses
          MYSQL_STMT_EXECUTE_DONE,MYSQL_STMT_FETCH_DONE
          MYSQL_STMT_EXECUTE_DONE,MYSQL_STMT_FETCH_DONE
          );
          );
 
 
-    { bind structure  }
-
+    {
+      Note: this info is from the mysql-5.0 version:
+    
+      This structure is used to define bind information, and
+      internally by the client library.
+      Public members with their descriptions are listed below
+      (conventionally `On input' refers to the binds given to
+      mysql_stmt_bind_param, `On output' refers to the binds given
+      to mysql_stmt_bind_result):
+
+      buffer_type    - One of the MYSQL_* types, used to describe
+                       the host language type of buffer.
+                       On output: if column type is different from
+                       buffer_type, column value is automatically converted
+                       to buffer_type before it is stored in the buffer.
+      buffer         - On input: points to the buffer with input data.
+                       On output: points to the buffer capable to store
+                       output data.
+                       The type of memory pointed by buffer must correspond
+                       to buffer_type. See the correspondence table in
+                       the comment to mysql_stmt_bind_param.
+
+      The two above members are mandatory for any kind of bind.
+
+      buffer_length  - the length of the buffer. You don't have to set
+                       it for any fixed length buffer: float, double,
+                       int, etc. It must be set however for variable-length
+                       types, such as BLOBs or STRINGs.
+
+      length         - On input: in case when lengths of input values
+                       are different for each execute, you can set this to
+                       point at a variable containining value length. This
+                       way the value length can be different in each execute.
+                       If length is not NULL, buffer_length is not used.
+                       Note, length can even point at buffer_length if
+                       you keep bind structures around while fetching:
+                       this way you can change buffer_length before
+                       each execution, everything will work ok.
+                       On output: if length is set, mysql_stmt_fetch will
+                       write column length into it.
+
+      is_null        - On input: points to a boolean variable that should
+                       be set to TRUE for NULL values.
+                       This member is useful only if your data may be
+                       NULL in some but not all cases.
+                       If your data is never NULL, is_null should be set to 0.
+                       If your data is always NULL, set buffer_type
+                       to MYSQL_TYPE_NULL, and is_null will not be used.
+
+      is_unsigned    - On input: used to signify that values provided for one
+                       of numeric types are unsigned.
+                       On output describes signedness of the output buffer.
+                       If, taking into account is_unsigned flag, column data
+                       is out of range of the output buffer, data for this column
+                       is regarded truncated. Note that this has no correspondence
+                       to the sign of result set column, if you need to find it out
+                       use mysql_stmt_result_metadata.
+      error          - where to write a truncation error if it is present.
+                       possible error value is:
+                       0  no truncation
+                       1  value is out of range or buffer is too small
+
+      Please note that MYSQL_BIND also has internals members.
+    }
        Pst_mysql_bind = ^st_mysql_bind;
        Pst_mysql_bind = ^st_mysql_bind;
        st_mysql_bind = record
        st_mysql_bind = record
             length : Pdword;                // output length pointer
             length : Pdword;                // output length pointer
             is_null : Pmy_bool;             // Pointer to null indicator
             is_null : Pmy_bool;             // Pointer to null indicator
             buffer : pointer;               // buffer to get/put data
             buffer : pointer;               // buffer to get/put data
+{$IFDEF mysql50}
+            error: pmy_bool;                // set this if you want to track data truncations happened during fetch
+{$ENDIF}
             buffer_type : enum_field_types; // buffer type
             buffer_type : enum_field_types; // buffer type
             buffer_length : dword;          // buffer length, must be set for str/binary
             buffer_length : dword;          // buffer length, must be set for str/binary
     { Following are for internal use. Set by mysql_stmt_bind_param  }
     { Following are for internal use. Set by mysql_stmt_bind_param  }
+{$IFNDEF mysql50}
             inter_buffer : Pbyte;           // for the current data position
             inter_buffer : Pbyte;           // for the current data position
+{$ELSE}
+            row_ptr : PByte;                // for the current data position
+{$ENDIF}
             offset : dword;                 // offset position for char/binary fetch
             offset : dword;                 // offset position for char/binary fetch
+{$IFNDEF mysql50}
             internal_length : dword;        //  Used if length is 0
             internal_length : dword;        //  Used if length is 0
+{$ELSE}
+            length_value : dword;           //  Used if length is 0
+{$ENDIF}
             param_number : dword;           // For null count and error messages
             param_number : dword;           // For null count and error messages
             pack_length : dword;            // Internal length for packed data
             pack_length : dword;            // Internal length for packed data
+{$IFDEF mysql50}
+            error_value : pmy_bool;         // used if error is 0
+{$ENDIF}
             is_unsigned : my_bool;          // set if integer type is unsigned
             is_unsigned : my_bool;          // set if integer type is unsigned
             long_data_used : my_bool;       // If used with mysql_send_long_data
             long_data_used : my_bool;       // If used with mysql_send_long_data
+{$IFNDEF mysql50}
             internal_is_null : my_bool;     // Used if is_null is 0
             internal_is_null : my_bool;     // Used if is_null is 0
+{$ELSE}
+            is_null_value : my_bool;        // Used if is_null is 0
+{$ENDIF}
             store_param_func : procedure (net:PNET; param:Pst_mysql_bind);cdecl;
             store_param_func : procedure (net:PNET; param:Pst_mysql_bind);cdecl;
-            fetch_result : procedure (_para1:Pst_mysql_bind; row:PPbyte);
+            fetch_result : procedure (_para1:Pst_mysql_bind; _para2:PMYSQL_FIELD; row:PPbyte);
             skip_result : procedure (_para1:Pst_mysql_bind; _para2:PMYSQL_FIELD; row:PPbyte);
             skip_result : procedure (_para1:Pst_mysql_bind; _para2:PMYSQL_FIELD; row:PPbyte);
          end;
          end;
        MYSQL_BIND = st_mysql_bind;
        MYSQL_BIND = st_mysql_bind;
@@ -944,6 +1109,12 @@ uses
         for buffered, unbuffered and cursor fetch).       }
         for buffered, unbuffered and cursor fetch).       }
             read_row_func : function (stmt:Pst_mysql_stmt; row:PPbyte):longint;cdecl;
             read_row_func : function (stmt:Pst_mysql_stmt; row:PPbyte):longint;cdecl;
             stmt_id : dword;                // Id for prepared statement
             stmt_id : dword;                // Id for prepared statement
+{$IFDEF mysql50}
+            flags : dword;                  // i.e. type of cursor to open
+            prefetch_rows : dword;          // number of rows per one COM_FETCH
+            server_status : dword;          // Copied from mysql->server_status after execute/fetch to know
+                                            // server-side cursor status for this statement.
+{$ENDIF}
             last_errno : dword;             // error code
             last_errno : dword;             // error code
             param_count : dword;            // input parameter count
             param_count : dword;            // input parameter count
             field_count : dword;            // number of columns in result set
             field_count : dword;            // number of columns in result set
@@ -952,7 +1123,12 @@ uses
             sqlstate : array[0..(SQLSTATE_LENGTH+1)-1] of char;
             sqlstate : array[0..(SQLSTATE_LENGTH+1)-1] of char;
             send_types_to_server : my_bool; // Types of input parameters should be sent to server
             send_types_to_server : my_bool; // Types of input parameters should be sent to server
             bind_param_done : my_bool;      // input buffers were supplied
             bind_param_done : my_bool;      // input buffers were supplied
+{$IFNDEF mysql50}
             bind_result_done : my_bool;     // output buffers were supplied
             bind_result_done : my_bool;     // output buffers were supplied
+{$ELSE}
+            bind_result_done : byte;        // output buffers were supplied
+{$ENDIF}
+
             unbuffered_fetch_cancelled : my_bool;   // mysql_stmt_close() had to cancel this result
             unbuffered_fetch_cancelled : my_bool;   // mysql_stmt_close() had to cancel this result
     {   Is set to true if we need to calculate field->max_length for
     {   Is set to true if we need to calculate field->max_length for
         metadata fields when doing mysql_stmt_store_result.       }
         metadata fields when doing mysql_stmt_store_result.       }
@@ -964,7 +1140,13 @@ uses
         where this was done automatically.
         where this was done automatically.
         In the new API we do that only by request because it slows down
         In the new API we do that only by request because it slows down
         mysql_stmt_store_result sufficiently.       }
         mysql_stmt_store_result sufficiently.       }
-       enum_stmt_attr_type = (STMT_ATTR_UPDATE_MAX_LENGTH);
+       enum_stmt_attr_type = (STMT_ATTR_UPDATE_MAX_LENGTH
+{$IFDEF mysql50}
+                              ,STMT_ATTR_CURSOR_TYPE,  // unsigned long with combination of cursor flags (read only, for update, etc)
+                              STMT_ATTR_PREFETCH_ROWS // Amount of rows to retrieve from server per one fetch if using cursors.
+                                                      // Accepts unsigned long attribute in the range 1 - ulong_max
+{$ENDIF}
+                             );
 
 
 
 
 //#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet)
 //#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet)
@@ -1076,11 +1258,17 @@ uses
     { perform query on slave  }
     { perform query on slave  }
     function mysql_slave_query(mysql:PMYSQL; q:Pchar; length:dword):my_bool;extdecl;external mysqllib name 'mysql_slave_query';
     function mysql_slave_query(mysql:PMYSQL; q:Pchar; length:dword):my_bool;extdecl;external mysqllib name 'mysql_slave_query';
     function mysql_slave_send_query(mysql:PMYSQL; q:Pchar; length:dword):my_bool;extdecl;external mysqllib name 'mysql_slave_send_query';
     function mysql_slave_send_query(mysql:PMYSQL; q:Pchar; length:dword):my_bool;extdecl;external mysqllib name 'mysql_slave_send_query';
+{$IFDEF mysql50}
+    procedure mysql_get_character_set_info(mysql : PMYSQL; charset : PMY_CHARSET_INFO);extdecl;external mysqllib name 'mysql_get_character_set_info';
+{$ENDIF}
+{$ENDIF}
 
 
     { local infile support  }
     { local infile support  }
 
 
     const
     const
        LOCAL_INFILE_ERROR_LEN = 512;
        LOCAL_INFILE_ERROR_LEN = 512;
+
+{$IFNDEF LinkDynamically}
 {    procedure mysql_set_local_infile_handler(mysql:PMYSQL; local_infile_init:function (_para1:Ppointer; _para2:Pchar; _para3:pointer):longint; local_infile_read:function (_para1:pointer; _para2:Pchar; _para3:dword):longint; local_infile_end:procedure (_pa
 {    procedure mysql_set_local_infile_handler(mysql:PMYSQL; local_infile_init:function (_para1:Ppointer; _para2:Pchar; _para3:pointer):longint; local_infile_read:function (_para1:pointer; _para2:Pchar; _para3:dword):longint; local_infile_end:procedure (_pa
                 _para6:pointer);cdecl;external mysqllib name 'mysql_set_local_infile_handler';}
                 _para6:pointer);cdecl;external mysqllib name 'mysql_set_local_infile_handler';}
     procedure mysql_set_local_infile_default(mysql:PMYSQL);cdecl;external mysqllib name 'mysql_set_local_infile_default';
     procedure mysql_set_local_infile_default(mysql:PMYSQL);cdecl;external mysqllib name 'mysql_set_local_infile_default';
@@ -1150,7 +1338,6 @@ uses
     function mysql_manager_fetch_line(con:PMYSQL_MANAGER; res_buf:Pchar; res_buf_size:longint):longint;extdecl;external mysqllib name 'mysql_manager_fetch_line';
     function mysql_manager_fetch_line(con:PMYSQL_MANAGER; res_buf:Pchar; res_buf_size:longint):longint;extdecl;external mysqllib name 'mysql_manager_fetch_line';
     function mysql_read_query_result(mysql:PMYSQL):my_bool;extdecl;external mysqllib name 'mysql_read_query_result';
     function mysql_read_query_result(mysql:PMYSQL):my_bool;extdecl;external mysqllib name 'mysql_read_query_result';
 
 
-
     function mysql_stmt_init(mysql:PMYSQL):PMYSQL_STMT;extdecl;external mysqllib name 'mysql_stmt_init';
     function mysql_stmt_init(mysql:PMYSQL):PMYSQL_STMT;extdecl;external mysqllib name 'mysql_stmt_init';
     function mysql_stmt_prepare(stmt:PMYSQL_STMT; query:Pchar; length:dword):longint;extdecl;external mysqllib name 'mysql_stmt_prepare';
     function mysql_stmt_prepare(stmt:PMYSQL_STMT; query:Pchar; length:dword):longint;extdecl;external mysqllib name 'mysql_stmt_prepare';
     function mysql_stmt_execute(stmt:PMYSQL_STMT):longint;extdecl;external mysqllib name 'mysql_stmt_execute';
     function mysql_stmt_execute(stmt:PMYSQL_STMT):longint;extdecl;external mysqllib name 'mysql_stmt_execute';
@@ -1178,6 +1365,7 @@ uses
     function mysql_stmt_affected_rows(stmt:PMYSQL_STMT):my_ulonglong;extdecl;external mysqllib name 'mysql_stmt_affected_rows';
     function mysql_stmt_affected_rows(stmt:PMYSQL_STMT):my_ulonglong;extdecl;external mysqllib name 'mysql_stmt_affected_rows';
     function mysql_stmt_insert_id(stmt:PMYSQL_STMT):my_ulonglong;extdecl;external mysqllib name 'mysql_stmt_insert_id';
     function mysql_stmt_insert_id(stmt:PMYSQL_STMT):my_ulonglong;extdecl;external mysqllib name 'mysql_stmt_insert_id';
     function mysql_stmt_field_count(stmt:PMYSQL_STMT):dword;extdecl;external mysqllib name 'mysql_stmt_field_count';
     function mysql_stmt_field_count(stmt:PMYSQL_STMT):dword;extdecl;external mysqllib name 'mysql_stmt_field_count';
+
     function mysql_commit(mysql:PMYSQL):my_bool;extdecl;external mysqllib name 'mysql_commit';
     function mysql_commit(mysql:PMYSQL):my_bool;extdecl;external mysqllib name 'mysql_commit';
     function mysql_rollback(mysql:PMYSQL):my_bool;extdecl;external mysqllib name 'mysql_rollback';
     function mysql_rollback(mysql:PMYSQL):my_bool;extdecl;external mysqllib name 'mysql_rollback';
     function mysql_autocommit(mysql:PMYSQL; auto_mode:my_bool):my_bool;extdecl;external mysqllib name 'mysql_autocommit';
     function mysql_autocommit(mysql:PMYSQL; auto_mode:my_bool):my_bool;extdecl;external mysqllib name 'mysql_autocommit';
@@ -1225,13 +1413,42 @@ uses
       mysql_next_result: function (mysql:PMYSQL):longint;extdecl;
       mysql_next_result: function (mysql:PMYSQL):longint;extdecl;
       mysql_close: procedure (sock:PMYSQL);extdecl;
       mysql_close: procedure (sock:PMYSQL);extdecl;
 
 
+      mysql_stmt_init: function (mysql:PMYSQL):PMYSQL_STMT;extdecl;
+      mysql_stmt_prepare: function (stmt:PMYSQL_STMT; query:Pchar; length:dword):longint;extdecl;
+      mysql_stmt_execute: function (stmt:PMYSQL_STMT):longint;extdecl;
+      mysql_stmt_fetch: function (stmt:PMYSQL_STMT):longint;extdecl;
+      mysql_stmt_fetch_column: function (stmt:PMYSQL_STMT; bind:PMYSQL_BIND; column:dword; offset:dword):longint;extdecl;
+      mysql_stmt_store_result: function (stmt:PMYSQL_STMT):longint;extdecl;
+      mysql_stmt_param_count: function (stmt:PMYSQL_STMT):dword;extdecl;
+      mysql_stmt_attr_set: function (stmt:PMYSQL_STMT; attr_type:enum_stmt_attr_type; attr:pointer):my_bool;extdecl;
+      mysql_stmt_attr_get: function (stmt:PMYSQL_STMT; attr_type:enum_stmt_attr_type; attr:pointer):my_bool;extdecl;
+      mysql_stmt_bind_param: function (stmt:PMYSQL_STMT; bnd:PMYSQL_BIND):my_bool;extdecl;
+      mysql_stmt_bind_result: function (stmt:PMYSQL_STMT; bnd:PMYSQL_BIND):my_bool;extdecl;
+      mysql_stmt_close: function (stmt:PMYSQL_STMT):my_bool;extdecl;
+      mysql_stmt_reset: function (stmt:PMYSQL_STMT):my_bool;extdecl;
+      mysql_stmt_free_result: function (stmt:PMYSQL_STMT):my_bool;extdecl;
+      mysql_stmt_send_long_data: function (stmt:PMYSQL_STMT; param_number:dword; data:Pchar; length:dword):my_bool;extdecl;
+      mysql_stmt_result_metadata: function (stmt:PMYSQL_STMT):PMYSQL_RES;extdecl;
+      mysql_stmt_param_metadata: function (stmt:PMYSQL_STMT):PMYSQL_RES;extdecl;
+      mysql_stmt_errno: function (stmt:PMYSQL_STMT):dword;extdecl;
+      mysql_stmt_error: function (stmt:PMYSQL_STMT):Pchar;extdecl;
+      mysql_stmt_sqlstate: function (stmt:PMYSQL_STMT):Pchar;extdecl;
+      mysql_stmt_row_seek: function (stmt:PMYSQL_STMT; offset:MYSQL_ROW_OFFSET):MYSQL_ROW_OFFSET;extdecl;
+      mysql_stmt_row_tell: function (stmt:PMYSQL_STMT):MYSQL_ROW_OFFSET;extdecl;
+      mysql_stmt_data_seek: procedure (stmt:PMYSQL_STMT; offset:my_ulonglong);extdecl;
+      mysql_stmt_num_rows: function (stmt:PMYSQL_STMT):my_ulonglong;extdecl;
+      mysql_stmt_affected_rows: function (stmt:PMYSQL_STMT):my_ulonglong;extdecl;
+      mysql_stmt_insert_id: function (stmt:PMYSQL_STMT):my_ulonglong;extdecl;
+      mysql_stmt_field_count: function (stmt:PMYSQL_STMT):dword;extdecl;
+
 {$ENDIF}
 {$ENDIF}
 
 
 
 
     { status return codes  }
     { status return codes  }
 
 
     const
     const
-       MYSQL_NO_DATA = 100;       
+       MYSQL_NO_DATA = 100;
+       MYSQL_DATA_TRUNCATED  = 101;
 
 
     function mysql_reload(mysql : PMySQL) : longint;
     function mysql_reload(mysql : PMySQL) : longint;
 
 
@@ -1256,8 +1473,8 @@ uses
 {$endif}
 {$endif}
 
 
 {$IFDEF LinkDynamically}
 {$IFDEF LinkDynamically}
-Procedure InitialiseMysql4;
-Procedure ReleaseMysql4;
+Procedure InitialiseMysql;
+Procedure ReleaseMysql;
 
 
 var Mysql4LibraryHandle : TLibHandle;
 var Mysql4LibraryHandle : TLibHandle;
 {$ENDIF}
 {$ENDIF}
@@ -1268,7 +1485,7 @@ implementation
 
 
 var RefCount : integer;
 var RefCount : integer;
 
 
-Procedure InitialiseMysql4;
+Procedure InitialiseMysql;
 
 
 begin
 begin
   inc(RefCount);
   inc(RefCount);
@@ -1354,11 +1571,37 @@ begin
     pointer(mysql_use_result) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_use_result');
     pointer(mysql_use_result) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_use_result');
     pointer(mysql_warning_count) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_warning_count');
     pointer(mysql_warning_count) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_warning_count');
 
 
-
+    pointer(mysql_stmt_init) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_init');
+    pointer(mysql_stmt_prepare) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_prepare');
+    pointer(mysql_stmt_execute) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_execute');
+    pointer(mysql_stmt_fetch) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_fetch');
+    pointer(mysql_stmt_fetch_column) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_fetch_column');
+    pointer(mysql_stmt_store_result) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_store_result');
+    pointer(mysql_stmt_param_count) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_param_count');
+    pointer(mysql_stmt_attr_set) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_attr_set');
+    pointer(mysql_stmt_attr_get) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_attr_get');
+    pointer(mysql_stmt_bind_param) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_bind_param');
+    pointer(mysql_stmt_bind_result) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_bind_result');
+    pointer(mysql_stmt_close) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_close');
+    pointer(mysql_stmt_reset) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_reset');
+    pointer(mysql_stmt_free_result) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_free_result');
+    pointer(mysql_stmt_send_long_data) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_send_long_data');
+    pointer(mysql_stmt_result_metadata) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_result_metadata');
+    pointer(mysql_stmt_param_metadata) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_param_metadata');
+    pointer(mysql_stmt_errno) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_errno');
+    pointer(mysql_stmt_error) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_error');
+    pointer(mysql_stmt_sqlstate) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_sqlstate');
+    pointer(mysql_stmt_row_seek) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_row_seek');
+    pointer(mysql_stmt_row_tell) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_row_tell');
+    pointer(mysql_stmt_data_seek) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_data_seek');
+    pointer(mysql_stmt_num_rows) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_num_rows');
+    pointer(mysql_stmt_affected_rows) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_affected_rows');
+    pointer(mysql_stmt_insert_id) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_insert_id');
+    pointer(mysql_stmt_field_count) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stmt_field_count');
     end;
     end;
 end;
 end;
 
 
-Procedure ReleaseMysql4;
+Procedure ReleaseMysql;
 
 
 begin
 begin
   if RefCount > 0 then dec(RefCount);
   if RefCount > 0 then dec(RefCount);
@@ -1397,7 +1640,11 @@ end;
 
 
     function IS_NUM(t : enum_field_types) : boolean;
     function IS_NUM(t : enum_field_types) : boolean;
     begin
     begin
+{$IFDEF mysql50}
+      IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR) or (t=FIELD_TYPE_NEWDECIMAL);
+{$ELSE}
       IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR);
       IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR);
+{$ENDIF}
     end;
     end;
 
 
     function INTERNAL_NUM_FIELD(f : Pst_mysql_field) : boolean;
     function INTERNAL_NUM_FIELD(f : Pst_mysql_field) : boolean;

+ 12 - 0
packages/base/mysql/mysql50.pp

@@ -0,0 +1,12 @@
+{
+  Contains the mysql calls for MySQL 5.0
+}
+
+unit mysql50;
+
+{$UNDEF LinkDynamically}
+{$DEFINE MYSQL50}
+
+{$i mysql.inc}
+
+end.

+ 12 - 0
packages/base/mysql/mysql50dyn.pp

@@ -0,0 +1,12 @@
+{
+  Contains the mysql calls for MySQL 5.0
+}
+
+unit mysql50dyn;
+
+{$DEFINE LinkDynamically}
+{$DEFINE MYSQL50}
+
+{$i mysql.inc}
+
+end.