diff options
| author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-02-19 17:24:37 +0000 |
|---|---|---|
| committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-02-19 17:24:37 +0000 |
| commit | e8c759d1b3c7e46adaf12ba3dfc072251a5dea75 (patch) | |
| tree | 7a79be199b9873e38e6c0c9fc0038b5cb3fed5a6 /packages/mysql/src | |
| parent | 18b1092626327d2065b528c03fdf3d272a8c1228 (diff) | |
| download | fpc-e8c759d1b3c7e46adaf12ba3dfc072251a5dea75.tar.gz | |
* unmerged table based initialization of libraries.
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@16941 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/mysql/src')
| -rw-r--r-- | packages/mysql/src/mysql.inc | 805 | ||||
| -rw-r--r-- | packages/mysql/src/mysql40dyn.pp | 2 | ||||
| -rw-r--r-- | packages/mysql/src/mysql41dyn.pp | 2 | ||||
| -rw-r--r-- | packages/mysql/src/mysql4_comtypes.inc | 2 | ||||
| -rw-r--r-- | packages/mysql/src/mysql50dyn.pp | 2 |
5 files changed, 405 insertions, 408 deletions
diff --git a/packages/mysql/src/mysql.inc b/packages/mysql/src/mysql.inc index d7eba89ff8..65c273cb7a 100644 --- a/packages/mysql/src/mysql.inc +++ b/packages/mysql/src/mysql.inc @@ -15,20 +15,19 @@ mysqlclient mysql_com.h / mysql.h - - NOTE: MySQL 5.1 support is not finished. I just added some parts so that my code is working. I - guess there are many things missing. This mysql.inc file is also getting a littlebit messy... - -Ivo Steinmann (isteinmann@bluewin.ch) } {$MODE objfpc} {$MACRO on} interface - +{$ifdef Load_Dynamically}{$define LinkDynamically}{$endif} uses - dynlibs, ctypes; +{$IFDEF LinkDynamically} + sysutils, +{$ENDIF} + dynlibs,ctypes; -{$IFDEF UNIX} +{$IFDEF Unix} {$DEFINE extdecl:=cdecl} const mysqllib = 'libmysqlclient.'+sharedsuffix; @@ -42,11 +41,11 @@ uses mysqlvlib = mysqllib+'.12'; {$ENDIF} {$ENDIF} -{$IFDEF WINDOWS} +{$IFDEF Windows} {$DEFINE extdecl:=stdcall} const mysqllib = 'libmysql.dll'; - mysqlvlib = mysqllib; + mysqlvlib = 'libmysql.dll'; {$ENDIF} {$IFDEF mysql51} @@ -60,17 +59,17 @@ uses {$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 } @@ -78,8 +77,8 @@ uses type my_bool = cchar; Pmy_bool = ^my_bool; - pppchar = ^ppchar; - ppbyte = ^pbyte; +// pppchar = ^ppchar; +// ppbyte = ^pbyte; PVIO = Pointer; @@ -88,7 +87,7 @@ uses Pmy_socket = ^my_socket; my_socket = cint; - + { ------------ Start of declaration in "mysql_com.h" --------------------- } { @@ -418,18 +417,18 @@ uses function net_new_transaction(net : st_net) : st_net; -{$IFNDEF LOAD_DYNAMICALLY} - function my_net_init(net:PNET; vio:PVio):my_bool;cdecl;external mysqlvlib name 'my_net_init'; - procedure my_net_local_init(net:PNET);cdecl;external mysqlvlib name 'my_net_local_init'; - procedure net_end(net:PNET);cdecl;external mysqlvlib name 'net_end'; - procedure net_clear(net:PNET);cdecl;external mysqlvlib name 'net_clear'; - function net_realloc(net:PNET; length:culong):my_bool;cdecl;external mysqlvlib name 'net_realloc'; - function net_flush(net:PNET):my_bool;cdecl;external mysqlvlib name 'net_flush'; - function my_net_write(net:PNET; packet:Pchar; len:culong):my_bool;cdecl;external mysqlvlib name 'my_net_write'; +{$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:culong):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:culong):my_bool;cdecl;external mysqllib name 'my_net_write'; function net_write_command(net:PNET; command:cuchar; header:Pchar; head_len:culong; packet:Pchar; - len:culong):my_bool;cdecl;external mysqlvlib name 'net_write_command'; - function net_real_write(net:PNET; packet:Pchar; len:culong):cint;cdecl;external mysqlvlib name 'net_real_write'; - function my_net_read(net:PNET):culong;cdecl;external mysqlvlib name 'my_net_read'; + len:culong):my_bool;cdecl;external mysqllib name 'net_write_command'; + function net_real_write(net:PNET; packet:Pchar; len:culong):cint;cdecl;external mysqllib name 'net_real_write'; + function my_net_read(net:PNET):culong;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 } @@ -439,8 +438,8 @@ uses sockaddr = record // undefined structure end; -{$IFNDEF LOAD_DYNAMICALLY} - function my_connect(s:my_socket; name:Psockaddr; namelen:cuint; timeout:cuint):cint;cdecl;external mysqlvlib name 'my_connect'; +{$IFNDEF LinkDynamically} + function my_connect(s:my_socket; name:Psockaddr; namelen:cuint; timeout:cuint):cint;cdecl;external mysqllib name 'my_connect'; {$ENDIF} type @@ -499,38 +498,38 @@ uses { These functions are used for authentication by client and server and implemented in sql/password.c } -{$IFNDEF LOAD_DYNAMICALLY} - procedure randominit(_para1:Prand_struct; seed1:culong; seed2:culong);cdecl;external mysqlvlib name 'randominit'; - function my_rnd(_para1:Prand_struct):cdouble;cdecl;external mysqlvlib name 'my_rnd'; - procedure create_random_string(fto:Pchar; length:cuint; rand_st:Prand_struct);cdecl;external mysqlvlib name 'create_random_string'; - procedure hash_password(fto:culong; password:Pchar; password_len:cuint);cdecl;external mysqlvlib name 'hash_password'; - procedure make_scrambled_password_323(fto:Pchar; password:Pchar);cdecl;external mysqlvlib name 'make_scrambled_password_323'; - procedure scramble_323(fto:Pchar; message:Pchar; password:Pchar);cdecl;external mysqlvlib name 'scramble_323'; - function check_scramble_323(_para1:Pchar; message:Pchar; salt:culong):my_bool;cdecl;external mysqlvlib name 'check_scramble_323'; - procedure get_salt_from_password_323(res:pculong; password:Pchar);cdecl;external mysqlvlib name 'get_salt_from_password_323'; - procedure make_password_from_salt_323(fto:Pchar; salt:pculong);cdecl;external mysqlvlib name 'make_password_from_salt_323'; +{$IFNDEF LinkDynamically} + procedure randominit(_para1:Prand_struct; seed1:culong; seed2:culong);cdecl;external mysqllib name 'randominit'; + function my_rnd(_para1:Prand_struct):cdouble;cdecl;external mysqllib name 'my_rnd'; + procedure create_random_string(fto:Pchar; length:cuint; rand_st:Prand_struct);cdecl;external mysqllib name 'create_random_string'; + procedure hash_password(fto:culong; password:Pchar; password_len:cuint);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:culong):my_bool;cdecl;external mysqllib name 'check_scramble_323'; + procedure get_salt_from_password_323(res:pculong; password:Pchar);cdecl;external mysqllib name 'get_salt_from_password_323'; + procedure make_password_from_salt_323(fto:Pchar; salt:pculong);cdecl;external mysqllib name 'make_password_from_salt_323'; {$IFDEF mysql50} - function octet2hex(fto:Pchar; str:Pchar; len:cuint):pchar;cdecl;external mysqlvlib name 'octet2hex'; + function octet2hex(fto:Pchar; str:Pchar; len:cuint):pchar;cdecl;external mysqllib name 'octet2hex'; {$ENDIF} - procedure make_scrambled_password(fto:Pchar; password:Pchar);cdecl;external mysqlvlib name 'make_scrambled_password'; - procedure scramble(fto:Pchar; message:Pchar; password:Pchar);cdecl;external mysqlvlib name 'scramble'; - function check_scramble(reply:Pchar; message:Pchar; hash_stage2:Pbyte):my_bool;cdecl;external mysqlvlib name 'check_scramble'; - procedure get_salt_from_password(res:Pbyte; password:Pchar);cdecl;external mysqlvlib name 'get_salt_from_password'; - procedure make_password_from_salt(fto:Pchar; hash_stage2:Pbyte);cdecl;external mysqlvlib name 'make_password_from_salt'; + 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 mysqlvlib name 'get_tty_password'; - function mysql_errno_to_sqlstate(mysql_errno:cuint):Pchar;cdecl;external mysqlvlib name 'mysql_errno_to_sqlstate'; + function get_tty_password(opt_message:Pchar):Pchar;cdecl;external mysqllib name 'get_tty_password'; + function mysql_errno_to_sqlstate(mysql_errno:cuint):Pchar;cdecl;external mysqllib name 'mysql_errno_to_sqlstate'; { Some other useful functions } {$IFDEF mysql50} - function modify_defaults_file(file_location:Pchar; option:Pchar; option_value:Pchar; section_name:Pchar; remove_option:cint):cint;cdecl;external mysqlvlib name 'load_defaults'; + function modify_defaults_file(file_location:Pchar; option:Pchar; option_value:Pchar; section_name:Pchar; remove_option:cint):cint;cdecl;external mysqllib name 'load_defaults'; {$ENDIF} - function load_defaults(conf_file:Pchar; groups:PPchar; argc:pcint; argv:PPPchar):cint;cdecl;external mysqlvlib name 'load_defaults'; - function my_init:my_bool;cdecl;external mysqlvlib name 'my_init'; - function my_thread_init:my_bool;cdecl;external mysqlvlib name 'my_thread_init'; - procedure my_thread_end;cdecl;external mysqlvlib name 'my_thread_end'; + function load_defaults(conf_file:Pchar; groups:PPchar; argc:pcint; argv:PPPchar):cint;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; @@ -539,10 +538,10 @@ uses {$ENDIF} {$ifdef _global_h} -{$IFNDEF LOAD_DYNAMICALLY} - function net_field_length(packet:PPuchar):culong;extdecl;external mysqlvlib name 'net_field_length_ll'; - function net_field_length_ll(packet:PPuchar):my_ulonglong;cdecl;external mysqlvlib name 'net_field_length_ll'; - function net_store_length(pkg:Pchar; length:ulonglong):Pchar;cdecl;external mysqlvlib name 'net_store_length'; +{$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} @@ -585,7 +584,7 @@ uses { $include "typelib.h"} { $include "my_list.h" /* for LISTs used in 'MYSQL' and 'MYSQL_STMT' */} -{$IFNDEF LOAD_DYNAMICALLY} +{$IFNDEF LinkDynamically} var mysql_port : cuint;cvar;external; mysql_unix_port : Pchar;cvar;external; @@ -594,7 +593,7 @@ uses 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} @@ -728,7 +727,7 @@ uses {$ENDIF} { $endif} end; - + MYSQL_DATA = st_mysql_data; PMYSQL_DATA = ^MYSQL_DATA; mysql_option = (MYSQL_OPT_CONNECT_TIMEOUT,MYSQL_OPT_COMPRESS, @@ -1045,7 +1044,7 @@ uses { Note: this info is from the mysql-5.0 version: - + This structure is used to define bind information, and internally by the client library. Public members with their descriptions are listed below @@ -1232,12 +1231,12 @@ uses //#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet) //#define net_buffer_length (*mysql_get_parameters()->p_net_buffer_length) -{$IFNDEF LOAD_DYNAMICALLY} +{$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:cint; argv:PPchar; groups:PPchar):cint;extdecl;external mysqlvlib name 'mysql_server_init'; - procedure mysql_server_end;extdecl;external mysqlvlib name 'mysql_server_end'; + function mysql_server_init(argc:cint; argv:PPchar; groups:PPchar):cint;extdecl;external mysqllib name 'mysql_server_init'; + procedure mysql_server_end;extdecl;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 @@ -1247,49 +1246,49 @@ uses 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:cint; argv:PPchar; groups:PPchar):cint;extdecl;external mysqlvlib name 'mysql_server_init'; - procedure mysql_library_end;extdecl;external mysqlvlib name 'mysql_server_end'; + function mysql_library_init(argc:cint; argv:PPchar; groups:PPchar):cint;extdecl;external mysqllib name 'mysql_server_init'; + procedure mysql_library_end;extdecl;external mysqllib name 'mysql_server_end'; - function mysql_get_parameters:PMYSQL_PARAMETERS;extdecl;external mysqlvlib name 'mysql_get_parameters'; + 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 mysqlvlib name 'mysql_thread_init'; - procedure mysql_thread_end;extdecl;external mysqlvlib name 'mysql_thread_end'; + 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 mysqlvlib name 'mysql_num_rows'; - function mysql_num_fields(res:PMYSQL_RES):cuint;extdecl;external mysqlvlib name 'mysql_num_fields'; - function mysql_eof(res:PMYSQL_RES):my_bool;extdecl;external mysqlvlib name 'mysql_eof'; - function mysql_fetch_field_direct(res:PMYSQL_RES; fieldnr:cuint):PMYSQL_FIELD;extdecl;external mysqlvlib name 'mysql_fetch_field_direct'; - function mysql_fetch_fields(res:PMYSQL_RES):PMYSQL_FIELD;extdecl;external mysqlvlib name 'mysql_fetch_fields'; - function mysql_row_tell(res:PMYSQL_RES):MYSQL_ROW_OFFSET;extdecl;external mysqlvlib name 'mysql_row_tell'; - function mysql_field_tell(res:PMYSQL_RES):MYSQL_FIELD_OFFSET;extdecl;external mysqlvlib name 'mysql_field_tell'; - function mysql_field_count(mysql:PMYSQL):cuint;extdecl;external mysqlvlib name 'mysql_field_count'; - function mysql_affected_rows(mysql:PMYSQL):my_ulonglong;extdecl;external mysqlvlib name 'mysql_affected_rows'; - function mysql_insert_id(mysql:PMYSQL):my_ulonglong;extdecl;external mysqlvlib name 'mysql_insert_id'; - function mysql_errno(mysql:PMYSQL):cuint;extdecl;external mysqlvlib name 'mysql_errno'; - function mysql_error(mysql:PMYSQL):Pchar;extdecl;external mysqlvlib name 'mysql_error'; - function mysql_sqlstate(mysql:PMYSQL):Pchar;extdecl;external mysqlvlib name 'mysql_sqlstate'; - function mysql_warning_count(mysql:PMYSQL):cuint;extdecl;external mysqlvlib name 'mysql_warning_count'; - function mysql_info(mysql:PMYSQL):Pchar;extdecl;external mysqlvlib name 'mysql_info'; - function mysql_thread_id(mysql:PMYSQL):culong;extdecl;external mysqlvlib name 'mysql_thread_id'; - function mysql_character_set_name(mysql:PMYSQL):Pchar;extdecl;external mysqlvlib name 'mysql_character_set_name'; - function mysql_set_character_set(mysql:PMYSQL; csname:Pchar):longint;extdecl;external mysqlvlib name 'mysql_set_character_set'; - function mysql_init(mysql:PMYSQL):PMYSQL;extdecl;external mysqlvlib name 'mysql_init'; + function mysql_num_rows(res:PMYSQL_RES):my_ulonglong;extdecl;external mysqllib name 'mysql_num_rows'; + function mysql_num_fields(res:PMYSQL_RES):cuint;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:cuint):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):cuint;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):cuint;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):cuint;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):culong;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 mysqlvlib name 'mysql_ssl_set'; - function mysql_change_user(mysql:PMYSQL; user:Pchar; passwd:Pchar; db:Pchar):my_bool;extdecl;external mysqlvlib name 'mysql_change_user'; + 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:cuint; unix_socket:Pchar; clientflag:culong):PMYSQL;extdecl;external mysqlvlib name 'mysql_real_connect'; - function mysql_select_db(mysql:PMYSQL; db:Pchar):cint;extdecl;external mysqlvlib name 'mysql_select_db'; - function mysql_query(mysql:PMYSQL; q:Pchar):cint;extdecl;external mysqlvlib name 'mysql_query'; - function mysql_send_query(mysql:PMYSQL; q:Pchar; length:culong):cint;extdecl;external mysqlvlib name 'mysql_send_query'; - function mysql_real_query(mysql:PMYSQL; q:Pchar; length:culong):cint;extdecl;external mysqlvlib name 'mysql_real_query'; - function mysql_store_result(mysql:PMYSQL):PMYSQL_RES;extdecl;external mysqlvlib name 'mysql_store_result'; - function mysql_use_result(mysql:PMYSQL):PMYSQL_RES;extdecl;external mysqlvlib name 'mysql_use_result'; + port:cuint; unix_socket:Pchar; clientflag:culong):PMYSQL;extdecl;external mysqllib name 'mysql_real_connect'; + function mysql_select_db(mysql:PMYSQL; db:Pchar):cint;extdecl;external mysqllib name 'mysql_select_db'; + function mysql_query(mysql:PMYSQL; q:Pchar):cint;extdecl;external mysqllib name 'mysql_query'; + function mysql_send_query(mysql:PMYSQL; q:Pchar; length:culong):cint;extdecl;external mysqllib name 'mysql_send_query'; + function mysql_real_query(mysql:PMYSQL; q:Pchar; length:culong):cint;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} @@ -1330,16 +1329,16 @@ uses mysql_use_result: function (mysql:PMYSQL):PMYSQL_RES;extdecl; {$ENDIF} -{$IFNDEF LOAD_DYNAMICALLY} +{$IFNDEF LinkDynamically} { perform query on master } - function mysql_master_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqlvlib name 'mysql_master_query'; - function mysql_master_send_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqlvlib name 'mysql_master_send_query'; + function mysql_master_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqllib name 'mysql_master_query'; + function mysql_master_send_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqllib name 'mysql_master_send_query'; { perform query on slave } - function mysql_slave_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqlvlib name 'mysql_slave_query'; - function mysql_slave_send_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqlvlib name 'mysql_slave_send_query'; + function mysql_slave_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqllib name 'mysql_slave_query'; + function mysql_slave_send_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqllib name 'mysql_slave_send_query'; {$IFDEF mysql50} - procedure mysql_get_character_set_info(mysql : PMYSQL; charset : PMY_CHARSET_INFO);extdecl;external mysqlvlib name 'mysql_get_character_set_info'; + procedure mysql_get_character_set_info(mysql : PMYSQL; charset : PMY_CHARSET_INFO);extdecl;external mysqllib name 'mysql_get_character_set_info'; {$ENDIF} {$ENDIF} @@ -1348,110 +1347,110 @@ uses const LOCAL_INFILE_ERROR_LEN = 512; -{$IFNDEF LOAD_DYNAMICALLY} +{$IFNDEF LinkDynamically} { procedure mysql_set_local_infile_handler(mysql:PMYSQL; local_infile_init:function (_para1:Ppointer; _para2:Pchar; _para3:pointer):longint; local_infile_read:function (_para1:pointer; _para2:Pchar; _para3:dword):longint; local_infile_end:procedure (_pa - _para6:pointer);cdecl;external mysqlvlib name 'mysql_set_local_infile_handler';} - procedure mysql_set_local_infile_default(mysql:PMYSQL);cdecl;external mysqlvlib name 'mysql_set_local_infile_default'; + _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 mysqlvlib name 'mysql_enable_rpl_parse'; - procedure mysql_disable_rpl_parse(mysql:PMYSQL);extdecl;external mysqlvlib name 'mysql_disable_rpl_parse'; + 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):cint;extdecl;external mysqlvlib name 'mysql_rpl_parse_enabled'; + function mysql_rpl_parse_enabled(mysql:PMYSQL):cint;extdecl;external mysqllib name 'mysql_rpl_parse_enabled'; { enable/disable reads from master } - procedure mysql_enable_reads_from_master(mysql:PMYSQL);extdecl;external mysqlvlib name 'mysql_enable_reads_from_master'; - procedure mysql_disable_reads_from_master(mysql:PMYSQL);extdecl;external mysqlvlib name 'mysql_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 mysqlvlib name 'mysql_reads_from_master_enabled'; + 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 : cint):mysql_rpl_type;extdecl;external mysqlvlib name 'mysql_rpl_query_type'; + function mysql_rpl_query_type(q : pchar;len : cint):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 mysqlvlib name 'mysql_rpl_probe'; + 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:cuint; user:Pchar; passwd:Pchar):cint;extdecl;external mysqlvlib name 'mysql_set_master'; - function mysql_add_slave(mysql:PMYSQL; host:Pchar; port:cuint; user:Pchar; passwd:Pchar):cint;extdecl;external mysqlvlib name 'mysql_add_slave'; - function mysql_shutdown(mysql:PMYSQL; shutdown_level:mysql_enum_shutdown_level):cint;extdecl;external mysqlvlib name 'mysql_shutdown'; - function mysql_dump_debug_info(mysql:PMYSQL):cint;extdecl;external mysqlvlib name 'mysql_dump_debug_info'; - function mysql_refresh(mysql:PMYSQL; refresh_options:cuint):cint;extdecl;external mysqlvlib name 'mysql_refresh'; - function mysql_kill(mysql:PMYSQL; pid:culong):cint;extdecl;external mysqlvlib name 'mysql_kill'; - function mysql_set_server_option(mysql:PMYSQL; option:enum_mysql_set_option):cint;extdecl;external mysqlvlib name 'mysql_set_server_option'; - function mysql_ping(mysql:PMYSQL):cint;extdecl;external mysqlvlib name 'mysql_ping'; - function mysql_stat(mysql:PMYSQL):Pchar;extdecl;external mysqlvlib name 'mysql_stat'; - function mysql_get_server_info(mysql:PMYSQL):Pchar;extdecl;external mysqlvlib name 'mysql_get_server_info'; - function mysql_get_client_info:Pchar;extdecl;external mysqlvlib name 'mysql_get_client_info'; - function mysql_get_client_version:culong;extdecl;external mysqlvlib name 'mysql_get_client_version'; - function mysql_get_host_info(mysql:PMYSQL):Pchar;extdecl;external mysqlvlib name 'mysql_get_host_info'; - function mysql_get_server_version(mysql:PMYSQL):culong;extdecl;external mysqlvlib name 'mysql_get_server_version'; - function mysql_get_proto_info(mysql:PMYSQL):cuint;extdecl;external mysqlvlib name 'mysql_get_proto_info'; - function mysql_list_dbs(mysql:PMYSQL; wild:Pchar):PMYSQL_RES;extdecl;external mysqlvlib name 'mysql_list_dbs'; - - function mysql_list_tables(mysql:PMYSQL; wild:Pchar):PMYSQL_RES;extdecl;external mysqlvlib name 'mysql_list_tables'; - function mysql_list_processes(mysql:PMYSQL):PMYSQL_RES;extdecl;external mysqlvlib name 'mysql_list_processes'; - function mysql_options(mysql:PMYSQL; option:mysql_option; arg:Pchar):cint;extdecl;external mysqlvlib name 'mysql_options'; - procedure mysql_free_result(result:PMYSQL_RES);extdecl;external mysqlvlib name 'mysql_free_result'; - procedure mysql_data_seek(result:PMYSQL_RES; offset:my_ulonglong);extdecl;external mysqlvlib name 'mysql_data_seek'; - function mysql_row_seek(result:PMYSQL_RES; offset:MYSQL_ROW_OFFSET):MYSQL_ROW_OFFSET;extdecl;external mysqlvlib name 'mysql_row_seek'; - function mysql_field_seek(result:PMYSQL_RES; offset:MYSQL_FIELD_OFFSET):MYSQL_FIELD_OFFSET;extdecl;external mysqlvlib name 'mysql_field_seek'; - function mysql_fetch_row(result:PMYSQL_RES):MYSQL_ROW;extdecl;external mysqlvlib name 'mysql_fetch_row'; - function mysql_fetch_lengths(result:PMYSQL_RES):pculong;extdecl;external mysqlvlib name 'mysql_fetch_lengths'; - function mysql_fetch_field(result:PMYSQL_RES):PMYSQL_FIELD;extdecl;external mysqlvlib name 'mysql_fetch_field'; - function mysql_list_fields(mysql:PMYSQL; table:Pchar; wild:Pchar):PMYSQL_RES;extdecl;external mysqlvlib name 'mysql_list_fields'; - function mysql_escape_string(fto:Pchar; from:Pchar; from_length:culong):culong;extdecl;external mysqlvlib name 'mysql_escape_string'; - function mysql_hex_string(fto:Pchar; from:Pchar; from_length:culong):culong;extdecl;external mysqlvlib name 'mysql_hex_string'; - function mysql_real_escape_string(mysql:PMYSQL; fto:Pchar; from:Pchar; length:culong):culong;extdecl;external mysqlvlib name 'mysql_real_escape_string'; - procedure mysql_debug(debug:Pchar);extdecl;external mysqlvlib name 'mysql_debug'; + function mysql_set_master(mysql:PMYSQL; host:Pchar; port:cuint; user:Pchar; passwd:Pchar):cint;extdecl;external mysqllib name 'mysql_set_master'; + function mysql_add_slave(mysql:PMYSQL; host:Pchar; port:cuint; user:Pchar; passwd:Pchar):cint;extdecl;external mysqllib name 'mysql_add_slave'; + function mysql_shutdown(mysql:PMYSQL; shutdown_level:mysql_enum_shutdown_level):cint;extdecl;external mysqllib name 'mysql_shutdown'; + function mysql_dump_debug_info(mysql:PMYSQL):cint;extdecl;external mysqllib name 'mysql_dump_debug_info'; + function mysql_refresh(mysql:PMYSQL; refresh_options:cuint):cint;extdecl;external mysqllib name 'mysql_refresh'; + function mysql_kill(mysql:PMYSQL; pid:culong):cint;extdecl;external mysqllib name 'mysql_kill'; + function mysql_set_server_option(mysql:PMYSQL; option:enum_mysql_set_option):cint;extdecl;external mysqllib name 'mysql_set_server_option'; + function mysql_ping(mysql:PMYSQL):cint;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:culong;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):culong;extdecl;external mysqllib name 'mysql_get_server_version'; + function mysql_get_proto_info(mysql:PMYSQL):cuint;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):cint;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):pculong;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:culong):culong;extdecl;external mysqllib name 'mysql_escape_string'; + function mysql_hex_string(fto:Pchar; from:Pchar; from_length:culong):culong;extdecl;external mysqllib name 'mysql_hex_string'; + function mysql_real_escape_string(mysql:PMYSQL; fto:Pchar; from:Pchar; length:culong):culong;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 mysqlvlib name 'mysql_odbc_escape_string';} - procedure myodbc_remove_escape(mysql:PMYSQL; name:Pchar);extdecl;external mysqlvlib name 'myodbc_remove_escape'; - function mysql_thread_safe:cuint;extdecl;external mysqlvlib name 'mysql_thread_safe'; - function mysql_embedded:my_bool;extdecl;external mysqlvlib name 'mysql_embedded'; - function mysql_manager_init(con:PMYSQL_MANAGER):PMYSQL_MANAGER;extdecl;external mysqlvlib name 'mysql_manager_init'; - function mysql_manager_connect(con:PMYSQL_MANAGER; host:Pchar; user:Pchar; passwd:Pchar; port:cuint):PMYSQL_MANAGER;extdecl;external mysqlvlib name 'mysql_manager_connect'; - procedure mysql_manager_close(con:PMYSQL_MANAGER);extdecl;external mysqlvlib name 'mysql_manager_close'; - function mysql_manager_command(con:PMYSQL_MANAGER; cmd:Pchar; cmd_len:cint):cint;extdecl;external mysqlvlib name 'mysql_manager_command'; - function mysql_manager_fetch_line(con:PMYSQL_MANAGER; res_buf:Pchar; res_buf_size:cint):cint;extdecl;external mysqlvlib name 'mysql_manager_fetch_line'; - function mysql_read_query_result(mysql:PMYSQL):my_bool;extdecl;external mysqlvlib name 'mysql_read_query_result'; - - function mysql_stmt_init(mysql:PMYSQL):PMYSQL_STMT;extdecl;external mysqlvlib name 'mysql_stmt_init'; - function mysql_stmt_prepare(stmt:PMYSQL_STMT; query:Pchar; length:culong):cint;extdecl;external mysqlvlib name 'mysql_stmt_prepare'; - function mysql_stmt_execute(stmt:PMYSQL_STMT):cint;extdecl;external mysqlvlib name 'mysql_stmt_execute'; - function mysql_stmt_fetch(stmt:PMYSQL_STMT):cint;extdecl;external mysqlvlib name 'mysql_stmt_fetch'; - function mysql_stmt_fetch_column(stmt:PMYSQL_STMT; bind:PMYSQL_BIND; column:cuint; offset:culong):cint;extdecl;external mysqlvlib name 'mysql_stmt_fetch_column'; - function mysql_stmt_store_result(stmt:PMYSQL_STMT):cint;extdecl;external mysqlvlib name 'mysql_stmt_store_result'; - function mysql_stmt_param_count(stmt:PMYSQL_STMT):culong;extdecl;external mysqlvlib 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 mysqlvlib 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 mysqlvlib name 'mysql_stmt_attr_get'; - function mysql_stmt_bind_param(stmt:PMYSQL_STMT; bnd:PMYSQL_BIND):my_bool;extdecl;external mysqlvlib name 'mysql_stmt_bind_param'; - function mysql_stmt_bind_result(stmt:PMYSQL_STMT; bnd:PMYSQL_BIND):my_bool;extdecl;external mysqlvlib name 'mysql_stmt_bind_result'; - function mysql_stmt_close(stmt:PMYSQL_STMT):my_bool;extdecl;external mysqlvlib name 'mysql_stmt_close'; - function mysql_stmt_reset(stmt:PMYSQL_STMT):my_bool;extdecl;external mysqlvlib name 'mysql_stmt_reset'; - function mysql_stmt_free_result(stmt:PMYSQL_STMT):my_bool;extdecl;external mysqlvlib name 'mysql_stmt_free_result'; - function mysql_stmt_send_long_data(stmt:PMYSQL_STMT; param_number:cuint; data:Pchar; length:culong):my_bool;extdecl;external mysqlvlib name 'mysql_stmt_send_long_data'; - function mysql_stmt_result_metadata(stmt:PMYSQL_STMT):PMYSQL_RES;extdecl;external mysqlvlib name 'mysql_stmt_result_metadata'; - function mysql_stmt_param_metadata(stmt:PMYSQL_STMT):PMYSQL_RES;extdecl;external mysqlvlib name 'mysql_stmt_param_metadata'; - function mysql_stmt_errno(stmt:PMYSQL_STMT):cuint;extdecl;external mysqlvlib name 'mysql_stmt_errno'; - function mysql_stmt_error(stmt:PMYSQL_STMT):Pchar;extdecl;external mysqlvlib name 'mysql_stmt_error'; - function mysql_stmt_sqlstate(stmt:PMYSQL_STMT):Pchar;extdecl;external mysqlvlib name 'mysql_stmt_sqlstate'; - function mysql_stmt_row_seek(stmt:PMYSQL_STMT; offset:MYSQL_ROW_OFFSET):MYSQL_ROW_OFFSET;extdecl;external mysqlvlib name 'mysql_stmt_row_seek'; - function mysql_stmt_row_tell(stmt:PMYSQL_STMT):MYSQL_ROW_OFFSET;extdecl;external mysqlvlib name 'mysql_stmt_row_tell'; - procedure mysql_stmt_data_seek(stmt:PMYSQL_STMT; offset:my_ulonglong);extdecl;external mysqlvlib name 'mysql_stmt_data_seek'; - function mysql_stmt_num_rows(stmt:PMYSQL_STMT):my_ulonglong;extdecl;external mysqlvlib name 'mysql_stmt_num_rows'; - function mysql_stmt_affected_rows(stmt:PMYSQL_STMT):my_ulonglong;extdecl;external mysqlvlib name 'mysql_stmt_affected_rows'; - function mysql_stmt_insert_id(stmt:PMYSQL_STMT):my_ulonglong;extdecl;external mysqlvlib name 'mysql_stmt_insert_id'; - function mysql_stmt_field_count(stmt:PMYSQL_STMT):cuint;extdecl;external mysqlvlib name 'mysql_stmt_field_count'; - - function mysql_commit(mysql:PMYSQL):my_bool;extdecl;external mysqlvlib name 'mysql_commit'; - function mysql_rollback(mysql:PMYSQL):my_bool;extdecl;external mysqlvlib name 'mysql_rollback'; - function mysql_autocommit(mysql:PMYSQL; auto_mode:my_bool):my_bool;extdecl;external mysqlvlib name 'mysql_autocommit'; - function mysql_more_results(mysql:PMYSQL):my_bool;extdecl;external mysqlvlib name 'mysql_more_results'; - function mysql_next_result(mysql:PMYSQL):cint;extdecl;external mysqlvlib name 'mysql_next_result'; - procedure mysql_close(sock:PMYSQL);extdecl;external mysqlvlib name 'mysql_close'; + 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:cuint;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:cuint):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:cint):cint;extdecl;external mysqllib name 'mysql_manager_command'; + function mysql_manager_fetch_line(con:PMYSQL_MANAGER; res_buf:Pchar; res_buf_size:cint):cint;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:culong):cint;extdecl;external mysqllib name 'mysql_stmt_prepare'; + function mysql_stmt_execute(stmt:PMYSQL_STMT):cint;extdecl;external mysqllib name 'mysql_stmt_execute'; + function mysql_stmt_fetch(stmt:PMYSQL_STMT):cint;extdecl;external mysqllib name 'mysql_stmt_fetch'; + function mysql_stmt_fetch_column(stmt:PMYSQL_STMT; bind:PMYSQL_BIND; column:cuint; offset:culong):cint;extdecl;external mysqllib name 'mysql_stmt_fetch_column'; + function mysql_stmt_store_result(stmt:PMYSQL_STMT):cint;extdecl;external mysqllib name 'mysql_stmt_store_result'; + function mysql_stmt_param_count(stmt:PMYSQL_STMT):culong;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:cuint; data:Pchar; length:culong):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):cuint;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):cuint;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):cint;extdecl;external mysqllib name 'mysql_next_result'; + procedure mysql_close(sock:PMYSQL);extdecl;external mysqllib name 'mysql_close'; {$ELSE} var @@ -1532,7 +1531,7 @@ uses function mysql_reload(mysql : PMySQL) : cint; -{$IFNDEF LOAD_DYNAMICALLY} +{$IFNDEF LinkDynamically} {$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):cint;extdecl;external External_library name 'mysql_create_db'; @@ -1541,262 +1540,260 @@ uses {$endif} {$endif} -{$define HAVE_MYSQL_REAL_CONNECT} +{$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 : cint) : cint; -{$IFNDEF LOAD_DYNAMICALLY} - function net_safe_read(mysql:PMYSQL):cuint;cdecl;external mysqlvlib name 'net_safe_read'; +{$IFNDEF LinkDynamically} + function net_safe_read(mysql:PMYSQL):cuint;cdecl;external mysqllib name 'net_safe_read'; {$ENDIF} {$ifdef NETWARE} (** unsupported pragma#pragma pack(pop) /* restore alignment */*) {$endif} -{$IFDEF LOAD_DYNAMICALLY} -function InitializeMysql(const LibraryName: String = ''; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer; -function TryInitializeMysql(const LibraryName: string = ''; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer; -function ReleaseMysql: Integer; +{$IFDEF LinkDynamically} +Function InitialiseMysql(Const LibraryName : String; argc:cint = -1; argv:PPchar = nil; groups:PPchar = nil) : Integer; +Function InitialiseMysql(argc:cint = -1; argv:PPchar = nil; groups:PPchar = nil) : Integer; +Procedure ReleaseMysql; -var - MysqlLibrary: TLibHandler; - -function InitialiseMysql(argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer; deprecated; -function InitialiseMysql(const LibraryName: String; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer; deprecated; -function TryInitialiseMysql(const LibraryName: string; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer; deprecated; +var MysqlLibraryHandle : TLibHandle; {$ENDIF} implementation +{$IFDEF LinkDynamically} -function net_new_transaction(net : st_net) : st_net; -begin - net.pkt_nr := 0; - result := net; -end; +ResourceString + SErrAlreadyLoaded = 'MySQL interface already initialized from library %s.'; + SErrLoadFailed = 'Can not load MySQL library "%s". Please check your installation.'; + SErrDefaultsFailed = 'Can not load default MySQL library ("%s" or "%s"). Check your installation.'; -function IS_PRI_KEY(n : longint) : boolean; -begin - IS_PRI_KEY:=(n and PRI_KEY_FLAG)<>0; -end; +var + RefCount : integer; + LoadedLibrary : String; -function IS_NOT_NULL(n : longint) : boolean; -begin - IS_NOT_NULL:=(n and NOT_NULL_FLAG)<>0; -end; +Function TryInitialiseMysql(Const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar) : Integer; -function IS_BLOB(n : longint) : boolean; begin - IS_BLOB:=(n and BLOB_FLAG)<>0; -end; + Result := 0; + if (RefCount=0) then + begin + MysqlLibraryHandle := loadlibrary(LibraryName); + if (MysqlLibraryHandle=nilhandle) then + Exit; + Inc(RefCount); + LoadedLibrary:=LibraryName; +// Only the procedure that are given in the c-library documentation are loaded, to +// avoid problems with 'incomplete' libraries + pointer(my_init) := GetProcedureAddress(MysqlLibraryHandle,'my_init'); + pointer(my_thread_init) := GetProcedureAddress(MysqlLibraryHandle,'my_thread_init'); + pointer(my_thread_end) := GetProcedureAddress(MysqlLibraryHandle,'my_thread_end'); + + pointer(mysql_affected_rows) := GetProcedureAddress(MysqlLibraryHandle,'mysql_affected_rows'); + pointer(mysql_autocommit) := GetProcedureAddress(MysqlLibraryHandle,'mysql_autocommit'); + pointer(mysql_change_user) := GetProcedureAddress(MysqlLibraryHandle,'mysql_change_user'); +// pointer(mysql_charset_name) := GetProcedureAddress(MysqlLibraryHandle,'mysql_charset_name'); + pointer(mysql_close) := GetProcedureAddress(MysqlLibraryHandle,'mysql_close'); + pointer(mysql_commit) := GetProcedureAddress(MysqlLibraryHandle,'mysql_commit'); +// pointer(mysql_connect) := GetProcedureAddress(MysqlLibraryHandle,'mysql_connect'); +// pointer(mysql_create_db) := GetProcedureAddress(MysqlLibraryHandle,'mysql_create_db'); + pointer(mysql_data_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_data_seek'); +// pointer(mysql_drop_db) := GetProcedureAddress(MysqlLibraryHandle,'mysql_drop_db'); + pointer(mysql_debug) := GetProcedureAddress(MysqlLibraryHandle,'mysql_debug'); + pointer(mysql_dump_debug_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_dump_debug_info'); + pointer(mysql_eof) := GetProcedureAddress(MysqlLibraryHandle,'mysql_eof'); + pointer(mysql_errno) := GetProcedureAddress(MysqlLibraryHandle,'mysql_errno'); + pointer(mysql_error) := GetProcedureAddress(MysqlLibraryHandle,'mysql_error'); + pointer(mysql_escape_string) := GetProcedureAddress(MysqlLibraryHandle,'mysql_escape_string'); + pointer(mysql_fetch_field) := GetProcedureAddress(MysqlLibraryHandle,'mysql_fetch_field'); + pointer(mysql_fetch_field_direct) := GetProcedureAddress(MysqlLibraryHandle,'mysql_fetch_field_direct'); + pointer(mysql_fetch_fields) := GetProcedureAddress(MysqlLibraryHandle,'mysql_fetch_fields'); + pointer(mysql_fetch_lengths) := GetProcedureAddress(MysqlLibraryHandle,'mysql_fetch_lengths'); + pointer(mysql_fetch_row) := GetProcedureAddress(MysqlLibraryHandle,'mysql_fetch_row'); + pointer(mysql_field_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_field_seek'); + pointer(mysql_field_count) := GetProcedureAddress(MysqlLibraryHandle,'mysql_field_count'); + pointer(mysql_field_tell) := GetProcedureAddress(MysqlLibraryHandle,'mysql_field_tell'); + pointer(mysql_free_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_free_result'); + pointer(mysql_get_client_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_client_info'); + pointer(mysql_get_client_version) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_client_version'); + pointer(mysql_get_host_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_host_info'); + pointer(mysql_get_server_version) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_server_version'); + pointer(mysql_get_proto_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_proto_info'); + pointer(mysql_get_server_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_server_info'); + pointer(mysql_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_info'); + pointer(mysql_init) := GetProcedureAddress(MysqlLibraryHandle,'mysql_init'); + pointer(mysql_insert_id) := GetProcedureAddress(MysqlLibraryHandle,'mysql_insert_id'); + pointer(mysql_kill) := GetProcedureAddress(MysqlLibraryHandle,'mysql_kill'); + pointer(mysql_library_end) := GetProcedureAddress(MysqlLibraryHandle,'mysql_server_end'); + pointer(mysql_library_init) := GetProcedureAddress(MysqlLibraryHandle,'mysql_server_init'); + pointer(mysql_list_dbs) := GetProcedureAddress(MysqlLibraryHandle,'mysql_list_dbs'); + pointer(mysql_list_fields) := GetProcedureAddress(MysqlLibraryHandle,'mysql_list_fields'); + pointer(mysql_list_processes) := GetProcedureAddress(MysqlLibraryHandle,'mysql_list_processes'); + pointer(mysql_list_tables) := GetProcedureAddress(MysqlLibraryHandle,'mysql_list_tables'); + pointer(mysql_more_results) := GetProcedureAddress(MysqlLibraryHandle,'mysql_more_results'); + pointer(mysql_next_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_next_result'); + pointer(mysql_num_fields) := GetProcedureAddress(MysqlLibraryHandle,'mysql_num_fields'); + pointer(mysql_num_rows) := GetProcedureAddress(MysqlLibraryHandle,'mysql_num_rows'); + pointer(mysql_options) := GetProcedureAddress(MysqlLibraryHandle,'mysql_options'); + pointer(mysql_ping) := GetProcedureAddress(MysqlLibraryHandle,'mysql_ping'); + pointer(mysql_query) := GetProcedureAddress(MysqlLibraryHandle,'mysql_query'); + pointer(mysql_real_connect) := GetProcedureAddress(MysqlLibraryHandle,'mysql_real_connect'); + pointer(mysql_real_escape_string) := GetProcedureAddress(MysqlLibraryHandle,'mysql_real_escape_string'); + pointer(mysql_real_query) := GetProcedureAddress(MysqlLibraryHandle,'mysql_real_query'); + pointer(mysql_refresh) := GetProcedureAddress(MysqlLibraryHandle,'mysql_refresh'); +// pointer(mysql_reload) := GetProcedureAddress(MysqlLibraryHandle,'mysql_reload'); + pointer(mysql_rollback) := GetProcedureAddress(MysqlLibraryHandle,'mysql_rollback'); + pointer(mysql_row_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_row_seek'); + pointer(mysql_row_tell) := GetProcedureAddress(MysqlLibraryHandle,'mysql_row_tell'); + pointer(mysql_select_db) := GetProcedureAddress(MysqlLibraryHandle,'mysql_select_db'); + pointer(mysql_server_end) := GetProcedureAddress(MysqlLibraryHandle,'mysql_server_end'); + pointer(mysql_server_init) := GetProcedureAddress(MysqlLibraryHandle,'mysql_server_init'); + pointer(mysql_set_server_option) := GetProcedureAddress(MysqlLibraryHandle,'mysql_set_server_option'); + pointer(mysql_sqlstate) := GetProcedureAddress(MysqlLibraryHandle,'mysql_sqlstate'); + pointer(mysql_shutdown) := GetProcedureAddress(MysqlLibraryHandle,'mysql_shutdown'); + pointer(mysql_stat) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stat'); + pointer(mysql_store_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_store_result'); + pointer(mysql_thread_id) := GetProcedureAddress(MysqlLibraryHandle,'mysql_thread_id'); +// pointer(mysql_thread_save) := GetProcedureAddress(MysqlLibraryHandle,'mysql_thread_save'); + pointer(mysql_use_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_use_result'); + pointer(mysql_warning_count) := GetProcedureAddress(MysqlLibraryHandle,'mysql_warning_count'); + pointer(mysql_stmt_init) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_init'); + pointer(mysql_stmt_prepare) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_prepare'); + pointer(mysql_stmt_execute) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_execute'); + pointer(mysql_stmt_fetch) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_fetch'); + pointer(mysql_stmt_fetch_column) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_fetch_column'); + pointer(mysql_stmt_store_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_store_result'); + pointer(mysql_stmt_param_count) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_param_count'); + pointer(mysql_stmt_attr_set) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_attr_set'); + pointer(mysql_stmt_attr_get) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_attr_get'); + pointer(mysql_stmt_bind_param) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_bind_param'); + pointer(mysql_stmt_bind_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_bind_result'); + pointer(mysql_stmt_close) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_close'); + pointer(mysql_stmt_reset) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_reset'); + pointer(mysql_stmt_free_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_free_result'); + pointer(mysql_stmt_send_long_data) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_send_long_data'); + pointer(mysql_stmt_result_metadata) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_result_metadata'); + pointer(mysql_stmt_param_metadata) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_param_metadata'); + pointer(mysql_stmt_errno) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_errno'); + pointer(mysql_stmt_error) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_error'); + pointer(mysql_stmt_sqlstate) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_sqlstate'); + pointer(mysql_stmt_row_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_row_seek'); + pointer(mysql_stmt_row_tell) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_row_tell'); + pointer(mysql_stmt_data_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_data_seek'); + pointer(mysql_stmt_num_rows) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_num_rows'); + pointer(mysql_stmt_affected_rows) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_affected_rows'); + pointer(mysql_stmt_insert_id) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_insert_id'); + pointer(mysql_stmt_field_count) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_field_count'); + + if mysql_library_init(argc, argv, groups) <> 0 then + Exit; + end + else + inc(RefCount); -function IS_NUM_FIELD(f : pst_mysql_field) : boolean; -begin - IS_NUM_FIELD:=((f^.flags) and NUM_FLAG)<>0; + Result:=RefCount; end; -function IS_NUM(t : enum_field_types) : boolean; -begin -{$IF DEFINED(mysql50) or DEFINED(mysql51)} - IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR) or (t=FIELD_TYPE_NEWDECIMAL); -{$ELSE} - IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR); -{$ENDIF} -end; -function INTERNAL_NUM_FIELD(f : Pst_mysql_field) : boolean; -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) : cint; -begin - mysql_reload:=mysql_refresh(mysql,REFRESH_GRANT); -end; +Function InitialiseMysql(argc: cint; argv: PPchar; groups: PPchar) : Integer; -function simple_command(mysql,command,arg,length,skip_check : longint) : longint; begin - //simple_command:=mysql^.(methods^.advanced_command)(mysqlcommandNullS0arglengthskip_check); - result := -1; + Result := 0; + If (TryInitialiseMysql(mysqlvlib,argc,argv,groups) = 0) and + (TryInitialiseMysql(mysqllib,argc,argv,groups) = 0) then + Raise EInOutError.CreateFmt(SErrDefaultsFailed,[mysqlvlib,mysqllib]); + Result := RefCount; end; +Function InitialiseMysql(Const LibraryName: String; argc: cint; argv: PPchar; groups:PPchar) : Integer; -{$IFDEF LOAD_DYNAMICALLY} -const - mysql_symbols: array[0..91] of TLibSymbol = ( - // Only the procedure that are given in the c-library documentation are loaded, to - // avoid problems with 'incomplete' libraries - (pvar:@my_init; name:'my_init'; weak:true), - (pvar:@my_thread_init; name:'my_thread_init'; weak:true), - (pvar:@my_thread_end; name:'my_thread_end'; weak:true), - - (pvar:@mysql_affected_rows; name:'mysql_affected_rows'; weak:false), - (pvar:@mysql_autocommit; name:'mysql_autocommit'; weak:false), - (pvar:@mysql_change_user; name:'mysql_change_user'; weak:false), - // (pvar:@mysql_charset_name; name:'mysql_charset_name'; weak:false), - (pvar:@mysql_close; name:'mysql_close'; weak:false), - (pvar:@mysql_commit; name:'mysql_commit'; weak:false), - // (pvar:@mysql_connect; name:'mysql_connect'; weak:false), - // (pvar:@mysql_create_db; name:'mysql_create_db'; weak:false), - (pvar:@mysql_data_seek; name:'mysql_data_seek'; weak:false), - // (pvar:@mysql_drop_db; name:'mysql_drop_db'; weak:false), - (pvar:@mysql_debug; name:'mysql_debug'; weak:false), - (pvar:@mysql_dump_debug_info; name:'mysql_dump_debug_info'; weak:false), - (pvar:@mysql_eof; name:'mysql_eof'; weak:false), - (pvar:@mysql_errno; name:'mysql_errno'; weak:false), - (pvar:@mysql_error; name:'mysql_error'; weak:false), - (pvar:@mysql_escape_string; name:'mysql_escape_string'; weak:false), - (pvar:@mysql_fetch_field; name:'mysql_fetch_field'; weak:false), - (pvar:@mysql_fetch_field_direct; name:'mysql_fetch_field_direct'; weak:false), - (pvar:@mysql_fetch_fields; name:'mysql_fetch_fields'; weak:false), - (pvar:@mysql_fetch_lengths; name:'mysql_fetch_lengths'; weak:false), - (pvar:@mysql_fetch_row; name:'mysql_fetch_row'; weak:false), - (pvar:@mysql_field_seek; name:'mysql_field_seek'; weak:false), - (pvar:@mysql_field_count; name:'mysql_field_count'; weak:false), - (pvar:@mysql_field_tell; name:'mysql_field_tell'; weak:false), - (pvar:@mysql_free_result; name:'mysql_free_result'; weak:false), - (pvar:@mysql_get_client_info; name:'mysql_get_client_info'; weak:false), - (pvar:@mysql_get_client_version; name:'mysql_get_client_version'; weak:false), - (pvar:@mysql_get_host_info; name:'mysql_get_host_info'; weak:false), - (pvar:@mysql_get_server_version; name:'mysql_get_server_version'; weak:false), - (pvar:@mysql_get_proto_info; name:'mysql_get_proto_info'; weak:false), - (pvar:@mysql_get_server_info; name:'mysql_get_server_info'; weak:false), - (pvar:@mysql_info; name:'mysql_info'; weak:false), - (pvar:@mysql_init; name:'mysql_init'; weak:false), - (pvar:@mysql_insert_id; name:'mysql_insert_id'; weak:false), - (pvar:@mysql_kill; name:'mysql_kill'; weak:false), - (pvar:@mysql_library_end; name:'mysql_server_end'; weak:false), - (pvar:@mysql_library_init; name:'mysql_server_init'; weak:false), - (pvar:@mysql_list_dbs; name:'mysql_list_dbs'; weak:false), - (pvar:@mysql_list_fields; name:'mysql_list_fields'; weak:false), - (pvar:@mysql_list_processes; name:'mysql_list_processes'; weak:false), - (pvar:@mysql_list_tables; name:'mysql_list_tables'; weak:false), - (pvar:@mysql_more_results; name:'mysql_more_results'; weak:false), - (pvar:@mysql_next_result; name:'mysql_next_result'; weak:false), - (pvar:@mysql_num_fields; name:'mysql_num_fields'; weak:false), - (pvar:@mysql_num_rows; name:'mysql_num_rows'; weak:false), - (pvar:@mysql_options; name:'mysql_options'; weak:false), - (pvar:@mysql_ping; name:'mysql_ping'; weak:false), - (pvar:@mysql_query; name:'mysql_query'; weak:false), - (pvar:@mysql_real_connect; name:'mysql_real_connect'; weak:false), - (pvar:@mysql_real_escape_string; name:'mysql_real_escape_string'; weak:false), - (pvar:@mysql_real_query; name:'mysql_real_query'; weak:false), - (pvar:@mysql_refresh; name:'mysql_refresh'; weak:false), - // (pvar:@mysql_reload; name:'mysql_reload'; weak:false), - (pvar:@mysql_rollback; name:'mysql_rollback'; weak:false), - (pvar:@mysql_row_seek; name:'mysql_row_seek'; weak:false), - (pvar:@mysql_row_tell; name:'mysql_row_tell'; weak:false), - (pvar:@mysql_select_db; name:'mysql_select_db'; weak:false), - (pvar:@mysql_server_end; name:'mysql_server_end'; weak:false), - (pvar:@mysql_server_init; name:'mysql_server_init'; weak:false), - (pvar:@mysql_set_server_option; name:'mysql_set_server_option'; weak:false), - (pvar:@mysql_sqlstate; name:'mysql_sqlstate'; weak:false), - (pvar:@mysql_shutdown; name:'mysql_shutdown'; weak:false), - (pvar:@mysql_stat; name:'mysql_stat'; weak:false), - (pvar:@mysql_store_result; name:'mysql_store_result'; weak:false), - (pvar:@mysql_thread_id; name:'mysql_thread_id'; weak:false), - // (pvar:@mysql_thread_save; name:'mysql_thread_save'; weak:false), - (pvar:@mysql_use_result; name:'mysql_use_result'; weak:false), - (pvar:@mysql_warning_count; name:'mysql_warning_count'; weak:false), - (pvar:@mysql_stmt_init; name:'mysql_stmt_init'; weak:false), - (pvar:@mysql_stmt_prepare; name:'mysql_stmt_prepare'; weak:false), - (pvar:@mysql_stmt_execute; name:'mysql_stmt_execute'; weak:false), - (pvar:@mysql_stmt_fetch; name:'mysql_stmt_fetch'; weak:false), - (pvar:@mysql_stmt_fetch_column; name:'mysql_stmt_fetch_column'; weak:false), - (pvar:@mysql_stmt_store_result; name:'mysql_stmt_store_result'; weak:false), - (pvar:@mysql_stmt_param_count; name:'mysql_stmt_param_count'; weak:false), - (pvar:@mysql_stmt_attr_set; name:'mysql_stmt_attr_set'; weak:false), - (pvar:@mysql_stmt_attr_get; name:'mysql_stmt_attr_get'; weak:false), - (pvar:@mysql_stmt_bind_param; name:'mysql_stmt_bind_param'; weak:false), - (pvar:@mysql_stmt_bind_result; name:'mysql_stmt_bind_result'; weak:false), - (pvar:@mysql_stmt_close; name:'mysql_stmt_close'; weak:false), - (pvar:@mysql_stmt_reset; name:'mysql_stmt_reset'; weak:false), - (pvar:@mysql_stmt_free_result; name:'mysql_stmt_free_result'; weak:false), - (pvar:@mysql_stmt_send_long_data; name:'mysql_stmt_send_long_data'; weak:false), - (pvar:@mysql_stmt_result_metadata; name:'mysql_stmt_result_metadata'; weak:false), - (pvar:@mysql_stmt_param_metadata; name:'mysql_stmt_param_metadata'; weak:false), - (pvar:@mysql_stmt_errno; name:'mysql_stmt_errno'; weak:false), - (pvar:@mysql_stmt_error; name:'mysql_stmt_error'; weak:false), - (pvar:@mysql_stmt_sqlstate; name:'mysql_stmt_sqlstate'; weak:false), - (pvar:@mysql_stmt_row_seek; name:'mysql_stmt_row_seek'; weak:false), - (pvar:@mysql_stmt_row_tell; name:'mysql_stmt_row_tell'; weak:false), - (pvar:@mysql_stmt_data_seek; name:'mysql_stmt_data_seek'; weak:false), - (pvar:@mysql_stmt_num_rows; name:'mysql_stmt_num_rows'; weak:false), - (pvar:@mysql_stmt_affected_rows; name:'mysql_stmt_affected_rows'; weak:false), - (pvar:@mysql_stmt_insert_id; name:'mysql_stmt_insert_id'; weak:false), - (pvar:@mysql_stmt_field_count; name:'mysql_stmt_field_count'; weak:false) - ); - -type - PMysqlArgs = ^TMysqlArgs; - TMysqlArgs = record - argc: cint; - argv: PPchar; - groups: PPchar; - end; - -function mysql_initialize(User: Pointer; Handler: PLibHandler): Boolean; -var - args: PMysqlArgs absolute User; begin - if Assigned(args) then - Result := mysql_library_init(args^.argc, args^.argv, args^.groups) = 0 - else - Result := mysql_library_init(0, nil, nil) = 0; - - if not Result then - AppendLibraryError(Handler^, 'mysql_library_init failed'); + Result := TryInitialiseMysql(LibraryName,argc,argv,groups); + If Result = 0 then + Raise EInOutError.CreateFmt(SErrLoadFailed,[LibraryName]) + else If (LibraryName<>LoadedLibrary) then + begin + Dec(RefCount); + Result := RefCount; + Raise EInOUtError.CreateFmt(SErrAlreadyLoaded,[LoadedLibrary]); + end; end; -procedure mysql_finalize(Handler: PLibHandler); -begin - mysql_library_end(); -end; +Procedure ReleaseMysql; -function TryInitializeMysql(Const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar): Integer; -var - args: TMysqlArgs; begin - args.argc := argc; - args.argv := argv; - args.groups := groups; - Result := TryInitializeLibrary(MysqlLibrary, LibraryName, @args); + if RefCount> 1 then + Dec(RefCount) + else if RefCount = 1 then + begin + mysql_library_end; + if UnloadLibrary(MysqlLibraryHandle) then + begin + Dec(RefCount); + MysqlLibraryHandle := NilHandle; + LoadedLibrary:=''; + end + end end; -function InitializeMysql(const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar): Integer; -var - args: TMysqlArgs; -begin - args.argc := argc; - args.argv := argv; - args.groups := groups; - Result := InitializeLibrary(MysqlLibrary, LibraryName, @args); -end; +{$ENDIF} + function net_new_transaction(net : st_net) : st_net; + begin + net.pkt_nr := 0; + result := net; + end; -function ReleaseMysql: Integer; -begin - Result := ReleaseLibrary(MysqlLibrary); -end; + function IS_PRI_KEY(n : longint) : boolean; + begin + IS_PRI_KEY:=(n and PRI_KEY_FLAG)<>0; + end; -function InitialiseMysql(argc: cint; argv: PPchar; groups: PPchar): Integer; -begin - Result := InitializeMysql('', argc, argv, groups); -end; + function IS_NOT_NULL(n : longint) : boolean; + begin + IS_NOT_NULL:=(n and NOT_NULL_FLAG)<>0; + end; -function InitialiseMysql(const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar): Integer; -begin - Result := InitializeMysql(LibraryName, argc, argv, groups); -end; + function IS_BLOB(n : longint) : boolean; + begin + IS_BLOB:=(n and BLOB_FLAG)<>0; + end; -function TryInitialiseMysql(const LibraryName: string; argc: cint; argv: PPchar; groups: PPchar): Integer; -begin - Result := TryInitializeMysql(LibraryName, argc, argv, groups); -end; + function IS_NUM_FIELD(f : pst_mysql_field) : boolean; + begin + IS_NUM_FIELD:=((f^.flags) and NUM_FLAG)<>0; + end; -initialization - MysqlLibrary := LibraryHandler('mysql', [mysqllib,mysqlvlib], @mysql_symbols, Length(mysql_symbols), @mysql_initialize, @mysql_finalize); + function IS_NUM(t : enum_field_types) : boolean; + begin +{$IF DEFINED(mysql50) or DEFINED(mysql51)} + IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR) or (t=FIELD_TYPE_NEWDECIMAL); +{$ELSE} + IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR); {$ENDIF} + end; + function INTERNAL_NUM_FIELD(f : Pst_mysql_field) : boolean; + 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) : cint; + 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; + +{$IFDEF LinkDynamically} +initialization + Refcount := 0; +{$ENDIF} end. diff --git a/packages/mysql/src/mysql40dyn.pp b/packages/mysql/src/mysql40dyn.pp index 0592588970..b8c93f1aa6 100644 --- a/packages/mysql/src/mysql40dyn.pp +++ b/packages/mysql/src/mysql40dyn.pp @@ -4,7 +4,7 @@ unit mysql40dyn; -{$DEFINE LOAD_DYNAMICALLY} +{$DEFINE LinkDynamically} {$UNDEF MYSQL41} {$i mysql.inc} diff --git a/packages/mysql/src/mysql41dyn.pp b/packages/mysql/src/mysql41dyn.pp index 127de1c341..06362619b7 100644 --- a/packages/mysql/src/mysql41dyn.pp +++ b/packages/mysql/src/mysql41dyn.pp @@ -4,7 +4,7 @@ unit mysql41dyn; -{$DEFINE LOAD_DYNAMICALLY} +{$DEFINE LinkDynamically} {$DEFINE MYSQL41} {$i mysql.inc} diff --git a/packages/mysql/src/mysql4_comtypes.inc b/packages/mysql/src/mysql4_comtypes.inc index f5f9878ce8..8e5b24c843 100644 --- a/packages/mysql/src/mysql4_comtypes.inc +++ b/packages/mysql/src/mysql4_comtypes.inc @@ -8,7 +8,7 @@ type My_socket = longint; my_bool = byte; gptr = Pointer; - pppchar = ^ppchar; + { Common definition between mysql server & client } diff --git a/packages/mysql/src/mysql50dyn.pp b/packages/mysql/src/mysql50dyn.pp index 5b0fcc8119..67719e52a6 100644 --- a/packages/mysql/src/mysql50dyn.pp +++ b/packages/mysql/src/mysql50dyn.pp @@ -4,7 +4,7 @@ unit mysql50dyn; -{$DEFINE LOAD_DYNAMICALLY} +{$DEFINE LinkDynamically} {$DEFINE MYSQL50} {$i mysql.inc} |
