+ added support for MySQL 5.0

+ added mysql_stmt_* calls to dyn. loaded mysql-library

git-svn-id: trunk@1800 -
This commit is contained in:
joost 2005-11-22 00:52:58 +00:00
parent f7f14e4dee
commit d1f1e5adf4
13 changed files with 418 additions and 117 deletions

3
.gitattributes vendored
View File

@ -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/mysql41conn.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/odbc/Makefile 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/mysql4impl.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.pp svneol=native#text/plain
packages/base/mysql/rmdb -text

View File

@ -15,7 +15,7 @@ program aListTables;
uses
Classes,
sqldb, pqconnection, mysql40conn, mysql41conn, IBConnection, ODBCConn,
sqldb, pqconnection, mysql40conn, mysql41conn, mysql50conn, IBConnection, ODBCConn,
SqldbExampleUnit;
var Tables : TStringList;
@ -27,6 +27,7 @@ begin
// create FConnection
if dbtype = 'mysql40' then Fconnection := tMySQL40Connection.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 = 'interbase' then Fconnection := tIBConnection.Create(nil);
if dbtype = 'odbc' then Fconnection := tODBCConnection.Create(nil);

View File

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

View File

@ -17,7 +17,7 @@ interface
uses
Classes,
sqldb, pqconnection, IBConnection, ODBCConn,
mysql40conn, mysql41conn;
mysql40conn, mysql41conn, mysql50conn;
var dbtype,
dbname,
@ -82,6 +82,7 @@ procedure CreateFConnection;
begin
if dbtype = 'mysql40' then Fconnection := tMySQL40Connection.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 = 'interbase' then Fconnection := tIBConnection.Create(nil);
if dbtype = 'odbc' then Fconnection := tODBCConnection.Create(nil);

View File

@ -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
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
PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-go32v2)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-win32)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-os2)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-freebsd)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-beos)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-netbsd)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-solaris)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-qnx)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-netware)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-openbsd)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-wdosx)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-emx)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-watcom)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),i386-wince)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),m68k-amiga)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),m68k-atari)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),m68k-palmos)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),powerpc-linux)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),powerpc-macos)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),sparc-linux)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),sparc-solaris)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),x86_64-linux)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),x86_64-win64)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),arm-wince)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
override TARGET_UNITS+=mysql40conn mysql41conn mysql4conn
override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql4conn
endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)

View File

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

View File

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

View File

@ -6,22 +6,29 @@ interface
uses
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}
{$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}
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}
@ -113,6 +120,7 @@ Resourcestring
SErrFetchingdata = 'Error fetching row data: %s';
SErrGettingResult = 'Error getting result set: %s';
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).';
SErrNotversion40 = 'TMySQL40Connection can not work with the installed MySQL client version (%s).';
@ -144,9 +152,9 @@ function TConnectionName.GetClientInfo: string;
begin
// To make it possible to call this if there's no connection yet
InitialiseMysql4;
InitialiseMysql;
Result:=strpas(mysql_get_client_info());
ReleaseMysql4;
ReleaseMysql;
end;
function TConnectionName.GetServerStatus: String;
@ -186,13 +194,18 @@ end;
procedure TConnectionName.DoInternalConnect;
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
Raise EInOutError.CreateFmt(SErrNotversion41,[strpas(mysql_get_client_info())]);
{$ELSE}
{$ELSE}
if copy(strpas(mysql_get_client_info()),1,3)<>'4.0' then
Raise EInOutError.CreateFmt(SErrNotversion40,[strpas(mysql_get_client_info())]);
{$ENDIF}
{$ENDIF}
inherited DoInternalConnect;
ConnectToServer;
@ -204,7 +217,7 @@ begin
inherited DoInternalDisconnect;
mysql_close(FMySQL);
FMySQL:=Nil;
ReleaseMysql4;
ReleaseMysql;
end;
function TConnectionName.GetHandle: pointer;

View File

@ -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
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_VERSION=2.0.0
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_EXAMPLES+=testdb4 testdb3

View File

