+ Split everything in version 3 and version 4

This commit is contained in:
michael 2004-09-30 19:34:47 +00:00
parent ae0d5d47c0
commit b2a1cf91b0
15 changed files with 1437 additions and 882 deletions

View File

@ -1,8 +1,8 @@
# #
# Don't edit, this file is generated by FPCMake Version 1.1 [2004/09/04] # Don't edit, this file is generated by FPCMake Version 1.1 [2004/08/31]
# #
default: all default: all
MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos darwin emx watcom morphos netwlibc MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos darwin emx watcom morphos
BSDs = freebsd netbsd openbsd darwin BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) sunos qnx UNIXs = linux $(BSDs) sunos qnx
FORCE: FORCE:
@ -215,8 +215,8 @@ endif
PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
override PACKAGE_NAME=mysql override PACKAGE_NAME=mysql
override PACKAGE_VERSION=1.9.4 override PACKAGE_VERSION=1.9.4
override TARGET_UNITS+=mysql_com mysql_version mysql override TARGET_UNITS+=mysql4_com mysql4_version mysql4 mysql3_com mysql3_version mysql3
override TARGET_EXAMPLES+=testdb override TARGET_EXAMPLES+=testdb4 testdb3
override INSTALL_FPCPACKAGE=y override INSTALL_FPCPACKAGE=y
ifdef REQUIRE_UNITSDIR ifdef REQUIRE_UNITSDIR
override UNITSDIR+=$(REQUIRE_UNITSDIR) override UNITSDIR+=$(REQUIRE_UNITSDIR)
@ -552,12 +552,6 @@ STATICLIBPREFIX=
FPCMADE=fpcmade.nw FPCMADE=fpcmade.nw
ZIPSUFFIX=nw ZIPSUFFIX=nw
endif endif
ifeq ($(OS_TARGET),netwlibc)
EXEEXT=.nlm
STATICLIBPREFIX=
FPCMADE=fpcmade.nwl
ZIPSUFFIX=nwl
endif
ifeq ($(OS_TARGET),macos) ifeq ($(OS_TARGET),macos)
BATCHEXT= BATCHEXT=
EXEEXT= EXEEXT=
@ -710,18 +704,6 @@ FPCMADE=fpcmade.nw
ZIPSUFFIX=nw ZIPSUFFIX=nw
EXEEXT=.nlm EXEEXT=.nlm
endif endif
ifeq ($(OS_TARGET),netwlibc)
STATICLIBPREFIX=
PPUEXT=.ppu
OEXT=.o
ASMEXT=.s
SMARTEXT=.sl
STATICLIBEXT=.a
SHAREDLIBEXT=.nlm
FPCMADE=fpcmade.nwl
ZIPSUFFIX=nwl
EXEEXT=.nlm
endif
ifeq ($(OS_TARGET),macos) ifeq ($(OS_TARGET),macos)
BATCHEXT= BATCHEXT=
PPUEXT=.ppu PPUEXT=.ppu
@ -1124,11 +1106,6 @@ ifeq ($(CPU_TARGET),powerpc)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
endif endif
endif endif
ifeq ($(OS_TARGET),netwlibc)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1
endif
endif
ifdef REQUIRE_PACKAGES_RTL ifdef REQUIRE_PACKAGES_RTL
PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/$(OS_TARGET)/Makefile.fpc,$(PACKAGESDIR)))))) PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/$(OS_TARGET)/Makefile.fpc,$(PACKAGESDIR))))))
ifneq ($(PACKAGEDIR_RTL),) ifneq ($(PACKAGEDIR_RTL),)

View File

@ -7,8 +7,8 @@ name=mysql
version=1.9.4 version=1.9.4
[target] [target]
units=mysql_com mysql_version mysql units=mysql4_com mysql4_version mysql4 mysql3_com mysql3_version mysql3
examples=testdb examples=testdb4 testdb3
[require] [require]
libc=y libc=y

View File

@ -6,6 +6,11 @@ To Compile under Linux
- You must know where the mysql libraries are. - You must know where the mysql libraries are.
- You must know where libgcc is. - You must know where libgcc is.
The units come in 2 flavours:
- mysql3*.pp : version 3.23 of mysql.
- mysql4*.pp : version 4.0 of mysql.
These versions are substantially different.
Both these things must be set in the Makefile. After that a simple 'make' Both these things must be set in the Makefile. After that a simple 'make'
and 'make install' should compile and install everything. and 'make install' should compile and install everything.
@ -16,10 +21,6 @@ database available. If not, you must run
rmdb databasename rmdb databasename
manually. You need create permission on the database for this to work. manually. You need create permission on the database for this to work.
Redhat 5.1 and later users: You must ADD to the path the location of the
libc5 libraries. It will NOT work with glibc 6. I hope to fix this in the
future.
Win32 users: There are multiple .dll files circulating around. Win32 users: There are multiple .dll files circulating around.
you should fix the statement you should fix the statement
mysqllib = 'libmysql' mysqllib = 'libmysql'
@ -27,4 +28,6 @@ in the mysql unit, so it matches the version you have.
Enjoy ! Enjoy !
Michael. Michael.

View File

