From b805e52e7e8988e0eb472917a97c680e14803b65 Mon Sep 17 00:00:00 2001 From: joost Date: Fri, 18 Nov 2005 14:28:42 +0000 Subject: [PATCH] + initial implementation of mysql40[dyn].pp and mysql41[dyn].pp git-svn-id: trunk@1780 - --- .gitattributes | 5 + packages/base/mysql/Makefile | 76 +- packages/base/mysql/Makefile.fpc | 2 +- packages/base/mysql/mysql.inc | 1421 +++++++++++++++++++++++++++++ packages/base/mysql/mysql40.pp | 12 + packages/base/mysql/mysql40dyn.pp | 12 + packages/base/mysql/mysql41.pp | 12 + packages/base/mysql/mysql41dyn.pp | 12 + 8 files changed, 1513 insertions(+), 39 deletions(-) create mode 100644 packages/base/mysql/mysql.inc create mode 100644 packages/base/mysql/mysql40.pp create mode 100644 packages/base/mysql/mysql40dyn.pp create mode 100644 packages/base/mysql/mysql41.pp create mode 100644 packages/base/mysql/mysql41dyn.pp diff --git a/.gitattributes b/.gitattributes index 9d9933b178..45bf20ae92 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1499,6 +1499,7 @@ packages/base/mysql/fpmake.inc svneol=native#text/plain packages/base/mysql/fpmake.pp svneol=native#text/plain packages/base/mysql/mkdb -text packages/base/mysql/my4_sys.pp svneol=native#text/plain +packages/base/mysql/mysql.inc svneol=native#text/plain packages/base/mysql/mysql3.pp svneol=native#text/plain packages/base/mysql/mysql3_com.pp svneol=native#text/plain packages/base/mysql/mysql3_comdyn.pp svneol=native#text/plain @@ -1508,6 +1509,10 @@ packages/base/mysql/mysql3dyn.pp svneol=native#text/plain packages/base/mysql/mysql3impl.inc svneol=native#text/plain packages/base/mysql/mysql3types.inc svneol=native#text/plain packages/base/mysql/mysql4.pp svneol=native#text/plain +packages/base/mysql/mysql40.pp svneol=native#text/plain +packages/base/mysql/mysql40dyn.pp svneol=native#text/plain +packages/base/mysql/mysql41.pp svneol=native#text/plain +packages/base/mysql/mysql41dyn.pp svneol=native#text/plain packages/base/mysql/mysql4_com.pp svneol=native#text/plain packages/base/mysql/mysql4_comdyn.pp svneol=native#text/plain packages/base/mysql/mysql4_comtypes.inc svneol=native#text/plain diff --git a/packages/base/mysql/Makefile b/packages/base/mysql/Makefile index cd1f8ceb72..9f4a5772a6 100644 --- a/packages/base/mysql/Makefile +++ b/packages/base/mysql/Makefile @@ -1,5 +1,5 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/10/20] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/11/12] # 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 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 +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 endif ifeq ($(FULL_TARGET),i386-linux) override TARGET_EXAMPLES+=testdb4 testdb3 diff --git a/packages/base/mysql/Makefile.fpc b/packages/base/mysql/Makefile.fpc index 09956e2334..d1a944dbe0 100644 --- a/packages/base/mysql/Makefile.fpc +++ b/packages/base/mysql/Makefile.fpc @@ -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 +units=my4_sys mysql4_com mysql4_version mysql4 mysql4dyn mysql4_comdyn mysql3_com mysql3_version mysql3 mysql3_comdyn mysql3dyn mysql40 mysql40dyn mysql41 mysql41dyn examples=testdb4 testdb3 [require] diff --git a/packages/base/mysql/mysql.inc b/packages/base/mysql/mysql.inc new file mode 100644 index 0000000000..d25c39a4b7 --- /dev/null +++ b/packages/base/mysql/mysql.inc @@ -0,0 +1,1421 @@ +{ + This file is created by H2Pas, and thereafter heavily edited to make it + readable and dynamically loadable. + + The goal was not to be complete, but to make it work and maintainable. + + The mysql_com.h, mysql.h and some other files are merged together into this + one file. + + Automatically converted by H2Pas 1.0.0 from mysql_com.h / mysql.h + The following command line parameters were used: + -p + -D + -l + mysqlclient + mysql_com.h / mysql.h + +} +{$MODE objfpc} +{$MACRO on} + +interface + +uses +{$IFDEF LinkDynamically} + Dynlibs, sysutils, +{$ENDIF} + ctypes; + +{$IFDEF Unix} + {$DEFINE extdecl:=cdecl} + const + mysqllib = 'libmysqlclient.so'; +{$ENDIF} +{$IFDEF Win32} + {$DEFINE extdecl:=stdcall} + const + mysqllib = 'libmysql.dll'; +{$ENDIF} + + +{$PACKRECORDS C} + + { Copyright (C) 2000-2003 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA } + + type + my_bool = byte; + Pmy_bool = ^my_bool; + + PVIO = Pointer; + + Pgptr = ^gptr; + gptr = ^char; + + Pmy_socket = ^my_socket; + my_socket = longint; + + pppchar = ^ppchar; + PPByte = ^PByte; + +{ ------------ Start of declaration in "mysql_com.h" --------------------- } + + { + ** Common definition between mysql server & client + } + + { Field/table name length } + + const + NAME_LEN = 64; + HOSTNAME_LENGTH = 60; + USERNAME_LENGTH = 16; + SERVER_VERSION_LENGTH = 60; + SQLSTATE_LENGTH = 5; + LOCAL_HOST = 'localhost'; + LOCAL_HOST_NAMEDPIPE = '.'; + + const + MYSQL_NAMEDPIPE = 'MySQL'; + MYSQL_SERVICENAME = 'MySQL'; + + type + enum_server_command = (COM_SLEEP,COM_QUIT,COM_INIT_DB,COM_QUERY, + COM_FIELD_LIST,COM_CREATE_DB,COM_DROP_DB, + COM_REFRESH,COM_SHUTDOWN,COM_STATISTICS, + COM_PROCESS_INFO,COM_CONNECT,COM_PROCESS_KILL, + 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} + COM_PREPARE,COM_EXECUTE,COM_LONG_DATA,COM_CLOSE_STMT, + COM_RESET_STMT,COM_SET_OPTION, +{$ENDIF} + COM_END + ); + + { + Length of random string sent by server on handshake; this is also length of + obfuscated password, recieved from client + } + + const + SCRAMBLE_LENGTH = 20; + SCRAMBLE_LENGTH_323 = 8; + + { length of password stored in the db: new passwords are preceeded with '*' } + + SCRAMBLED_PASSWORD_CHAR_LENGTH = SCRAMBLE_LENGTH*2+1; + SCRAMBLED_PASSWORD_CHAR_LENGTH_323 = SCRAMBLE_LENGTH_323*2; + + + NOT_NULL_FLAG = 1; // Field can't be NULL + PRI_KEY_FLAG = 2; // Field is part of a primary key + UNIQUE_KEY_FLAG = 4; // Field is part of a unique key + MULTIPLE_KEY_FLAG = 8; // Field is part of a key + BLOB_FLAG = 16; // Field is a blob + UNSIGNED_FLAG = 32; // Field is unsigned + ZEROFILL_FLAG = 64; // Field is zerofill + BINARY_FLAG = 128; // Field is binary + + { The following are only sent to new clients } + + ENUM_FLAG = 256; // field is an enum + AUTO_INCREMENT_FLAG = 512; // field is a autoincrement field + TIMESTAMP_FLAG = 1024; // Field is a timestamp + SET_FLAG = 2048; // field is a set + NUM_FLAG = 32768; // Field is num (for clients) + PART_KEY_FLAG = 16384; // Intern; Part of some key + GROUP_FLAG = 32768; // Intern: Group field + UNIQUE_FLAG = 65536; // Intern: Used by sql_yacc + BINCMP_FLAG = 131072; // Intern: Used by sql_yacc + + REFRESH_GRANT = 1; // Refresh grant tables + REFRESH_LOG = 2; // Start on new log file + REFRESH_TABLES = 4; // close all tables + REFRESH_HOSTS = 8; // Flush host cache + REFRESH_STATUS = 16; // Flush status variables + REFRESH_THREADS = 32; // Flush thread cache + REFRESH_SLAVE = 64; // Reset master info and restart slave thread + REFRESH_MASTER = 128; // Remove all bin logs in the index and truncate the index + + { The following can't be set with mysql_refresh() } + REFRESH_READ_LOCK = 16384; // Lock tables for read + REFRESH_FAST = 32768; // Intern flag + REFRESH_QUERY_CACHE = 65536; // RESET (remove all queries) from query cache + REFRESH_QUERY_CACHE_FREE = $20000; // pack query cache + + REFRESH_DES_KEY_FILE = $40000; + REFRESH_USER_RESOURCES = $80000; + + CLIENT_LONG_PASSWORD = 1; // new more secure passwords + CLIENT_FOUND_ROWS = 2; // Found instead of affected rows + CLIENT_LONG_FLAG = 4; // Get all column flags + CLIENT_CONNECT_WITH_DB = 8; // One can specify db on connect + CLIENT_NO_SCHEMA = 16; // Don't allow database.table.column + CLIENT_COMPRESS = 32; // Can use compression protocol + CLIENT_ODBC = 64; // Odbc client + CLIENT_LOCAL_FILES = 128; // Can use LOAD DATA LOCAL + CLIENT_IGNORE_SPACE = 256; // Ignore spaces before '(' + CLIENT_PROTOCOL_41 = 512; // New 4.1 protocol + CLIENT_INTERACTIVE = 1024; // This is an interactive client + CLIENT_SSL = 2048; // Switch to SSL after handshake + CLIENT_IGNORE_SIGPIPE = 4096; // IGNORE sigpipes + CLIENT_TRANSACTIONS = 8192; // Client knows about transactions + CLIENT_RESERVED = 16384; // Old flag for 4.1 protocol + CLIENT_SECURE_CONNECTION = 32768; // New 4.1 authentication + CLIENT_MULTI_STATEMENTS = 65536; // Enable/disable multi-stmt support + CLIENT_MULTI_RESULTS = 131072; // Enable/disable multi-results + CLIENT_REMEMBER_OPTIONS : cardinal = 1 shl 31; + + + SERVER_STATUS_IN_TRANS = 1; // Transaction has started + SERVER_STATUS_AUTOCOMMIT = 2; // Server in auto_commit mode + SERVER_STATUS_MORE_RESULTS = 4; // More results on server + SERVER_MORE_RESULTS_EXISTS = 8; // Multi query - next query exists + SERVER_QUERY_NO_GOOD_INDEX_USED = 16; + SERVER_QUERY_NO_INDEX_USED = 32; + SERVER_STATUS_DB_DROPPED = 256; // A database was dropped + +{$IFDEF mysql41} + MYSQL_ERRMSG_SIZE = 512; +{$ELSE} + MYSQL_ERRMSG_SIZE = 200; +{$ENDIF} + NET_READ_TIMEOUT = 30; // Timeout on read + NET_WRITE_TIMEOUT = 60; // Timeout on write + NET_WAIT_TIMEOUT = 8*60*60; // Wait for new query + + const + MAX_TINYINT_WIDTH = 3; // Max width for a TINY w.o. sign + MAX_SMALLINT_WIDTH = 5; // Max width for a SHORT w.o. sign + MAX_MEDIUMINT_WIDTH = 8; // Max width for a INT24 w.o. sign + MAX_INT_WIDTH = 10; // Max width for a LONG w.o. sign + MAX_BIGINT_WIDTH = 20; // Max width for a LONGLONG + MAX_CHAR_WIDTH = 255; // Max length for a CHAR colum + MAX_BLOB_WIDTH = 8192; // Default width for blob + + type + Pst_net = ^st_net; + st_net = record +{ $if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)} + vio : PVio; + buff : Pbyte; + buff_end : Pbyte; + write_pos : Pbyte; + read_pos : Pbyte; + fd : my_socket; // For Perl DBI/dbd + max_packet : dword; + max_packet_size : dword; +{$IFNDEF mysql41} + last_errno : dword; +{$ENDIF} + pkt_nr : dword; + compress_pkt_nr : dword; + write_timeout : dword; + read_timeout : dword; + retry_count : dword; + fcntl : longint; +{$IFNDEF mysql41} + last_error : array[0..(MYSQL_ERRMSG_SIZE)-1] of char; + error : byte; + return_errno : my_bool; +{$ENDIF} + compress : my_bool; + { The following variable is set if we are doing several queries in one + command ( as in LOAD TABLE ... FROM MASTER ), + and do not want to confuse the client with OK at the wrong time } + remain_in_buf : dword; + length : dword; + buf_length : dword; + where_b : dword; + return_status : Pdword; + reading_or_writing : byte; + save_char : char; + no_send_ok : my_bool; + { Pointer to query object in query cache, do not equal NULL (0) for + queries in cache that have not stored its results yet } +{ $endif} +{$IFDEF mysql41} + last_error : array[0..(MYSQL_ERRMSG_SIZE)-1] of char; + sqlstate : array[0..(SQLSTATE_LENGTH+1)-1] of char; + last_errno : dword; + error : byte; +{$ENDIF} + query_cache_query : gptr; +{$IFDEF mysql41} + report_error : my_bool; // We should report error (we have unreported error) + return_errno : my_bool; +{$ENDIF} + end; + NET = st_net; + PNET = ^NET; + + const + packet_error : culong = not(0); + + type + enum_field_types = (MYSQL_TYPE_DECIMAL,MYSQL_TYPE_TINY, + MYSQL_TYPE_SHORT,MYSQL_TYPE_LONG,MYSQL_TYPE_FLOAT, + MYSQL_TYPE_DOUBLE,MYSQL_TYPE_NULL, + 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_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, + MYSQL_TYPE_STRING := 254,MYSQL_TYPE_GEOMETRY := 255 + ); + + { For backward compatibility } + + const + CLIENT_MULTI_QUERIES = CLIENT_MULTI_STATEMENTS; + FIELD_TYPE_DECIMAL = MYSQL_TYPE_DECIMAL; + FIELD_TYPE_TINY = MYSQL_TYPE_TINY; + FIELD_TYPE_SHORT = MYSQL_TYPE_SHORT; + FIELD_TYPE_LONG = MYSQL_TYPE_LONG; + FIELD_TYPE_FLOAT = MYSQL_TYPE_FLOAT; + FIELD_TYPE_DOUBLE = MYSQL_TYPE_DOUBLE; + FIELD_TYPE_NULL = MYSQL_TYPE_NULL; + FIELD_TYPE_TIMESTAMP = MYSQL_TYPE_TIMESTAMP; + FIELD_TYPE_LONGLONG = MYSQL_TYPE_LONGLONG; + FIELD_TYPE_INT24 = MYSQL_TYPE_INT24; + FIELD_TYPE_DATE = MYSQL_TYPE_DATE; + FIELD_TYPE_TIME = MYSQL_TYPE_TIME; + FIELD_TYPE_DATETIME = MYSQL_TYPE_DATETIME; + FIELD_TYPE_YEAR = MYSQL_TYPE_YEAR; + FIELD_TYPE_NEWDATE = MYSQL_TYPE_NEWDATE; + FIELD_TYPE_ENUM = MYSQL_TYPE_ENUM; + FIELD_TYPE_SET = MYSQL_TYPE_SET; + FIELD_TYPE_TINY_BLOB = MYSQL_TYPE_TINY_BLOB; + FIELD_TYPE_MEDIUM_BLOB = MYSQL_TYPE_MEDIUM_BLOB; + FIELD_TYPE_LONG_BLOB = MYSQL_TYPE_LONG_BLOB; + FIELD_TYPE_BLOB = MYSQL_TYPE_BLOB; + FIELD_TYPE_VAR_STRING = MYSQL_TYPE_VAR_STRING; + FIELD_TYPE_STRING = MYSQL_TYPE_STRING; + FIELD_TYPE_CHAR = MYSQL_TYPE_TINY; + FIELD_TYPE_INTERVAL = MYSQL_TYPE_ENUM; + FIELD_TYPE_GEOMETRY = MYSQL_TYPE_GEOMETRY; + + { Shutdown/kill enums and constants } + { Bits for THD::killable. } + MYSQL_SHUTDOWN_KILLABLE_CONNECT : byte = 1 shl 0; + MYSQL_SHUTDOWN_KILLABLE_TRANS : byte = 1 shl 1; + MYSQL_SHUTDOWN_KILLABLE_LOCK_TABLE : byte = 1 shl 2; + MYSQL_SHUTDOWN_KILLABLE_UPDATE : byte = 1 shl 3; + + + { We want levels to be in growing order of hardness (because we use number + comparisons). Note that DEFAULT does not respect the growing property, but + it's ok. } + type + mysql_enum_shutdown_level = (SHUTDOWN_DEFAULT := 0, + SHUTDOWN_WAIT_CONNECTIONS := 1, //MYSQL_SHUTDOWN_KILLABLE_CONNECT, // wait for existing connections to finish + SHUTDOWN_WAIT_TRANSACTIONS := 2, //MYSQL_SHUTDOWN_KILLABLE_TRANS, // wait for existing trans to finish + SHUTDOWN_WAIT_UPDATES := 8, //MYSQL_SHUTDOWN_KILLABLE_UPDATE, // wait for existing updates to finish (=> no partial MyISAM update) + SHUTDOWN_WAIT_ALL_BUFFERS := 16, //MYSQL_SHUTDOWN_KILLABLE_UPDATE shl 1,// flush InnoDB buffers and other storage engines' buffers + SHUTDOWN_WAIT_CRITICAL_BUFFERS := 17, //(MYSQL_SHUTDOWN_KILLABLE_UPDATE shl 1)+1, // don't flush InnoDB buffers, flush other storage engines' buffers + { Now the 2 levels of the KILL command } +{ $if MYSQL_VERSION_ID >= 50000} + KILL_QUERY := 254, +{ $endif} + KILL_CONNECTION := 255 + ); + + { options for mysql_set_option } + enum_mysql_set_option = (MYSQL_OPTION_MULTI_STATEMENTS_ON, + MYSQL_OPTION_MULTI_STATEMENTS_OFF + ); + + function net_new_transaction(net : st_net) : st_net; + +{$IFNDEF LinkDynamically} + function my_net_init(net:PNET; vio:PVio):my_bool;cdecl;external mysqllib name 'my_net_init'; + procedure my_net_local_init(net:PNET);cdecl;external mysqllib name 'my_net_local_init'; + procedure net_end(net:PNET);cdecl;external mysqllib name 'net_end'; + procedure net_clear(net:PNET);cdecl;external mysqllib name 'net_clear'; + function net_realloc(net:PNET; length:dword):my_bool;cdecl;external mysqllib name 'net_realloc'; + function net_flush(net:PNET):my_bool;cdecl;external mysqllib name 'net_flush'; + function my_net_write(net:PNET; packet:Pchar; len:dword):my_bool;cdecl;external mysqllib name 'my_net_write'; + function net_write_command(net:PNET; command:byte; header:Pchar; head_len:dword; packet:Pchar; + len:dword):my_bool;cdecl;external mysqllib name 'net_write_command'; + function net_real_write(net:PNET; packet:Pchar; len:dword):longint;cdecl;external mysqllib name 'net_real_write'; + function my_net_read(net:PNET):dword;cdecl;external mysqllib name 'my_net_read'; +{$ENDIF} + { The following function is not meant for normal usage + Currently it's used internally by manager.c } + + type + Psockaddr = ^sockaddr; + sockaddr = record + // undefined structure + end; +{$IFNDEF LinkDynamically} + function my_connect(s:my_socket; name:Psockaddr; namelen:dword; timeout:dword):longint;cdecl;external mysqllib name 'my_connect'; +{$ENDIF} + + type + Prand_struct = ^rand_struct; + rand_struct = record + seed1 : dword; + seed2 : dword; + max_value : dword; + max_value_dbl : double; + end; + + { The following is for user defined functions } + Item_result = (STRING_RESULT,REAL_RESULT,INT_RESULT, + ROW_RESULT); + PItem_result = ^Item_result; + + Pst_udf_args = ^st_udf_args; + st_udf_args = record + arg_count : dword; // Number of arguments + arg_type : PItem_result; // Pointer to item_results + args : ^Pchar; // Pointer to item_results + lengths : Pdword; // Length of string arguments + maybe_null : Pchar; // Length of string arguments + + end; + UDF_ARGS = st_udf_args; + PUDF_ARGS = ^UDF_ARGS; + + { This holds information about the result } + + Pst_udf_init = ^st_udf_init; + st_udf_init = record + maybe_null : my_bool; // 1 if function can return NULL + decimals : dword; // for real functions + max_length : dword; // For string functions + ptr : Pchar; // free pointer for function data + const_item : my_bool; // free pointer for function data + end; + UDF_INIT = st_udf_init; + PUDF_INIT = ^UDF_INIT; + + { Constants when using compression } + const + NET_HEADER_SIZE = 4; // standard header size + COMP_HEADER_SIZE = 3; // compression header extra size + + { Prototypes to password functions } + + { These functions are used for authentication by client and server and + implemented in sql/password.c } +{$IFNDEF LinkDynamically} + procedure randominit(_para1:Prand_struct; seed1:dword; seed2:dword);cdecl;external mysqllib name 'randominit'; + function my_rnd(_para1:Prand_struct):double;cdecl;external mysqllib name 'my_rnd'; + procedure create_random_string(fto:Pchar; length:dword; rand_st:Prand_struct);cdecl;external mysqllib name 'create_random_string'; + procedure hash_password(fto:Pdword; password:Pchar; password_len:dword);cdecl;external mysqllib name 'hash_password'; + procedure make_scrambled_password_323(fto:Pchar; password:Pchar);cdecl;external mysqllib name 'make_scrambled_password_323'; + procedure scramble_323(fto:Pchar; message:Pchar; password:Pchar);cdecl;external mysqllib name '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 make_password_from_salt_323(fto:Pchar; salt:Pdword);cdecl;external mysqllib name 'make_password_from_salt_323'; + 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'; + procedure get_salt_from_password(res:Pbyte; password:Pchar);cdecl;external mysqllib name 'get_salt_from_password'; + procedure make_password_from_salt(fto:Pchar; hash_stage2:Pbyte);cdecl;external mysqllib name 'make_password_from_salt'; + { end of password.c } + + function get_tty_password(opt_message:Pchar):Pchar;cdecl;external mysqllib name 'get_tty_password'; + function mysql_errno_to_sqlstate(mysql_errno:dword):Pchar;cdecl;external mysqllib name 'mysql_errno_to_sqlstate'; +{$ENDIF} + + { Some other useful functions } +{$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'; + function my_thread_init:my_bool;cdecl;external mysqllib name 'my_thread_init'; + procedure my_thread_end;cdecl;external mysqllib name 'my_thread_end'; +{$ELSE} + var + my_init : function :my_bool;cdecl; + my_thread_init : function :my_bool;cdecl; + my_thread_end : procedure ;cdecl; +{$ENDIF} + +{$ifdef _global_h} +{$IFNDEF LinkDynamically} + function net_field_length(packet:PPuchar):culong;extdecl;external mysqllib name 'net_field_length_ll'; + function net_field_length_ll(packet:PPuchar):my_ulonglong;cdecl;external mysqllib name 'net_field_length_ll'; + function net_store_length(pkg:Pchar; length:ulonglong):Pchar;cdecl;external mysqllib name 'net_store_length'; +{$ENDIF} +{$endif} + + const + NULL_LENGTH : dword = not(0); // For net_store_length + + const + MYSQL_STMT_HEADER = 4; + MYSQL_LONG_DATA_HEADER = 6; + +{ ------------ Stop of declaration in "mysql_com.h" ----------------------- } + +{ $include "mysql_time.h"} +{ $include "mysql_version.h"} +{ $include "typelib.h"} +{ $include "my_list.h" /* for LISTs used in 'MYSQL' and 'MYSQL_STMT' */} + +{$IFNDEF LinkDynamically} + var + mysql_port : dword;cvar;external; + mysql_unix_port : Pchar;cvar;external; +{$ENDIF} + + const + CLIENT_NET_READ_TIMEOUT = 365*24*3600; // Timeout on read + CLIENT_NET_WRITE_TIMEOUT = 365*24*3600; // Timeout on write + +{$ifdef NETWARE} +(** unsupported pragma#pragma pack(push, 8) /* 8 byte alignment */*) +{$endif} + + type + Pst_mysql_field = ^st_mysql_field; + st_mysql_field = record + name : Pchar; // Name of column +{$IFDEF mysql41} + org_name : Pchar; // Original column name, if an alias +{$ENDIF} + table : Pchar; // Table of column if column was a field + org_table : Pchar; // Org table name, if table was an alias + db : Pchar; // Database for table +{$IFDEF mysql41} + catalog : Pchar; // Catalog for table +{$ENDIF} + def : Pchar; // Default value (set by mysql_list_fields) + length : dword; // Width of column (create length) + max_length : dword; // Max width for selected set +{$IFDEF mysql41} + name_length : dword; + org_name_length : dword; + table_length : dword; + org_table_length : dword; + db_length : dword; + catalog_length : dword; + def_length : dword; +{$ENDIF} + flags : dword; // Div flags + decimals : dword; // Number of decimals in field +{$IFDEF mysql41} + charsetnr : dword; // Character set +{$ENDIF} + ftype : enum_field_types; // Type of field. See mysql_com.h for types + end; + MYSQL_FIELD = st_mysql_field; + PMYSQL_FIELD = ^MYSQL_FIELD; + + PMYSQL_ROW = ^MYSQL_ROW; // return data as array of strings + MYSQL_ROW = ppchar; + + PMYSQL_FIELD_OFFSET = ^MYSQL_FIELD_OFFSET; // offset to current field + MYSQL_FIELD_OFFSET = dword; + + function IS_PRI_KEY(n : longint) : boolean; + function IS_NOT_NULL(n : longint) : boolean; + function IS_BLOB(n : longint) : boolean; + function IS_NUM(t : enum_field_types) : boolean; + function INTERNAL_NUM_FIELD(f : Pst_mysql_field) : boolean; + function IS_NUM_FIELD(f : Pst_mysql_field) : boolean; + + type +{$if defined(NO_CLIENT_LONG_LONG)} + my_ulonglong = dword; +{$elseif defined(mswindows)} + my_ulonglong = int64; +{$else} + my_ulonglong = qword; +{$endif} + Pmy_ulonglong = ^my_ulonglong; + + const + MYSQL_COUNT_ERROR = not (my_ulonglong(0)); + + type + Pst_mysql_rows = ^st_mysql_rows; + st_mysql_rows = record + next : Pst_mysql_rows; // list of rows + data : MYSQL_ROW; +{$IFDEF mysql41} + length : dword; +{$ENDIF} + end; + MYSQL_ROWS = st_mysql_rows; + PMYSQL_ROWS = ^MYSQL_ROWS; + + PMYSQL_ROW_OFFSET = ^MYSQL_ROW_OFFSET; // offset to current row + MYSQL_ROW_OFFSET = MYSQL_ROWS; + +{ ------------ Start of declaration in "my_alloc.h" -------------------- } +{ $include "my_alloc.h"} + + const + ALLOC_MAX_BLOCK_TO_DROP = 4096; + ALLOC_MAX_BLOCK_USAGE_BEFORE_DROP = 10; + + { struct for once_alloc (block) } + type + Pst_used_mem = ^st_used_mem; + st_used_mem = record + next : Pst_used_mem; // Next block in use + left : dword; // memory left in block + size : dword; // size of block + end; + USED_MEM = st_used_mem; + PUSED_MEM = ^USED_MEM; + + + Pst_mem_root = ^st_mem_root; + st_mem_root = record + free : PUSED_MEM; // blocks with free memory in it + used : PUSED_MEM; // blocks almost without free memory + pre_alloc : PUSED_MEM; // preallocated block + min_malloc : dword; // if block have less memory it will be put in 'used' list + block_size : dword; // initial block size + block_num : dword; // allocated blocks counter + { first free block in queue test counter (if it exceed + MAX_BLOCK_USAGE_BEFORE_DROP block will be dropped in 'used' list) } + first_block_usage : dword; + error_handler : procedure ;cdecl; + end; + MEM_ROOT = st_mem_root; + PMEM_ROOT = ^MEM_ROOT; + +{ ------------ Stop of declaration in "my_alloc.h" ---------------------- } + + type + Pst_mysql_data = ^st_mysql_data; + st_mysql_data = record + rows : my_ulonglong; + fields : dword; + data : PMYSQL_ROWS; + alloc : MEM_ROOT; +{ $if !defined(CHECK_EMBEDDED_DIFFERENCES) || defined(EMBEDDED_LIBRARY)} +{$IFDEF mysql41} + prev_ptr : ^PMYSQL_ROWS; +{$ENDIF} +{ $endif} + end; + + MYSQL_DATA = st_mysql_data; + PMYSQL_DATA = ^MYSQL_DATA; + mysql_option = (MYSQL_OPT_CONNECT_TIMEOUT,MYSQL_OPT_COMPRESS, + MYSQL_OPT_NAMED_PIPE,MYSQL_INIT_COMMAND, + MYSQL_READ_DEFAULT_FILE,MYSQL_READ_DEFAULT_GROUP, + MYSQL_SET_CHARSET_DIR,MYSQL_SET_CHARSET_NAME, + MYSQL_OPT_LOCAL_INFILE,MYSQL_OPT_PROTOCOL, + MYSQL_SHARED_MEMORY_BASE_NAME,MYSQL_OPT_READ_TIMEOUT, + 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); + + const + MAX_MYSQL_MANAGER_ERR = 256; + MAX_MYSQL_MANAGER_MSG = 256; + MANAGER_OK = 200; + MANAGER_INFO = 250; + MANAGER_ACCESS = 401; + MANAGER_CLIENT_ERR = 450; + MANAGER_INTERNAL_ERR = 500; + + type + st_dynamic_array = record + buffer : ^char; + elements : cuint; + max_element : cuint; + alloc_increment : cuint; + size_of_element : cuint; + end; + DYNAMIC_ARRAY = st_dynamic_array; + Pst_dynamic_array = ^st_dynamic_array; + + Pst_mysql_options = ^st_mysql_options; + st_mysql_options = record + connect_timeout : dword; +{$IFNDEF mysql41} + client_flag : dword; + port : dword; +{$ELSE} + read_timeout : dword; + write_timeout : dword; +{$ENDIF} +{$IFDEF mysql41} + port : dword; + protocol : dword; + client_flag : dword; +{$ENDIF} + host : Pchar; +{$IFNDEF mysql41} + init_command: Pchar; +{$ENDIF} + user : Pchar; + password : Pchar; + unix_socket : Pchar; + db : Pchar; +{$IFDEF mysql41} + init_commands : Pst_dynamic_array; +{$ENDIF} + my_cnf_file : Pchar; + my_cnf_group : Pchar; + charset_dir : Pchar; + charset_name : Pchar; + ssl_key : Pchar; // PEM key file + ssl_cert : Pchar; // PEM cert file + ssl_ca : Pchar; // PEM CA file + ssl_capath : Pchar; // PEM directory of CA-s? + ssl_cipher : Pchar; // cipher to use +{$IFDEF mysql41} + shared_memory_base_name : Pchar; +{$ENDIF} + max_allowed_packet : dword; + use_ssl : my_bool; // if to use SSL or not + compress : my_bool; + named_pipe : my_bool; + { On connect, find out the replication role of the server, and + establish connections to all the peers } + rpl_probe : my_bool; + { Each call to mysql_real_query() will parse it to tell if it is a read + or a write, and direct it to the slave or the master } + rpl_parse : my_bool; + { If set, never read from a master, only from slave, when doing + a read that is replication-aware } + no_master_reads : my_bool; +{ $if !defined(CHECK_EMBEDDED_DIFFERENCES) || defined(EMBEDDED_LIBRARY)} +{$IFDEF mysql41} + separate_thread : my_bool; +{ $endif} + 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 + { 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; + local_infile_end : procedure (_para1:pointer); + local_infile_error : function (_para1:pointer; _para2:Pchar; _para3:dword):longint; + local_infile_userdata : pointer; +{$ENDIF} + end; + + mysql_status = (MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT, + MYSQL_STATUS_USE_RESULT); + + mysql_protocol_type = (MYSQL_PROTOCOL_DEFAULT,MYSQL_PROTOCOL_TCP, + MYSQL_PROTOCOL_SOCKET,MYSQL_PROTOCOL_PIPE, + MYSQL_PROTOCOL_MEMORY); + + { There are three types of queries - the ones that have to go to + the master, the ones that go to a slave, and the adminstrative + type which must happen on the pivot connectioin } + mysql_rpl_type = (MYSQL_RPL_MASTER,MYSQL_RPL_SLAVE,MYSQL_RPL_ADMIN + ); + + charset_info_st = record + number : cuint; + primary_number : cuint; + binary_number : cuint; + state : cuint; + csname : ^char; + name : ^char; + comment : ^char; + tailoring : ^char; + ftype : ^cuchar; + to_lower : ^cuchar; + to_upper : ^cuchar; + sort_order : ^cuchar; + contractions : ^cuint16; + sort_order_big : ^pword; + tab_to_uni : ^cuint16; + tab_from_uni : pointer; // was ^MY_UNI_IDX + state_map : ^cuchar; + ident_map : ^cuchar; + strxfrm_multiply : cuint; + mbminlen : cuint; + mbmaxlen : cuint; + min_sort_char : cuint16; + max_sort_char : cuint16; + escape_with_backslash_is_dangerous : my_bool; + cset : pointer; // was ^MY_CHARSET_HANDLER + coll : pointer; // was ^MY_COLLATION_HANDLER; + end; + CHARSET_INFO = charset_info_st; + Pcharset_info_st = ^charset_info_st; + + Pst_mysql_methods = ^st_mysql_methods; + + Pst_mysql = ^st_mysql; + st_mysql = record + net : NET; // Communication parameters + connector_fd : gptr; // ConnectorFd for SSL + host : Pchar; + user : Pchar; + passwd : Pchar; + unix_socket : Pchar; + server_version : Pchar; + host_info : Pchar; + info : Pchar; + db : Pchar; + charset : Pcharset_info_st; + fields : PMYSQL_FIELD; + 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 + thread_id : dword; // Id for connection in server + packet_length : dword; + port : dword; + client_flag : dword; + server_capabilities : dword; + protocol_version : dword; + field_count : dword; + server_status : dword; + server_language : dword; + warning_count : dword; + options : st_mysql_options; + status : mysql_status; + free_me : my_bool; // If free in mysql_close + reconnect : my_bool; // set to 1 if automatic reconnect + scramble : array[0..(SCRAMBLE_LENGTH+1)-1] of char; // session-wide random string + { Set if this is the original connection, not a master or a slave we have + added though mysql_rpl_probe() or mysql_set_master()/ mysql_add_slave() } + rpl_pivot : my_bool; + { Pointers to the master, and the next slave connections, points to + itself if lone connection. } + master : Pst_mysql; + next_slave : Pst_mysql; + last_used_slave : Pst_mysql; // needed for round-robin slave pick + last_used_con : Pst_mysql; // needed for send/read/store/use result to work correctly with replication +{$IFDEF mysql41} + stmts : Pointer; // was PList, list of all statements + methods : Pst_mysql_methods; + thd : pointer; + { Points to boolean flag in MYSQL_RES or MYSQL_STMT. We set this flag + from mysql_stmt_close if close had to cancel result set of this object. } + unbuffered_fetch_owner : Pmy_bool; +{$ENDIF} + end; + MYSQL = st_mysql; + PMYSQL = ^MYSQL; + + + Pst_mysql_res = ^st_mysql_res; + st_mysql_res = record + row_count : my_ulonglong; + fields : PMYSQL_FIELD; + data : PMYSQL_DATA; + data_cursor : PMYSQL_ROWS; + lengths : Pdword; // column lengths of current row + handle : PMYSQL; // for unbuffered reads + field_alloc : MEM_ROOT; + field_count : dword; + current_field : dword; + row : MYSQL_ROW; // If unbuffered read + current_row : MYSQL_ROW; // buffer to current row + eof : my_bool; // Used by mysql_fetch_row +{$IFDEF mysql41} + unbuffered_fetch_cancelled : my_bool; // mysql_stmt_close() had to cancel this result + + methods : Pst_mysql_methods; +{$ENDIF} + end; + MYSQL_RES = st_mysql_res; + PMYSQL_RES = ^MYSQL_RES; + + Pst_mysql_stmt = ^st_mysql_stmt; + PMYSQL_STMT = ^MYSQL_STMT; + + st_mysql_methods = record + read_query_result : function (mysql:PMYSQL):my_bool;cdecl; + advanced_command : function (mysql:PMYSQL; command:enum_server_command; header:Pchar; header_length:dword; arg:Pchar; + arg_length:dword; skip_check:my_bool):my_bool; + read_rows : function (mysql:PMYSQL; mysql_fields:PMYSQL_FIELD; fields:dword):PMYSQL_DATA; + use_result : function (mysql:PMYSQL):PMYSQL_RES; + fetch_lengths : procedure (fto:Pdword; column:MYSQL_ROW; field_count:dword); + flush_use_result : procedure (mysql:PMYSQL); +{ $if !defined(MYSQL_SERVER) || defined(EMBEDDED_LIBRARY)} + list_fields : function (mysql:PMYSQL):PMYSQL_FIELD; + read_prepare_result : function (mysql:PMYSQL; stmt:PMYSQL_STMT):my_bool; + stmt_execute : function (stmt:PMYSQL_STMT):longint; + read_binary_rows : function (stmt:PMYSQL_STMT):longint; + unbuffered_fetch : function (mysql:PMYSQL; row:PPchar):longint; + free_embedded_thd : procedure (mysql:PMYSQL); + read_statistics : function (mysql:PMYSQL):Pchar; + next_result : function (mysql:PMYSQL):my_bool; + read_change_user_result : function (mysql:PMYSQL; buff:Pchar; passwd:Pchar):longint; +{ $endif} + end; + MYSQL_METHODS = st_mysql_methods; + PMYSQL_METHODS = ^MYSQL_METHODS; + + + Pst_mysql_manager = ^st_mysql_manager; + st_mysql_manager = record + net : NET; + host : Pchar; + user : Pchar; + passwd : Pchar; + port : dword; + free_me : my_bool; + eof : my_bool; + cmd_status : longint; + last_errno : longint; + net_buf : Pchar; + net_buf_pos : Pchar; + net_data_end : Pchar; + net_buf_size : longint; + last_error : array[0..(MAX_MYSQL_MANAGER_ERR)-1] of char; + end; + MYSQL_MANAGER = st_mysql_manager; + PMYSQL_MANAGER = ^MYSQL_MANAGER; + + Pst_mysql_parameters = ^st_mysql_parameters; + st_mysql_parameters = record + p_max_allowed_packet : Pdword; + p_net_buffer_length : Pdword; + end; + MYSQL_PARAMETERS = st_mysql_parameters; + PMYSQL_PARAMETERS = ^MYSQL_PARAMETERS; + + { The following definitions are added for the enhanced + client-server protocol } + + { statement state } + + enum_mysql_stmt_state = (MYSQL_STMT_INIT_DONE := 1,MYSQL_STMT_PREPARE_DONE, + MYSQL_STMT_EXECUTE_DONE,MYSQL_STMT_FETCH_DONE + ); + + { bind structure } + + 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 + 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 } + inter_buffer : Pbyte; // for the current data position + offset : dword; // offset position for char/binary fetch + internal_length : dword; // Used if length is 0 + param_number : dword; // For null count and error messages + pack_length : dword; // Internal length for packed data + is_unsigned : my_bool; // set if integer type is unsigned + long_data_used : my_bool; // If used with mysql_send_long_data + internal_is_null : my_bool; // Used if is_null is 0 + store_param_func : procedure (net:PNET; param:Pst_mysql_bind);cdecl; + fetch_result : procedure (_para1:Pst_mysql_bind; row:PPbyte); + skip_result : procedure (_para1:Pst_mysql_bind; _para2:PMYSQL_FIELD; row:PPbyte); + end; + MYSQL_BIND = st_mysql_bind; + PMYSQL_BIND = ^MYSQL_BIND; + + { statement handler } + st_mysql_stmt = record + mem_root : MEM_ROOT; // root allocations +// list : LIST; // list to keep track of all stmts + mysql : PMYSQL; // connection handle + params : PMYSQL_BIND; // input parameters + bind : PMYSQL_BIND; // input parameters + fields : PMYSQL_FIELD; // result set metadata + result : MYSQL_DATA; // cached result set + data_cursor : PMYSQL_ROWS; // current row in cached result + affected_rows : my_ulonglong; // copy of mysql->affected_rows after statement execution + insert_id : my_ulonglong; // copy of mysql->insert_id + { mysql_stmt_fetch() calls this function to fetch one row (it's different + 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 + last_errno : dword; // error code + param_count : dword; // input parameter count + field_count : dword; // number of columns in result set + state : enum_mysql_stmt_state; // statement state + last_error : array[0..(MYSQL_ERRMSG_SIZE)-1] of char; // error message + 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 + bind_result_done : my_bool; // output buffers were supplied + 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. } + update_max_length : my_bool; + end; + MYSQL_STMT = st_mysql_stmt; + { When doing mysql_stmt_store_result calculate max_length attribute + of statement metadata. This is to be consistent with the old API, + 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); + + +//#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet) +//#define net_buffer_length (*mysql_get_parameters()->p_net_buffer_length) + +{$IFNDEF LinkDynamically} + { Set up and bring down the server; to ensure that applications will + work when linked against either the standard client library or the + embedded server library, these functions should be called. } + function mysql_server_init(argc:longint; argv:PPchar; groups:PPchar):longint;cdecl;external mysqllib name 'mysql_server_init'; + procedure mysql_server_end;cdecl;external mysqllib name 'mysql_server_end'; + + { mysql_server_init/end need to be called when using libmysqld or + libmysqlclient (exactly, mysql_server_init() is called by mysql_init() so + you don't need to call it explicitely; but you need to call + mysql_server_end() to free memory). The names are a bit misleading + (mysql_SERVER* to be used when using libmysqlCLIENT). So we add more general + names which suit well whether you're using libmysqld or libmysqlclient. We + intend to promote these aliases over the mysql_server* ones. } + + function mysql_library_init(argc:longint; argv:PPchar; groups:PPchar):longint;cdecl;external mysqllib name 'mysql_server_init'; + procedure mysql_library_end;cdecl;external mysqllib name 'mysql_server_end'; + + function mysql_get_parameters:PMYSQL_PARAMETERS;extdecl;external mysqllib name 'mysql_get_parameters'; + + { Set up and bring down a thread; these function should be called + for each thread in an application which opens at least one MySQL + connection. All uses of the connection(s) should be between these + function calls. } + function mysql_thread_init:my_bool;extdecl;external mysqllib name 'mysql_thread_init'; + procedure mysql_thread_end;extdecl;external mysqllib name 'mysql_thread_end'; + { Functions to get information from the MYSQL and MYSQL_RES structures + Should definitely be used if one uses shared libraries. } + function mysql_num_rows(res:PMYSQL_RES):my_ulonglong;extdecl;external mysqllib name 'mysql_num_rows'; + function mysql_num_fields(res:PMYSQL_RES):dword;extdecl;external mysqllib name 'mysql_num_fields'; + function mysql_eof(res:PMYSQL_RES):my_bool;extdecl;external mysqllib name 'mysql_eof'; + function mysql_fetch_field_direct(res:PMYSQL_RES; fieldnr:dword):PMYSQL_FIELD;extdecl;external mysqllib name 'mysql_fetch_field_direct'; + function mysql_fetch_fields(res:PMYSQL_RES):PMYSQL_FIELD;extdecl;external mysqllib name 'mysql_fetch_fields'; + function mysql_row_tell(res:PMYSQL_RES):MYSQL_ROW_OFFSET;extdecl;external mysqllib name 'mysql_row_tell'; + function mysql_field_tell(res:PMYSQL_RES):MYSQL_FIELD_OFFSET;extdecl;external mysqllib name 'mysql_field_tell'; + function mysql_field_count(mysql:PMYSQL):dword;extdecl;external mysqllib name 'mysql_field_count'; + function mysql_affected_rows(mysql:PMYSQL):my_ulonglong;extdecl;external mysqllib name 'mysql_affected_rows'; + function mysql_insert_id(mysql:PMYSQL):my_ulonglong;extdecl;external mysqllib name 'mysql_insert_id'; + function mysql_errno(mysql:PMYSQL):dword;extdecl;external mysqllib name 'mysql_errno'; + function mysql_error(mysql:PMYSQL):Pchar;extdecl;external mysqllib name 'mysql_error'; + function mysql_sqlstate(mysql:PMYSQL):Pchar;extdecl;external mysqllib name 'mysql_sqlstate'; + function mysql_warning_count(mysql:PMYSQL):dword;extdecl;external mysqllib name 'mysql_warning_count'; + function mysql_info(mysql:PMYSQL):Pchar;extdecl;external mysqllib name 'mysql_info'; + function mysql_thread_id(mysql:PMYSQL):dword;extdecl;external mysqllib name 'mysql_thread_id'; + function mysql_character_set_name(mysql:PMYSQL):Pchar;extdecl;external mysqllib name 'mysql_character_set_name'; + function mysql_set_character_set(mysql:PMYSQL; csname:Pchar):longint;extdecl;external mysqllib name 'mysql_set_character_set'; + function mysql_init(mysql:PMYSQL):PMYSQL;extdecl;external mysqllib name 'mysql_init'; + function mysql_ssl_set(mysql:PMYSQL; key:Pchar; cert:Pchar; ca:Pchar; capath:Pchar; + cipher:Pchar):my_bool;extdecl;external mysqllib name 'mysql_ssl_set'; + function mysql_change_user(mysql:PMYSQL; user:Pchar; passwd:Pchar; db:Pchar):my_bool;extdecl;external mysqllib name 'mysql_change_user'; + function mysql_real_connect(mysql:PMYSQL; host:Pchar; user:Pchar; passwd:Pchar; db:Pchar; + port:dword; unix_socket:Pchar; clientflag:dword):PMYSQL;extdecl;external mysqllib name 'mysql_real_connect'; + function mysql_select_db(mysql:PMYSQL; db:Pchar):longint;extdecl;external mysqllib name 'mysql_select_db'; + function mysql_query(mysql:PMYSQL; q:Pchar):longint;extdecl;external mysqllib name 'mysql_query'; + function mysql_send_query(mysql:PMYSQL; q:Pchar; length:dword):longint;extdecl;external mysqllib name 'mysql_send_query'; + function mysql_real_query(mysql:PMYSQL; q:Pchar; length:dword):longint;extdecl;external mysqllib name 'mysql_real_query'; + function mysql_store_result(mysql:PMYSQL):PMYSQL_RES;extdecl;external mysqllib name 'mysql_store_result'; + function mysql_use_result(mysql:PMYSQL):PMYSQL_RES;extdecl;external mysqllib name 'mysql_use_result'; + +{$ELSE} + + var + mysql_server_init: function (argc:longint; argv:PPchar; groups:PPchar):longint;cdecl; + mysql_server_end: procedure ;cdecl; + mysql_library_init: function (argc:longint; argv:PPchar; groups:PPchar):longint;cdecl; + mysql_library_end: procedure ;cdecl; + mysql_num_rows: function (res:PMYSQL_RES):my_ulonglong;extdecl; + mysql_num_fields: function (res:PMYSQL_RES):dword;extdecl; + mysql_eof: function (res:PMYSQL_RES):my_bool;extdecl; + mysql_fetch_field_direct: function (res:PMYSQL_RES; fieldnr:dword):PMYSQL_FIELD;extdecl; + mysql_fetch_fields: function (res:PMYSQL_RES):PMYSQL_FIELD;extdecl; + mysql_row_tell: function (res:PMYSQL_RES):MYSQL_ROW_OFFSET;extdecl; + mysql_field_tell: function (res:PMYSQL_RES):MYSQL_FIELD_OFFSET;extdecl; + mysql_field_count: function (mysql:PMYSQL):dword;extdecl; + mysql_affected_rows: function (mysql:PMYSQL):my_ulonglong;extdecl; + mysql_insert_id: function (mysql:PMYSQL):my_ulonglong;extdecl; + mysql_errno: function (mysql:PMYSQL):dword;extdecl; + mysql_error: function (mysql:PMYSQL):Pchar;extdecl; + mysql_sqlstate: function (mysql:PMYSQL):Pchar;extdecl; + mysql_warning_count: function (mysql:PMYSQL):dword;extdecl; + mysql_info: function (mysql:PMYSQL):Pchar;extdecl; + mysql_thread_id: function (mysql:PMYSQL):dword;extdecl; + mysql_character_set_name: function (mysql:PMYSQL):Pchar;extdecl; + mysql_set_character_set: function (mysql:PMYSQL; csname:Pchar):longint;extdecl; + mysql_init: function (mysql:PMYSQL):PMYSQL;extdecl; + mysql_ssl_set: function (mysql:PMYSQL; key:Pchar; cert:Pchar; ca:Pchar; capath:Pchar; + cipher:Pchar):my_bool;extdecl; + mysql_change_user: function (mysql:PMYSQL; user:Pchar; passwd:Pchar; db:Pchar):my_bool;extdecl; + mysql_real_connect: function (mysql:PMYSQL; host:Pchar; user:Pchar; passwd:Pchar; db:Pchar; + port:dword; unix_socket:Pchar; clientflag:dword):PMYSQL;extdecl; + mysql_select_db: function (mysql:PMYSQL; db:Pchar):longint;extdecl; + mysql_query: function (mysql:PMYSQL; q:Pchar):longint;extdecl; + mysql_send_query: function (mysql:PMYSQL; q:Pchar; length:dword):longint;extdecl; + mysql_real_query: function (mysql:PMYSQL; q:Pchar; length:dword):longint;extdecl; + mysql_store_result: function (mysql:PMYSQL):PMYSQL_RES;extdecl; + mysql_use_result: function (mysql:PMYSQL):PMYSQL_RES;extdecl; +{$ENDIF} + +{$IFNDEF LinkDynamically} + { perform query on master } + function mysql_master_query(mysql:PMYSQL; q:Pchar; length:dword):my_bool;extdecl;external mysqllib name 'mysql_master_query'; + function mysql_master_send_query(mysql:PMYSQL; q:Pchar; length:dword):my_bool;extdecl;external mysqllib name 'mysql_master_send_query'; + + { 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'; + + { local infile support } + + const + LOCAL_INFILE_ERROR_LEN = 512; +{ 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'; + + { enable/disable parsing of all queries to decide if they go on master or + slave } + procedure mysql_enable_rpl_parse(mysql:PMYSQL);extdecl;external mysqllib name 'mysql_enable_rpl_parse'; + procedure mysql_disable_rpl_parse(mysql:PMYSQL);extdecl;external mysqllib name 'mysql_disable_rpl_parse'; + + { get the value of the parse flag } + function mysql_rpl_parse_enabled(mysql:PMYSQL):longint;extdecl;external mysqllib name 'mysql_rpl_parse_enabled'; + + { enable/disable reads from master } + procedure mysql_enable_reads_from_master(mysql:PMYSQL);extdecl;external mysqllib name 'mysql_enable_reads_from_master'; + procedure mysql_disable_reads_from_master(mysql:PMYSQL);extdecl;external mysqllib name 'mysql_disable_reads_from_master'; + + { get the value of the master read flag } + function mysql_reads_from_master_enabled(mysql:PMYSQL):my_bool;extdecl;external mysqllib name 'mysql_reads_from_master_enabled'; + + function mysql_rpl_query_type(q : pchar;len : longint):mysql_rpl_type;extdecl;external mysqllib name 'mysql_rpl_query_type'; + + { discover the master and its slaves } + function mysql_rpl_probe(mysql:PMYSQL):my_bool;extdecl;external mysqllib name 'mysql_rpl_probe'; + + { set the master, close/free the old one, if it is not a pivot } + function mysql_set_master(mysql:PMYSQL; host:Pchar; port:dword; user:Pchar; passwd:Pchar):longint;extdecl;external mysqllib name 'mysql_set_master'; + function mysql_add_slave(mysql:PMYSQL; host:Pchar; port:dword; user:Pchar; passwd:Pchar):longint;extdecl;external mysqllib name 'mysql_add_slave'; + function mysql_shutdown(mysql:PMYSQL; shutdown_level:mysql_enum_shutdown_level):longint;extdecl;external mysqllib name 'mysql_shutdown'; + function mysql_dump_debug_info(mysql:PMYSQL):longint;extdecl;external mysqllib name 'mysql_dump_debug_info'; + function mysql_refresh(mysql:PMYSQL; refresh_options:dword):longint;extdecl;external mysqllib name 'mysql_refresh'; + function mysql_kill(mysql:PMYSQL; pid:dword):longint;extdecl;external mysqllib name 'mysql_kill'; + function mysql_set_server_option(mysql:PMYSQL; option:enum_mysql_set_option):longint;extdecl;external mysqllib name 'mysql_set_server_option'; + function mysql_ping(mysql:PMYSQL):longint;extdecl;external mysqllib name 'mysql_ping'; + function mysql_stat(mysql:PMYSQL):Pchar;extdecl;external mysqllib name 'mysql_stat'; + function mysql_get_server_info(mysql:PMYSQL):Pchar;extdecl;external mysqllib name 'mysql_get_server_info'; + function mysql_get_client_info:Pchar;extdecl;external mysqllib name 'mysql_get_client_info'; + function mysql_get_client_version:dword;extdecl;external mysqllib name 'mysql_get_client_version'; + function mysql_get_host_info(mysql:PMYSQL):Pchar;extdecl;external mysqllib name 'mysql_get_host_info'; + function mysql_get_server_version(mysql:PMYSQL):dword;extdecl;external mysqllib name 'mysql_get_server_version'; + function mysql_get_proto_info(mysql:PMYSQL):dword;extdecl;external mysqllib name 'mysql_get_proto_info'; + function mysql_list_dbs(mysql:PMYSQL; wild:Pchar):PMYSQL_RES;extdecl;external mysqllib name 'mysql_list_dbs'; + + function mysql_list_tables(mysql:PMYSQL; wild:Pchar):PMYSQL_RES;extdecl;external mysqllib name 'mysql_list_tables'; + function mysql_list_processes(mysql:PMYSQL):PMYSQL_RES;extdecl;external mysqllib name 'mysql_list_processes'; + function mysql_options(mysql:PMYSQL; option:mysql_option; arg:Pchar):longint;extdecl;external mysqllib name 'mysql_options'; + procedure mysql_free_result(result:PMYSQL_RES);extdecl;external mysqllib name 'mysql_free_result'; + procedure mysql_data_seek(result:PMYSQL_RES; offset:my_ulonglong);extdecl;external mysqllib name 'mysql_data_seek'; + function mysql_row_seek(result:PMYSQL_RES; offset:MYSQL_ROW_OFFSET):MYSQL_ROW_OFFSET;extdecl;external mysqllib name 'mysql_row_seek'; + function mysql_field_seek(result:PMYSQL_RES; offset:MYSQL_FIELD_OFFSET):MYSQL_FIELD_OFFSET;extdecl;external mysqllib name 'mysql_field_seek'; + function mysql_fetch_row(result:PMYSQL_RES):MYSQL_ROW;extdecl;external mysqllib name 'mysql_fetch_row'; + function mysql_fetch_lengths(result:PMYSQL_RES):Pdword;extdecl;external mysqllib name 'mysql_fetch_lengths'; + function mysql_fetch_field(result:PMYSQL_RES):PMYSQL_FIELD;extdecl;external mysqllib name 'mysql_fetch_field'; + function mysql_list_fields(mysql:PMYSQL; table:Pchar; wild:Pchar):PMYSQL_RES;extdecl;external mysqllib name 'mysql_list_fields'; + function mysql_escape_string(fto:Pchar; from:Pchar; from_length:dword):dword;extdecl;external mysqllib name 'mysql_escape_string'; + function mysql_hex_string(fto:Pchar; from:Pchar; from_length:dword):dword;extdecl;external mysqllib name 'mysql_hex_string'; + function mysql_real_escape_string(mysql:PMYSQL; fto:Pchar; from:Pchar; length:dword):dword;extdecl;external mysqllib name 'mysql_real_escape_string'; + procedure mysql_debug(debug:Pchar);extdecl;external mysqllib name 'mysql_debug'; +{ function mysql_odbc_escape_string(mysql:PMYSQL; fto:Pchar; to_length:dword; from:Pchar; from_length:dword; + param:pointer; extend_buffer:function (_para1:pointer; to:Pchar; length:Pdword):Pchar):Pchar;extdecl;external mysqllib name 'mysql_odbc_escape_string';} + procedure myodbc_remove_escape(mysql:PMYSQL; name:Pchar);extdecl;external mysqllib name 'myodbc_remove_escape'; + function mysql_thread_safe:dword;extdecl;external mysqllib name 'mysql_thread_safe'; + function mysql_embedded:my_bool;extdecl;external mysqllib name 'mysql_embedded'; + function mysql_manager_init(con:PMYSQL_MANAGER):PMYSQL_MANAGER;extdecl;external mysqllib name 'mysql_manager_init'; + function mysql_manager_connect(con:PMYSQL_MANAGER; host:Pchar; user:Pchar; passwd:Pchar; port:dword):PMYSQL_MANAGER;extdecl;external mysqllib name 'mysql_manager_connect'; + procedure mysql_manager_close(con:PMYSQL_MANAGER);extdecl;external mysqllib name 'mysql_manager_close'; + function mysql_manager_command(con:PMYSQL_MANAGER; cmd:Pchar; cmd_len:longint):longint;extdecl;external mysqllib name 'mysql_manager_command'; + 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'; + function mysql_stmt_fetch(stmt:PMYSQL_STMT):longint;extdecl;external mysqllib name 'mysql_stmt_fetch'; + function mysql_stmt_fetch_column(stmt:PMYSQL_STMT; bind:PMYSQL_BIND; column:dword; offset:dword):longint;extdecl;external mysqllib name 'mysql_stmt_fetch_column'; + function mysql_stmt_store_result(stmt:PMYSQL_STMT):longint;extdecl;external mysqllib name 'mysql_stmt_store_result'; + function mysql_stmt_param_count(stmt:PMYSQL_STMT):dword;extdecl;external mysqllib name 'mysql_stmt_param_count'; + function mysql_stmt_attr_set(stmt:PMYSQL_STMT; attr_type:enum_stmt_attr_type; attr:pointer):my_bool;extdecl;external mysqllib name 'mysql_stmt_attr_set'; + function mysql_stmt_attr_get(stmt:PMYSQL_STMT; attr_type:enum_stmt_attr_type; attr:pointer):my_bool;extdecl;external mysqllib name 'mysql_stmt_attr_get'; + function mysql_stmt_bind_param(stmt:PMYSQL_STMT; bnd:PMYSQL_BIND):my_bool;extdecl;external mysqllib name 'mysql_stmt_bind_param'; + function mysql_stmt_bind_result(stmt:PMYSQL_STMT; bnd:PMYSQL_BIND):my_bool;extdecl;external mysqllib name 'mysql_stmt_bind_result'; + function mysql_stmt_close(stmt:PMYSQL_STMT):my_bool;extdecl;external mysqllib name 'mysql_stmt_close'; + function mysql_stmt_reset(stmt:PMYSQL_STMT):my_bool;extdecl;external mysqllib name 'mysql_stmt_reset'; + function mysql_stmt_free_result(stmt:PMYSQL_STMT):my_bool;extdecl;external mysqllib name 'mysql_stmt_free_result'; + function mysql_stmt_send_long_data(stmt:PMYSQL_STMT; param_number:dword; data:Pchar; length:dword):my_bool;extdecl;external mysqllib name 'mysql_stmt_send_long_data'; + function mysql_stmt_result_metadata(stmt:PMYSQL_STMT):PMYSQL_RES;extdecl;external mysqllib name 'mysql_stmt_result_metadata'; + function mysql_stmt_param_metadata(stmt:PMYSQL_STMT):PMYSQL_RES;extdecl;external mysqllib name 'mysql_stmt_param_metadata'; + function mysql_stmt_errno(stmt:PMYSQL_STMT):dword;extdecl;external mysqllib name 'mysql_stmt_errno'; + function mysql_stmt_error(stmt:PMYSQL_STMT):Pchar;extdecl;external mysqllib name 'mysql_stmt_error'; + function mysql_stmt_sqlstate(stmt:PMYSQL_STMT):Pchar;extdecl;external mysqllib name 'mysql_stmt_sqlstate'; + function mysql_stmt_row_seek(stmt:PMYSQL_STMT; offset:MYSQL_ROW_OFFSET):MYSQL_ROW_OFFSET;extdecl;external mysqllib name 'mysql_stmt_row_seek'; + function mysql_stmt_row_tell(stmt:PMYSQL_STMT):MYSQL_ROW_OFFSET;extdecl;external mysqllib name 'mysql_stmt_row_tell'; + procedure mysql_stmt_data_seek(stmt:PMYSQL_STMT; offset:my_ulonglong);extdecl;external mysqllib name 'mysql_stmt_data_seek'; + function mysql_stmt_num_rows(stmt:PMYSQL_STMT):my_ulonglong;extdecl;external mysqllib name 'mysql_stmt_num_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_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'; + function mysql_more_results(mysql:PMYSQL):my_bool;extdecl;external mysqllib name 'mysql_more_results'; + function mysql_next_result(mysql:PMYSQL):longint;extdecl;external mysqllib name 'mysql_next_result'; + procedure mysql_close(sock:PMYSQL);extdecl;external mysqllib name 'mysql_close'; + +{$ELSE} + var + mysql_shutdown: function (mysql:PMYSQL; shutdown_level:mysql_enum_shutdown_level):longint;extdecl; + mysql_dump_debug_info: function (mysql:PMYSQL):longint;extdecl; + mysql_refresh: function (mysql:PMYSQL; refresh_options:dword):longint;extdecl; + mysql_kill: function (mysql:PMYSQL; pid:dword):longint;extdecl; + mysql_set_server_option: function (mysql:PMYSQL; option:enum_mysql_set_option):longint;extdecl; + mysql_ping: function (mysql:PMYSQL):longint;extdecl; + mysql_stat: function (mysql:PMYSQL):Pchar;extdecl; + mysql_get_server_info: function (mysql:PMYSQL):Pchar;extdecl; + mysql_get_client_info: function :Pchar;extdecl; + mysql_get_client_version: function :dword;extdecl; + mysql_get_host_info: function (mysql:PMYSQL):Pchar;extdecl; + mysql_get_server_version: function (mysql:PMYSQL):dword;extdecl; + mysql_get_proto_info: function (mysql:PMYSQL):dword;extdecl; + mysql_list_dbs: function (mysql:PMYSQL; wild:Pchar):PMYSQL_RES;extdecl; + + mysql_list_tables: function (mysql:PMYSQL; wild:Pchar):PMYSQL_RES;extdecl; + mysql_list_processes: function (mysql:PMYSQL):PMYSQL_RES;extdecl; + mysql_options: function (mysql:PMYSQL; option:mysql_option; arg:Pchar):longint;extdecl; + mysql_free_result: procedure (result:PMYSQL_RES);extdecl; + mysql_data_seek: procedure (result:PMYSQL_RES; offset:my_ulonglong);extdecl; + mysql_row_seek: function (result:PMYSQL_RES; offset:MYSQL_ROW_OFFSET):MYSQL_ROW_OFFSET;extdecl; + mysql_field_seek: function (result:PMYSQL_RES; offset:MYSQL_FIELD_OFFSET):MYSQL_FIELD_OFFSET;extdecl; + mysql_fetch_row: function (result:PMYSQL_RES):MYSQL_ROW;extdecl; + mysql_fetch_lengths: function (result:PMYSQL_RES):Pdword;extdecl; + mysql_fetch_field: function (result:PMYSQL_RES):PMYSQL_FIELD;extdecl; + mysql_list_fields: function (mysql:PMYSQL; table:Pchar; wild:Pchar):PMYSQL_RES;extdecl; + mysql_escape_string: function (fto:Pchar; from:Pchar; from_length:dword):dword;extdecl; + mysql_hex_string: function (fto:Pchar; from:Pchar; from_length:dword):dword;extdecl; + mysql_real_escape_string: function (mysql:PMYSQL; fto:Pchar; from:Pchar; length:dword):dword;extdecl; + mysql_debug: procedure (debug:Pchar);extdecl; + + mysql_rollback: function (mysql:PMYSQL):my_bool;extdecl; + mysql_autocommit: function (mysql:PMYSQL; auto_mode:my_bool):my_bool;extdecl; + mysql_commit: function (mysql:PMYSQL):my_bool;extdecl; + mysql_more_results: function (mysql:PMYSQL):my_bool;extdecl; + mysql_next_result: function (mysql:PMYSQL):longint;extdecl; + mysql_close: procedure (sock:PMYSQL);extdecl; + +{$ENDIF} + + + { status return codes } + + const + MYSQL_NO_DATA = 100; + + function mysql_reload(mysql : PMySQL) : longint; + +{$ifdef USE_OLD_FUNCTIONS} + function mysql_connect(mysql:PMYSQL; host:Pchar; user:Pchar; passwd:Pchar):PMYSQL;extdecl;external External_library name 'mysql_connect'; + function mysql_create_db(mysql:PMYSQL; DB:Pchar):longint;extdecl;external External_library name 'mysql_create_db'; + function mysql_drop_db(mysql:PMYSQL; DB:Pchar):longint;extdecl;external External_library name 'mysql_drop_db'; + function mysql_reload(mysql : PMySQL) : longint; +{$endif} + +{$define HAVE_MYSQL_REAL_CONNECT} + { The following functions are mainly exported because of mysqlbinlog; + They are not for general usage } + + function simple_command(mysql,command,arg,length,skip_check : longint) : longint; +{$IFNDEF LinkDynamically} + function net_safe_read(mysql:PMYSQL):dword;cdecl;external mysqllib name 'net_safe_read'; +{$ENDIF} + +{$ifdef NETWARE} +(** unsupported pragma#pragma pack(pop) /* restore alignment */*) +{$endif} + +{$IFDEF LinkDynamically} +Procedure InitialiseMysql4; +Procedure ReleaseMysql4; + +var Mysql4LibraryHandle : TLibHandle; +{$ENDIF} + +implementation + +{$IFDEF LinkDynamically} + +var RefCount : integer; + +Procedure InitialiseMysql4; + +begin + inc(RefCount); + if RefCount = 1 then + begin + Mysql4LibraryHandle := loadlibrary(Mysqllib); + if Mysql4LibraryHandle = nilhandle then + begin + RefCount := 0; + Raise EInOutError.Create('Can not load MySQL client. Is it installed? ('+Mysqllib+')'); + end; +// Only the procedure that are given in the c-library documentation are loaded, to +// avoid problems with 'incomplete' libraries + pointer(my_init) := GetProcedureAddress(Mysql4LibraryHandle,'my_init'); + pointer(my_thread_init) := GetProcedureAddress(Mysql4LibraryHandle,'my_thread_init'); + pointer(my_thread_end) := GetProcedureAddress(Mysql4LibraryHandle,'my_thread_end'); + + pointer(mysql_affected_rows) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_affected_rows'); + pointer(mysql_autocommit) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_autocommit'); + pointer(mysql_change_user) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_change_user'); +// pointer(mysql_charset_name) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_charset_name'); + pointer(mysql_close) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_close'); + pointer(mysql_commit) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_commit'); +// pointer(mysql_connect) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_connect'); +// pointer(mysql_create_db) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_create_db'); + pointer(mysql_data_seek) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_data_seek'); +// pointer(mysql_drop_db) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_drop_db'); + pointer(mysql_debug) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_debug'); + pointer(mysql_dump_debug_info) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_dump_debug_info'); + pointer(mysql_eof) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_eof'); + pointer(mysql_errno) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_errno'); + pointer(mysql_escape_string) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_escape_string'); + pointer(mysql_fetch_field) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_fetch_field'); + pointer(mysql_fetch_field_direct) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_fetch_field_direct'); + pointer(mysql_fetch_fields) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_fetch_fields'); + pointer(mysql_fetch_lengths) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_fetch_lengths'); + pointer(mysql_fetch_row) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_fetch_row'); + pointer(mysql_field_seek) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_field_seek'); + pointer(mysql_field_count) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_field_count'); + pointer(mysql_field_tell) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_field_tell'); + pointer(mysql_free_result) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_free_result'); + pointer(mysql_get_client_info) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_get_client_info'); + pointer(mysql_get_client_version) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_get_client_version'); + pointer(mysql_get_host_info) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_get_host_info'); + pointer(mysql_get_server_version) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_get_server_version'); + pointer(mysql_get_proto_info) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_get_proto_info'); + pointer(mysql_get_server_info) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_get_server_info'); + pointer(mysql_info) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_info'); + pointer(mysql_init) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_init'); + pointer(mysql_insert_id) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_insert_id'); + pointer(mysql_kill) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_kill'); + pointer(mysql_library_end) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_server_end'); + pointer(mysql_library_init) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_server_init'); + pointer(mysql_list_dbs) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_list_dbs'); + pointer(mysql_list_fields) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_list_fields'); + pointer(mysql_list_processes) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_list_processes'); + pointer(mysql_list_tables) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_list_tables'); + pointer(mysql_more_results) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_more_results'); + pointer(mysql_next_result) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_next_result'); + pointer(mysql_num_fields) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_num_fields'); + pointer(mysql_num_rows) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_num_rows'); + pointer(mysql_options) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_options'); + pointer(mysql_ping) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_ping'); + pointer(mysql_query) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_query'); + pointer(mysql_real_connect) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_real_connect'); + pointer(mysql_real_escape_string) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_real_escape_String'); + pointer(mysql_real_query) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_real_query'); + pointer(mysql_refresh) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_refresh'); +// pointer(mysql_reload) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_reload'); + pointer(mysql_rollback) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_rollback'); + pointer(mysql_row_seek) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_row_seek'); + pointer(mysql_row_tell) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_row_tell'); + pointer(mysql_select_db) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_select_db'); + pointer(mysql_server_end) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_server_end'); + pointer(mysql_server_init) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_server_init'); + pointer(mysql_set_server_option) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_set_server_option'); + pointer(mysql_sqlstate) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_sqlstate'); + pointer(mysql_shutdown) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_shutdown'); + pointer(mysql_stat) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_stat'); + pointer(mysql_store_result) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_store_result'); + pointer(mysql_thread_id) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_thread_id'); +// pointer(mysql_thread_save) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_thread_save'); + pointer(mysql_use_result) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_use_result'); + pointer(mysql_warning_count) := GetProcedureAddress(Mysql4LibraryHandle,'mysql_warning_count'); + + + end; +end; + +Procedure ReleaseMysql4; + +begin + if RefCount > 0 then dec(RefCount); + if RefCount = 0 then + begin + if not UnloadLibrary(Mysql4LibraryHandle) then inc(RefCount); + end; +end; + +{$ENDIF} + function net_new_transaction(net : st_net) : st_net; + begin + net.pkt_nr := 0; + result := net; + end; + + function IS_PRI_KEY(n : longint) : boolean; + begin + IS_PRI_KEY:=(n and PRI_KEY_FLAG)<>0; + end; + + function IS_NOT_NULL(n : longint) : boolean; + begin + IS_NOT_NULL:=(n and NOT_NULL_FLAG)<>0; + end; + + function IS_BLOB(n : longint) : boolean; + begin + IS_BLOB:=(n and BLOB_FLAG)<>0; + end; + + function IS_NUM_FIELD(f : pst_mysql_field) : boolean; + begin + IS_NUM_FIELD:=((f^.flags) and NUM_FLAG)<>0; + end; + + function IS_NUM(t : enum_field_types) : boolean; + begin + IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR); + end; + + function INTERNAL_NUM_FIELD(f : Pst_mysql_field) : boolean; + begin + INTERNAL_NUM_FIELD := (f^.ftype <= FIELD_TYPE_INT24) and ((f^.ftype <> FIELD_TYPE_TIMESTAMP) + or (f^.length = 14) or (f^.length=8)) or (f^.ftype=FIELD_TYPE_YEAR); + end; + + function mysql_reload(mysql : PMySQL) : longint; + begin + mysql_reload:=mysql_refresh(mysql,REFRESH_GRANT); + end; + + function simple_command(mysql,command,arg,length,skip_check : longint) : longint; + begin + //simple_command:=mysql^.(methods^.advanced_command)(mysqlcommandNullS0arglengthskip_check); + result := -1; + end; + + +end. diff --git a/packages/base/mysql/mysql40.pp b/packages/base/mysql/mysql40.pp new file mode 100644 index 0000000000..a568fc1c92 --- /dev/null +++ b/packages/base/mysql/mysql40.pp @@ -0,0 +1,12 @@ +{ + Contains the mysql calls for MySQL 4.0 +} + +unit mysql40; + +{$UNDEF LinkDynamically} +{$UNDEF MYSQL41} + +{$i mysql.inc} + +end. diff --git a/packages/base/mysql/mysql40dyn.pp b/packages/base/mysql/mysql40dyn.pp new file mode 100644 index 0000000000..b8c93f1aa6 --- /dev/null +++ b/packages/base/mysql/mysql40dyn.pp @@ -0,0 +1,12 @@ +{ + Contains the mysql calls for MySQL 4.0 +} + +unit mysql40dyn; + +{$DEFINE LinkDynamically} +{$UNDEF MYSQL41} + +{$i mysql.inc} + +end. diff --git a/packages/base/mysql/mysql41.pp b/packages/base/mysql/mysql41.pp new file mode 100644 index 0000000000..df4480c964 --- /dev/null +++ b/packages/base/mysql/mysql41.pp @@ -0,0 +1,12 @@ +{ + Contains the mysql calls for MySQL 4.1 +} + +unit mysql41; + +{$UNDEF LinkDynamically} +{$DEFINE MYSQL41} + +{$i mysql.inc} + +end. diff --git a/packages/base/mysql/mysql41dyn.pp b/packages/base/mysql/mysql41dyn.pp new file mode 100644 index 0000000000..06362619b7 --- /dev/null +++ b/packages/base/mysql/mysql41dyn.pp @@ -0,0 +1,12 @@ +{ + Contains the mysql calls for MySQL 4.1 +} + +unit mysql41dyn; + +{$DEFINE LinkDynamically} +{$DEFINE MYSQL41} + +{$i mysql.inc} + +end.