@ -7,7 +7,7 @@ name=mysql
version=2.0.0
[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
[require]

View File

@ -38,6 +38,9 @@ uses
mysqllib = 'libmysql.dll';
{$ENDIF}
{$IFDEF mysql50}
{$DEFINE mysql41}
{$ENDIF mysql50}
{$PACKRECORDS C}
@ -101,9 +104,14 @@ uses
COM_DEBUG,COM_PING,COM_TIME,COM_DELAYED_INSERT,
COM_CHANGE_USER,COM_BINLOG_DUMP,COM_TABLE_DUMP,
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_RESET_STMT,COM_SET_OPTION,
{$ENDIF}
{$ENDIF}
COM_END
);
@ -138,6 +146,9 @@ uses
AUTO_INCREMENT_FLAG = 512; // field is a autoincrement field
TIMESTAMP_FLAG = 1024; // Field is a timestamp
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)
PART_KEY_FLAG = 16384; // Intern; Part of some key
GROUP_FLAG = 32768; // Intern: Group field
@ -189,7 +200,19 @@ uses
SERVER_MORE_RESULTS_EXISTS = 8; // Multi query - next query exists
SERVER_QUERY_NO_GOOD_INDEX_USED = 16;
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
{$IFDEF mysql50}
SERVER_STATUS_NO_BACKSLASH_ESCAPES = 512;
{$ENDIF}
{$IFDEF mysql41}
MYSQL_ERRMSG_SIZE = 512;
@ -199,6 +222,10 @@ uses
NET_READ_TIMEOUT = 30; // Timeout on read
NET_WRITE_TIMEOUT = 60; // Timeout on write
NET_WAIT_TIMEOUT = 8*60*60; // Wait for new query
{$IFDEF mysql50}
ONLY_KILL_QUERY = 1;
{$ENDIF}
const
MAX_TINYINT_WIDTH = 3; // Max width for a TINY w.o. sign
@ -246,7 +273,12 @@ uses
return_status : Pdword;
reading_or_writing : byte;
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
queries in cache that have not stored its results yet }
{ $endif}
@ -275,7 +307,11 @@ uses
MYSQL_TYPE_TIMESTAMP,MYSQL_TYPE_LONGLONG,
MYSQL_TYPE_INT24,MYSQL_TYPE_DATE,MYSQL_TYPE_TIME,
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_MEDIUM_BLOB := 250,MYSQL_TYPE_LONG_BLOB := 251,
MYSQL_TYPE_BLOB := 252,MYSQL_TYPE_VAR_STRING := 253,
@ -287,6 +323,9 @@ uses
const
CLIENT_MULTI_QUERIES = CLIENT_MULTI_STATEMENTS;
FIELD_TYPE_DECIMAL = MYSQL_TYPE_DECIMAL;
{$IFDEF mysql50}
FIELD_TYPE_NEWDECIMAL = MYSQL_TYPE_NEWDECIMAL;
{$ENDIF}
FIELD_TYPE_TINY = MYSQL_TYPE_TINY;
FIELD_TYPE_SHORT = MYSQL_TYPE_SHORT;
FIELD_TYPE_LONG = MYSQL_TYPE_LONG;
@ -312,7 +351,9 @@ uses
FIELD_TYPE_CHAR = MYSQL_TYPE_TINY;
FIELD_TYPE_INTERVAL = MYSQL_TYPE_ENUM;
FIELD_TYPE_GEOMETRY = MYSQL_TYPE_GEOMETRY;
{$IFDEF mysql50}
FIELD_TYPE_BIT = MYSQL_TYPE_BIT;
{$ENDIF}
{ Shutdown/kill enums and constants }
{ Bits for THD::killable. }
MYSQL_SHUTDOWN_KILLABLE_CONNECT : byte = 1 shl 0;
@ -338,6 +379,12 @@ uses
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 }
enum_mysql_set_option = (MYSQL_OPTION_MULTI_STATEMENTS_ON,
MYSQL_OPTION_MULTI_STATEMENTS_OFF
@ -380,8 +427,13 @@ uses
end;
{ The following is for user defined functions }
{$IFDEF mysql50}
Item_result = (STRING_RESULT,REAL_RESULT,INT_RESULT,
ROW_RESULT);
{$ELSE}
Item_result = (STRING_RESULT := 0,REAL_RESULT,INT_RESULT,
ROW_RESULT,DECIMAL_RESULT);
{$ENDIF}
PItem_result = ^Item_result;
Pst_udf_args = ^st_udf_args;
@ -391,7 +443,10 @@ uses
args : ^Pchar; // Pointer to item_results
lengths : Pdword; // 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;
UDF_ARGS = st_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';
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';
{$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 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';
@ -440,6 +498,10 @@ uses
{$ENDIF}
{ 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}
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';
@ -626,7 +688,11 @@ uses
MYSQL_OPT_WRITE_TIMEOUT,MYSQL_OPT_USE_RESULT,
MYSQL_OPT_USE_REMOTE_CONNECTION,MYSQL_OPT_USE_EMBEDDED_CONNECTION,
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
MAX_MYSQL_MANAGER_ERR = 256;
@ -706,6 +772,9 @@ uses
methods_to_use : mysql_option;
client_ip : Pchar;
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 }
local_infile_init : function (_para1:Ppointer; _para2:Pchar; _para3:pointer):longint;cdecl;
local_infile_read : function (_para1:pointer; _para2:Pchar; _para3:dword):longint;
@ -759,6 +828,22 @@ uses
CHARSET_INFO = 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 = ^st_mysql;
@ -778,7 +863,7 @@ uses
field_alloc : MEM_ROOT;
affected_rows : my_ulonglong;
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
packet_length : dword;
port : dword;
@ -903,26 +988,106 @@ uses
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;
st_mysql_bind = record
length : Pdword; // output length pointer
is_null : Pmy_bool; // Pointer to null indicator
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_length : dword; // buffer length, must be set for str/binary
{ Following are for internal use. Set by mysql_stmt_bind_param }
{$IFNDEF mysql50}
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
{$IFNDEF mysql50}
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
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
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
{$ELSE}
is_null_value : my_bool; // Used if is_null is 0
{$ENDIF}
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);
end;
MYSQL_BIND = st_mysql_bind;
@ -944,6 +1109,12 @@ uses
for buffered, unbuffered and cursor fetch). }
read_row_func : function (stmt:Pst_mysql_stmt; row:PPbyte):longint;cdecl;
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
param_count : dword; // input parameter count
field_count : dword; // number of columns in result set
@ -952,7 +1123,12 @@ uses
sqlstate : array[0..(SQLSTATE_LENGTH+1)-1] of char;
send_types_to_server : my_bool; // Types of input parameters should be sent to server
bind_param_done : my_bool; // input buffers were supplied
{$IFNDEF mysql50}
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
{ Is set to true if we need to calculate field->max_length for
metadata fields when doing mysql_stmt_store_result. }
@ -964,7 +1140,13 @@ uses
where this was done automatically.
In the new API we do that only by request because it slows down
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)
@ -1076,11 +1258,17 @@ uses
{ 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_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 }
const
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
_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';
@ -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_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_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';
@ -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_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_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_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_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}
{ status return codes }
const
MYSQL_NO_DATA = 100;
MYSQL_NO_DATA = 100;
MYSQL_DATA_TRUNCATED = 101;
function mysql_reload(mysql : PMySQL) : longint;
@ -1256,8 +1473,8 @@ uses
{$endif}
{$IFDEF LinkDynamically}
Procedure InitialiseMysql4;
Procedure ReleaseMysql4;
Procedure InitialiseMysql;
Procedure ReleaseMysql;
var Mysql4LibraryHandle : TLibHandle;
{$ENDIF}
@ -1268,7 +1485,7 @@ implementation
var RefCount : integer;
Procedure InitialiseMysql4;
Procedure InitialiseMysql;
begin
inc(RefCount);
@ -1354,11 +1571,37 @@ begin
pointer(mysql_use_result) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_use_result');
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;
Procedure ReleaseMysql4;
Procedure ReleaseMysql;
begin
if RefCount > 0 then dec(RefCount);
@ -1397,7 +1640,11 @@ end;
function IS_NUM(t : enum_field_types) : boolean;
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);
{$ENDIF}
end;
function INTERNAL_NUM_FIELD(f : Pst_mysql_field) : boolean;

View File

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

View File

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