@ -1,641 +0,0 @@
unit mysql;
interface
uses mysql_com;
{
Automatically converted by H2Pas 0.99.15 from mysql.ph
The following command line parameters were used:
-p
-D
-l
mysqlclient
mysql.ph
}
const
External_library='mysqlclient'; {Setup as you need}
{ Pointers to basic pascal types, inserted by h2pas conversion program.}
Type
PLongint = ^Longint;
PSmallInt = ^SmallInt;
PByte = ^Byte;
PWord = ^Word;
PDWord = ^DWord;
PDouble = ^Double;
{$PACKRECORDS C}
{ Copyright (C) 2000 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
Pmy_bool = ^my_bool;
my_bool = char;
Pgptr = ^gptr;
gptr = char;
Pmy_socket = ^my_socket;
my_socket = longint;
var
mysql_port : dword;cvar;external;
mysql_unix_port : Pchar;cvar;external;
type
Pst_mysql_field = ^st_mysql_field;
st_mysql_field = record
name : Pchar;
table : Pchar;
org_table : Pchar;
db : Pchar;
def : Pchar;
length : dword;
max_length : dword;
flags : dword;
decimals : dword;
_type : enum_field_types;
end;
MYSQL_FIELD = st_mysql_field;
TMYSQL_FIELD = ^MYSQL_FIELD;
PMYSQL_FIELD = ^MYSQL_FIELD;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
function IS_PRI_KEY(n : longint) : Boolean;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
function IS_NOT_NULL(n : longint) : Boolean;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
function IS_BLOB(n : longint) : boolean;
(* error
#define IS_NUM(t) ((t) <= FIELD_TYPE_INT24 || (t) == FIELD_TYPE_YEAR)
in define line 32 *)
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
{ return type might be wrong }
function IS_NUM_FIELD(f : Pst_mysql_field) : boolean;
(* error
#define INTERNAL_NUM_FIELD(f) (((f)->type <= FIELD_TYPE_INT24 && ((f)->type != FIELD_TYPE_TIMESTAMP || (f)->length == 14 || (f)->length == 8)) || (f)->type == FIELD_TYPE_YEAR)
in define line 34 *)
{ Name of column }
{ Table of column if column was a field }
{ Org table name if table was an alias }
{ Database for table }
{ Default value (set by mysql_list_fields) }
{ Width of column }
{ Max width of selected set }
{ Div flags }
{ Number of decimals in field }
{ Type of field. Se mysql_com.h for types }
type
PMYSQL_ROW = ^MYSQL_ROW;
MYSQL_ROW = ppchar;
TMYSQL_ROW = MYSQL_ROW;
{ return data as array of strings }
PMYSQL_FIELD_OFFSET = ^MYSQL_FIELD_OFFSET;
MYSQL_FIELD_OFFSET = dword;
{ offset to current field }
Pmy_ulonglong = ^my_ulonglong;
my_ulonglong = qword;
{ was #define dname def_expr }
function MYSQL_COUNT_ERROR : longint;
{ return type might be wrong }
{ list of rows }
type
Pst_mysql_rows = ^st_mysql_rows;
st_mysql_rows = record
next : Pst_mysql_rows;
data : MYSQL_ROW;
end;
MYSQL_ROWS = st_mysql_rows;
PMYSQL_ROWS = ^MYSQL_ROWS;
PMYSQL_ROW_OFFSET = ^MYSQL_ROW_OFFSET;
MYSQL_ROW_OFFSET = MYSQL_ROWS;
{ offset to current row }
{ struct for once_alloc }
{ Next block in use }
{ memory left in block }
{ size of block }
Pst_used_mem = ^st_used_mem;
st_used_mem = record
next : Pst_used_mem;
left : dword;
size : dword;
end;
USED_MEM = st_used_mem;
PUSED_MEM = ^USED_MEM;
Pst_mem_root = ^st_mem_root;
st_mem_root = record
free : PUSED_MEM;
used : PUSED_MEM;
pre_alloc : PUSED_MEM;
min_malloc : dword;
block_size : dword;
error_handler : procedure ;cdecl;
end;
MEM_ROOT = st_mem_root;
PMEM_ROOT = ^MEM_ROOT;
Pst_mysql_data = ^st_mysql_data;
st_mysql_data = record
rows : my_ulonglong;
fields : dword;
data : PMYSQL_ROWS;
alloc : MEM_ROOT;
end;
MYSQL_DATA = st_mysql_data;
PMYSQL_DATA = ^MYSQL_DATA;
{ PEM key file }
{ PEM cert file }
{ PEM CA file }
{ PEM directory of CA-s? }
{ cipher to use }
{ if to use SSL or not }
{
on connect, find out the replication role of the server, and
establish connections to all the peers
}
{
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
}
{
if set, never read from a master,only from slave, when doing
a read that is replication-aware
}
Pst_mysql_options = ^st_mysql_options;
st_mysql_options = record
connect_timeout : dword;
client_flag : dword;
port : dword;
host : Pchar;
init_command : Pchar;
user : Pchar;
password : Pchar;
unix_socket : Pchar;
db : Pchar;
my_cnf_file : Pchar;
my_cnf_group : Pchar;
charset_dir : Pchar;
charset_name : Pchar;
ssl_key : Pchar;
ssl_cert : Pchar;
ssl_ca : Pchar;
ssl_capath : Pchar;
ssl_cipher : Pchar;
use_ssl : my_bool;
compress : my_bool;
named_pipe : my_bool;
rpl_probe : my_bool;
rpl_parse : my_bool;
no_master_reads : my_bool;
end;
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_status = (MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT,
MYSQL_STATUS_USE_RESULT);
{
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
);
{ Communication parameters }
{ ConnectorFd for SSL }
{ id if insert on table with NEXTNR }
{ Used by mysqlshow }
{ Id for connection in server }
{ If free in mysql_close }
{ set to 1 if automatic reconnect }
{
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()
}
{ pointers to the master, and the next slave
connections, points to itself if lone connection }
{ needed for round-robin slave pick }
{ needed for send/read/store/use result to work correctly with replication }
Pst_mysql = ^st_mysql;
st_mysql = record
net : NET;
connector_fd : gptr;
host : Pchar;
user : Pchar;
passwd : Pchar;
unix_socket : Pchar;
server_version : Pchar;
host_info : Pchar;
info : Pchar;
db : Pchar;
charset : Pointer; //!! Was Pcharset_info_st;
fields : PMYSQL_FIELD;
field_alloc : MEM_ROOT;
affected_rows : my_ulonglong;
insert_id : my_ulonglong;
extra_info : my_ulonglong;
thread_id : dword;
packet_length : dword;
port : dword;
client_flag : dword;
server_capabilities : dword;
protocol_version : dword;
field_count : dword;
server_status : dword;
server_language : dword;
options : st_mysql_options;
status : mysql_status;
free_me : my_bool;
reconnect : my_bool;
scramble_buff : array[0..8] of char;
rpl_pivot : my_bool;
master : Pst_mysql;
next_slave : Pst_mysql;
last_used_slave : Pst_mysql;
last_used_con : Pst_mysql;
end;
TMYSQL = st_mysql;
PMYSQL = ^TMYSQL;
{ column lengths of current row }
{ for unbuffered reads }
{ If unbuffered read }
{ buffer to current row }
{ Used by mysql_fetch_row }
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;
handle : PMYSQL;
field_alloc : MEM_ROOT;
field_count : dword;
current_field : dword;
row : MYSQL_ROW;
current_row : MYSQL_ROW;
eof : my_bool;
end;
MYSQL_RES = st_mysql_res;
PMYSQL_RES = ^MYSQL_RES;
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
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;
{ 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 External_library name 'mysql_server_init';
procedure mysql_server_end;cdecl;external External_library name 'mysql_server_end';
{ 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;cdecl;external External_library name 'mysql_thread_init';
procedure mysql_thread_end;cdecl;external External_library 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;cdecl;external External_library name 'mysql_num_rows';
function mysql_num_fields(res:PMYSQL_RES):dword;cdecl;external External_library name 'mysql_num_fields';
function mysql_eof(res:PMYSQL_RES):my_bool;cdecl;external External_library name 'mysql_eof';
function mysql_fetch_field_direct(res:PMYSQL_RES; fieldnr:dword):PMYSQL_FIELD;cdecl;external External_library name 'mysql_fetch_field_direct';
function mysql_fetch_fields(res:PMYSQL_RES):PMYSQL_FIELD;cdecl;external External_library name 'mysql_fetch_fields';
function mysql_row_tell(res:PMYSQL_RES):PMYSQL_ROWS;cdecl;external External_library name 'mysql_row_tell';
function mysql_field_tell(res:PMYSQL_RES):dword;cdecl;external External_library name 'mysql_field_tell';
function mysql_field_count(mysql:PMYSQL):dword;cdecl;external External_library name 'mysql_field_count';
function mysql_affected_rows(mysql:PMYSQL):my_ulonglong;cdecl;external External_library name 'mysql_affected_rows';
function mysql_insert_id(mysql:PMYSQL):my_ulonglong;cdecl;external External_library name 'mysql_insert_id';
function mysql_errno(mysql:PMYSQL):dword;cdecl;external External_library name 'mysql_errno';
function mysql_error(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_error';
function mysql_info(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_info';
function mysql_thread_id(mysql:PMYSQL):dword;cdecl;external External_library name 'mysql_thread_id';
(* Const before type ignored *)
function mysql_character_set_name(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_character_set_name';
function mysql_init(mysql:PMYSQL):PMYSQL;cdecl;external External_library name 'mysql_init';
(* Const before type ignored *)
(* Const before type ignored *)
(* Const before type ignored *)
(* Const before type ignored *)
(* Const before type ignored *)
function mysql_ssl_set(mysql:PMYSQL; key:Pchar; cert:Pchar; ca:Pchar; capath:Pchar;
cipher:Pchar):longint;cdecl;external External_library name 'mysql_ssl_set';
function mysql_ssl_clear(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_ssl_clear';
(* Const before type ignored *)
(* Const before type ignored *)
(* Const before type ignored *)
function mysql_change_user(mysql:PMYSQL; user:Pchar; passwd:Pchar; db:Pchar):my_bool;cdecl;external External_library name 'mysql_change_user';
(* Const before type ignored *)
(* Const before type ignored *)
(* Const before type ignored *)
(* Const before type ignored *)
(* Const before type ignored *)
function mysql_real_connect(mysql:PMYSQL; host:Pchar; user:Pchar; passwd:Pchar; db:Pchar;
port:dword; unix_socket:Pchar; clientflag:dword):PMYSQL;cdecl;external External_library name 'mysql_real_connect';
procedure mysql_close(sock:PMYSQL);cdecl;external External_library name 'mysql_close';
(* Const before type ignored *)
function mysql_select_db(mysql:PMYSQL; db:Pchar):longint;cdecl;external External_library name 'mysql_select_db';
(* Const before type ignored *)
function mysql_query(mysql:PMYSQL; q:Pchar):longint;cdecl;external External_library name 'mysql_query';
(* Const before type ignored *)
function mysql_send_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_send_query';
function mysql_read_query_result(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_read_query_result';
(* Const before type ignored *)
function mysql_real_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_real_query';
{ perform query on master }
(* Const before type ignored *)
function mysql_master_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_master_query';
(* Const before type ignored *)
function mysql_master_send_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_master_send_query';
{ perform query on slave }
(* Const before type ignored *)
function mysql_slave_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_slave_query';
(* Const before type ignored *)
function mysql_slave_send_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_slave_send_query';
{
enable/disable parsing of all queries to decide if they go on master or
slave
}
procedure mysql_enable_rpl_parse(mysql:PMYSQL);cdecl;external External_library name 'mysql_enable_rpl_parse';
procedure mysql_disable_rpl_parse(mysql:PMYSQL);cdecl;external External_library name 'mysql_disable_rpl_parse';
{ get the value of the parse flag }
function mysql_rpl_parse_enabled(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_rpl_parse_enabled';
{ enable/disable reads from master }
procedure mysql_enable_reads_from_master(mysql:PMYSQL);cdecl;external External_library name 'mysql_enable_reads_from_master';
procedure mysql_disable_reads_from_master(mysql:PMYSQL);cdecl;external External_library name 'mysql_disable_reads_from_master';
{ get the value of the master read flag }
function mysql_reads_from_master_enabled(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_reads_from_master_enabled';
(* error
enum mysql_rpl_type mysql_rpl_query_type(const char* q, int len);
in declaration at line 291 *)
{ discover the master and its slaves }
function mysql_rpl_probe(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_rpl_probe';
{ set the master, close/free the old one, if it is not a pivot }
(* Const before type ignored *)
(* Const before type ignored *)
(* Const before type ignored *)
function mysql_set_master(mysql:PMYSQL; host:Pchar; port:dword; user:Pchar; passwd:Pchar):longint;cdecl;external External_library name 'mysql_set_master';
(* Const before type ignored *)
(* Const before type ignored *)
(* Const before type ignored *)
function mysql_add_slave(mysql:PMYSQL; host:Pchar; port:dword; user:Pchar; passwd:Pchar):longint;cdecl;external External_library name 'mysql_add_slave';
function mysql_shutdown(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_shutdown';
function mysql_dump_debug_info(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_dump_debug_info';
function mysql_refresh(mysql:PMYSQL; refresh_options:dword):longint;cdecl;external External_library name 'mysql_refresh';
function mysql_kill(mysql:PMYSQL; pid:dword):longint;cdecl;external External_library name 'mysql_kill';
function mysql_ping(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_ping';
function mysql_stat(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_stat';
function mysql_get_server_info(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_get_server_info';
function mysql_get_client_info:Pchar;cdecl;external External_library name 'mysql_get_client_info';
function mysql_get_host_info(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_get_host_info';
function mysql_get_proto_info(mysql:PMYSQL):dword;cdecl;external External_library name 'mysql_get_proto_info';
(* Const before type ignored *)
function mysql_list_dbs(mysql:PMYSQL; wild:Pchar):PMYSQL_RES;cdecl;external External_library name 'mysql_list_dbs';
(* Const before type ignored *)
function mysql_list_tables(mysql:PMYSQL; wild:Pchar):PMYSQL_RES;cdecl;external External_library name 'mysql_list_tables';
(* Const before type ignored *)
(* Const before type ignored *)
function mysql_list_fields(mysql:PMYSQL; table:Pchar; wild:Pchar):PMYSQL_RES;cdecl;external External_library name 'mysql_list_fields';
function mysql_list_processes(mysql:PMYSQL):PMYSQL_RES;cdecl;external External_library name 'mysql_list_processes';
function mysql_store_result(mysql:PMYSQL):PMYSQL_RES;cdecl;external External_library name 'mysql_store_result';
function mysql_use_result(mysql:PMYSQL):PMYSQL_RES;cdecl;external External_library name 'mysql_use_result';
(* Const before type ignored *)
function mysql_options(mysql:PMYSQL; option:mysql_option; arg:Pchar):longint;cdecl;external External_library name 'mysql_options';
procedure mysql_free_result(result:PMYSQL_RES);cdecl;external External_library name 'mysql_free_result';
procedure mysql_data_seek(result:PMYSQL_RES; offset:my_ulonglong);cdecl;external External_library name 'mysql_data_seek';
function mysql_row_seek(result:PMYSQL_RES; _para2:MYSQL_ROW_OFFSET):MYSQL_ROW_OFFSET;cdecl;external External_library name 'mysql_row_seek';
function mysql_field_seek(result:PMYSQL_RES; offset:MYSQL_FIELD_OFFSET):MYSQL_FIELD_OFFSET;cdecl;external External_library name 'mysql_field_seek';
function mysql_fetch_row(result:PMYSQL_RES):MYSQL_ROW;cdecl;external External_library name 'mysql_fetch_row';
function mysql_fetch_lengths(result:PMYSQL_RES):Pdword;cdecl;external External_library name 'mysql_fetch_lengths';
function mysql_fetch_field(result:PMYSQL_RES):PMYSQL_FIELD;cdecl;external External_library name 'mysql_fetch_field';
(* Const before type ignored *)
function mysql_escape_string(_to:Pchar; from:Pchar; from_length:dword):dword;cdecl;external External_library name 'mysql_escape_string';
(* Const before type ignored *)
function mysql_real_escape_string(mysql:PMYSQL; _to:Pchar; from:Pchar; length:dword):dword;cdecl;external External_library name 'mysql_real_escape_string';
(* Const before type ignored *)
procedure mysql_debug(debug:Pchar);cdecl;external External_library name 'mysql_debug';
(* Const before type ignored *)
Type
TExdendBuffer = function (_para1:pointer; _to:Pchar; length:Pdword):Pchar;
function mysql_odbc_escape_string(mysql:PMYSQL; _to:Pchar; to_length:dword; from:Pchar; from_length:dword;
param:pointer; extend_buffer: TExdendBuffer):Pchar;cdecl;external External_library name 'mysql_odbc_escape_string';
procedure myodbc_remove_escape(mysql:PMYSQL; name:Pchar);cdecl;external External_library name 'myodbc_remove_escape';
function mysql_thread_safe:dword;cdecl;external External_library name 'mysql_thread_safe';
function mysql_manager_init(con:PMYSQL_MANAGER):PMYSQL_MANAGER;cdecl;external External_library name 'mysql_manager_init';
(* Const before type ignored *)
(* Const before type ignored *)
(* Const before type ignored *)
function mysql_manager_connect(con:PMYSQL_MANAGER; host:Pchar; user:Pchar; passwd:Pchar; port:dword):PMYSQL_MANAGER;cdecl;external External_library name 'mysql_manager_connect';
procedure mysql_manager_close(con:PMYSQL_MANAGER);cdecl;external External_library name 'mysql_manager_close';
(* Const before type ignored *)
function mysql_manager_command(con:PMYSQL_MANAGER; cmd:Pchar; cmd_len:longint):longint;cdecl;external External_library name 'mysql_manager_command';
function mysql_manager_fetch_line(con:PMYSQL_MANAGER; res_buf:Pchar; res_buf_size:longint):longint;cdecl;external External_library name 'mysql_manager_fetch_line';
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
{ return type might be wrong }
function mysql_reload(mysql : pmysql) : longint;
{
The following functions are mainly exported because of mysqlbinlog;
They are not for general usage
}
(* Const before type ignored *)
function simple_command(mysql:PMYSQL; command:enum_server_command; arg:Pchar; length:dword; skipp_check:my_bool):longint;cdecl;external External_library name 'simple_command';
function net_safe_read(mysql:PMYSQL):dword;cdecl;external External_library name 'net_safe_read';
implementation
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
function IS_PRI_KEY(n : longint) : Boolean;
begin
IS_PRI_KEY:=(n and PRI_KEY_FLAG)<>0;
end;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
function IS_NOT_NULL(n : longint) : Boolean;
begin
IS_NOT_NULL:=(n and NOT_NULL_FLAG)<>0;
end;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
function IS_BLOB(n : longint) : Boolean;
begin
IS_BLOB:=(n and BLOB_FLAG)<>0;
end;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
{ return type might be wrong }
function IS_NUM_FIELD(f : Pst_mysql_field) : Boolean;
begin
IS_NUM_FIELD:=((f^.flags) and NUM_FLAG)<>0;
end;
{ was #define dname def_expr }
function MYSQL_COUNT_ERROR : longint;
{ return type might be wrong }
begin
MYSQL_COUNT_ERROR:= not (my_ulonglong(0));
end;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
{ return type might be wrong }
function mysql_reload(mysql : pmysql) : longint;
begin
mysql_reload:=mysql_refresh(mysql,REFRESH_GRANT);
end;
end.

View File

@ -0,0 +1,402 @@
{ $Id$ }
unit mysql3;
{$undef use_mysql_321} { if undefined, use mysql 3.23 interface }
{
Import unit for the mysql header files.
Translated form the original mysql.h by Michael Van Canneyt
(michael@tfdec1.fys.kuleuven.ac.be)
updated to mysql version 3.23 header files by Bernhard Steffen
(bernhard.steffen@gmx.net)
}
{$r+,i+,o+}
interface
uses mysql3_com, mysql3_version;
{$ifdef win32}
Const mysqllib = 'libmysql';
{$else}
Const mysqllib = 'mysqlclient';
{$endif}
{$ifndef win32}
{$linklib c}
{$linklib m}
{$linklib mysqlclient}
{$endif}
{$packrecords C}
type
my_bool = byte;
gptr = pchar;
Socket = Longint;
PCardinal = ^Cardinal;
{$ifdef linux}
Var
mysql_port : cardinal; external name 'mysql_port';
mysql_unix_port : pchar; external name 'mysql_unix_port';
{$endif}
{$ifdef darwin}
Var
mysql_port : cardinal; external mysqllib name 'mysql_port';
mysql_unix_port : pchar; external mysqllib name 'mysql_unix_port';
{$endif}
{
#define IS_PRI_KEY(n) ((n) & PRI_KEY_FLAG)
#define IS_NOT_NULL(n) ((n) & NOT_NULL_FLAG)
#define IS_BLOB(n) ((n) & BLOB_FLAG)
#define IS_NUM(t) ((t) <= FIELD_TYPE_INT24)
}
Type
st_mysql_field = record
name : Pchar; { Name of column }
table : pchar; { Table of column if column was a field }
def: pchar; { Default value (set by mysql_list_fields) }
ftype : enum_field_types; { Type of field. See mysql_com.h for types }
length : cardinal; { Width of column }
max_length : cardinal; { Max width of selected set }
flags : cardinal; { Div flags }
decimals : cardinal; { Number of decimals in field }
end;
TMYSQL_FIELD = st_mysql_field;
PMYSQL_FIELD = ^TMYSQL_FIELD;
TMYSQL_ROW = PPchar; { return data as array of strings }
TMYSQL_FIELD_OFFSET = cardinal; { offset to current field }
{$ifndef oldmysql}
my_ulonglong=qword;
{$else}
my_longlong=cardinal;
{$endif}
PST_MYSQL_Rows = ^st_mysql_rows;
st_mysql_rows = Record
next : pst_mysql_rows; { list of rows }
Data : TMYSQL_ROW;
end;
TMYSQL_ROWS = st_mysql_rows;
PMYSQL_ROWS = ^TMYSQL_ROWS;
TMYSQL_ROW_OFFSET = PMYSQL_ROWS; { offset to current row }
st_mysql_data = record
rows : my_ulonglong;
fields : cardinal;
data : PMYSQL_ROWS;
alloc : TMEM_ROOT;
end;
TMYSQL_DATA = st_mysql_data;
PMYSQL_DATA = ^TMYSQL_DATA;
st_mysql_options = record
connect_timeout,client_flag : cardinal;
compress,named_pipe : my_bool;
port : cardinal;
host,init_command,user,password,unix_socket,db : pchar;
my_cnf_file,my_cnf_group : pchar;
{$ifndef use_mysql_321}
charset_dir, charset_name : pchar;
use_ssl : my_bool;
ssl_key, ssl_cert, ssl_ca, ssl_capath : pchar;
{$endif}
end;
{$ifndef use_mysql_321}
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);
{$endif}
mysql_status = (MYSQL_STATUS_READY,
MYSQL_STATUS_GET_RESULT,
MYSQL_STATUS_USE_RESULT);
{$ifndef use_mysql_321}
(*
charset_info_st = Record
number : cardinal;
name : pchar;
ctype : pointer {uchar*};
to_lower : pointer {uchar*};
to_upper : pointer {uchar*};
sort_order : pointer {uchar*};
strxfrm_multiply : cardinal;
{ einige nicht näher definierte Felder }
a, strxfrm, strnncoll, strnxfrm, like_range : pointer;
mbmaxlen : cardinal;
ismbchar, ismbhead, mbcharlen : pointer;
end;
*)
{$endif}
st_mysql = Record
NET : TNET; { Communication parameters }
{$ifndef use_mysql_321}
connector_fd : gptr;
{$endif}
host,user,passwd,unix_socket,server_version,host_info,
info,db : pchar;
port,client_flag,server_capabilities : cardinal;
protocol_version : cardinal;
field_count : cardinal;
{$ifndef use_mysql_321}
server_status : cardinal;
{$endif}
thread_id : cardinal; { Id for connection in server }
affected_rows : my_ulonglong;
insert_id : my_ulonglong; { id if insert on table with NEXTNR }
extra_info : my_ulonglong; { Used by mysqlshow }
packet_length : cardinal;
status : mysql_status;
fields : PMYSQL_FIELD;
field_alloc : TMEM_ROOT;
free_me : my_bool; { If free in mysql_close }
reconnect : my_bool; { set to 1 if automatic reconnect }
options : st_mysql_options;
{$ifndef use_mysql_321}
scramble_buf : array[0..8] of char;
charset : pointer { struct charset_info_st};
server_language : cardinal;
{$endif}
end;
TMYSQL = st_mysql;
PMYSQL = ^TMYSQL;
st_mysql_res = record
row_count : my_ulonglong;
field_count, current_field : cardinal;
fields : PMYSQL_FIELD;
data : PMYSQL_DATA;
data_cursor : PMYSQL_ROWS;
field_alloc : TMEM_ROOT;
row : TMYSQL_ROW; { If unbuffered read }
current_row : TMYSQL_ROW; { buffer to current row }
lengths : pcardinal; { column lengths of current row }
handle : PMYSQL; { for unbuffered reads }
eof : my_bool; { Used my mysql_fetch_row }
end;
TMYSQL_RES = st_mysql_res;
PMYSQL_RES = ^TMYSQL_RES;
{ Translated Macros }
Function mysql_num_rows (res : PMYSQL_RES) : my_ulonglong;
Function mysql_num_fields(res : PMYSQL_RES) : Cardinal;
Function mysql_eof(res : PMYSQL_RES) : my_bool;
Function mysql_fetch_field_direct(res : PMYSQL_RES; fieldnr : Cardinal) : TMYSQL_FIELD;
Function mysql_fetch_fields(res : PMYSQL_RES) : PMYSQL_FIELD;
Function mysql_row_tell(res : PMYSQL_RES) : PMYSQL_ROWS;
Function mysql_field_tell(res : PMYSQL_RES) : Cardinal;
Function mysql_affected_rows(mysql : PMYSQL): my_ulonglong;
Function mysql_insert_id(mysql : PMYSQL): my_ulonglong;
Function mysql_errno(mysql : PMYSQL) : Cardinal;
Function mysql_info(mysql : PMYSQL): Pchar;
Function mysql_reload(mysql : PMYSQL) : Longint;
Function mysql_thread_id(mysql : PMYSQL) : Cardinal;
Function mysql_error(mysql : PMYSQL) : pchar;
{ Original functions }
Function mysql_connect (mysql : PMYSQL; host,user,passwd: pchar) : PMYSQL; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_real_connect (mysql : PMYSQL; const host,user,passwd : pchar;
port : cardinal;
unix_socket : pchar;
clientflag : cardinal) : PMYSQL;{$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_close(sock : PMYSQL) : longint; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_select_db(MYSQL : PMYSQL; db : Pchar) : longint; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_query(mysql : PMYSQL; q : pchar) : longint; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_real_query(mysql : PMYSQL; q : Pchar; length : longint) : longint; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_create_db(mysql : PMYSQL; db : pchar) : longint; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_drop_db(mysql : PMYSQL; DB : Pchar) : longint; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_shutdown(mysql : PMYSQL) : longint; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_dump_debug_info(mysql : PMYSQL) : longint; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_refresh(mysql : PMYSQL; refresh_options : cardinal) : longint; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_kill(mysql : PMYSQL; pid : Cardinal) : longint; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_stat(mysql : PMYSQL) : Pchar; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_get_server_info(mysql : PMYSQL) : pchar; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_get_client_info : pchar; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_get_host_info(mysql : PMYSQL) : pchar; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_get_proto_info(mysql : PMYSQL) : Cardinal; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_list_dbs(mysql : PMYSQL;wild : Pchar) : PMYSQL_RES; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_list_tables(mysql : PMYSQL;Wild : Pchar) : PMYSQL_RES; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_list_fields(mysql : PMYSQL; table,wild : pchar) : PMYSQL_RES; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_list_processes(mysql : PMYSQL) : PMYSQL_RES; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_store_result(mysql : PMYSQL) : PMYSQL_RES; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_use_result(mysql : PMYSQL) : PMYSQL_RES; {$ifdef win32}stdcall{$else}cdecl{$endif};
Procedure mysql_free_result(res : PMYSQL_RES);{$ifdef win32}stdcall{$else}cdecl{$endif};
Procedure mysql_data_seek(mysql : PMYSQL_RES; offs : cardinal);{$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_row_seek(mysql : PMYSQL_RES; Offs: TMYSQL_ROW_OFFSET): TMYSQL_ROW_OFFSET; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_field_seek(musql : PMYSQL_RES;offs : TMYSQL_FIELD_OFFSET): TMYSQL_FIELD_OFFSET; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_fetch_row(mysql : PMYSQL_RES) : TMYSQL_ROW; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_fetch_lengths(mysql : PMYSQL_RES) : PCardinal; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_fetch_field(handle : PMYSQL_RES) : PMYSQL_FIELD; {$ifdef win32}stdcall{$else}cdecl{$endif};
Function mysql_escape_string(escto,escfrom : pchar; length : Cardinal) : cardinal; {$ifdef win32}stdcall{$else}cdecl{$endif};
Procedure mysql_debug(debug : pchar);{$ifdef win32}stdcall{$else}cdecl{$endif};
implementation
function mysql_connect (mysql : PMYSQL; host,user,passwd: pchar) : PMYSQL;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_connect';
function mysql_real_connect (mysql : PMYSQL; const host,user,passwd : pchar;
port : cardinal;
unix_socket : pchar;
clientflag : cardinal) : PMYSQL;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib;
function mysql_close(sock : PMYSQL) : longint ;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_close';
function mysql_select_db(MYSQL : PMYSQL; db : Pchar) : longint;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_select_db';
function mysql_query(mysql : PMYSQL; q : pchar) : longint;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_query';
function mysql_real_query(mysql : PMYSQL; q : Pchar; length : longint) : longint;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_real_query';
function mysql_create_db(mysql : PMYSQL; db : pchar) : longint;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_create_db';
Function mysql_drop_db(mysql : PMYSQL; DB : Pchar) : longint;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_drop_db';
Function mysql_shutdown(mysql : PMYSQL) : longint;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_shutdown';
Function mysql_dump_debug_info(mysql : PMYSQL) : longint;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_dump_debug_info';
Function mysql_refresh(mysql : PMYSQL; refresh_options : cardinal) : longint;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_refresh';
Function mysql_kill(mysql : PMYSQL; pid : Cardinal) : longint;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_kill';
Function mysql_stat(mysql : PMYSQL) : Pchar;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_stat';
Function mysql_get_server_info(mysql : PMYSQL) : pchar;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_get_server_info';
Function mysql_get_client_info : pchar;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib;
Function mysql_get_host_info(mysql : PMYSQL) : pchar;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_get_host_info';
Function mysql_get_proto_info(mysql : PMYSQL) : Cardinal;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_get_proto_info';
Function mysql_list_dbs(mysql : PMYSQL;wild : Pchar) : PMYSQL_RES;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_list_dbs';
Function mysql_list_tables(mysql : PMYSQL;Wild : Pchar) : PMYSQL_RES;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_list_tables';
Function mysql_list_fields(mysql : PMYSQL; table,wild : pchar) : PMYSQL_RES;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_list_fields';
Function mysql_list_processes(mysql : PMYSQL) : PMYSQL_RES;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_list_processes';
Function mysql_store_result(mysql : PMYSQL) : PMYSQL_RES;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_store_result';
Function mysql_use_result(mysql : PMYSQL) : PMYSQL_RES;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_use_result';
Procedure mysql_free_result(res : PMYSQL_RES);{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_free_result';
Procedure mysql_data_seek(mysql : PMYSQL_RES; offs : cardinal);{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_data_seek';
Function mysql_row_seek(mysql : PMYSQL_RES; Offs: TMYSQL_ROW_OFFSET): TMYSQL_ROW_OFFSET;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_row_seek';
Function mysql_field_seek(musql : PMYSQL_RES;offs : TMYSQL_FIELD_OFFSET): TMYSQL_FIELD_OFFSET;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_field_seek';
function mysql_fetch_row(mysql : PMYSQL_RES) : TMYSQL_ROW;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_fetch_row';
function mysql_fetch_lengths(mysql : PMYSQL_RES) : PCardinal;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_fetch_lengths';
function mysql_fetch_field(handle : PMYSQL_RES) : PMYSQL_FIELD;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_fetch_field';
Function mysql_escape_string(escto,escfrom : pchar; length : Cardinal) : cardinal;{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_escape_string';
Procedure mysql_debug(debug : pchar);{$ifdef win32}stdcall{$else}cdecl{$endif}; external mysqllib name 'mysql_debug';
Function mysql_error(mysql : PMYSQL) : pchar;
begin
mysql_error:=mysql^.net.last_error
end;
Function mysql_num_rows (res : PMYSQL_RES) : my_ulonglong;
begin
mysql_num_rows:=res^.row_count
end;
Function mysql_num_fields(res : PMYSQL_RES) : Cardinal;
begin
mysql_num_fields:=res^.field_count
end;
Function mysql_eof(res : PMYSQL_RES) : my_bool;
begin
mysql_eof:=res^.eof
end;
Function mysql_fetch_field_direct(res : PMYSQL_RES; fieldnr : Cardinal) : TMYSQL_FIELD;
begin
mysql_fetch_field_direct:=res^.fields[fieldnr];
end;
Function mysql_fetch_fields(res : PMYSQL_RES) : PMYSQL_FIELD;
begin
mysql_fetch_fields:=res^.fields
end;
Function mysql_row_tell(res : PMYSQL_RES) : PMYSQL_ROWS;
begin
mysql_row_tell:=res^.data_cursor
end;
Function mysql_field_tell(res : PMYSQL_RES) : Cardinal;
begin
mysql_field_tell:=res^.current_field
end;
Function mysql_affected_rows(mysql : PMYSQL): my_ulonglong;
begin
mysql_affected_rows:=mysql^.affected_rows
end;
Function mysql_insert_id(mysql : PMYSQL): my_ulonglong;
begin
mysql_insert_id:=mysql^.insert_id
end;
Function mysql_errno(mysql : PMYSQL) : Cardinal;
begin
mysql_errno:=mysql^.net.last_errno
end;
Function mysql_info(mysql : PMYSQL): Pchar;
begin
mysql_info:=mysql^.info
end;
Function mysql_reload(mysql : PMYSQL) : Longint;
begin
mysql_reload:=mysql_refresh(mysql,REFRESH_GRANT)
end;
Function mysql_thread_id(mysql : PMysql) : Cardinal;
begin
mysql_thread_id:=mysql^.thread_id
end;
end.
{
$Log$
Revision 1.1 2004-09-30 19:34:47 michael
+ Split everything in version 3 and version 4
Revision 1.1 2004/09/28 18:38:23 michael
+ Moved to subdir, switching to version 4.0
Revision 1.6 2004/08/05 10:36:26 olle
+ added, on unixes, $linklib mysqlclient
Revision 1.5 2004/03/29 18:16:02 florian
+ darwin support
Revision 1.4 2002/09/10 19:44:28 michael
+ Changed stdcall to appropriate OS calling declaration
Revision 1.3 2002/09/07 15:42:52 peter
* old logs removed and tabs fixed
Revision 1.2 2002/08/26 17:52:31 michael
+ Upgraded to 3.23
}

View File

@ -0,0 +1,312 @@
unit mysql3_com;
{$undef use_mysql_321} { if undefined, use mysql 3.23 interface }
{ updated to match version 3.23 header files of mysql by Bernhard Steffen
(bernhard.steffen@gmx.net)
}
interface
uses
mysql3_version;
{$ifdef win32}
Const mysqllib = 'libmysql';
{$else}
Const mysqllib = 'mysqlclient';
{$endif}
{$ifndef win32}
{$linklib c}
{$linklib m}
{$linklib mysqlclient}
{$endif}
{$r+,i+,o+}
{
Common definition between mysql server & client
}
{$packrecords 4}
{ Extra types introduced for pascal }
Type
pbyte = ^byte;
pcardinal = ^cardinal;
Socket = longint;
my_bool = byte;
Const
NAME_LEN = 64 ; { Field/table name length }
LOCAL_HOST : pchar = 'localhost' ;
MYSQL_PORT = 3306; { Alloced by ISI for MySQL }
MYSQL_UNIX_ADDR : pchar = '/tmp/mysql.sock';
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);
Const
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;
{ 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 }
PART_KEY_FLAG = 16384; { Intern; Part of some key }
GROUP_FLAG = 32768; { Intern group field }
{$ifndef use_mysql_321}
UNIQUE_FLAG = 65536; { Intern: Used by sql_yacc }
{$endif}
REFRESH_GRANT = 1; { Refresh grant tables }
REFRESH_LOG = 2; { Start on new log file }
REFRESH_TABLES = 4; { close all tables }
{$ifndef use_mysql_321}
REFRESH_HOSTS = 8; { Flush host cache }
REFRESH_STATUS = 16; { Flush status variables }
REFRESH_THREADS = 32; { Flush status variables }
REFRESH_SLAVE = 64; { Reset master info and restart slave
thread }
REFRESH_MASTER = 128; { Remove all bin logs in the index
and truncate the index }
{$endif}
{$ifndef use_mysql_321}
{ The following can't be set with mysql_refresh() }
REFRESH_READ_LOCK = 16384; { Lock tables for read }
REFRESH_FAST = 32768; { Intern flag }
{$endif}
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 }
{$ifndef use_mysql_321}
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_CHANGE_USER = 512; { Support the mysql_change_user() }
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 }
SERVER_STATUS_IN_TRANS = 1; { Transaction has started }
SERVER_STATUS_AUTOCOMMIT = 2; { Server in auto_commit mode }
{$endif}
MYSQL_ERRMSG_SIZE = 200;
NET_READ_TIMEOUT = 30; { Timeout on read }
NET_WRITE_TIMEOUT = 60; { Timeout on write }
NET_WAIT_TIMEOUT = 8*60*60; { Wait for new query }
Type
pst_used_mem = ^st_used_mem;
st_used_mem = record { struct for once_alloc }
next : pst_used_mem; { Next block in use }
left : cardinal; { memory left in block }
size : cardinal; { size of block }
end;
TUSED_MEM = st_used_mem;
PUSED_MEM = ^TUSED_MEM;
TError_handler = Procedure;
st_mem_root = record
free : PUSED_MEM;
used : PUSED_MEM;
{$ifndef use_mysql_321}
pre_alloc: PUSED_MEM;
{$endif use_mysql_321}
min_malloc : cardinal;
block_size : cardinal;
error_handler : TERROR_Handler;
end;
TMEM_ROOT = st_mem_root;
PMEM_ROOT = ^TMEM_ROOT;
Type
net_type = (NET_TYPE_TCPIP, NET_TYPE_SOCKET, NETTYPE_NAMEDPIPE);
st_net = record
nettype : net_type; //DT
fd : Socket;
fcntl : Longint;
buff,buff_end,write_pos,read_pos : Pchar;//DT
last_error : array [0..MYSQL_ERRMSG_SIZE-1] of char;
last_errno,max_packet,timeout,pkt_nr : Cardinal;
error,return_errno : my_bool;
compress : my_bool; //DT
{$ifndef use_mysql_321}
no_send_ok : my_bool;
{$endif}
remain_in_buf,r_length, buf_length, where_b : cardinal; //DT
{$ifndef use_mysql_321}
return_status : ^Cardinal;
reading_or_writing : my_bool;
{$else}
more : my_bool;//DT
{$endif}
save_char : char; //DT
end;
TNET = st_net;
PNET = ^TNET;
Const
packet_error : longint = -1;
Type
enum_field_types = ( FIELD_TYPE_DECIMAL, FIELD_TYPE_TINY,
FIELD_TYPE_SHORT, FIELD_TYPE_LONG,
FIELD_TYPE_FLOAT, FIELD_TYPE_DOUBLE,
FIELD_TYPE_NULL, FIELD_TYPE_TIMESTAMP,
FIELD_TYPE_LONGLONG,FIELD_TYPE_INT24,
FIELD_TYPE_DATE, FIELD_TYPE_TIME,
FIELD_TYPE_DATETIME,
{$ifndef use_mysql_321}
FIELD_TYPE_YEAR,
FIELD_TYPE_NEWDATE,
{$endif}
FIELD_TYPE_ENUM := 247,
FIELD_TYPE_SET := 248,
FIELD_TYPE_TINY_BLOB := 249,
FIELD_TYPE_MEDIUM_BLOB := 250,
FIELD_TYPE_LONG_BLOB :=251,
FIELD_TYPE_BLOB :=252,
FIELD_TYPE_VAR_STRING :=253,
FIELD_TYPE_STRING:=254);
Const
FIELD_TYPE_CHAR = FIELD_TYPE_TINY; { For compability }
FIELD_TYPE_INTERVAL = FIELD_TYPE_ENUM; { For compability }
Procedure sql_free (root : PMEM_ROOT);stdcall;
Procedure init_alloc_root (root: PMEM_ROOT;block_size : Cardinal);stdcall;
Function sql_alloc_first_block(root : PMEM_ROOT) : my_bool;stdcall;
Function sql_alloc_root(mem_root : PMEM_ROOT;len : Cardinal) : longint;stdcall;
Function sql_strdup_root(root : PMEM_ROOT;st : pchar) : pchar;stdcall;
Function sql_memdup_root(root: PMEM_ROOT;st : pchar; len : Cardinal): longint;stdcall;
{
extern unsigned long max_allowed_packet;
extern unsigned long net_buffer_length;
}
{
#define net_new_transaction(net) ((net)->pkt_nr=0)
}
Function my_net_init(net :PNET; fd : Socket) : Longint;stdcall;
procedure net_end(net : PNET);stdcall;
Procedure net_clear(net : PNET);stdcall;
Function net_flush(net : PNET) : longint;stdcall;
Function my_net_write(net : PNET;packet : pbyte;len : cardinal) : longint;stdcall;
Function net_write_command(net : PNET; command : char;packet : pbyte;len : cardinal) : longint;stdcall;
Function net_real_write(net : PNET;packet : pbyte; len : Cardinal) : longint;stdcall;
Function my_net_read(net : PNET) : Cardinal;stdcall;
Type
TRand_struct = record
seed,seed2,max_value : Cardinal;
max_value_dbl : double;
end;
PRand_struct = ^TRand_struct;
{ The following is for user defined functions }
Item_result = (STRING_RESULT,REAL_RESULT,INT_RESULT);
st_udf_args = record
arg_count : cardinal; { Number of arguments }
arg_type : ^Item_result; { Pointer to item_results }
args : ppchar; { Pointer to argument }
lengths : PCardinal; { Length of string arguments }
end;
TUDF_ARGS = st_udf_args;
PUDPF_ARGS = ^TUDF_ARGS;
{ This holds information about the result }
st_udf_init = record
maybe_null : my_bool; { 1 if function can return NULL }
decimals : cardinal; { for real functions }
max_length : Cardinal; { For string functions }
ptr : PChar; { free pointer for function data }
end;
TUDF_INIT = st_udf_init;
PUDF_INIT = TUDF_INIT;
{ Prototypes to password functions }
procedure randominit(rand : Prand_struct; seed1,seed2 : Cardinal);stdcall;
Function rnd(rand : Prand_struct) : double;stdcall;
procedure make_scrambled_password(toarg, passwd : Pchar);stdcall;
procedure get_salt_from_password(res : pcardinal; password : pchar);stdcall;
procedure scramble(toarg,message,password : pchar; old_ver : my_bool);stdcall;
function check_scramble(scramble,message : pchar; salt : cardinal;old_ver:my_bool) : my_bool;stdcall;
function get_tty_password(opt_message: pchar) : pchar;stdcall;
{
#define NULL_LENGTH ((unsigned long) ~0) { For net_store_length }
}
implementation
Procedure sql_free (root : PMEM_ROOT);stdcall;external;
Procedure init_alloc_root (root: PMEM_ROOT;block_size : Cardinal);stdcall;external;
Function sql_alloc_first_block(root : PMEM_ROOT) : my_bool;stdcall;external;
Function sql_alloc_root(mem_root : PMEM_ROOT;len : Cardinal) : longint;stdcall;external;
Function sql_strdup_root(root : PMEM_ROOT;st : pchar) : pchar;stdcall;external;
Function sql_memdup_root(root: PMEM_ROOT;st : pchar; len : Cardinal) : longint;stdcall;external;
Function my_net_init(net :PNET; fd : Socket) : Longint;stdcall;external;
procedure net_end(net : PNET);stdcall;external;
Procedure net_clear(net : PNET);stdcall;external;
Function net_flush(net : PNET) : longint;stdcall;external;
Function my_net_write(net : PNET;packet : pbyte;len : cardinal) : longint;stdcall;external;
Function net_write_command(net : PNET; command : char;packet : pbyte;len : cardinal) : longint;stdcall;external;
Function net_real_write(net : PNET;packet : pbyte; len : Cardinal) : longint;stdcall;external;
Function my_net_read(net : PNET) : Cardinal;stdcall;external;
procedure randominit(rand : Prand_struct; seed1,seed2 : Cardinal);stdcall;external;
Function rnd(rand : Prand_struct) : double;stdcall;external;
procedure make_scrambled_password(toarg, passwd : Pchar);stdcall;external;
procedure get_salt_from_password(res : pcardinal; password : pchar);stdcall;external;
procedure scramble(toarg,message,password : pchar; old_ver : my_bool);stdcall;external;
function check_scramble(scramble,message : pchar; salt : cardinal;old_ver:my_bool) : my_bool;stdcall;external;
function get_tty_password(opt_message: pchar) : pchar;stdcall;external;
end.
$Log$
Revision 1.1 2004-09-30 19:34:47 michael
+ Split everything in version 3 and version 4
Revision 1.1 2004/09/28 18:38:23 michael
+ Moved to subdir, switching to version 4.0
Revision 1.5 2004/08/05 10:36:25 olle
+ added, on unixes, $linklib mysqlclient
Revision 1.4 2004/07/01 20:04:17 jonas
* fixed st_mem_root record (only changed for 3.23, may still be wrong for
3.21)
Revision 1.3 2002/09/07 15:42:52 peter
* old logs removed and tabs fixed
Revision 1.2 2002/08/26 17:52:31 michael
+ Upgraded to 3.23
}

View File

@ -0,0 +1,46 @@
unit mysql3_version;
{$undef use_mysql_321} { if undefined, use mysql 3.23 interface }
{
Translated from mysql_version.h by Michael Van Canneyt
(michael@tfdec1.fys.kuleuven.ac.be)
updated to match version 3.23 header files of mysql by Bernhard Steffen
(bernhard.steffen@gmx.net)
}
interface
{ Version numbers for protocol & mysqld }
Const
{$ifdef use_mysql_321}
MYSQL_SERVER_VERSION : pchar ='3.21.28-gamma';
FRM_VER = 6;
MYSQL_VERSION_ID =32128;
{$else}
MYSQL_SERVER_VERSION : pchar ='3.23.34';
FRM_VER = 6; { ??? }
MYSQL_VERSION_ID =32334;
{$endif}
implementation
end.
$Log$
Revision 1.1 2004-09-30 19:34:47 michael
+ Split everything in version 3 and version 4
Revision 1.1 2004/09/28 18:38:23 michael
+ Moved to subdir, switching to version 4.0
Revision 1.3 2002/09/07 15:42:53 peter
* old logs removed and tabs fixed
Revision 1.2 2002/08/26 17:52:31 michael
+ Upgraded to 3.23
}

View File

@ -0,0 +1,409 @@
unit mysql4;
interface
uses mysql4_com;
{
Automatically converted by H2Pas 0.99.15 from mysql.ph
The following command line parameters were used:
-p
-D
-l
mysqlclient
mysql.ph
}
const
External_library='mysqlclient'; {Setup as you need}
{ Pointers to basic pascal types, inserted by h2pas conversion program.}
Type
PLongint = ^Longint;
PSmallInt = ^SmallInt;
PByte = ^Byte;
PWord = ^Word;
PDWord = ^DWord;
PDouble = ^Double;
{$PACKRECORDS C}
{ Copyright (C) 2000 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
Pmy_bool = ^my_bool;
my_bool = char;
Pgptr = ^gptr;
gptr = char;
Pmy_socket = ^my_socket;
my_socket = longint;
var
mysql_port : dword;cvar;external;
mysql_unix_port : Pchar;cvar;external;
type
Pst_mysql_field = ^st_mysql_field;
st_mysql_field = record
name : Pchar;
table : Pchar;
org_table : Pchar;
db : Pchar;
def : Pchar;
length : dword;
max_length : dword;
flags : dword;
decimals : dword;
ftype : enum_field_types;
end;
MYSQL_FIELD = st_mysql_field;
TMYSQL_FIELD = MYSQL_FIELD;
PMYSQL_FIELD = ^MYSQL_FIELD;
function IS_PRI_KEY(n : longint) : Boolean;
function IS_NOT_NULL(n : longint) : Boolean;
function IS_BLOB(n : longint) : boolean;
type
MYSQL_ROW = ppchar;
PMYSQL_ROW = ^MYSQL_ROW;
TMYSQL_ROW = MYSQL_ROW;
PMYSQL_FIELD_OFFSET = ^MYSQL_FIELD_OFFSET;
MYSQL_FIELD_OFFSET = dword;
Pmy_ulonglong = ^my_ulonglong;
my_ulonglong = qword;
function MYSQL_COUNT_ERROR : longint;
type
Pst_mysql_rows = ^st_mysql_rows;
st_mysql_rows = record
next : Pst_mysql_rows;
data : MYSQL_ROW;
end;
MYSQL_ROWS = st_mysql_rows;
TMYSQL_ROWS = MYSQL_ROWS;
PMYSQL_ROWS = ^MYSQL_ROWS;
MYSQL_ROW_OFFSET = MYSQL_ROWS;
PMYSQL_ROW_OFFSET = ^MYSQL_ROW_OFFSET;
Pst_used_mem = ^st_used_mem;
st_used_mem = record
next : Pst_used_mem;
left : dword;
size : dword;
end;
USED_MEM = st_used_mem;
TUSED_MEM = USED_MEM;
PUSED_MEM = ^USED_MEM;
Pst_mem_root = ^st_mem_root;
st_mem_root = record
free : PUSED_MEM;
used : PUSED_MEM;
pre_alloc : PUSED_MEM;
min_malloc : dword;
block_size : dword;
block_num : dword;
first_block_usage : dword;
error_handler : procedure ;cdecl;
end;
MEM_ROOT = st_mem_root;
TMEM_ROOT = MEM_ROOT;
PMEM_ROOT = ^MEM_ROOT;
Pst_mysql_data = ^st_mysql_data;
st_mysql_data = record
rows : my_ulonglong;
fields : dword;
data : PMYSQL_ROWS;
alloc : MEM_ROOT;
end;
MYSQL_DATA = st_mysql_data;
TMYSQL_DATA = MYSQL_DATA;
PMYSQL_DATA = ^MYSQL_DATA;
Pst_mysql_options = ^st_mysql_options;
st_mysql_options = record
connect_timeout : dword;
client_flag : dword;
port : dword;
host : Pchar;
init_command : Pchar;
user : Pchar;
password : Pchar;
unix_socket : Pchar;
db : Pchar;
my_cnf_file : Pchar;
my_cnf_group : Pchar;
charset_dir : Pchar;
charset_name : Pchar;
ssl_key : Pchar;
ssl_cert : Pchar;
ssl_ca : Pchar;
ssl_capath : Pchar;
ssl_cipher : Pchar;
max_allowed_packet : Cardinal;
use_ssl : my_bool;
compress : my_bool;
named_pipe : my_bool;
rpl_probe : my_bool;
rpl_parse : my_bool;
no_master_reads : my_bool;
end;
TMYSQL_OPTIONS = st_mysql_options;
PTMYSQL_OPTIONS = ^TMYSQL_OPTIONS;
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_status = (MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT,
MYSQL_STATUS_USE_RESULT);
mysql_rpl_type = (MYSQL_RPL_MASTER,MYSQL_RPL_SLAVE,MYSQL_RPL_ADMIN );
Pst_mysql = ^st_mysql;
st_mysql = record
net : NET;
connector_fd : gptr;
host : Pchar;
user : Pchar;
passwd : Pchar;
unix_socket : Pchar;
server_version : Pchar;
host_info : Pchar;
info : Pchar;
db : Pchar;
charset : Pointer; //!! Was Pcharset_info_st;
fields : PMYSQL_FIELD;
field_alloc : MEM_ROOT;
affected_rows : my_ulonglong;
insert_id : my_ulonglong;
extra_info : my_ulonglong;
thread_id : dword;
packet_length : dword;
port : dword;
client_flag : dword;
server_capabilities : dword;
protocol_version : dword;
field_count : dword;
server_status : dword;
server_language : dword;
options : st_mysql_options;
status : mysql_status;
free_me : my_bool;
reconnect : my_bool;
scramble_buff : array[0..8] of char;
rpl_pivot : my_bool;
master : Pst_mysql;
next_slave : Pst_mysql;
last_used_slave : Pst_mysql;
last_used_con : Pst_mysql;
end;
TMYSQL = st_mysql;
PMYSQL = ^TMYSQL;
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;
handle : PMYSQL;
field_alloc : MEM_ROOT;
field_count : dword;
current_field : dword;
row : MYSQL_ROW;
current_row : MYSQL_ROW;
eof : my_bool;
end;
MYSQL_RES = st_mysql_res;
TMYSQL_RES = MYSQL_RES;
PMYSQL_RES = ^MYSQL_RES;
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
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;
function mysql_server_init(argc:longint; argv:PPchar; groups:PPchar):longint;cdecl;external External_library name 'mysql_server_init';
procedure mysql_server_end;cdecl;external External_library name 'mysql_server_end';
function mysql_thread_init:my_bool;cdecl;external External_library name 'mysql_thread_init';
procedure mysql_thread_end;cdecl;external External_library name 'mysql_thread_end';
function mysql_num_rows(res:PMYSQL_RES):my_ulonglong;cdecl;external External_library name 'mysql_num_rows';
function mysql_num_fields(res:PMYSQL_RES):dword;cdecl;external External_library name 'mysql_num_fields';
function mysql_eof(res:PMYSQL_RES):my_bool;cdecl;external External_library name 'mysql_eof';
function mysql_fetch_field_direct(res:PMYSQL_RES; fieldnr:dword):PMYSQL_FIELD;cdecl;external External_library name 'mysql_fetch_field_direct';
function mysql_fetch_fields(res:PMYSQL_RES):PMYSQL_FIELD;cdecl;external External_library name 'mysql_fetch_fields';
function mysql_row_tell(res:PMYSQL_RES):PMYSQL_ROWS;cdecl;external External_library name 'mysql_row_tell';
function mysql_field_tell(res:PMYSQL_RES):dword;cdecl;external External_library name 'mysql_field_tell';
function mysql_field_count(mysql:PMYSQL):dword;cdecl;external External_library name 'mysql_field_count';
function mysql_affected_rows(mysql:PMYSQL):my_ulonglong;cdecl;external External_library name 'mysql_affected_rows';
function mysql_insert_id(mysql:PMYSQL):my_ulonglong;cdecl;external External_library name 'mysql_insert_id';
function mysql_errno(mysql:PMYSQL):dword;cdecl;external External_library name 'mysql_errno';
function mysql_error(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_error';
function mysql_info(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_info';
function mysql_thread_id(mysql:PMYSQL):dword;cdecl;external External_library name 'mysql_thread_id';
function mysql_character_set_name(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_character_set_name';
function mysql_init(mysql:PMYSQL):PMYSQL;cdecl;external External_library name 'mysql_init';
function mysql_ssl_set(mysql:PMYSQL; key:Pchar; cert:Pchar; ca:Pchar; capath:Pchar;
cipher:Pchar):longint;cdecl;external External_library name 'mysql_ssl_set';
function mysql_ssl_clear(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_ssl_clear';
function mysql_change_user(mysql:PMYSQL; user:Pchar; passwd:Pchar; db:Pchar):my_bool;cdecl;external External_library 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;cdecl;external External_library name 'mysql_real_connect';
procedure mysql_close(sock:PMYSQL);cdecl;external External_library name 'mysql_close';
function mysql_select_db(mysql:PMYSQL; db:Pchar):longint;cdecl;external External_library name 'mysql_select_db';
function mysql_query(mysql:PMYSQL; q:Pchar):longint;cdecl;external External_library name 'mysql_query';
function mysql_send_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_send_query';
function mysql_read_query_result(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_read_query_result';
function mysql_real_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_real_query';
function mysql_master_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_master_query';
function mysql_master_send_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_master_send_query';
function mysql_slave_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_slave_query';
function mysql_slave_send_query(mysql:PMYSQL; q:Pchar; length:dword):longint;cdecl;external External_library name 'mysql_slave_send_query';
procedure mysql_enable_rpl_parse(mysql:PMYSQL);cdecl;external External_library name 'mysql_enable_rpl_parse';
procedure mysql_disable_rpl_parse(mysql:PMYSQL);cdecl;external External_library name 'mysql_disable_rpl_parse';
function mysql_rpl_parse_enabled(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_rpl_parse_enabled';
procedure mysql_enable_reads_from_master(mysql:PMYSQL);cdecl;external External_library name 'mysql_enable_reads_from_master';
procedure mysql_disable_reads_from_master(mysql:PMYSQL);cdecl;external External_library name 'mysql_disable_reads_from_master';
function mysql_reads_from_master_enabled(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_reads_from_master_enabled';
(* error
enum mysql_rpl_type mysql_rpl_query_type(const char* q, int len);
in declaration at line 291 *)
function mysql_rpl_probe(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_rpl_probe';
function mysql_set_master(mysql:PMYSQL; host:Pchar; port:dword; user:Pchar; passwd:Pchar):longint;cdecl;external External_library name 'mysql_set_master';
function mysql_add_slave(mysql:PMYSQL; host:Pchar; port:dword; user:Pchar; passwd:Pchar):longint;cdecl;external External_library name 'mysql_add_slave';
function mysql_shutdown(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_shutdown';
function mysql_dump_debug_info(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_dump_debug_info';
function mysql_refresh(mysql:PMYSQL; refresh_options:dword):longint;cdecl;external External_library name 'mysql_refresh';
function mysql_kill(mysql:PMYSQL; pid:dword):longint;cdecl;external External_library name 'mysql_kill';
function mysql_ping(mysql:PMYSQL):longint;cdecl;external External_library name 'mysql_ping';
function mysql_stat(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_stat';
function mysql_get_server_info(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_get_server_info';
function mysql_get_client_info:Pchar;cdecl;external External_library name 'mysql_get_client_info';
function mysql_get_host_info(mysql:PMYSQL):Pchar;cdecl;external External_library name 'mysql_get_host_info';
function mysql_get_proto_info(mysql:PMYSQL):dword;cdecl;external External_library name 'mysql_get_proto_info';
function mysql_list_dbs(mysql:PMYSQL; wild:Pchar):PMYSQL_RES;cdecl;external External_library name 'mysql_list_dbs';
function mysql_list_tables(mysql:PMYSQL; wild:Pchar):PMYSQL_RES;cdecl;external External_library name 'mysql_list_tables';
function mysql_list_fields(mysql:PMYSQL; table:Pchar; wild:Pchar):PMYSQL_RES;cdecl;external External_library name 'mysql_list_fields';
function mysql_list_processes(mysql:PMYSQL):PMYSQL_RES;cdecl;external External_library name 'mysql_list_processes';
function mysql_store_result(mysql:PMYSQL):PMYSQL_RES;cdecl;external External_library name 'mysql_store_result';
function mysql_use_result(mysql:PMYSQL):PMYSQL_RES;cdecl;external External_library name 'mysql_use_result';
function mysql_options(mysql:PMYSQL; option:mysql_option; arg:Pchar):longint;cdecl;external External_library name 'mysql_options';
procedure mysql_free_result(result:PMYSQL_RES);cdecl;external External_library name 'mysql_free_result';
procedure mysql_data_seek(result:PMYSQL_RES; offset:my_ulonglong);cdecl;external External_library name 'mysql_data_seek';
function mysql_row_seek(result:PMYSQL_RES; _para2:MYSQL_ROW_OFFSET):MYSQL_ROW_OFFSET;cdecl;external External_library name 'mysql_row_seek';
function mysql_field_seek(result:PMYSQL_RES; offset:MYSQL_FIELD_OFFSET):MYSQL_FIELD_OFFSET;cdecl;external External_library name 'mysql_field_seek';
function mysql_fetch_row(result:PMYSQL_RES):MYSQL_ROW;cdecl;external External_library name 'mysql_fetch_row';
function mysql_fetch_lengths(result:PMYSQL_RES):Pdword;cdecl;external External_library name 'mysql_fetch_lengths';
function mysql_fetch_field(result:PMYSQL_RES):PMYSQL_FIELD;cdecl;external External_library name 'mysql_fetch_field';
function mysql_escape_string(_to:Pchar; from:Pchar; from_length:dword):dword;cdecl;external External_library name 'mysql_escape_string';
function mysql_real_escape_string(mysql:PMYSQL; _to:Pchar; from:Pchar; length:dword):dword;cdecl;external External_library name 'mysql_real_escape_string';
procedure mysql_debug(debug:Pchar);cdecl;external External_library name 'mysql_debug';
Type
TExdendBuffer = function (_para1:pointer; _to:Pchar; length:Pdword):Pchar;
function mysql_odbc_escape_string(mysql:PMYSQL; _to:Pchar; to_length:dword; from:Pchar; from_length:dword;
param:pointer; extend_buffer: TExdendBuffer):Pchar;cdecl;external External_library name 'mysql_odbc_escape_string';
procedure myodbc_remove_escape(mysql:PMYSQL; name:Pchar);cdecl;external External_library name 'myodbc_remove_escape';
function mysql_thread_safe:dword;cdecl;external External_library name 'mysql_thread_safe';
function mysql_manager_init(con:PMYSQL_MANAGER):PMYSQL_MANAGER;cdecl;external External_library name 'mysql_manager_init';
function mysql_manager_connect(con:PMYSQL_MANAGER; host:Pchar; user:Pchar; passwd:Pchar; port:dword):PMYSQL_MANAGER;cdecl;external External_library name 'mysql_manager_connect';
procedure mysql_manager_close(con:PMYSQL_MANAGER);cdecl;external External_library name 'mysql_manager_close';
function mysql_manager_command(con:PMYSQL_MANAGER; cmd:Pchar; cmd_len:longint):longint;cdecl;external External_library name 'mysql_manager_command';
function mysql_manager_fetch_line(con:PMYSQL_MANAGER; res_buf:Pchar; res_buf_size:longint):longint;cdecl;external External_library name 'mysql_manager_fetch_line';
function mysql_reload(mysql : pmysql) : longint;
function simple_command(mysql:PMYSQL; command:enum_server_command; arg:Pchar; length:dword; skipp_check:my_bool):longint;cdecl;external External_library name 'simple_command';
function net_safe_read(mysql:PMYSQL):dword;cdecl;external External_library name 'net_safe_read';
implementation
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 MYSQL_COUNT_ERROR : longint;
begin
MYSQL_COUNT_ERROR:= not (my_ulonglong(0));
end;
function mysql_reload(mysql : pmysql) : longint;
begin
mysql_reload:=mysql_refresh(mysql,REFRESH_GRANT);
end;
end.

View File

@ -1,4 +1,4 @@
unit mysql_com; unit mysql4_com;
interface interface
{ {
@ -74,120 +74,63 @@ interface
const const
NOT_NULL_FLAG = 1; NOT_NULL_FLAG = 1;
{ Field is part of a primary key }
PRI_KEY_FLAG = 2; PRI_KEY_FLAG = 2;
{ Field is part of a unique key }
UNIQUE_KEY_FLAG = 4; UNIQUE_KEY_FLAG = 4;
{ Field is part of a key }
MULTIPLE_KEY_FLAG = 8; MULTIPLE_KEY_FLAG = 8;
{ Field is a blob }
BLOB_FLAG = 16; BLOB_FLAG = 16;
{ Field is unsigned }
UNSIGNED_FLAG = 32; UNSIGNED_FLAG = 32;
{ Field is zerofill }
ZEROFILL_FLAG = 64; ZEROFILL_FLAG = 64;
BINARY_FLAG = 128; BINARY_FLAG = 128;
{ The following are only sent to new clients }
{ field is an enum }
ENUM_FLAG = 256; ENUM_FLAG = 256;
{ field is a autoincrement field }
AUTO_INCREMENT_FLAG = 512; AUTO_INCREMENT_FLAG = 512;
{ Field is a timestamp }
TIMESTAMP_FLAG = 1024; TIMESTAMP_FLAG = 1024;
{ field is a set }
SET_FLAG = 2048; SET_FLAG = 2048;
{ Field is num (for clients) }
NUM_FLAG = 32768; NUM_FLAG = 32768;
{ Intern; Part of some key }
PART_KEY_FLAG = 16384; PART_KEY_FLAG = 16384;
{ Intern: Group field }
GROUP_FLAG = 32768; GROUP_FLAG = 32768;
{ Intern: Used by sql_yacc }
UNIQUE_FLAG = 65536; UNIQUE_FLAG = 65536;
{ Refresh grant tables }
REFRESH_GRANT = 1; REFRESH_GRANT = 1;
{ Start on new log file }
REFRESH_LOG = 2; REFRESH_LOG = 2;
{ close all tables }
REFRESH_TABLES = 4; REFRESH_TABLES = 4;
{ Flush host cache }
REFRESH_HOSTS = 8; REFRESH_HOSTS = 8;
{ Flush status variables }
REFRESH_STATUS = 16; REFRESH_STATUS = 16;
{ Flush status variables }
REFRESH_THREADS = 32; REFRESH_THREADS = 32;
{ Reset master info and restart slave
thread }
REFRESH_SLAVE = 64; REFRESH_SLAVE = 64;
{ Remove all bin logs in the index
and truncate the index }
REFRESH_MASTER = 128; REFRESH_MASTER = 128;
{ The following can't be set with mysql_refresh() }
{ Lock tables for read }
REFRESH_READ_LOCK = 16384; REFRESH_READ_LOCK = 16384;
{ Intern flag }
REFRESH_FAST = 32768; REFRESH_FAST = 32768;
{ RESET (remove all queries) from query cache }
REFRESH_QUERY_CACHE = 65536; REFRESH_QUERY_CACHE = 65536;
{ pack query cache }
REFRESH_QUERY_CACHE_FREE = $20000; REFRESH_QUERY_CACHE_FREE = $20000;
REFRESH_DES_KEY_FILE = $40000; REFRESH_DES_KEY_FILE = $40000;
{ new more secure passwords }
CLIENT_LONG_PASSWORD = 1; CLIENT_LONG_PASSWORD = 1;
{ Found instead of affected rows }
CLIENT_FOUND_ROWS = 2; CLIENT_FOUND_ROWS = 2;
{ Get all column flags }
CLIENT_LONG_FLAG = 4; CLIENT_LONG_FLAG = 4;
{ One can specify db on connect }
CLIENT_CONNECT_WITH_DB = 8; CLIENT_CONNECT_WITH_DB = 8;
{ Don't allow database.table.column }
CLIENT_NO_SCHEMA = 16; CLIENT_NO_SCHEMA = 16;
{ Can use compression protocol }
CLIENT_COMPRESS = 32; CLIENT_COMPRESS = 32;
{ Odbc client }
CLIENT_ODBC = 64; CLIENT_ODBC = 64;
{ Can use LOAD DATA LOCAL }
CLIENT_LOCAL_FILES = 128; CLIENT_LOCAL_FILES = 128;
{ Ignore spaces before '(' }
CLIENT_IGNORE_SPACE = 256; CLIENT_IGNORE_SPACE = 256;
{ Support the mysql_change_user() }
CLIENT_CHANGE_USER = 512; CLIENT_CHANGE_USER = 512;
{ This is an interactive client }
CLIENT_INTERACTIVE = 1024; CLIENT_INTERACTIVE = 1024;
{ Switch to SSL after handshake }
CLIENT_SSL = 2048; CLIENT_SSL = 2048;
{ IGNORE sigpipes }
CLIENT_IGNORE_SIGPIPE = 4096; CLIENT_IGNORE_SIGPIPE = 4096;
{ Client knows about transactions }
CLIENT_TRANSACTIONS = 8192; CLIENT_TRANSACTIONS = 8192;
{ Transaction has started }
SERVER_STATUS_IN_TRANS = 1; SERVER_STATUS_IN_TRANS = 1;
{ Server in auto_commit mode }
SERVER_STATUS_AUTOCOMMIT = 2; SERVER_STATUS_AUTOCOMMIT = 2;
MYSQL_ERRMSG_SIZE = 200; MYSQL_ERRMSG_SIZE = 200;
{ Timeout on read }
NET_READ_TIMEOUT = 30; NET_READ_TIMEOUT = 30;
{ Timeout on write }
NET_WRITE_TIMEOUT = 60; NET_WRITE_TIMEOUT = 60;
MAX_BLOB_WIDTH = 8192;
{ {
#define NET_WAIT_TIMEOUT (8 60 60) #define NET_WAIT_TIMEOUT (8 60 60)
} }
{ Wait for new query }
{ {
struct st_vio; // Only C struct st_vio; // Only C
typedef struct st_vio Vio; typedef struct st_vio Vio;
} }
{ Default width for blob }
MAX_BLOB_WIDTH = 8192;
{ For Perl DBI/dbd }
{
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
}
type type
Pst_net = ^st_net; Pst_net = ^st_net;
st_net = record st_net = record
vio : PVio; vio : PVio;
@ -197,11 +140,14 @@ interface
read_pos : Pbyte; read_pos : Pbyte;
fd : my_socket; fd : my_socket;
max_packet : dword; max_packet : dword;
fcntl : longint; max_packet_size : dword;
last_errno : dword; last_errno : dword;
timeout : dword;
pkt_nr : dword; pkt_nr : dword;
compress_pkt_nr : dword; compress_pkt_nr : dword;
write_timeout : dword;
read_timeout : dword;
retry_count : dword;
fcntl : longint;
last_error : array[0..(MYSQL_ERRMSG_SIZE)-1] of char; last_error : array[0..(MYSQL_ERRMSG_SIZE)-1] of char;
error : byte; error : byte;
return_errno : my_bool; return_errno : my_bool;
@ -217,11 +163,10 @@ interface
query_cache_query : gptr; query_cache_query : gptr;
end; end;
NET = st_net; NET = st_net;
TNET = NET;
PNET = ^NET; PNET = ^NET;
{ was #define dname def_expr }
function packet_error : longint;
{ return type might be wrong }
function packet_error : longint;
type type
enum_field_types = (FIELD_TYPE_DECIMAL,FIELD_TYPE_TINY,FIELD_TYPE_SHORT, enum_field_types = (FIELD_TYPE_DECIMAL,FIELD_TYPE_TINY,FIELD_TYPE_SHORT,

View File

@ -1,4 +1,4 @@
unit mysql_version; unit mysql4_version;
interface interface
{ {

View File

@ -1,16 +1,9 @@
#include <mysql.h>
#include <mysql_com.h>
#include <stdio.h> #include <stdio.h>
#include <mysql/mysql.h>
main () main () {
{ printf("C\n");
my_bool i; printf("MYSQL : %d options : %d\n",sizeof(MYSQL),sizeof(struct st_mysql_options));
NET n;
enum enum_net_type nettype;
struct st_mysql_options options;
my_ulonglong llong;
printf ("MYSQL : %d options : %d\n",sizeof(MYSQL),sizeof(options));
printf("MYSQL_DATA : %d\n" ,sizeof(MYSQL_DATA)); printf("MYSQL_DATA : %d\n" ,sizeof(MYSQL_DATA));
printf("MYSQL_ROWS : %d\n",sizeof(MYSQL_ROWS)); printf("MYSQL_ROWS : %d\n",sizeof(MYSQL_ROWS));
printf("MYSQL_ROW : %d\n",sizeof(MYSQL_ROW)); printf("MYSQL_ROW : %d\n",sizeof(MYSQL_ROW));
@ -18,10 +11,6 @@ main ()
printf("MYSQL_RES : %d \n",sizeof(MYSQL_RES)); printf("MYSQL_RES : %d \n",sizeof(MYSQL_RES));
printf("MEM_ROOT : %d \n",sizeof(MEM_ROOT)); printf("MEM_ROOT : %d \n",sizeof(MEM_ROOT));
printf("my_bool : %d \n",sizeof(my_bool)); printf("my_bool : %d \n",sizeof(my_bool));
printf ("NET : %d NET.nettype : %d\n",sizeof(NET),sizeof(nettype)); /* printf("TNET : %d TNET.nettype : %d \n",sizeof(NET),sizeof(net_type)); */
printf("USED_MEM : %d \n",sizeof(USED_MEM)); printf("USED_MEM : %d \n",sizeof(USED_MEM));
printf ("new: %d\n",sizeof(char [MYSQL_ERRMSG_SIZE]));
printf ("longlong: %d\n",sizeof(llong));
i=n.error;
} }

View File

@ -17,7 +17,13 @@ begin
writeln ('USED_MEM : ',sizeof(TUSED_MEM)); writeln ('USED_MEM : ',sizeof(TUSED_MEM));
end. end.
$Log$ $Log$
Revision 1.2 2002-09-07 15:42:53 peter Revision 1.3 2004-09-30 19:34:47 michael
+ Split everything in version 3 and version 4
Revision 1.1 2004/09/28 18:38:23 michael
+ Moved to subdir, switching to version 4.0
Revision 1.2 2002/09/07 15:42:53 peter
* old logs removed and tabs fixed * old logs removed and tabs fixed
Revision 1.1 2002/01/29 17:54:54 peter Revision 1.1 2002/01/29 17:54:54 peter

View File

@ -0,0 +1,101 @@
program testdb3;
uses
mysql3;
Const
DataBase : Pchar = 'testdb';
Query : Pchar = 'Select * from FPdev';
var
count,num : longint;
code : integer;
sock : PMYSQL;
qmysql : TMYSQL;
qbuf : string [160];
rowbuf : TMYSQL_ROW;
dummy : string;
recbuf : PMYSQL_RES;
begin
if paramcount=1 then
begin
Dummy:=Paramstr(1)+#0;
DataBase:=@Dummy[1];
end;
Write ('Connecting to MySQL...');
sock := mysql_connect(PMysql(@qmysql),nil,'michael','geen');
if sock=Nil then
begin
Writeln (stderr,'Couldn''t connect to MySQL.');
Writeln (stderr,mysql_error(@qmysql));
halt(1);
end;
Writeln ('Done.');
Writeln ('Connection data:');
{$ifdef Unix}
writeln ('Mysql_port : ',mysql_port);
writeln ('Mysql_unix_port : ',mysql_unix_port);
{$endif}
writeln ('Host info : ',mysql_get_host_info(sock));
writeln ('Server info : ',mysql_stat(sock));
writeln ('Client info : ',mysql_get_client_info);
Writeln ('Selecting Database ',DataBase,'...');
if mysql_select_db(sock,DataBase) < 0 then
begin
Writeln (stderr,'Couldn''t select database ',Database);
Writeln (stderr,mysql_error(sock));
halt (1);
end;
writeln ('Executing query : ',Query,'...');
if (mysql_query(sock,Query) < 0) then
begin
Writeln (stderr,'Query failed ');
writeln (stderr,mysql_error(sock));
Halt(1);
end;
recbuf := mysql_store_result(sock);
if RecBuf=Nil then
begin
Writeln ('Query returned nil result.');
mysql_close(sock);
halt (1);
end;
Writeln ('Number of records returned : ',mysql_num_rows (recbuf));
Writeln ('Number of fields per record : ',mysql_num_fields(recbuf));
rowbuf := mysql_fetch_row(recbuf);
while (rowbuf <>nil) do
begin
Write ('(Id: ', rowbuf[0]);
Write (', Name: ', rowbuf[1]);
Writeln(', Email : ', rowbuf[2],')');
rowbuf := mysql_fetch_row(recbuf);
end;
Writeln ('Freeing memory occupied by result set...');
mysql_free_result (recbuf);
Writeln ('Closing connection with MySQL.');
mysql_close(sock);
halt(0);
end.
$Log$
Revision 1.1 2004-09-30 19:34:47 michael
+ Split everything in version 3 and version 4
Revision 1.4 2004/09/28 19:08:09 michael
+ Some compatibility issues fixed
Revision 1.3 2002/09/07 15:42:53 peter
* old logs removed and tabs fixed
Revision 1.2 2002/05/31 11:54:33 marco
* Renamefest for 1.0, many 1.1.x spots patched also.
Revision 1.1 2002/01/29 17:54:54 peter
* splitted to base and extra
}

View File

@ -1,6 +1,7 @@
program qtest; program qtest;
uses mysql; uses
mysql4;
Const Const
DataBase : Pchar = 'testdb'; DataBase : Pchar = 'testdb';
@ -83,7 +84,10 @@ begin
halt(0); halt(0);
end. end.
$Log$ $Log$
Revision 1.4 2004-09-28 19:08:09 michael Revision 1.1 2004-09-30 19:34:47 michael
+ Split everything in version 3 and version 4
Revision 1.4 2004/09/28 19:08:09 michael
+ Some compatibility issues fixed + Some compatibility issues fixed
Revision 1.3 2002/09/07 15:42:53 peter Revision 1.3 2002/09/07 15:42:53 peter

View File

@ -30,8 +30,7 @@ Const mysqllib = 'mysqlclient';
{$linklib mysqlclient} {$linklib mysqlclient}
{$endif} {$endif}
{ All is 4-byte aligned on my machine. } {$packrecords C}
{$packrecords 4}
type type
my_bool = byte; my_bool = byte;
@ -379,7 +378,10 @@ end.
{ {
$Log$ $Log$
Revision 1.1 2004-09-28 18:38:23 michael Revision 1.2 2004-09-30 19:34:47 michael
+ Split everything in version 3 and version 4
Revision 1.1 2004/09/28 18:38:23 michael
+ Moved to subdir, switching to version 4.0 + Moved to subdir, switching to version 4.0
Revision 1.6 2004/08/05 10:36:26 olle Revision 1.6 2004/08/05 10:36:26 olle